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