失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > [matlab数字图像处理8]提取一副彩色图像中红色 用HIS模型处理 RGB模型对比显示

[matlab数字图像处理8]提取一副彩色图像中红色 用HIS模型处理 RGB模型对比显示

时间:2020-06-30 09:50:57

相关推荐

[matlab数字图像处理8]提取一副彩色图像中红色 用HIS模型处理 RGB模型对比显示

一、 问题描述

提取一副彩色图像中红色,用HIS模型处理,RGB模型对比显示;

二、 求解思路

彩色图像的处理有两种主要方法,RBG(红,绿,蓝)和HIS(色调,饱和度,亮度),matlab可以直接读取彩色图像的R,G,B值,对于RGB模型,只需要提取R值,就可以提取图像的红色。HIS模型与RGB模型间有一定的数学方程对应。红色在HIS模型中对应的是色调(H)大约为0-25和300-360以及饱和度(S)大于0.2的模型,将该范围外的数据全部变为0,然后再利用转换公式将HIS模型转换为RGB模型,即可提取红色。

三、 程序代码

主程序:

clcclearclose allx=imread('5.png');x=im2double(x);figure(1)subplot(1,3,1)imshow(x,[])R= x(:,:,1);G= x(:,:,2);B= x(:,:,3);subplot(1,3,2)imshow(R,[])title('红色的RGB提取')subplot(1,3,3)H_RANGE_1=25;H_RANGE_2=300;[H,S,I]=rgb2hsi(R,G,B);for i=1:size(R,1)for j=1:size(R,2)if (H(i,j) >= H_RANGE_1 && H(i,j) < H_RANGE_2)H(i,j) = 0;S(i,j) = 0;I(i,j)= 0;endif (S(i,j) < 0.2)H(i,j) = 0;S(i,j) = 0;I(i,j)= 0;endendend[R1,G1,B1]=hsi2rgb(H,S,I);RGB = cat(3, R1, G1, B1);imshow(RGB,[])title('红色的HSI提取')

RGB转为HIS的函数

function [H,S,I]=rgb2hsi(R,G,B)pom=((R-G)+(R-B))/2;den=sqrt((R-G).^2+(R-G).*(G-B));kop=zeros(size(R));for i=1:size(R,1)for j=1:size(R,2)if den(i,j)==0kop(i,j)=1;else kop(i,j)=pom(i,j)/den(i,j);endendendtheta=real(acos(kop))*180/pi;H=theta.*(B<=G)+(360-theta).*(B>G);minrgb=min(min(R,G),B);S=1-3*minrgb./(R+G+B+eps);I=(R+G+B)/3;end

HIS转化为RGB的函数

function [R1,G1,B1]=hsi2rgb(H,S,I)R1=zeros(size(H));G1=zeros(size(H));B1=zeros(size(H));for i=1:size(H,1)for j=1:size(H,2)if (H(i,j) >= 0 && H(i,j) < 120)B1(i,j) = I(i,j) * (1 - S(i,j));R1(i,j) = I(i,j) * (1 + (S(i,j) * cos(H(i,j) * pi / 180)) / (cos((60 - H(i,j)) * pi / 180)));G1(i,j)= 3 * I(i,j) - (R1(i,j) + B1(i,j));elseif (H(i,j) >= 120 && H(i,j) < 240)H(i,j) = H(i,j) - 120;R1(i,j) = I(i,j) * (1 - S(i,j));G1(i,j) = I(i,j) * (1 + (S(i,j) * cos(H(i,j) * pi / 180)) / (cos((60 - H(i,j)) * pi / 180)));B1(i,j) = 3 * I(i,j) - (R1(i,j) + G1(i,j));elseif (H(i,j) >= 240 && H(i,j) <= 360)H(i,j) = H(i,j) - 240;G1(i,j) = I(i,j) * (1 - S(i,j));B1(i,j) = I(i,j) * (1 + (S(i,j) * cos(H(i,j) * pi / 180)) / (cos((60 - H(i,j)) * pi / 180)));R1(i,j) = 3 * I(i,j) - (G1(i,j) + B1(i,j));endendend

四、 实验结果

如图为程序的运行结果,可以看见在用RGB提取(中间)的图形中,红色的花瓣部分被显示为白色,但背景也是白色,不易区分,利用HIS提取的图形很好的将红色的花瓣部分提取了出来

五、 实验心得

利用HSI模型相较于RGB模型在提取颜色方面具有一定的优势,但应注意HIS模型中对应颜色的相关属性

如果觉得《[matlab数字图像处理8]提取一副彩色图像中红色 用HIS模型处理 RGB模型对比显示》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。