一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示

数字图形处理实验记录

实验一 :一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示

转换原理:采用圆锥模型公式
测试步骤:
一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示_第1张图片

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)

实验原图:
一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示_第2张图片

测试结果:

一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示_第3张图片
一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示_第4张图片

你可能感兴趣的:(实验报告,202003,大学学习,图像识别,矩阵)