实验一 :一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示
Matlab转化函数:
function HSI = RGB2HSI( RGB , Hexc , Sexc , Iexc )
% RGB 表示输入RGB图像矩阵
% Hexc 、Sexc、Iexc 分别表示 HSI 中 H S I 的偏移(度)
RGB = im2double(RGB); % 数据类型转换 整形->浮点
R = RGB(:,:,1); % 红
G = RGB(:,:,2); % 绿
B = RGB(:,:,3); % 蓝x
% 根据公式计算 H S I
I = (R + G + B) / sqrt(3);
S = sqrt( (R - G).^2 + (G - B).^2 + (B - R).^2 );
H = ( R .* 2 - (G + B) )./sqrt( sqrt(2) * ( (R - G).^2 + (G - B).^2 + (B - R).^2 ) );
H( G
运行代码:
>> RGB = imread('t18.jpg');
zeromatrix = zeros(300,400); %创建一个512×512的零矩阵
RGB_R = cat(3, RGB (:,:,1), zeromatrix , zeromatrix );
RGB_G = cat(3, zeromatrix , RGB (:,:,2), zeromatrix );
RGB_B = cat(3, zeromatrix , zeromatrix, RGB (:,:,3));
subplot(2,2,1),imshow(RGB_R ),title('R分量');
subplot(2,2,2),imshow(RGB_G),title('G分量');
subplot(2,2,3),imshow(RGB_B),title('B分量');
subplot(2,2,4),imshow(RGB),title('RGB');
>> img = imread('t18.jpg');
>> img = imread('t18.jpg');
hsi =RGB2HSI(img,0.4,0.5,0.6);
imshow(hsi)
测试结果: