HSI颜色空间及其应用

【摘要】本文首先阐述HSI颜色模式的基本特性,然后介绍RGB和HSI颜色空间互相转换的算法,并给出算法核心代码和效果图,最后将HSI颜色空间应用到图像增强,得到几个增强之后的效果图。
【参考资料】 

RGB与HSI颜色模型的转换方法对比研究

博客:颜色空间之HSI

博客:颜色空间转换(一)


1.  HSI颜色空间简介

     HSI颜色空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度(Intensity或Brightness)来描述色彩。HSI颜色空间可以用一个圆锥空间模型来描述。用这种描述HIS色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。

     RGB 向HSI 模型的转换是由一个基于笛卡尔直角坐标系的单位立方体向基于圆柱极坐标的双锥体的转换。基本要求是将RGB 中的亮度因素分离,将色度分解为色调和饱和度,并用角向量表示色调,如下图所示。

2.  RGB转换至HSI的几种常见方法

      下图列出几种常用的RGB-HSI转换公式:

       几何推导法最为经典,可追溯到30多年前(Tenenbaum,1974)。基本思路是先分离出亮度信息,将三维空间降为二维。在二维平面内利用解析几何的向量点积公式求出HSI 模型的色调分量值。

       坐标变换法的转换思路是基于RGB立方体沿对角线垂直竖立后与Munsell双锥体相似(图4)。通过直角坐标系的旋转,求出转换矩阵,并与极坐标系转换,得出转换公式(Kenneth,1996)。

       分段定义法是直接根据色度学定义得出转换公式。根据色度学的基本概念,将三基色RGB的色调分别定为0°,120°, 240°。RGB三分量中某分量最大时,该分量即为主分量,色调值位于该分量附近(正负60°范围)。偏差幅度由另外二个分量的相对差异归一化后决定(Foley,1990)。此方法所得模型常称作HSL模型。

       其中,算法1和算法2的色调H公式只是形式不同,实则等价。 

       几套公式转换后的H值域为[0, 2π],饱和度和亮度均为[0,1]。算法2的取值范围比较特别,S为[0, 26],I为[0,3] 。 

       最后,算法5所得转换模型的空间分布平均性最好,值域标准,适应性强。 HSI各分量间相对独立,在应用转换时,可以将上述几套公式中的HSI公式交叉使用,但也因此容易产生混淆。

 

3. RGB与HSI互相转换公式
       此处的RGB转HSI的公式采用算法1(几何推导法),HSI转RGB是算法1的逆运算。

       首先是RGB转HSI:

         然后是HSI转RGB:

 

  4.  RGB与HSI互相转换的C代码 

        首先给出RGB转HSI的代码,算法1:

        

       然后是RGB转HSI的代码,算法4:

       最后是与算法1匹配的HSI转RGB代码:

 

 5.  算法1和算法4速度测试

      此处测试的代码就是上面给出的代码,没有做任何优化。测试代码如下:

 

 结果是:算法4的时间是算法1的一半

 

   

 6.  算法4相对算法1的误差分析 

      算法1是最经典的RGB转HSI算法,也是最常用的算法,在某些对速度要求很高的情况下,我们可以用算法4替代算法1以提高图像处理速度。因此有必要分析一下这种快速算法的误差。以下是测试误差的代码:

   结果是:平均误差是0.12弧度(6.8756度),最大误差是0.191弧度(10.9483度)。 色调H将[0, 2*PI)等分为3个扇形,这个测试表明,算法4的误差不会扩散到另外一个扇区,因此不会影响到HSI转RGB的公式表达式。

   

  

7. HSI颜色空间小应用

    将RGB转换到HSI空间,通过S变量可以调整图像的饱和度,以下是一个效果图:


                        

                                                    (原始图像)                                            (饱和度增强后图像)

来源:nkwavelet

评论
热度 ( 3 )
只展示最近三个月数据

© wozy | Powered by LOFTER