- 32
- 0
- 约5.57千字
- 约 10页
- 2019-11-09 发布于湖北
- 举报
RGB图像颜色分离的MATLAB实现
1.理论分析
1.1程序设计的初衷
自己的专业方向会可能用到图像处理的知识,作为数字图像处理的初学者,此程序完全是为实现自己兴趣并结合我们所学的MATLAB课程及GUI知识而编写的,可以实现对图中感兴趣物体颜色的提取,从而突出事物。设计的知识背景或许浅,课下希望能向研究Matlab数字图像处理的老师,同学们多多请教,交流。
1.2程序实现的理论分析
若想实现对RGB图像颜色提取,最为关键的也最为核心的是对R/G/B等颜色严格界定的判别规则。而对于非目标颜色则会通过掩膜覆盖,从而突出显示所要提取到的颜色。
此程序中提到的判别规则是更具R/G/B中某一颜色分量明显不小于其它分量时,即判别某像素点为某种颜色,并通过设置判别阈值,来控制判别条件的颜色与否。
1.2.RGB图像背景知识介绍
所谓的RGB图像,RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
RGB图像原理如下图1~图2:
图1 RGB图像原理 图2 RGB图像RGB三色矩阵
所以RGB图像的颜色分布区间如图3:
图3 RGB图像的颜色分布图
因此可得到六种颜色的判别规则如下:
红颜色范围的判别规则:
红颜色范围的判别规则:
(R-Gdiff_R) (R-Bdiff_R)
绿颜色范围的判别规则:
(G-Rdiff_G) (G-Bdiff_G)
蓝颜色范围的判别规则:
(B-Rdiff_B) (B-Gdiff_B)
洋红色范围的判别规则:
B128R128(R-G)diff_M(B-G)diff_M
黄颜色范围的判别规则:
R128G128(R-B)diff_Y(G-B)diff_Y
青颜色范围的判别规则:
B128G128(B-R)diff_C(G-R)diff_C
利用以上判别准则来作为程序设计的核心,通过设计判断语句,对图像的不同色域进行分离,从而实现颜色分离。
3.程序设计
3.1设计流程图
以下是整体程序的设计流程如图4:
选择图片
选择图片
显示读入的图片
选择分离的颜色(判别条件)
及掩膜方式选择
调节阈值
颜色提取是否 满足目标?
保存图像
结束
Y
N
图4 程序实现流程图
通过此流程图,可以把握全局思想来完成图像颜色提取的框架结构,这样可以有益于对整体的把握。
3.2.主要程序段分析
(1)读入图像部分的程序段分析:
%打开图像
[FileName, FilePath]=uigetfile(*.jpg;*.png;*.tif;*.img;*.gif;,请选择图像数据);
if isequal(FilePath,0) %如果未选择图像则返回,防止报错
return;
end
str=[FilePath FileName]; %文件的路径,文件名称
Image=imread(str);
imshow(Image) %读入图形,显示图形
%%掩膜处理方式预设置
Gray=rgb2gray(Image); %灰度处理
Blackk=zeros(size(Gray)); %黑色掩膜处理
Whitee=255*ones(size(Gray)); %白色掩膜处理
R=Image(:,:,1); %分别分出R分量
G=Image(:,:,2); %分别分出G分量
B=Image(:,:,3); %分别分出B分量
aa=0; %不做任何处理的原图标志位
此段程序实现图片的读入并实现对掩膜方式的的初始化实现,通过对三种掩膜方式设置,后面可以直接选择。
(2)掩膜方式选择及判别条件确定主要程序段分析(以红色提取为例):
function Redbutton_Callback(hObject, eventdata, handles)
global Image R G B diff_R Gray Blackk Whitee aa
%掩膜方式的选择:从下拉菜单中选择掩膜方式
str1=get(handles.popupmenu1,String);
val=get(handles.popupmenu1,Value);
switch str1{val}
case 灰度掩膜
current_data=Gray;
case 黑
原创力文档

文档评论(0)