基于圖像增強的去霧快速算法的FPGA實(shí)現
摘要:基于圖像增強方法,本文提出了一種使用亮度映射的圖像去霧快速算法。此算法通過(guò)調整室外多霧場(chǎng)景圖像的對比度,提高了霧中物體的辨識度。算法的復雜度低、處理延遲小,實(shí)時(shí)性高,利于FPGA的實(shí)現。實(shí)現時(shí)不需外存儲器,延時(shí)為ns級,并提供了強度調節接口,以適應較廣的應用環(huán)境。
本文引用地址:http://dyxdggzs.com/article/201610/308282.htm0 引言
目前關(guān)于霧景圖像的處理技術(shù)已有許多研究結果,但大多數去霧算法要么是基于多幅圖像或融合其他信息進(jìn)行去霧,這大大限制了算法的使用范圍。而基于單幅圖像的去霧算法,如廣泛使用的暗通道方法,大部分還是應用于PC環(huán)境,處理方法復雜,處理速度慢,需要多次遍歷圖像。以暗通道方法為例,文中使用3.0GHz的奔4處理器對600×400分辨率霧景圖像進(jìn)行處理時(shí)亦需要10~20秒,難以在嵌入式環(huán)境下進(jìn)行實(shí)時(shí)處理。
但是以上的去霧算法的處理目標是為了完全去除圖像中的霧氣效果以提高肉眼的觀(guān)感,而在如軍事、監控等實(shí)時(shí)應用中往往無(wú)需全部去除霧氣來(lái)提高觀(guān)感,而僅僅是為了提高感興趣區域的辨識度,以發(fā)現隱藏在霧景中的目標物。所以,如何提高原始圖像中受霧氣影響較嚴重區域的物體辨識度成為在這些應用場(chǎng)景下進(jìn)行實(shí)時(shí)去霧處理的關(guān)鍵點(diǎn)。
本文所采用的快速算法的處理目標就是利用霧景圖像的亮度分布特點(diǎn),通過(guò)采用基于圖像增強的方法來(lái)提高原始圖像中被霧氣影響的遠景物體的辨識度。算法復雜度低,優(yōu)化后的FPGA實(shí)現可以做到ns級的延時(shí)。
1 算法介紹
室外多霧環(huán)境由于空氣中的霧氣改變了大氣散射條件,使得采集到的物體圖像發(fā)生了對比度退化。廣泛使用的霧景圖像數學(xué)模型如式(1)所示。
I(x)=J(x)t(x)+A[1-t(x)] 式(1)
式(1)中:I是觀(guān)察到的霧景退化圖像,J是無(wú)霧時(shí)的景物圖像,A是大氣光照,t是透射率。所以要進(jìn)行完全的去霧就是要通過(guò)I和某些先驗條件反算出J、t、A。
本文算法主要關(guān)注大氣光照參數A對圖像所產(chǎn)生的影響,令t=0,可得I=A,可見(jiàn)A指代當場(chǎng)景中沒(méi)有物體時(shí)所觀(guān)察到的大氣光照圖像。而由于物體的視覺(jué)信息都是由大氣光照下由物體反射得到,在反射中物體會(huì )吸收部分光線(xiàn),造成亮度損失。所以A通常為整幅霧景圖像的亮度最高值,所以有如下示意圖來(lái)進(jìn)一步表述退化作用的原理。

由式(1)結合圖1易見(jiàn),霧景圖像實(shí)際可看成由原始無(wú)霧圖像上按比例半透明地疊加上一層高亮白色圖像得到的結果,而其疊加比例參數決定于透射率t,透射率越高,霧氣對于成像的影響越小,得到的圖像越接近真實(shí)。而在室外場(chǎng)景中,霧氣濃度分布均勻情況下,物體距離相機越遠,透射率越低,即采集到的物體圖像的退化程度越高。而由于A(yíng)通常為整幅圖像的亮度最高值,所以霧景中物體的亮度也會(huì )隨著(zhù)退化程度的提高而變高。
所以,由理論模型我們可以得到以下結論:在通常的霧景圖像中,物體距離相機越遠,圖像的退化程度越高,其亮度也隨之變高。即霧景圖像的亮度和退化程度具有一定程度的正相關(guān)性。
基于以上的分析,我們可以通過(guò)增強高亮度區域圖像的對比度來(lái)提高霧景圖像中退化較嚴重區域物體的辨識度。我們使用式(2)來(lái)進(jìn)行亮度的映射以實(shí)現對高亮度區域的對比度增強。式(2)所對應的亮度映射曲線(xiàn)如圖2對比度曲線(xiàn)應具有隨亮度提升平滑需要使用如式(2)所示的函數進(jìn)行對比度調節得到的亮度映射曲線(xiàn)如圖2所示。

式(2)中參數p為增強強度,取值范圍[0,1)。當p=0時(shí)Yout=Yin即沒(méi)有增強。

