Matlab图像处理-RGB色彩提取原理方法

本教程适合Matlab数字图像处理的初学者。目前有一些手机相机软件有“魔法色彩”功能,可以将彩色照片变为只显示某一种具体颜色的灰色照片。本文中所提到的RGB色彩提取纯粹为实现个人兴趣而编写,正规教材中可能并无相关资料。文中较为全面直观地给出在Matlab中对图像进行RGB色彩提取的方法原理和Matlab源代码,并配合必要的代码注释,希望能帮助Matlab和数字图像处理的初学者入门。

操作方法

  • 01

    打开图像 [FileName, FilePath]=uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','请选择图像数据'); str=[FilePath FileName]; Image=imread(str); % 以对话框的形式选择打开一幅图像

  • 02

    设置参数 Gray=rgb2gray(Image); R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3); diff_R=0; diff_G=0; diff_B=0;  % 设置红、绿、蓝三种颜色提取阈值(越大越严格)

  • 03

    红色提取 Image_R=Image; RP_R=Image(:,:,1); RP_G=Image(:,:,2); RP_B=Image(:,:,3); XYR=~((R-G)>diff_R&(R-B)>diff_R);  % 提取红色条件是R分量与G、B分量差值大于设定 Mask=Gray(XYR);  % 灰照片掩膜 RP_R(XYR)=Mask; RP_G(XYR)=Mask; RP_B(XYR)=Mask;  % 使得非红色区域变为灰色 Image_R(:,:,1)=RP_R; Image_R(:,:,2)=RP_G; Image_R(:,:,3)=RP_B;

  • 04

    绿色提取 Image_G=Image; GP_R=Image(:,:,1); GP_G=Image(:,:,2); GP_B=Image(:,:,3); XYG=~((G-R)>diff_G&(G-B)>diff_G);  % 提取绿色条件是G分量与R、B分量差值大于设定 Mask=Gray(XYG);  % 灰照片掩膜 GP_R(XYG)=Mask; GP_G(XYG)=Mask; GP_B(XYG)=Mask;  % 使得非绿色区域变为灰色 Image_G(:,:,1)=GP_R; Image_G(:,:,2)=GP_G; Image_G(:,:,3)=GP_B;

  • 05

    蓝色提取 Image_B=Image; BP_R=Image(:,:,1);BP_G=Image(:,:,2);BP_B=Image(:,:,3); XYB=~((B-R)>diff_B&(B-G)>diff_B);  % 提取绿色条件是G分量与R、B分量差值大于设定 Mask_B=Gray(XYB);  % 灰照片掩膜 BP_R(XYB)=Mask_B; BP_G(XYB)=Mask_B; BP_B(XYB)=Mask_B;  % 使得非蓝色区域变为灰色 Image_B(:,:,1)=BP_R; Image_B(:,:,2)=BP_G; Image_B(:,:,3)=BP_B;

  • 06

    显示结果 subplot(2,2,1),imshow(Image); title('Image'); subplot(2,2,2),imshow(Image_R); title('Red Pass'); subplot(2,2,3),imshow(Image_G); title('Green Pass'); subplot(2,2,4),imshow(Image_B); title('Blue Pass'); % 显示原图与R/G/B三色提取结果对比图并显示标签

  • 07

    保存结果 imwrite(Image_R,'Image_R.jpg','jpeg'); imwrite(Image_G,'Image_G.jpg','jpeg'); imwrite(Image_B,'Image_B.jpg','jpeg'); % 将R/G/B三色提取结果写成jpg文件保存到当前目录

原理详解

  • 01

    本文中提到的RGB色彩提取方法最为关键的也最为难以严格界定的地方是对于R/G/B三种颜色的判别规则,本文中提到的判别规则是更具R/G/B中某一颜色分量明显不小于其它分量时,即判别某像素点为某种颜色,并通过设置判别阈值,来控制判别条件的颜色与否。为了保持图片的完整性(即三种色彩提取结果中彩色相加后能得到原图),本例中默认设置阈值为0,为了得到更为单纯的颜色,可适当增大阈值。 如下图是将R/G/B三色提取阈值设置为0的提取结果:

  • 02

    如下图是将R/G/B三色提取阈值设置为128的提取结果,从图中可看到,当阈值设置越大(判定条件愈加严格),提取结果更接近R/G/B纯色。

(0)

相关推荐

  • Matlab图像如何处理?Matlab图像处理的基本操作

    虽然说Matlab是一款数学处理软件,但是这款软件特别强大,强大之处在于他还能够处理图像,这个功能是很多新手学习Matlab的时候感到惊讶的地方,所不了解,所要学习的,下面小编就给大家介绍Matlab ...

  • 安卓手机刷机原理方法介绍刷机失败解决方案 中

    操作方法 01 02 5风险 说到风险但凡刷机都带有一定的风险关键看你能不能把风险最小化甚至去掉了.首先肯定的是正常的刷机操作是不会损坏手机硬件的.其次刷机可以解决手机有些莫名其妙的毛病.升级手机硬件 ...

  • 采用matlab求解矩阵的逆的方法

    对于学习matlab矩阵的新手,求逆是一个个很重的过程.矩阵的逆,在数学的应用领域是一个很重的运算.今天小编将为大家带来的是采用matlab求解矩阵的逆的方法:一起去看看吧! 方法: 1.打开matl ...

  • Matlab图像处理-灰度拉伸原理方法

    本教程适合Matlab数字图像处理的初学者.灰度线性拉伸是数字图像处理中最为简单直接的图像增强方法,本文中所支持的灰度拉伸图像,不仅仅限于灰度图,更将RGB真彩色图.多波段遥感影像纳入灰度拉伸范畴.较 ...

  • 华硕笔记本屏幕色彩图文调式方法

    笔记本的屏幕都是LED背光的,都有点发白,色彩感不强,如果想设置,可以用显卡的颜色管理,找到感觉舒服的亮度和色彩。不同的屏幕在颜色上可能略有不同,请自行设置。其实这也不算是质量问题,因为笔记本屏幕的工 ...

  • MATLAB图像处理基础

    图像处理技术未来发展可归纳为: ⑴高清晰度电视的研制,开展实时图像处理的理论及技术研究,向着高速.高分辨率.立体化.多媒体化.智能化和标准化方向发展. ⑵图像.图形相结合,朝着三维成像或多维成像的方向 ...

  • Pr制作RGB色彩分离效果

    利用pr的色彩平衡效果制作色彩分离特效,让画面更具冲击力 操作方法 01 1.打开pr,在"项目面板"空白处右击鼠标导入视频素材 将视频拖到v1轨道 02 2.选中视频,按住alt ...

  • 在Excel 2013换行单元格中如何提取出第二行的数据 Excel2013表格中提取数据方法介绍

    打开一份电子表格,我们看到有些单元格利用Alt+Enter进行了格内换行,输入了多行文字,我们如何从这些单元格中提取出第二行的数据呢?当然最简单的方法还是用函数公式,下面,我就详细的介绍如何实现。 案 ...

  • Word 2007文档中的图片提取的方法

    大家都知道,Word文档中的图片是不能够复制粘贴的,只能将图片从文档中提取出来,常用的方法是将Word文档另存为网页格式的进行提取。但缺点是提取一张图片会生成一张原始图和一张缩略图(效果非常差),用户 ...