RGB到Lab顏色空間轉換
資料來源:《廣東印刷》2009年第5期
作者:古晶
一、引言
隨著印刷行業從模擬到數字的變化,色彩的準確再現問題已經變得十分關鍵。新泰科儀器INTEKE.CN我們需要使用色彩管理,以確保更好、更快、更準確地獲得彩色圖像。要做到圖像處理等過程中的色彩統一性和與設備無關性,就必須實行標準化、規范化的色彩管理。
所謂色彩管理,就是解決圖像在各色空間之間的轉換問題,使圖像的色彩在整個復制過程中失真最小。其基本思路是:首先選擇一個與設備無關的參考色空間,然后對設備進行特征化,最后在各個設備的色空間和與設備無關的參考色空間之間建立關系,從而使數據文件在各個設備之間轉換時有一個明確的關系可尋。雖然不可能讓不同設備上的所有顏色完全相同,但可以使用顏色管理來確保大多數顏色相同或相似,從而達到在某種意義上一致的顏色復制效果。
二、色彩空間轉換
色彩空間轉換是指把一個色彩空間中的顏色數據轉換或表示成另一個色彩空間中的相應數據,即用不同的色彩空間中的數據表示同一顏色。在本文中,是將與設備相關的RGB色彩空間轉換到與設備無關的CIELab色彩空間。任何一個與設備有關的色彩空間都可以在CIELab色彩空間中測量、標定。如果不同的與設備相關顏色都能對應到CIELab色彩空間的同一點,那么,它們之間的轉換就一定是準確的。
色彩空間轉換的方法有很多種,本文主要介紹三維查表插值法和多項式回歸法。
1.三維查表插值法
三維查找表法是目前研究色彩空間轉換較為常用的算法。三維查找表算法的核心思想是,將源色彩空間進行分割,劃分為一個個規則的立方體,每個立方體的八個頂點的數據是已知的,將所有源空間的已知點構成一張三維查找表。當給定源空間中任意一個點時,能夠找到與之相鄰的八個數據點構成一個小立方體格子的節點,通過這個小立方體的八個頂點進行插值,得到目標空間對應的數據。
一般查找表法都是與插值法結合起來使用,變成帶有插值算法的三維查找表法,這種方法可分為三個步驟:
①分割:將源色彩空間按一定的采樣間隔分區,建立三維查找表;
②查找:對于一個已知的輸入點,搜索源空間,找出包含它的由八個柵格點構成的立方體;
③插值:在一個立方體的柵格內,計算出非柵格點上的顏色值。
根據源空間的不同分割方式,常見的插值算法有:三線性插值、三棱柱插值、金字塔插值和四面體插值方法。
2.多項式回歸法
多項式回歸算法是指假設色彩空間的聯系可以通過一組聯立的方程估算出來。多項式回歸算法的唯一必要條件就是源空間的點數應該大于所選擇的多項式的項數。此算法的重點在于計算出多項式的系數,再將源色彩空間的數據代入多項式,就可以根據方程求出轉換后的結果。
多項式的形式分為很多種,本文采用項數為6的多項式,具體表達式如公式(1)所示。
(1)
該多項式的系數可以由公式(2)得到。
(2)
公式(2)中、的表達式分別如公式(3)、(4)所示,為矩陣的轉置,具體表達式如公式(5)所示。公式(3)中的表示多項式的項數,在本題目中取;表示選取的源空間的點數,在本題目中,由于對源空間(即RGB顏色空間)進行六級分割后得到216個點,故取。實際上,對于項數為6的多項式,只要取就可以得到多項式的系數。
(3)
(4)
(5)
公式(3)中的、、()為源空間的三個顏色值,公式(4)中的()為目標空間中表示顏色的三個數值中任意一個。
多項式回歸算法的特點是簡單、實現起來較為方便,且有著不錯的轉換效果;但使用項數少時精度較低,當項數過大時計算量大、且精度也不一定高。
3.色差
在評價彩色復制質量和控制彩色復制過程時,例如在實施色彩管理和評價印刷品顏色時,往往需要計算顏色的色差來實現控制顏色的目的。目前印刷業普遍采用的是CIE 1976 Lab均勻顏色空間,及其對應的色差公式,具體的表達式如公式(6)所示。
(6)
三、實現過程
先簡單介紹了本題目的操作平臺,再詳細說明了本題目中所使用數據的獲取方法,以及實現顏色空間轉換的詳細步驟。
1.操作平臺
本題目采用的操作系統為Microsoft windows XP,編程環境為Visual C++ 6.0,整個應用程序是基于MFC應用程序框架,還用到了OpenGL和OpenCV。
2.數據的獲取
數據分為建模數據及測試數據兩部分,建模數據用于計算多項式的系數,測試數據用于分析算法的精確程度,來自源空間和目標空間的建模數據和測試數據均在Adobe Photoshop中采集得到。
①建模數據的獲取。本題目采用六級均勻分割來采集建模點,R、G、B分別依次取0,51,102,153,204,255。在PhotoShop的拾色器中依次輸入R、G、B的各組值,并記下該組值對應的L、a、b的值,記錄在文本中,如圖一所示。共得到63=216組值。
圖一 從拾色器中獲得數據
②測試數據的獲取本題目采用八級非均勻分割來采集測試點,R、G、B分別依次取0,36,72,108,144,180,216,255。采集方法同上,共得到83=512組值。
3.具體實現步驟
本題目具體實現的框架流程圖如圖二所示。
圖二 框架流程圖
如圖二所示,程序實現的具體步驟如下:
①先啟動Visual C++ 6.0,在MFC中設置OpenCV的運行環境。
②讀取建模數據。
③完成出多項式系數的計算:分別依據公式(3)、(4)、(5)得到、、。依次求出、、、,從而就得到了多項式的系數。
④讀取測試數據。
⑤繪制對RGB模型進行八級分割后相應Lab模型的三維彩色視圖。
⑥將由八級分割得到的每個點的RGB值帶入由步驟③得到的三個多項式中,分別計算出每個點的L、a、b值(后面稱此值為計算值),從而就通過多項式回歸法將RGB顏色空間轉換為Lab顏色空間。
⑦為了評判此顏色空間轉換方法的優劣,就要通過計算色差來評判。對于每種顏色,將由步驟④得到的測量值與由步驟⑥得到的計算值求差得到、、,然后再依據公式⑥求出色差,畫出色差分布直方圖,并統計出在不同色差范圍內的比例。
四、結果顯示與分析
按上節具體步驟,采用VC++6.0編程實現了PhotoShop中RGB到Lab顏色空間的轉換,本節主要將程序的運行結果顯示并進行簡要的分析。
1.結果顯示
本題目采用六級均勻分割建立了轉換關系,并利用八級非均勻分割對此方法的精度進行了測試,繪制了色差分布直方圖,并對色差進行了統計。程序實現的主體界面如圖三所示。
圖三 RGB到CIELab顏色空間轉換的主體界面
色差分布直方圖以及相關統計數據,如圖四所示。
圖四 色差統計界面
對RGB模型進行八級分割后相應Lab模型的三維彩色視圖,如圖五所示。對RGB模型進行八級分割后,采用多項式回歸法轉換到Lab顏色空間模型的三維彩色視圖,如圖六所示。
圖五 八級分割RGB顏色空間后測試得到的Lab顏色空間三維彩色視圖
圖六 八級分割RGB顏色空間后轉換到Lab顏色空間的三維彩色視圖
2.結果分析與總結
如圖四所示,對512種顏色進行顏色空間轉換后的色差最大值為28,從總體上看色差分布并不均勻。
經統計,色差范圍在0~5之間共有74種顏色,占總體的14.45%;色差范圍在5~10之間共有264種顏色,占總體的51.56%;色差范圍在10~15之間共有157種顏色,占總體的30.66%;色差范圍在15~20之間共有13種顏色,占總體的2.54%;色差大于20的共有4種顏色,占總體的0.78%,而且數據顯示,在色差大于20的4種顏色中,純藍色(0,0,255)和純綠色(0,255,0)的色差最大,另外兩種顏色的色差都小于21。對于這512種顏色,其中色差最大為28,最小為0,平均色差為9。總的說來,色差范圍大部分集中在5~15之間。
將圖五與圖六進行對比,可以發現使用多項式回歸法將RGB顏色空間轉換到Lab顏色空間模型,與測試得到的Lab顏色空間模型的形狀大體相似,表明本題目所獲得的結果是比較理想的。
五、總結
由此可見,使用多項式回歸法來進行顏色空間轉換還是比較準確的。可采用不同項數的多項式,對相同的源空間到相同的目標空間的轉換結果進行比較;從而尋找出,在此源空間轉換到目標空間過程中,采用多項式的最優項數。因此,對于此題目還需要進一步的研究。