RGB转HSI公式及C++代码 | hsi公式
以下文字部分大都摘录于《HSI与RGB颜色模型的转换方法对比研究》刘华波孟塞尔系统和较晚出现的Ostwald(1923年,德国)和PCCS(1964年,日本)等颜色表示系统都符合二个基本原则,一是颜色恒常性原则,即将亮度和色度(色调+饱和度)独立表示;二是色度二极渐弱原则,即亮度适中时人眼对色彩的分辨力最强,颜色的种类最多,而亮度趋强或趋弱时,分辨力会降低,直至为零。HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度(Intensity或Brightness)来描述色彩。HSI色彩空间可以用一个圆锥空间模型来描...
以下文字部分大都摘录于《HSI与RGB颜色模型的转换方法对比研究》 刘华波
孟塞尔系统和较晚出现的Ostwald(1923年,德国)和PCCS(1964年,日本)等颜色表示系统都符合二个基本原则,一是颜色恒常性原则,即将亮度和色度(色调+饱和度)独立表示; 二是色度二极渐弱原则,即亮度适中时人眼对色彩的分辨力最强,颜色的种类最多,而亮度趋强或趋弱时,分辨力会降低,直至为零。
HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度 (Intensity 或Brightness)来描述色彩。HSI色彩空间可以用一个圆锥空间模型来描述。用这种描述HIS色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用HSI色彩空间,它比RGB色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI色彩空间中方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI色彩空间可以大大简化图像分析和处理的工作量。
以下代码部分,是由本人写出,供大家参考
typedef unsigned char uint8;
const uint8 RGBMAX = 255;
void CvtRGBToHSI(uint8 R, uint8 G, uint8 B, uint8& H, uint8& S, uint8& I)
{
const float PI2 = 2*3.1415926;
float r = float(color.R)/RGBMAX;
float g = float(color.G)/RGBMAX;
float b = float(color.B)/RGBMAX;
float maxVal = Max(Max(r, g), b);
float minVal = Min(Min(...