
Daaang
V1
2022/11/09阅读:76主题:默认主题
RGB转HSI分析
浅析 RGB 图像转 HSI
理论讲解
彩色模型也称彩色空间或彩色系统,是用来精确标定和生成各种颜色的一套规则和定义。它的用途是在某些标准下用通常可接受的方式简化彩色规范。彩色模型通常可以用坐标系统来描述,而位于系统中的每种颜色都由坐标空间中的单个点来表示。
RGB 模型是工业界的一种颜色标准。通过对红绿蓝 3 种颜色亮度的变化以及它们相互之间的叠加来得到各种各样的颜色的,该标准几乎包括了人类视觉所能感知的所有颜色,是目前运用最广的颜色模型之一。
HSI 模型是从人的视觉系统出发,直接使用颜色三要素色调,饱和度和亮度,有时也翻译为密度或灰度来描述颜色。
-
亮度:是指人眼感觉光的明暗程度。光的能量越大,亮度越大。 -
色调:是色彩最重要的属性,决定颜色的本质,有物体反射光线中占优势的波长来决定,不同的波长产生不同的颜色感觉,我们叫某一种颜色为红色,橙色,黄色,这是我们规定的一种色调。 -
饱和度:是指颜色的深浅和浓淡程度,饱和度越高,颜色越深。饱和度的深浅和白色的比例有关,白色比例越多,饱和度越低。
通俗地讲,H=色相;决定是什么颜色,S=饱和度(纯度);决定颜色浓淡,B=明度(亮度);决定照射在颜色上的白光有多亮。

公式转换


Matlab实现
RGB2HSI函数实现
%Matlab函数语法
%function [输出参数列表] = 函数名(输入参数列表) (注:此语句结尾没有分号)
function [hsi,h,s,i] = RGB2HSI(rgb)
rgb = im2double(rgb);
r = rgb(:, :, 1);
g = rgb(:, :, 2);
b = rgb(:, :, 3);
% Implement the conversion equations.
num = 0.5*((r - g) + (r - b));
den = sqrt((r - g).^2 + (r - b).*(g - b));
theta = acos(num./(den + eps));
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;
S = 1 - 3.* num./den;
H(S == 0) = 0;
I = (r + g + b)/3;
% Combine all three results into an hsi image.
h=H;
s=S;
i=I;
hsi = cat(3, H, S, I);
end
测试程序实现
%将RGB转换成HSI
[HSI_Img_temp,H,S,I] = RGB2HSI(Img_temp_x);
结果: RGB转HSI


参考文章
[1] RGB图像转到HSI图像
作者介绍

Daaang
V1