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