文獻標(biāo)識碼: A
文章編號: 0258-7998(2010)08-0055-05
在不同的光源或者天氣條件下光譜特性是互不相同的,這被稱之為色溫。從物理意義上講,人們看到的物體之所以呈現(xiàn)出特定的顏色,是因為光線照向物體時,物體所反射的光在人眼視覺系統(tǒng)中呈現(xiàn)出這種特定的顏色。也就是說,能看到的物體顏色不僅取決于其反射特性,而且還和照向物體的光線有關(guān)系,如一張白紙在鎢絲燈下會偏橘黃色調(diào),在熒光燈下會偏綠,而在日光下會有點偏藍(lán)。自動白平衡的目的就是自動調(diào)整不同色溫光照下圖像的三基色分量的比例,使其看上去和標(biāo)準(zhǔn)光源下拍攝的顏色一致。
目前在工程上應(yīng)用的自動白平衡算法主要有全局白平衡算法和局部白平衡算法兩大類。全局白平衡算法以“灰度世界法”GWM(Gray World Method)為代表,其認(rèn)為所拍攝的圖像有豐富的色彩變化,R、G和B三色分量的統(tǒng)計平均值應(yīng)該相等,并以該均值作為白平衡校準(zhǔn)的依據(jù)。局部白平衡算法以“鏡面法”PRM(Perfect Reflector Method)為代表,該算法認(rèn)為一幅圖像中最亮像素點對應(yīng)于光滑或者鏡子表面的物體,這樣的像素點最大限度反映了照射光線的光譜信息,對這部分點做色彩信息統(tǒng)計并作為色溫校正的依據(jù)。全局白平衡算法有較大的局限性,當(dāng)場景過亮、過暗,或者色彩比較單一時,算法幾乎完全失效。局部白平衡算法的關(guān)鍵在于尋找參考白點,而在戶外拍攝的過程中,總是可以找到參考點的,文獻[1]、[2]、[3]介紹了幾種能精確尋找參考點的方法。
在工程上,需要對幀頻較高的原始視頻圖像做實時的白平衡恢復(fù),而目前的自動白平衡方法,算法復(fù)雜,計算時間較長,難以實現(xiàn)對視頻流的實時處理。本文就針對以上問題,討論了一種在FPGA上實現(xiàn)的、對視頻流實時白平衡處理的自適應(yīng)方法。
1 自動白平衡算法
在FPGA設(shè)計的過程中,采用局部白平衡的方法,主要有3個基本步驟:
(1)色溫估計
色溫估計是自動白平衡中最重要的一步,根據(jù)算法估計當(dāng)前場景的色溫,給增益計算提供依據(jù)。文獻[1]利用“鏡面法”,嚴(yán)格控制Y、Cb和Cr三分量的關(guān)系,在YCbCr空間定義了一個六面體的區(qū)域,凡是落入該區(qū)域的點都可以作為參考白點。文獻[2]提出先對圖像的R、G和B三個分量分別作直方圖均衡化,然后將直方圖均衡化后的圖像轉(zhuǎn)換到Y(jié)CbCr空間,對轉(zhuǎn)換后的Y分量進行邊沿檢測,在邊沿包含的各個區(qū)域中尋找滿足文獻[1]條件的區(qū)域,作為參考白點區(qū)域。選擇符合一定條件的區(qū)域而不是選擇符合一定條件的點,可以提高參考點選擇的準(zhǔn)確性,但是直方圖均衡化處理本身存在灰度級“簡并”現(xiàn)象,這也是該文算法的不足。文獻[3]直接在原圖像的YCbCr空間,用LoG算子對Cb和Cr分別作色度邊緣提取,獲得的色度邊緣即為參考白點區(qū)域。綜合考慮參考點選擇的準(zhǔn)確性和電路設(shè)計的難易程度,本文選用文獻[1]的方法選擇參考點。
(2)增益計算
增益計算是在色溫估計的基礎(chǔ)上,求取色溫修正系數(shù)的過程,主要有3種方法:
①查表法[1]。事先統(tǒng)計出一張表,記錄不同的色溫所對應(yīng)的通道增益,具有速度快的優(yōu)點。但由于表的容量有限,不能實現(xiàn)各種色溫情況的連續(xù)調(diào)節(jié)。
②平均值法。對于參考白點區(qū)域有R=G=B,即Cb和Cr的分量為零。得到各通道的增益如下:
③迭代法。設(shè)G通道的增益為常數(shù)1,R和B通道的增益分別為?自,?滋。迭代法根據(jù)參考白點區(qū)域Cb和Cr的關(guān)系,通過不斷地調(diào)節(jié)?滋和?自的值,便可得到各通道最終增益值。文獻[1]中提到的方法,在場景出現(xiàn)大量色塊時,容易出現(xiàn)色彩振蕩現(xiàn)象。本文在其基礎(chǔ)上做出了如下改進,增加對白點數(shù)目的判斷:判斷是否WhitePointNum>N,只有場景的白點數(shù)目大于閾值N時,才認(rèn)為色溫估計有效,這樣能避免色溫估計無效時對修正系數(shù)的誤操作導(dǎo)致的色彩振蕩。增加了對當(dāng)前色溫的判斷:判斷是否|Cb|+|Cr|<M,如果小于閾值M,則認(rèn)為修正后的圖像已經(jīng)達(dá)到白平衡,不做增益調(diào)節(jié)。文獻[1]所示方法,只適應(yīng)于相機的一次拍攝,而攝像機拍攝時間長,場景變化快,所以有必要對每幀或隔幾幀圖像做如圖1的處理,以應(yīng)對場景色溫的變化。圖1中?滋和?自的初始值為常數(shù)1,λ為迭代步長。
(3)色溫校正
在獲得各顏色通道的增益量后,按照下面的等式對原圖像所有像素進行調(diào)整。
上述3種增益計算方法中,平均值法和查表法多用于對單張圖片處理,迭代法用于對連續(xù)圖片序列的處理。迭代法獲得的修正系數(shù),用于下一幀圖像的色彩校正,每次色溫估計都是在色彩校正的基礎(chǔ)上進行的。
2 系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)硬件結(jié)構(gòu)如圖2所示。
目前彩色CCD相機,分為3CCD全色相機和單CCD Bayer彩色相機兩大類。全色相機中,光線被分光系統(tǒng)分為R、G和B三色光后,分別投向三塊CCD,這樣在信號輸出時就可以獲得每個像素的三基色信息。Bayer格式的CCD感光表面覆蓋有如圖3所示的CFA,CFA上每個格點僅允許通過一種顏色分量,使每個感光單元只產(chǎn)生一個分量的灰度值。要獲得每個像元的[r,g,b]信息,需要用到色彩空間插值。
Bayer CCD相機與全色相機相比,有價格相對便宜、要求進入光線的照度低、輸出幀頻高等優(yōu)點,被廣泛應(yīng)用于工程實踐中。本文所用的Bayer CCD相機有效像元數(shù)為1 024×1 024,幀頻為30 Hz,像素時鐘為45 MHz,像素位深度為8 bit,以Camera Link協(xié)議輸出。
Camera Link是專門為數(shù)字?jǐn)z像機提出的一種工業(yè)級的高速數(shù)據(jù)連接與傳輸協(xié)議。采用LVDS(Low Voltage Differential Signaling)技術(shù),使用較少的連線,卻能達(dá)到理論上最大1.923 G b/s的傳輸速率,并且傳輸距離比普通的傳輸方式更遠(yuǎn)。Camera Link標(biāo)準(zhǔn)中包含Base、Medium、Full 3種規(guī)范,其中Base規(guī)范只需要一個26針的連接器即可實現(xiàn)。26 bit信號中包括:5對圖像數(shù)據(jù)信號(X0,X1,X2,X3,Xclk),X0~X3傳遞圖像數(shù)據(jù),Xclk傳遞像素時鐘;4對相機控制線(CC1,CC2,CC3,CC4),相機制造商可以自由定義各控制信號的功能以滿足其特殊產(chǎn)品;2對異步串行通信信號線(SerTC,SerTFG),可用于相機和圖像采集卡之間的異步串行通信;2對屏蔽線,直接接地即可。在本文所述的系統(tǒng)只需要用到5對圖像數(shù)據(jù)信號線。
本文采用的Camera Link協(xié)議芯片為DS90CR288A和DS90CR287,最高工作頻率為85 MHz,能滿足系統(tǒng)設(shè)計要求。DS90CR288A把接收到的4路LVDS數(shù)據(jù)信號和1路LVDS時鐘信號,分別轉(zhuǎn)換為28 bit的CMOS/TTL并行數(shù)據(jù)和像素時鐘信號。4路LVDS數(shù)據(jù)線能傳遞28 bit數(shù)據(jù),傳遞頻率是LVDS時鐘信號的7倍,最高可達(dá)595 MHz。28 bit數(shù)據(jù)中包括24 bit像素信號,1 bit幀同步信號(FVAL)、1 bit行同步信號(LVAL),1 bit數(shù)據(jù)有效信號(DVAL)和1 bit保留信號。在FPGA設(shè)計中,只需要應(yīng)用幀、行同步信號,像素時鐘和有效的像素信號即可完成對圖像數(shù)據(jù)的處理。DS90CR287的工作過程和DS90CR288A相反,把數(shù)據(jù)和同步信號轉(zhuǎn)換為LVDS信號傳遞出去。
系統(tǒng)用的主芯片為Altera公司的Cyclone III系列芯片EP3C16Q240C8,其具有豐富的邏輯資源和觸發(fā)器資源,內(nèi)嵌大量乘法器和豐富的RAM資源,特別適合時序操作和大量數(shù)據(jù)的并行運算。系統(tǒng)還用到容量2 MB的2塊SRAM,最短訪問周期10 ns,可以把處理后的圖像數(shù)據(jù)存于其中,供板上其他系統(tǒng)使用。
3 EDA設(shè)計
FPGA的設(shè)計采取自頂向下的模塊化設(shè)計方法,系統(tǒng)的一級框圖如圖4所示。
寫SRAM模塊根據(jù)幀、行同步信號、像素時鐘以及行、列偏移量,獲得有效像素的起止,把像素數(shù)據(jù)存入SRAM。白平衡處理過程就在寫SRAM模塊中完成。“雙向開關(guān)”由FVAL_In信號觸發(fā),起到信號線切換的作用,完成乒乓操作。當(dāng)寫SRAM模塊把數(shù)據(jù)寫入SRAM_A的同時,讀SRAM模塊從SRAM_B讀取數(shù)據(jù),當(dāng)寫SRAM模塊把數(shù)據(jù)寫入SRAM_B的同時,讀SRAM模塊從SRAM_A讀取數(shù)據(jù)。讀SRAM模塊讀取SRAM中的像素數(shù)據(jù)并以Camera Link 協(xié)議的形式傳出。從整體效果上看,數(shù)據(jù)能源源不斷地流過系統(tǒng)。
寫SRAM模塊中白平衡過程如圖5 所示。
電路中色溫校正模塊,色溫統(tǒng)計模塊和增益計算模塊連接形成一個負(fù)反饋回路,能根據(jù)場景色溫的變化,實時修正增益系數(shù),使修正后的圖像穩(wěn)定在白平衡狀態(tài)。
在色溫統(tǒng)計的過程中沒有必要對全平面像素做統(tǒng)計,為了編程和設(shè)計的方便,本文在每個4×4的塊中選兩點做色溫統(tǒng)計,如圖3中的(2,1)和(1,2)兩個點。在色彩空間轉(zhuǎn)換之前需要進行色彩插值,恢復(fù)待測像素的三原色數(shù)據(jù)[r,g,b],用線性插值法恢復(fù)的算法如下。
恢復(fù)每一個像素的[r,g,b]值,需要用到相鄰的3×3范圍的像素值,然而相機數(shù)據(jù)是逐行依次輸出的,所以必須暫存至少3行的像素值。本文引入一塊8 KB的DPRAM,可以存儲8行的像素信息。色溫校正模塊把數(shù)據(jù)寫入外部SRAM的同時也把數(shù)據(jù)存入了內(nèi)部的DPRAM,存滿了8 KB的空間后,從地址0重新開始寫入。把DPRAM分為上下兩半頁,每存好半頁后, Bayer轉(zhuǎn)RGB模塊便從剛存的半頁中尋址,讀取數(shù)據(jù),進行插值轉(zhuǎn)換。
用Quartus II設(shè)計的DPRAM宏模塊,如圖6所示。可以看出輸入DPRAM的信號都是在時鐘上升沿鎖存的,輸出不鎖存。訪問DPRAM以及完成插值過程可用“12狀態(tài)法”實現(xiàn),如圖7所示。實驗仿真圖,如圖8所示。
時間分析:相機輸入4行數(shù)據(jù)的時鐘周期數(shù)至少為1 144×4=4 576 T,上述過程操作時間為:1 024/4×12=3 072 T,所以上述轉(zhuǎn)換過程能在色溫校正模塊填滿半頁DPRAM的時間內(nèi)完成,且不會產(chǎn)生訪問DPRAM沖突。在滿足時間的條件下,可以尋址更多的點,采用更復(fù)雜的插值方法做轉(zhuǎn)換。
色溫統(tǒng)計模塊,在接收到轉(zhuǎn)換信號后,完成RGB到Y(jié)CbCr色彩空間轉(zhuǎn)換,并把符合式(5)的點的Cb和Cr值累加,在一幀末的時候,完成除法運算,輸出滿足條件點的Cb和Cr的平均值以及Control信號。
4 實驗結(jié)果
在試驗的過程中參數(shù)(χ,α,β,γ,φ,M,N)分別設(shè)定為(120,30,30,50,100,8,2000)。圖9為在熒光燈下的偏綠圖像及其各通道直方圖,圖10為硬件白平衡后的圖像及其直方圖。圖11、圖12是戶外拍攝圖像及恢復(fù)的情況。
由圖9、圖10可以看出熒光燈下的物體偏綠,且G通道直方圖高灰度級的像素明顯多于其他通道。處理后的圖像視覺效果較好,各通道像素灰度級趨于均衡。通過實驗發(fā)現(xiàn),處理后的圖像比原圖偏亮,這可以通過前級調(diào)光系統(tǒng)實現(xiàn)更好的處理效果。
本文分析了目前的自動白平衡算法,結(jié)合EDA設(shè)計的特點,對迭代法進行了改進,能有效抑制色彩振蕩。系統(tǒng)能根據(jù)場景色溫的變化,實時調(diào)整色溫修正系數(shù),恢復(fù)場景的真實色彩。結(jié)合當(dāng)前相機常用的Camera Link接口,在一塊芯片上實現(xiàn)了圖像預(yù)處理,減小了CPU運算負(fù)擔(dān),系統(tǒng)功耗小,應(yīng)用前景較好。
參考文獻
[1] 周榮政,何捷,洪志良.自適應(yīng)的數(shù)碼相機自動白平衡算法[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2005,17(3):350-353.
[2] 張鈺,姚素英,胡燕翔.一種基于邊沿檢測的圖像自動白平衡方法[J].光電子·激光,2008,19(6):804-807.
[3] 趙全友,潘寶昌.改進的LoG邊緣自動白平衡算法[J].計算機應(yīng)用研究,2009,26(2):775-777.
[4] 張靜.基于DSP和FPGA的數(shù)字圖像采集與處理系統(tǒng)的實現(xiàn)[D].西安電子科技大學(xué)碩士論文,2006.
[5] 沈斌,張多利,何亞軍.一種低功耗色彩空間轉(zhuǎn)換模塊的FPGA實現(xiàn)[J].計算機工程與應(yīng)用,2008,44(22):84-86.
[6] 彭俊,高偉.基于FPGA的Bayer圖像彩色恢復(fù)快速算法研究及實現(xiàn)[J].科學(xué)技術(shù)與工程,2007,7(13):3084-3086.
[7] 張向飛,張剛,程永強.基于FPGA的高分辨率貝爾CFA插值算法的設(shè)計與實現(xiàn)[J].太原理工大學(xué)學(xué)報,2006,5(專輯):12-15.
[8] 趙全友,潘保昌,鄭勝林.復(fù)雜光照下的兩步法顏色恒常性增強[J].光學(xué)精密工程,2009,17(4).