基于圖像增強的去霧快速算法的FPGA實現(xiàn)
摘要:基于圖像增強方法,本文提出了一種使用亮度映射的圖像去霧快速算法。此算法通過調(diào)整室外多霧場景圖像的對比度,提高了霧中物體的辨識度。算法的復雜度低、處理延遲小,實時性高,利于FPGA的實現(xiàn)。實現(xiàn)時不需外存儲器,延時為ns級,并提供了強度調(diào)節(jié)接口,以適應較廣的應用環(huán)境。
本文引用地址:http://2s4d.com/article/201610/308282.htm0 引言
目前關于霧景圖像的處理技術已有許多研究結果,但大多數(shù)去霧算法要么是基于多幅圖像或融合其他信息進行去霧,這大大限制了算法的使用范圍。而基于單幅圖像的去霧算法,如廣泛使用的暗通道方法,大部分還是應用于PC環(huán)境,處理方法復雜,處理速度慢,需要多次遍歷圖像。以暗通道方法為例,文中使用3.0GHz的奔4處理器對600×400分辨率霧景圖像進行處理時亦需要10~20秒,難以在嵌入式環(huán)境下進行實時處理。
但是以上的去霧算法的處理目標是為了完全去除圖像中的霧氣效果以提高肉眼的觀感,而在如軍事、監(jiān)控等實時應用中往往無需全部去除霧氣來提高觀感,而僅僅是為了提高感興趣區(qū)域的辨識度,以發(fā)現(xiàn)隱藏在霧景中的目標物。所以,如何提高原始圖像中受霧氣影響較嚴重區(qū)域的物體辨識度成為在這些應用場景下進行實時去霧處理的關鍵點。
本文所采用的快速算法的處理目標就是利用霧景圖像的亮度分布特點,通過采用基于圖像增強的方法來提高原始圖像中被霧氣影響的遠景物體的辨識度。算法復雜度低,優(yōu)化后的FPGA實現(xiàn)可以做到ns級的延時。
1 算法介紹
室外多霧環(huán)境由于空氣中的霧氣改變了大氣散射條件,使得采集到的物體圖像發(fā)生了對比度退化。廣泛使用的霧景圖像數(shù)學模型如式(1)所示。
I(x)=J(x)t(x)+A[1-t(x)] 式(1)
式(1)中:I是觀察到的霧景退化圖像,J是無霧時的景物圖像,A是大氣光照,t是透射率。所以要進行完全的去霧就是要通過I和某些先驗條件反算出J、t、A。
本文算法主要關注大氣光照參數(shù)A對圖像所產(chǎn)生的影響,令t=0,可得I=A,可見A指代當場景中沒有物體時所觀察到的大氣光照圖像。而由于物體的視覺信息都是由大氣光照下由物體反射得到,在反射中物體會吸收部分光線,造成亮度損失。所以A通常為整幅霧景圖像的亮度最高值,所以有如下示意圖來進一步表述退化作用的原理。
由式(1)結合圖1易見,霧景圖像實際可看成由原始無霧圖像上按比例半透明地疊加上一層高亮白色圖像得到的結果,而其疊加比例參數(shù)決定于透射率t,透射率越高,霧氣對于成像的影響越小,得到的圖像越接近真實。而在室外場景中,霧氣濃度分布均勻情況下,物體距離相機越遠,透射率越低,即采集到的物體圖像的退化程度越高。而由于A通常為整幅圖像的亮度最高值,所以霧景中物體的亮度也會隨著退化程度的提高而變高。
所以,由理論模型我們可以得到以下結論:在通常的霧景圖像中,物體距離相機越遠,圖像的退化程度越高,其亮度也隨之變高。即霧景圖像的亮度和退化程度具有一定程度的正相關性。
基于以上的分析,我們可以通過增強高亮度區(qū)域圖像的對比度來提高霧景圖像中退化較嚴重區(qū)域物體的辨識度。我們使用式(2)來進行亮度的映射以實現(xiàn)對高亮度區(qū)域的對比度增強。式(2)所對應的亮度映射曲線如圖2對比度曲線應具有隨亮度提升平滑需要使用如式(2)所示的函數(shù)進行對比度調(diào)節(jié)得到的亮度映射曲線如圖2所示。
式(2)中參數(shù)p為增強強度,取值范圍[0,1)。當p=0時Yout=Yin即沒有增強。
圖2中的p=0時的平直線為標準對比度曲線,可以看出當亮度較低時算法的曲線斜率小,隨著亮度變高,斜率逐步變大。并且斜率變化連續(xù),曲線平滑,以降低由對比度調(diào)節(jié)所帶來的圖像失真。同時,隨著p增大,曲線的曲度變得劇烈。
2 FPGA實現(xiàn)
基于FPGA的硬件處理,需要將原[0,1)的浮點數(shù)對應到[0,255]的定點整數(shù)域進行處理。所以此算法對FPGA來說只需建立并維護一個8bit 256的亮度映射表即可,適合在FPGA中實現(xiàn)。
2.1 硬件結構
由FPGA為核心搭建的硬件平臺框圖如圖3所示。模擬標清PAL視頻經(jīng)過AD芯片轉(zhuǎn)換為數(shù)字視頻輸入到FPGA中,在FPGA內(nèi)對視頻進行去霧處理,處理完的數(shù)字視頻輸出到DA芯片中再轉(zhuǎn)換成PAL輸出給顯示器顯示。
數(shù)字化后的PAL信號符合BT.656標準,為內(nèi)嵌同步碼的YUV數(shù)字視頻,其中Y分量為亮度分量,F(xiàn)PGA即針對此分量進行去霧處理。
BT656視頻格式以及Y分量的提取方法如圖4所示。
根據(jù)BT.656碼流中的內(nèi)嵌同步頭對數(shù)據(jù)定位,再對定位后的流數(shù)據(jù)進行計數(shù),計數(shù)中如圖4所示的第偶數(shù)個數(shù)據(jù)為Y分量,將其提取出使用本算法進行處理。
2.2 算法優(yōu)化
由于真實場景中采集的圖像往往亮度無法達到飽和,如果直接運用式(2),大量像素都映射到低亮度部分曲線,反而壓低了整個對比度所以不會得到太好的效果。所以原公式中需要加入最大亮度Ymax參數(shù),將(Ymax,255)作為曲線的收斂點,同時將式(2)的計算處理成定點整數(shù)域計算以利于硬件實現(xiàn),最后得到優(yōu)化后的公式:
式(3)中的Yin,P,Ymax,Yout有效位數(shù)均為8bit,取值范圍為[0,255),即變量的歸一化值變?yōu)?55。其中,Ymax為一幀圖像像素中的最大亮度。當Ymax=210時,式(3)所得到的亮度曲線如圖5所示。
由圖5可見,優(yōu)化后的亮度映射曲線與圖2基本一致,但收斂點變?yōu)?Ymax,255),從而提高亮度變換的有效性。
由于要統(tǒng)計圖像中的亮度最大值,所以需要遍歷一遍圖像,這樣會增加40ms(一幀PAL圖像的傳輸時間)延時。實際處理時可以利用視頻幀間差異較小這一特點,取上一幀的Ymax作為當前幀處理的參數(shù)。由于Ymax是上一幀的最大值,所以算法處理時可能出現(xiàn)當前幀的Yin大于Ymax從而其映射得到的Yout值可能溢出(大于255)。因此,建立和更新映射表時需要將計算結果大于255的值進行鉗位,使其等于255,由以上方法得到FPGA邏輯原理框圖如圖6所示。
圖6中的Y分量提取模塊將輸入視頻流中的Y分量提取出來分支到兩路處理,一路進行最大值搜索,當一幀結束時得到Ymax輸出給亮度映射表生成模塊生成新一幀的亮度映射表;分支的另一路查詢當前亮度映射表,得到增強后的Yout,最后和UV分量再次復合成標清視頻流輸出到AD芯片進行PAL編碼。
2.3 去霧效果和性能
針對幾張霧景樣圖的處理效果如圖7所示。
處理的效果由圖7可以看出,霧氣彌漫的圖像上部區(qū)域在增強處理后對比度有所提升,原圖區(qū)域中的物體模糊一團,隨著增強強度的提升其紋理特征基本可識別。
但此種提升效果是以降低圖像整體亮度為代價的,當參數(shù)升高時,整體亮度逐漸下降。所以在不同的光照條件下,選取不同的P值可以得到更好的感官效果。
在處理的性能方面,由于在映射表的建立和更新中使用上一幀圖像的Ymax,對當前幀處理時,表已在上一幀圖像結束后的消隱時間中更新完畢。所以,當Yin輸入時直接進行查表得出增強后的Yout,延時僅為一個時鐘周期,本文所完成的設計中使用27MHz時鐘作為系統(tǒng)時鐘,即延時約為37ns。
算法使用Xilinx公司低端系列Spartan3的XC3S400AN實現(xiàn),僅占用402Slices,3個乘法器以及54Kbit塊ram,最高可以運行到142MHz,并且不需任何片外存儲資源,所實現(xiàn)系統(tǒng)的成本低,功耗小,實時性高。
3 小結
針對室外多霧環(huán)境下,霧中景物亮度高,但對比度低的特點,本文提出了一種使用亮度映射的圖像增強算法?;诖怂惴梢钥焖俳⒘炼扔成浔?,對輸入圖像的亮度使用查表法處理即可完成圖像多霧區(qū)域的對比度增強,可以有效提高多霧場景中物體的辨識度。在FPGA中實現(xiàn)的邏輯電路復雜度低,實時性強,資源占用少。
評論