【摘要】
本文首先闡述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的公式採用算法1(幾何推導法),HSI轉RGB是算法1的逆運算。
首先是RGB轉HSI:
4. RGB與HSI互相轉換的C代碼
首先給出RGB轉HSI的代碼,算法1:
然後是RGB轉HSI的代碼,算法4:
最後是與算法1匹配的HSI轉RGB代碼:
此處測試的代碼就是上面給出的代碼,沒有做任何優化。測試代碼如下:
結果是:算法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的公式表達式。
將RGB轉換到HSI空間,通過S變量可以調整圖像的飽和度,以下是一個效果圖:
(原始圖像) (飽和度增強後圖像)