新建函数编辑窗口,输入以下代码,保存至你的工作路径下即可。保存文件的文件无所谓,建议和函数名一致,在此也就是 rgb2hsi.m
</pre><pre code_snippet_id="1563274" snippet_file_name="blog_20160123_3_5823806" name="code" class="html">function hsi = rgb2hsi(rgb)
%hsi = rgb2hsi( rgb )将rgb转化为hsi
%输出hsi是double型的
rgb =imread(rgb);%没有这句会报错
%提取图像RGB分量
rgb = im2double(rgb);
r = rgb(:,:,1);
g = rgb(:,:,2);
b = rgb(:,:,3);
%执行转化
num = 0.5*((r-g)+(r-b));
den = sqrt((r-g).^2 +(r-b).*(g-b));
theta = acos(num./(den + eps)); %eps极小值标示,防止除以0出错
H = theta;
H( b>g ) = 2*pi - H( b>g );
H = H/(2*pi);
num = min(min(r,g),b);
den = r + g + b;
den(den == 0) = eps;%eps极小值标示,防止除以0出错
S = 1 - 3.* num./den;
H( S==0 ) = 0;
I = ( r + g + b )/3;
%组合hsi图像,H、S、I是矩阵
hsi = cat(3,H,S,I);
end