王 超,甄國(guó)涌,單彥虎
(中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西 太原030051)
機(jī)器視覺技術(shù)的快速發(fā)展對(duì)圖像處理速度以及精度提出了更高的技術(shù)要求,顏色作為人類生活最敏感的一部分,在不同的光源下,人眼的恒常性使人可以在不同光源下準(zhǔn)確識(shí)別物體本身固有色彩[1],但圖像傳感器服從的光線投射率模型使其采集到的物體本身固有顏色嚴(yán)重受到環(huán)境光源的影響[2]。 為消除其受環(huán)境光源的影響,實(shí)時(shí)校正偏色圖像的自動(dòng)白平衡算法成為圖像處理的一種關(guān)鍵技術(shù)。
目前成熟的白平衡算法在部分平臺(tái)以及部分場(chǎng)景中已經(jīng)成功應(yīng)用。暗通道灰度世界改進(jìn)算法已經(jīng)成功在圖像處理芯片上驗(yàn)證,但是其處理時(shí)間仍需要96 ms,無(wú)法滿足高幀頻圖像采集系統(tǒng)需求[3];灰度世界與完美反射組合而成的白平衡算法[4]、基于邊沿檢測(cè)的白平衡算法[5]、基于直方圖白平衡算法[6]以及暗通道加權(quán)算法[7]在FPGA 設(shè)備上的實(shí)現(xiàn)需要對(duì)一幀圖像進(jìn)行統(tǒng)計(jì)、計(jì)算后再進(jìn)行圖像白平衡校正,大量RAM 資源、多位寬乘法器以及除法器被應(yīng)用,導(dǎo)致處理器資源分配面臨挑戰(zhàn);灰度世界法(GWM)與完美反射法(PRM)由于其原理簡(jiǎn)單已經(jīng)在FPGA 中實(shí)現(xiàn),但是在高分辨率以及過度曝光場(chǎng)景中,本身固有缺點(diǎn)限制其無(wú)法正常完成白平衡校正,限制了其使用環(huán)境。
因此,本文提出一種基于暗通道光線透射率的自動(dòng)白平衡校正算法。 該算法在FPGA 上將圖像采集與白平衡校正并行處理,確保數(shù)據(jù)采集實(shí)時(shí)性的同時(shí)完成當(dāng)前圖像偏色校正,完全可以應(yīng)對(duì)場(chǎng)景中的物體移動(dòng)。 暗通道白平衡算法的實(shí)現(xiàn)可以滿足色彩準(zhǔn)確率以及系統(tǒng)實(shí)時(shí)性要求,為機(jī)器視覺中的移動(dòng)物體檢測(cè)與識(shí)別提供準(zhǔn)確的色彩依據(jù)。
算法首先將RGB 圖像轉(zhuǎn)換為暗通道圖像,根據(jù)全局光線透射率分布與暗通道值選取參考像素點(diǎn)作為完美反射法計(jì)算增益因子的依據(jù),最后使用增益因子實(shí)現(xiàn)偏色圖像白平衡校正。
圖像傳感器拍攝的物體顏色f(x,y)與其本身固有顏色s(x,y)之間的光線透射成像模型[8]如式(1)所示。
其中:(x,y)表示圖像傳感器中像素點(diǎn)坐標(biāo),t(x,y)表示圖像中對(duì)應(yīng)坐標(biāo)點(diǎn)處光線透射率,E 表示全局光照強(qiáng)度,對(duì)于一幀圖像E 為恒定常數(shù),定義如式(2)所示:
其中:W、H 分別表示圖像傳感器采集圖像長(zhǎng)度與寬度,R(x,y)、G(x,y)、B(x,y)分別代表偏色圖像中對(duì)應(yīng)坐標(biāo)點(diǎn)處三通道像素值。
圖像中暗通道定義為(x,y)像素點(diǎn)處顏色三通道最小值,如式(3)所示:
其中:D(x,y)表示(x,y)像素點(diǎn)的暗通道像素,c 表示R、G、B 顏色三通道集合。
根據(jù)已求得的暗通道像素和暗通道先驗(yàn)知識(shí)理論[9]可得式(4):
其中:Sdark(x,y)表示D(x,y)鄰域中暗通道最小像素點(diǎn),Ω(x,y)表示像素與之相對(duì)應(yīng)的鄰域。 相對(duì)于較小鄰域,光線透射率t(x,y)為一個(gè)常數(shù)。 根據(jù)暗通道理論式(3)、式(4)對(duì)式(1)進(jìn)行兩次最小值運(yùn)算并整理,如式(5)所示:
其中:fdark(x,y)表示f(x,y)鄰域中暗通道最小像素。 根據(jù)式(4)可知式(5)第3 項(xiàng)為0,光透射率化簡(jiǎn)如式(6)所示:
由式 (6) 可知在所有顏色中白色(255,255,255)光線透射率最低,因此圖像中透射率最低的像素作為參考像素就可實(shí)現(xiàn)白平衡校正。 實(shí)際拍攝過程中由于圖像傳感器過度曝光而產(chǎn)生的白色像素點(diǎn)會(huì)對(duì)圖像中原有透射率分布產(chǎn)生影響,因此白平衡參考像素點(diǎn)的光線透射率與暗通道同時(shí)滿足條件即可排除過度曝光造成的影響,如式(7)所示。
其中:F(x,y)表示白平衡參考像素點(diǎn),tmax表示全局最大光線透射率,tmin表示全局最小光線透射率,K 表示暗通道閾值常數(shù),對(duì)多張圖片進(jìn)行統(tǒng)計(jì)最終選取最小誤差以及最小平均誤差閾值230 作為K[10]。
白平衡參考像素點(diǎn)選取后,根據(jù)White Patch 假設(shè)[11]使用白色區(qū)域中三通道各自最大值來(lái)計(jì)算偏色圖像校正的增益因子, 但是為確保不受單一像素點(diǎn)的影響,以參考像素點(diǎn)集合中各通道均值計(jì)算校正增益。 如式(8)所示:
其中:Kc表示各個(gè)顏色通道校正增益因子,Meanc(x,y)表示參考像素點(diǎn)集合的各通道平均值。
計(jì)算完成后的增益因子Kc可以根據(jù)Von-Kries 矩陣模型[12]進(jìn)行偏色圖像校正,如式(9)所示:
其中:fb(x,y)表示校正后的圖像,fc(x,y)表示偏色圖像。
為滿足系統(tǒng)的實(shí)時(shí)性偏色圖像校正和白平衡增益因子計(jì)算,在FPGA 設(shè)計(jì)中采用并行流水化模塊設(shè)計(jì)[13],將自動(dòng)白平衡算法分為兩個(gè)子結(jié)構(gòu)模塊進(jìn)行設(shè)計(jì):偏色校正子模塊與增益計(jì)算子模塊。 在偏色校正子模塊中的圖像數(shù)據(jù)通過一個(gè)乘法器即可完成偏色像素點(diǎn)的校正輸出,相比原始采集數(shù)據(jù)只有一個(gè)時(shí)鐘延時(shí),可以忽略不計(jì),從而保證了自動(dòng)白平衡系統(tǒng)的實(shí)時(shí)性。 在增益計(jì)算子模塊中,以當(dāng)前幀為參考計(jì)算的下一幀增益因子在圖像結(jié)束后第三個(gè)時(shí)鐘完成,不會(huì)對(duì)偏色校正子模塊的實(shí)時(shí)性產(chǎn)生任何影響并且可以滿足高速圖像數(shù)據(jù)流。
自動(dòng)白平衡算法模塊結(jié)構(gòu)如圖1 所示,圖像數(shù)據(jù)在自動(dòng)白平衡模塊中分為兩路并行數(shù)據(jù),一路在偏色校正子模塊中根據(jù)計(jì)算出的增益因子對(duì)偏色像素點(diǎn)進(jìn)行校正,另一路在增益計(jì)算子模塊中計(jì)算下一幀圖像增益因子。
圖1 自動(dòng)白平衡算法模塊結(jié)構(gòu)圖
增益計(jì)算子模塊分為5 個(gè)功能模塊: 暗通道計(jì)算、閾值計(jì)算、參考像素選取、通道均值計(jì)算和增益因子計(jì)算。 在增益計(jì)算子模塊中圖像數(shù)據(jù)進(jìn)一步被分為兩路并行數(shù)據(jù),一路計(jì)算參考像素選取的閾值,另一路根據(jù)閾值選取參考像素點(diǎn)進(jìn)而計(jì)算下一幀圖像的增益因子。
圖像數(shù)據(jù)在暗通道計(jì)算功能模塊中使用一個(gè)時(shí)鐘對(duì)像素點(diǎn)R、G、B 三通道值計(jì)算得出暗通道像素。 閾值計(jì)算功能模塊根據(jù)輸入的暗通道像素在一個(gè)時(shí)鐘內(nèi)完成暗通道最值的更新,并且在當(dāng)前一幀圖像結(jié)束后計(jì)算出參考像素選取的閾值。
圖像數(shù)據(jù)在參考像素選取模塊中使用比較器對(duì)像素點(diǎn)與閾值條件進(jìn)行比較,如果像素點(diǎn)滿足條件,則模塊將此像素點(diǎn)作為參考像素輸出至通道均值計(jì)算功能模塊中,否則丟棄不進(jìn)行處理。 參考像素輸入通道均值計(jì)算模塊中實(shí)時(shí)相加并在當(dāng)前圖像結(jié)束后計(jì)算出各個(gè)通道的均值作為增益因子計(jì)算功能模塊的輸入進(jìn)而計(jì)算增益因子。 由于增益因子的計(jì)算過程中有除法運(yùn)算,會(huì)極大地影響系統(tǒng)的運(yùn)行效率,因此對(duì)分母的倒數(shù)進(jìn)行31 位小數(shù)、8 位整數(shù)定點(diǎn)運(yùn)算后以其作為地址存入ROM 中,使得各通道均值可以作為地址快速獲得待求增益因子。 雖然定點(diǎn)運(yùn)算和浮點(diǎn)計(jì)算存在一定的誤差, 但由于小數(shù)位數(shù)較寬不會(huì)對(duì)最終校正的像素點(diǎn)產(chǎn)生影響。
圖像采集過程中相鄰兩幀具有極小的差異性, 前一幀圖像計(jì)算的增益因子可以根據(jù)顏色校正模型對(duì)當(dāng)前圖像進(jìn)行偏色校正[14]。 在校正中,8位圖像數(shù)據(jù)與39 位增益因子使用乘法器生成47位的像素校正數(shù)據(jù),為避免數(shù)據(jù)超出像素有效范圍,對(duì)高16 位整數(shù)據(jù)進(jìn)行判斷,當(dāng)大于0xFF 則說明超出最大像素值, 取0xFF 進(jìn)行像素校正值輸出;當(dāng)小于0xFF,取數(shù)據(jù)第32 位至39 位為像素校正值進(jìn)行輸出。
3.1.1 FPGA 板級(jí)正確性驗(yàn)證
根據(jù)算法描述,使用Verilog HDL 語(yǔ)言對(duì)算法進(jìn)行RTL描述,Modelsim 仿真軟件進(jìn)行其功能仿真,Xilinx 公司的XC7A35TFTG256 FPGA 芯片以及ON Semiconductor 公司MT9P031 彩色圖像傳感器進(jìn)行驗(yàn)證。 配置圖像傳感器輸出參數(shù)分辨率為2 592×1 944@14FPS。 圖像傳感器拍攝一張圖像在軟件與Modelsim 進(jìn)行單張圖片仿真保證算法的正確性,由表1 可知FPGA 仿真與軟件仿真過程中的關(guān)鍵變量完全一致從而保證了算法的正確性, 并且FPGA 運(yùn)行時(shí)間為軟件運(yùn)行時(shí)間的207 倍, 保證了系統(tǒng)中圖像處理部分的實(shí)時(shí)性。
3.1.2 動(dòng)態(tài)圖像白平衡校正分析
將自動(dòng)白平衡算法集成到圖像采集系統(tǒng)中,驗(yàn)證移動(dòng)物體對(duì)白平衡算法的影響。在物體移動(dòng)的情況下將自動(dòng)白平衡算法處理過程中的增益因子通過系統(tǒng)現(xiàn)有千兆以太網(wǎng)傳輸至電腦中記錄并繪制折線圖。物體移動(dòng)過程中連續(xù)拍攝100 幀圖片,此過程捕捉從物體移動(dòng)進(jìn)入圖像傳感器成像區(qū)域到移動(dòng)出區(qū)域的全過程。
表1 關(guān)鍵值比較
如圖2 所示,物體在第1 至第50 幀之間物體未進(jìn)入圖像傳感器成像區(qū)域,圖像增益在第二幀出現(xiàn)中間狀態(tài)波動(dòng)后第三幀趨于平穩(wěn);物體在50 幀至65 幀逐漸移動(dòng)進(jìn)入成像區(qū)域,由于物體顏色的原因,藍(lán)色增益根據(jù)整體顏色快速大范圍調(diào)整,紅色增益緩慢上升,綠色增益緩慢下降;66 幀至79 幀中,物體完全處于成像區(qū)域,增益穩(wěn)定不變;80 幀至85 幀中物體加速離開成像區(qū)域, 增益逐漸恢復(fù)成原有狀態(tài);86 幀至100 幀圖像增益和物體進(jìn)入前增益相同。
圖2 增益曲線圖
物體移動(dòng)過程中,偏色圖像數(shù)據(jù)流校正實(shí)時(shí)進(jìn)行,并根據(jù)前一幀圖像的相對(duì)顏色進(jìn)行快速增益計(jì)算后校正下一幀圖像從而保證了白平衡校正算法在移動(dòng)物體實(shí)時(shí)動(dòng)態(tài)場(chǎng)景中的應(yīng)用。
3.1.3 色彩校正色差分析
對(duì)偏色圖像的白平衡算法處理結(jié)果采用色差均值[15]來(lái)進(jìn)行評(píng)價(jià)。 如式(10)所示:
其中:Cb、Cr分別表示YCbCr 空間中藍(lán)色色度分量均值與紅色色度分量均值,V 表示一幀圖像的色差均值,值越低則表示白平衡效果更好。
根據(jù)灰度世界法(GWM)和完美反射法(PRM)理論在FPGA 上實(shí)現(xiàn)并使用MATLAB 將FPGA 白平衡處理結(jié)果導(dǎo)入電腦中,運(yùn)用本文評(píng)價(jià)指標(biāo)分別對(duì)不同分辨率下的三種應(yīng)用環(huán)境圖片進(jìn)行評(píng)價(jià),如表2 所示。
如圖3 所示,在色彩單一的場(chǎng)景中,本文算法能較其他算法準(zhǔn)確識(shí)別出白色像素點(diǎn)進(jìn)行白平衡校正,色彩均值比擅長(zhǎng)于單一色彩場(chǎng)景的PRM 算法低0.74,比GWM 低7.99。 如圖4 所示,在此色彩豐富的場(chǎng)景中,色差均值相比于擅長(zhǎng)豐富色彩場(chǎng)景的GWM 算法高0.27, 但是其和PRM 算法色差均值相同。如圖5 所示,在過度曝光場(chǎng)景中,該算法能降低過度曝光像素點(diǎn)對(duì)白平衡效果產(chǎn)生的干擾,色差均值比PRM算法低0.24。
表2 色差均值
根據(jù)實(shí)驗(yàn)結(jié)果分析,該算法不僅在顏色單一場(chǎng)景中相比優(yōu)于PRM 算法,并且其能有效避免過度曝光造成的PRM 算法失效的固有問題,其在顏色豐富場(chǎng)景中雖然不如GWM 算法,但是處理效果相近使其完全可以滿足色彩豐富場(chǎng)景中的應(yīng)用。所以該算法能完全勝任智能工業(yè)相機(jī)應(yīng)用環(huán)境中的顏色檢測(cè)任務(wù),并相對(duì)于其他算法有相對(duì)準(zhǔn)確的白平衡效果。
由上述3.1.1 分析可知,暗通道白平衡算法在FPGA上的實(shí)現(xiàn)精度可以確保在小數(shù)點(diǎn)后三位,相對(duì)于傳統(tǒng)電腦軟件處理處理提高207 倍,既保證了算法的校正精度又確保了系統(tǒng)的實(shí)時(shí)性;在3.1.2 中,算法可以集成在系統(tǒng)中根據(jù)圖像相對(duì)變化快速調(diào)整增益因子,保證白平衡校正的正確性,使其可以應(yīng)用于動(dòng)態(tài)應(yīng)用環(huán)境中;3.1.3 中的色彩色差分析說明該算法相對(duì)于傳統(tǒng)的GWM 以及PRM 可以彌補(bǔ)其不擅長(zhǎng)的應(yīng)用環(huán)境。
針對(duì)完美反射法因圖像傳感器過度曝光白平衡失效的現(xiàn)象,本文提出一種基于暗通道光線透射率精確尋找參考白點(diǎn)進(jìn)行白平衡的算法,其在不影響圖像數(shù)據(jù)采集速率以及準(zhǔn)確性的條件下實(shí)時(shí)進(jìn)行偏色圖像白平衡校正,并且完全適用于移動(dòng)場(chǎng)景中的顏色校正。 此算法在FPGA 中高速并行流水線應(yīng)用,系統(tǒng)實(shí)時(shí)性使得機(jī)器視覺中的檢測(cè)速率得到極大提高,降低物體移動(dòng)產(chǎn)生的干擾確保了系統(tǒng)的穩(wěn)定。
圖3 色彩單一場(chǎng)景
圖4 色彩豐富場(chǎng)景
圖5 過度曝光場(chǎng)景