一、 问题描述
提取一副彩色图像中红色,用HIS模型处理,RGB模型对比显示;
二、 求解思路
彩色图像的处理有两种主要方法,RBG(红,绿,蓝)和HIS(色调,饱和度,亮度),matlab可以直接读取彩色图像的R,G,B值,对于RGB模型,只需要提取R值,就可以提取图像的红色。HIS模型与RGB模型间有一定的数学方程对应。红色在HIS模型中对应的是色调(H)大约为0-25和300-360以及饱和度(S)大于0.2的模型,将该范围外的数据全部变为0,然后再利用转换公式将HIS模型转换为RGB模型,即可提取红色。
三、 程序代码
主程序:
clc
clear
close all
x=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;
end
if (S(i,j) < 0.2)
H(i,j) = 0;
S(i,j) = 0;
I(i,j)= 0;
end
end
end
[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)==0
kop(i,j)=1;
else
kop(i,j)=pom(i,j)/den(i,j);
end
end
end
theta=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));
end
end
end
四、 实验结果
如图为程序的运行结果,可以看见在用RGB提取(中间)的图形中,红色的花瓣部分被显示为白色,但背景也是白色,不易区分,利用HIS提取的图形很好的将红色的花瓣部分提取了出来
五、 实验心得
利用HSI模型相较于RGB模型在提取颜色方面具有一定的优势,但应注意HIS模型中对应颜色的相关属性
版权声明:本文为qq_46535765原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。