用matlab实现rgb2hsi函数
时间: 2024-03-14 18:46:49 浏览: 465
rgb2hsi.rar_matlab_rgb2hsi
在 MATLAB 中,可以使用以下公式实现 RGB 到 HSI 的转换:
H = atan2((G - B), (R - B))
if (H < 0)
H = H + 2 * pi
end
S = 1 - 3 * min(R, G, B) / (R + G + B)
I = (R + G + B) / 3
其中,R、G、B 分别为 RGB 颜色空间中的三个分量,H、S、I 分别为 HSI 颜色空间中的色相、饱和度和亮度。需要注意的是,H 的取值范围为 [0, 2π),需要做一下范围调整。
以下是一个用 MATLAB 实现的 RGB2HSI 的函数:
```matlab
function hsi = rgb2hsi(rgb)
% 将 RGB 值归一化到 [0, 1] 范围内
rgb = double(rgb) / 255.0;
r = rgb(:, :, 1);
g = rgb(:, :, 2);
b = rgb(:, :, 3);
h = atan2(g - b, r - b);
h(h < 0) = h(h < 0) + 2 * pi;
s = 1 - 3 * min(rgb, [], 3) ./ sum(rgb, 3);
i = mean(rgb, 3);
hsi = cat(3, h, s, i);
end
```
这个函数可以将一张 RGB 图像转换成 HSI 图像。
阅读全文