圖2中的p=0時(shí)的平直線(xiàn)為標準對比度曲線(xiàn),可以看出當亮度較低時(shí)算法的曲線(xiàn)斜率小,隨著(zhù)亮度變高,斜率逐步變大。并且斜率變化連續,曲線(xiàn)平滑,以降低由對比度調節所帶來(lái)的圖像失真。同時(shí),隨著(zhù)p增大,曲線(xiàn)的曲度變得劇烈。
2 FPGA實(shí)現
基于FPGA的硬件處理,需要將原[0,1)的浮點(diǎn)數對應到[0,255]的定點(diǎn)整數域進(jìn)行處理。所以此算法對FPGA來(lái)說(shuō)只需建立并維護一個(gè)8bit 256的亮度映射表即可,適合在FPGA中實(shí)現。
2.1 硬件結構
由FPGA為核心搭建的硬件平臺框圖如圖3所示。模擬標清PAL視頻經(jīng)過(guò)AD芯片轉換為數字視頻輸入到FPGA中,在FPGA內對視頻進(jìn)行去霧處理,處理完的數字視頻輸出到DA芯片中再轉換成PAL輸出給顯示器顯示。

數字化后的PAL信號符合BT.656標準,為內嵌同步碼的YUV數字視頻,其中Y分量為亮度分量,FPGA即針對此分量進(jìn)行去霧處理。
BT656視頻格式以及Y分量的提取方法如圖4所示。
根據BT.656碼流中的內嵌同步頭對數據定位,再對定位后的流數據進(jìn)行計數,計數中如圖4所示的第偶數個(gè)數據為Y分量,將其提取出使用本算法進(jìn)行處理。

2.2 算法優(yōu)化
由于真實(shí)場(chǎng)景中采集的圖像往往亮度無(wú)法達到飽和,如果直接運用式(2),大量像素都映射到低亮度部分曲線(xiàn),反而壓低了整個(gè)對比度所以不會(huì )得到太好的效果。所以原公式中需要加入最大亮度Ymax參數,將(Ymax,255)作為曲線(xiàn)的收斂點(diǎn),同時(shí)將式(2)的計算處理成定點(diǎn)整數域計算以利于硬件實(shí)現,最后得到優(yōu)化后的公式:

式(3)中的Yin,P,Ymax,Yout有效位數均為8bit,取值范圍為[0,255),即變量的歸一化值變?yōu)?55。其中,Ymax為一幀圖像像素中的最大亮度。當Ymax=210時(shí),式(3)所得到的亮度曲線(xiàn)如圖5所示。

由圖5可見(jiàn),優(yōu)化后的亮度映射曲線(xiàn)與圖2基本一致,但收斂點(diǎn)變?yōu)?Ymax,255),從而提高亮度變換的有效性。
由于要統計圖像中的亮度最大值,所以需要遍歷一遍圖像,這樣會(huì )增加40ms(一幀PAL圖像的傳輸時(shí)間)延時(shí)。實(shí)際處理時(shí)可以利用視頻幀間差異較小這一特點(diǎn),取上一幀的Ymax作為當前幀處理的參數。由于Ymax是上一幀的最大值,所以算法處理時(shí)可能出現當前幀的Yin大于Ymax從而其映射得到的Yout值可能溢出(大于255)。因此,建立和更新映射表時(shí)需要將計算結果大于255的值進(jìn)行鉗位,使其等于255,由以上方法得到FPGA邏輯原理框圖如圖6所示。

圖6中的Y分量提取模塊將輸入視頻流中的Y分量提取出來(lái)分支到兩路處理,一路進(jìn)行最大值搜索,當一幀結束時(shí)得到Ymax輸出給亮度映射表生成模塊生成新一幀的亮度映射表;分支的另一路查詢(xún)當前亮度映射表,得到增強后的Yout,最后和UV分量再次復合成標清視頻流輸出到AD芯片進(jìn)行PAL編碼。
2.3 去霧效果和性能
針對幾張霧景樣圖的處理效果如圖7所示。

處理的效果由圖7可以看出,霧氣彌漫的圖像上部區域在增強處理后對比度有所提升,原圖區域中的物體模糊一團,隨著(zhù)增強強度的提升其紋理特征基本可識別。
但此種提升效果是以降低圖像整體亮度為代價(jià)的,當參數升高時(shí),整體亮度逐漸下降。所以在不同的光照條件下,選取不同的P值可以得到更好的感官效果。
在處理的性能方面,由于在映射表的建立和更新中使用上一幀圖像的Ymax,對當前幀處理時(shí),表已在上一幀圖像結束后的消隱時(shí)間中更新完畢。所以,當Yin輸入時(shí)直接進(jìn)行查表得出增強后的Yout,延時(shí)僅為一個(gè)時(shí)鐘周期,本文所完成的設計中使用27MHz時(shí)鐘作為系統時(shí)鐘,即延時(shí)約為37ns。
算法使用Xilinx公司低端系列Spartan3的XC3S400AN實(shí)現,僅占用402Slices,3個(gè)乘法器以及54Kbit塊ram,最高可以運行到142MHz,并且不需任何片外存儲資源,所實(shí)現系統的成本低,功耗小,實(shí)時(shí)性高。
3 小結
針對室外多霧環(huán)境下,霧中景物亮度高,但對比度低的特點(diǎn),本文提出了一種使用亮度映射的圖像增強算法?;诖怂惴梢钥焖俳⒘炼扔成浔?,對輸入圖像的亮度使用查表法處理即可完成圖像多霧區域的對比度增強,可以有效提高多霧場(chǎng)景中物體的辨識度。在FPGA中實(shí)現的邏輯電路復雜度低,實(shí)時(shí)性強,資源占用少。
評論