陸金旺,王曉凱,石亦琨
(1.山西大學 物理電子工程學院,山西 太原 030006;2.北京星途探索科技有限公司,北京 100023)
在水汽充足、大氣穩(wěn)定的情況下,相對濕度達到100%時,空氣中的水汽便會凝結成細微的水滴懸浮于空中,使地面的能見度下降,這種天氣現(xiàn)象稱為霧.種類有輻射霧、平流霧、混合霧、蒸發(fā)霧等.霧阻礙光線的傳播、影響成像系統(tǒng)、降低圖像的對比度、降低物體的分辨度,因此,研究如何去除霧氣的影響,對于圖像增強具有非常深遠的影響.
根據算法的不同,圖像去霧算法一般分為2類.
第1類是無物理模型的去霧算法,直方圖均衡化算法就是將原始圖像的灰度直方圖從比較集中的某個灰度區(qū)間變成全部灰度范圍內的均勻分布;Retinex圖像增強算法[1-2]將接收到的圖像信號分為環(huán)境光照射分量與目標物體反射分量的乘積,進而在對數(shù)域求出目標物體的反射分量;自動色階算法[3]去掉最高的像素值,去掉最低的像素值,再將圖像的其余像素值進行線性映射或者伽馬校正至[0, 255]區(qū)間;自適應對比度增強算法[4]將一幅圖像分成高頻和低頻兩部分,低頻圖像通過圖像的低通濾波(平滑模糊)得到,高頻圖像是原圖和低頻圖像的差值,算法增強代表細節(jié)的高頻部分,然后重組得到增強的圖像.
第2類是基于物理模型的圖像去霧,這一系列方法基本是基于大氣退化模型,代表性算法有:Fattal等[5]在原有的大氣傳輸模型上,增加了表面陰影因子這個變量,并假設其與傳輸函數(shù)統(tǒng)計無關;He等[6-7]通過大量的實驗發(fā)現(xiàn):在絕大多數(shù)非天空的局部區(qū)域里,總會有一個顏色通道的像素點具有很低的值,通過這個先驗從而求出透射率,這就是著名的暗通道先驗理論;孫抗[8]、王燕等[9]在暗通道先驗的基礎上,通過改變?yōu)V波器對透射率進行快速估計;李加元等[10]在暗通道先驗的基礎上,將天空區(qū)域和非天空區(qū)域分開處理,從而解決天空區(qū)域處理不好的問題;謝偉等[11]通過引導濾波正則項引入權值,克服了引導濾波原本會遭遇的光暈問題;Zhu等[12]發(fā)現(xiàn)亮度、飽和度、霧濃度之間的先驗關系,又因為霧濃度隨場景深度的變化而增加,進而建立場景深度、亮度和飽和度之間的線性模型;Meng等[13]給透射率增加邊界約束,并結合加權 L1范數(shù)的上下文正則化,將去霧問題建模為一個優(yōu)化問題來估計未知場景的傳輸率;Fattal[14]提出了color lines的去霧方法,該方法指出自然場景圖像的局部像素值在RGB色彩空間中呈現(xiàn)1維分布的規(guī)律,并利用這一規(guī)律與初始值的線性偏移量來預估含霧圖像的透射圖;Berman等[15-16]假設無霧圖像的顏色可以很好地近似為數(shù)百種不同的顏色,這些顏色在RGB空間中形成緊密的簇,這些簇中包含的像素通常是非局部的,在有霧情況下,每種顏色簇成為一條線,即霧線,利用這些霧線恢復透射率,進而恢復出無霧的圖像.
無物理模型的去霧算法沒有考慮霧圖的成像機制,處理后的圖像存在色彩失真、細節(jié)丟失等問題,故本文選擇基于物理模型的圖像去霧方法.
霧天成像的數(shù)學模型[17]為
I(x)=J(x)·t(x)+(1-t(x))·A,
(1)
式中:I(x)是接收到的有霧圖像;J(x)是需要恢復出來的無霧圖像;A是整幅圖像的全球大氣光成分;t(x)為光透過介質的透射率.其中的透射率又和場景深度有關,其公式為
t(x)=e-βd(x).
(2)
通過式(1),得到的恢復圖像公式為
(3)
對于一幅RGB 3通道的圖像,在沒有霧的情況下,t(x)≈1,I(x)≈J(x),在霧氣的影響下,透射率t(x)減小,說明無霧圖像J(x)的成分被衰減了.同理,(1-t(x))的增加,導致(1-t(x))A增加,說明A的成分增加了.因為大氣模型是線性模型,所以I(x)會沿著J(x)和A之間的直線向A靠近.去霧的目標就是將I(x)恢復成J(x).
圖1 霧天成像模型
本文根據輸入的有霧圖像,先利用顏色衰減先驗知識求出輸入圖像的初始透射率,接著通過上下文正則化和改進的引導濾波器的方法對初始透射率進行優(yōu)化,與此同時,進行大氣光估計,進而恢復去霧圖像,最后對恢復的圖像進行對比度拉伸,得到清晰的去霧圖像,算法流程如圖2 所示.
圖2 本文算法流程圖
從圖3 中可以看出,薄霧圖像的像素點一般分布在V-S值為0.4~0.75之間,而濃霧圖像的像素點一般分布在0.75~0.85之間.
圖3 亮度、飽和度、霧度關系
基于此,Zhu等[12]提出了顏色衰減先驗理論.該理論認為:亮度與飽和度的差異和有霧圖像中的霧度呈正相關,又由于霧的濃度和場景深度呈正相關,所以認為亮度和飽和度之間的差與場景的深度呈正相關,即
d(x)∝c(x)∝(V(x)-S(x)),
(4)
式中:d是場景深度;c是霧度的濃度;V是場景的亮度;S是飽和度;∝ 是正相關.
Zhu等[12]建立了一個線性模型,更精確地表達亮度、飽和度、霧的濃度之間的關系,即
d(x)=θ0+θ1V(x)+θ2S(x)+ε(x),
(5)
式中:x是像素坐標;V是有霧圖像的亮度分量;S是飽和度分量;θ0,θ1,θ2是未知的系數(shù);ε(x)是隨機誤差系數(shù).
Zhu等[12]通過人工合成場景深度d(x), 再利用式(1)和(2)求出θ0=0.121 779,θ1=0.959 710,θ2=-0.780 245,ε(x)=0.041 337.
透射率圖的深度跳躍會引發(fā)邊緣偽影,為了解決這個問題,需要對透射率圖進行約束,即
W(x,y)|t(y)-t(x)|,
(6)
式中:x和y是兩個相鄰的像素點;W(x,y)是權重函數(shù),它的作用是當|t(y)-t(x)|過大時,通過權重函數(shù)W(x,y)使|t(y)-t(x)|趨于0,所以權重W(x,y)定義為
W(x,y)=e-‖t(x)-t(y)‖2/2α2,
(7)
式中:t(x),t(y)是相鄰的透射率值;α是規(guī)定的數(shù)值,一般取0.5.
對式(6)進行離散化,即
(8)
式中:T是透射率圖的索引集;wij是權重函數(shù)的離散形式,在圖像領域,微分的作用就是求出像素之間的差值,因此,式(8)可以變?yōu)?/p>
(9)
式中:Dj是一階微分算子;?是卷積運算符,在圖像領域,Dj?t表示一階微分算子對透射率圖進行銳化.
式(9)可以簡化為
(10)
式中:Wj是微分算子的索引集;°表示逐元素乘法算子.
因此,式(7)可以變形為
(11)
Sobel算子對于像素位置的影響做了加權,可以降低邊緣模糊程度,由于它是濾波算子,在提取邊緣方面有重要作用,并且可以利用快速卷積函數(shù),對算法進行加速,本文所用的一階Sobel微分算子如圖4 所示.
(a)
為了將透射率估計得更加準確,還需要將求解透射率問題轉化為最優(yōu)化問題,即求如下目標函數(shù)的最小值
(12)
為了求解式(12)的最小值,用到半二次分裂的方法加入輔助變量Hj,即
(13)
式中:Y是常數(shù),依次取20,21,22,…,28.
通過半二次分裂的方法,求得
(14)
所求的透射率函數(shù)
(15)
經過上下文正則化后的透射率圖有效地去除了圖像的偽影,但是對于圖像的邊緣信息仍然有待加強,引導濾波是一種很好的保持邊緣的方法,但使用引導濾波無法避免光暈的引入,需要改進,如圖5 所示.
圖5 透射率對比圖
引導濾波函數(shù)假設輸出和輸入在一個二維窗口內滿足線性關系
qi=akli+bk,
(16)
式中:q是輸出像素的值;I是引導圖像的值;i,k是像素的索引;ak,bk是當窗口中心位于K時該線性函數(shù)的系數(shù).
對式(16)兩邊取梯度,可以得到
?q=ak?I.
(17)
同時,輸出q也可以表示成
qi=pi-ni,
(18)
式中:p是q受到噪聲n污染的退化圖像.
為了將噪聲最小化,即希望擬合函數(shù)的輸出值q和真實值p之間的差距最小,將問題轉化為最優(yōu)化的問題,即是讓式(19)最小
(19)
式中:ε是用來防止ak過大的正則化參數(shù),其值由人為規(guī)定.經計算,對應的ak和bk分別為
(20)
(21)
從式(17)可以看出,當引導圖像I有梯度時,輸出圖像q也會有梯度.同時可以看出,ak的大小,控制著q的梯度大小.當ak越小,qi中的梯度信息就越小,說明圖像越平滑;當ak越大,qi中的梯度信息就越多,說明圖像的邊緣信息就越清晰.
從式(20)可以看出,ε不只是簡單的參數(shù),它能控制ak的大小.
ε的設計思路如圖6 所示:當輸出圖像q的梯度值小于某一閾值時,說明此時的圖像需要平滑,此時將ε拉高,ak將會變小;當輸出圖像q的梯度值大于某一閾值時,說明此時的圖像需要邊緣,此時將ε拉低,ak將會變大,輸出圖像q的梯度將會變大.
圖6 ε值曲線
基于此,ε可以表示成如下函數(shù)
(22)
式中:ρ是一個常數(shù),一般取40;τ是一個常數(shù),一般去15;Ti表示圖像的梯度,即
(23)
He提出了一種基于全局的大氣光估計方法,先從暗通道圖像中選最亮的0.1%比例像素點的位置,然后在原始圖像中的這些位置上尋找對應的具有最高亮度像素點的值,并將其值估計為大氣光值.有人直接選取輸入圖像中亮度最大像素點的灰度值作為全局大氣光估計值.
本文選取圖像HSV 3通道中的亮度通道,然后選取亮度通道中亮度值最大的點作為大氣光估計值,即
A=max(max(V(x)),
(24)
為了使恢復出來的圖像質量更高,需進行對比度拉伸.
(25)
式中:Jc是對比度拉伸后的圖像;J是通過式(3)恢復的無霧圖像;Jmin是無霧圖像J中的最小值;Jmax是無霧圖像J中的最大值.
同時,設置兩個閾值將Jc中小于Jlow和大于Jhigh的值映射至區(qū)間[Jlow,Jhigh],即
Jlow=var·Jmin+(1-var·Jmin),
(26)
Jhigh=var·Jmax+(1-var·Jmax),
(27)
式中:var是圖像的方差.
在Intel i5-1135G7@2.4 GHz,16 GB內存、64 b Win10操作系統(tǒng)的計算機上,通過Matlab 2018b平臺,分別采用He[6-7]的暗通道去霧算法、Zhu[12]的顏色衰減先驗算法、Meng[13]的邊界約束算法、本文算法進行處理,為了方便起見,選擇4個典型樣本,分別命名為樣本1、樣本2、樣本3、樣本4.
圖像去霧結果如圖7 所示,He算法恢復出來的圖像物體邊緣有白色的偽影,圖像的邊緣信息沒得到增強,且恢復出來的圖像偏暗,丟失了色彩飽和度.
圖7 實驗結果
Zhu[12]的顏色衰減先驗算法適合處理霧氣濃度空間分布一致的圖像,當遇到很明顯霧氣濃度空氣分布不一致的圖像(樣本3、樣本4),去霧效果就會減弱.Meng算法恢復出來的圖像,圖像的邊緣細節(jié)得到提升,但是圖像的霧氣沒有完全被消除,顏色不夠自然.經過本文的算法處理后,圖像的色彩更加自然,圖像的的邊緣信息得到了增強,圖像的去霧效果較好,偽影、光暈效應等現(xiàn)象被有效地抑制,圖像質量整體上得到了增強.
通過人眼去評價一幅圖像帶有太多的主觀性,時常會因為個人的偏好而產生分歧,所以,需要一些客觀的評價方法來對恢復的圖像進行評判.常用的客觀評價方法有峰值信噪比(PSNR)、結構相似性(SSIM)、平均梯度(AG)、運行速度.
峰值信噪比經常用做圖像增強領域中的評價指標,它衡量最大值信號和背景噪聲的比值,其值越大,噪聲所占比值就越小,圖像質量更高.
結構相似性是一種全參考的圖像質量評價標準,它分別從亮度、對比度、結構3方面度量圖像相似性,其值越大,說明人眼所得到的結構信息越多.
平均梯度用于衡量圖像的清晰程度,其值越大,表示圖像的清晰度越好.
本文選取4個樣本,其中樣本1的圖像像素大小是376*376,樣本2的圖像像素大小是512*384,樣本3的圖像像素大小是600*400,樣本4的圖像像素大小是768*576.
測試結果如表1~表4.
表1 峰值信噪比對比結果
表2 結構相似性對比結果
表3 平均梯度對比結果
表4 運行時間消耗對比結果
從表1 可知,本文算法得到的峰值信噪比值普遍高于其它3種算法,說明經過本文算法的處理,噪聲(霧氣)被很好地抑制;從表2 可知,本文算法得到的結構相似性值普遍高于其它3種算法,說明本文算法恢復的圖像結構信息更多;從表3 可知,本文算法得到的平均梯度值略高于其它3種算法,說明本文算法恢復的圖像清晰度更高;從表4 可以看出,本文算法在處理小圖時,算法耗時比其它3種算法更少.
綜上所述,在去霧增強效果方面,本文算法在主觀視覺上比其他方法有優(yōu)勢,在客觀評價體系下,本文算法的評價指標要優(yōu)于其它算法.說明本文提出的算法在去霧和增強上有很大的改善.
本文先利用顏色衰減驗先對透射率進行估計,再利用上下文正則化和改進的引導濾波器對透射率進行優(yōu)化,在消除霧氣的同時,避免引起圖像的偽影、光暈效應,同時,通過對比度拉伸對圖像進行線性處理,使恢復出來的圖像顏色更加自然.對比He,Meng,Zhu的算法,本文算法在視覺效果和客觀評價指標方面有著更為優(yōu)秀的表現(xiàn).本文算法雖然取得了較好的主觀效果,但是在處理大圖的速度上和其他算法相比并無優(yōu)勢,這將是下一步工作的重點.