把彩色图像转换成HSI图像matlab实现
时间: 2023-08-11 21:04:41 浏览: 159
RGB与HSI转换matlab实现
4星 · 用户满意度95%
可以使用以下代码将彩色图像转换成HSI图像:
```matlab
% 读入彩色图像
rgbImage = imread('image.jpg');
% 将图像转换成浮点型
rgbImage = im2double(rgbImage);
% 分离出R、G、B通道
R = rgbImage(:,:,1);
G = rgbImage(:,:,2);
B = rgbImage(:,:,3);
% 计算H分量
theta = acos((0.5*(R-G)+(R-B))./sqrt((R-G).^2+(R-B).*(G-B)+eps));
H = theta;
H(B>G) = 2*pi-H(B>G);
H = H/(2*pi);
% 计算S分量
S = 1-3./(sum(rgbImage,3)+eps).*min(rgbImage,[],3);
% 计算I分量
I = sum(rgbImage,3)./3;
% 将HSI图像合并为一个三通道图像
hsiImage = cat(3,H,S,I);
% 显示彩色图像和HSI图像
figure;
subplot(1,2,1); imshow(rgbImage); title('RGB Image');
subplot(1,2,2); imshow(hsiImage); title('HSI Image');
```
其中,`image.jpg`为待处理的彩色图像文件名。代码中先将图像转换成浮点型,然后分离出R、G、B三个通道。接着,根据公式计算出H、S、I三个分量,最后将它们合并为一个三通道图像并显示。
阅读全文