火元蓮,鄭海亮,陳萌萌,李俞利,張婧博,李 明
(西北師范大學物理與電子工程學院,甘肅 蘭州 730070)
在霧霾天氣條件下,滲透在空氣中的霧、小顆粒塵埃和膠溶質顆粒通過散射和吸收可見光使得圖像采集設備所獲取的圖像對比度和顏色飽和度下降,許多細節信息丟失[1-4],導致圖像嚴重退化模糊,從而直接限制和影響了諸如智能導航、交通監控、航空航天等戶外視覺監控系統[5-6]效用的發揮。因此,圖像去霧技術的研究十分有必要而且具有重要的現實意義和應用價值。
目前對于霧霾圖像的處理方法主要有三種:一種是基于圖像增強的方法,例如全局直方圖均衡化算法、同態濾波算法、小波變換算法和Retinex算法等,這類算法不考慮圖像退化的本質原因,只是一味地增強圖像的對比度、提高亮度,致使圖像的細節信息損失較多。另一種是基于圖像復原的方法,通過建立大氣散射模型,根據散射原因反演退化過程,補償退化造成的失真,以便改善霧霾圖像的質量,在該類算法中尤其是基于先驗信息的單幅圖像去霧研究在近年來取得了大量的研究成果。如Tan等[7]通過使用最大化復原霧天圖像的對比度來達到去霧的目的,但是該方法處理后的圖像顏色過于飽和,看起來很不自然;Tarel等[8]在景深突變區域,采用中值濾波而使去霧后的圖像往往會出現光暈效應,并且該算法參數較多,不易調整,在實際應用中存在諸多不便;Fattal等[9]假設透射率和場景目標表面投影在局部不相關,并通過獨立成分分析法來估計場景的透射率,最終實現圖像的去霧,但是對于顏色信息比較少的濃霧圖像去霧效果較差;He等[10]通過對大量無霧圖像的搜集和觀察分析,提出了一種暗通道先驗理論,并通過該理論估計初始透射率,然后利用軟摳圖算法進一步細化透射率,最終得到較好的去霧效果,但是當圖像存在大面積天空區域時,恢復出的圖像也會有明顯的失真。還有一種是基于學習的方法,Ren等[11]提出了多尺度的卷積神經網絡來學習各種霧霾圖像的透射率圖,進而恢復出無霧圖像,但該算法需要根據霧霾濃度手動調整參數;Cai等[12]利用卷積神經網絡來學習有霧圖像的特征以估計透射率圖,然后復原出無霧圖像,該卷積神經網絡較淺且只使用單尺度進行特征提取,對于很多特定場景,易出現顏色失真、細節丟失和去霧過度等現象。目前,傳統的去霧算法大多數都是基于暗通道先驗的,但是He 等[10]的方法在處理含有大片天空、白色區域時,去霧效果并不好,而且當存在過高的大氣光估值時,還會導致去霧圖像顏色過飽和。
針對上述存在的問題,為抑制天空區域出現光暈效應,解決去霧圖像顏色過飽和的問題,本文提出了一種聯合霧線先驗和凸優化的去霧算法。該算法使用霧線先驗來代替暗通道先驗,去估計更準確的大氣光值,消除了去霧后圖像顏色過飽和的問題;并通過離散Haar小波變換(discrete haar wavelet transform,DHWT)構建降維子帶霧圖模型和凸優化來對透射率進行優化求解,從而可以得到更多的圖像細節信息,有效地抑制了光暈效應和條紋偽影的產生。實驗結果表明,本文方法可以取得較好的去霧效果。
目前,基于圖像復原的物理模型普遍的是由McCarttney提出的大氣散射模型(如圖1所示),該模型是復原圖像的主要理論依據。

圖1 大氣散射模型
McCartney提出的模型表達式為:
E=I∞ρe-βd+I∞(1-e-βd),然后He等[10]令e-βd=t,I∞=A,I∞ρ=J,進一步得到了大氣散射模型的簡化表達式:
I(x)=J(x)t(x)+A·(1-t(x))
(1)
其中,x是平面圖像中的索引位置;I是霧天圖像;J是場景輻射,即待復原的無霧圖像;A是大氣光值,其代表周圍環境中各種光的總強度,在He等[10]的方法中該值是通過暗通道先驗求得的;場景透射率t(x)=e-βd(x),其中β是大氣散射系數,d是場景深度,即目標到相機的距離。
圖像去霧的目的就是在僅已知霧天圖像I的情況下,通過各種方法去求得大氣光值A和場景透射率t,最終經過大氣散射模型來復原出無霧圖像J。
大氣光值和透射率的精確性直接影響著去霧圖像的質量,這兩個參數估計越精確,則復原后的圖像就越清晰自然。本文中基于霧線先驗和凸優化的聯合算法來估計大氣光值和透射率,具體的算法流程如圖2所示。
3.1.1 霧線先驗
霧線先驗[13]基于Berman對無霧圖像的觀察,無霧圖像中不同顏色的數量遠小于像素的數量。因此,在RGB空間中,無霧圖像中的像素會形成幾百個簇;而在霧霾圖像中,霧霾會隨著物體距離的變化而改變顏色的外觀,來自場景中不同位置的像素的簇會連接成為RGB空間中的直線(即霧線)。本文將霧霾圖像的像素視為RGB空間中的點,并將它們的分布建模為相交于單一點(即大氣光)的直線(即霧線)。

圖2 單幅圖像去霧算法流程圖
參考文獻[14],可以將式(1)變形為穿過大氣光坐標A的3D線方程:
I(x)=t(x)·(J(x)-A)+A
(2)
其中,(J(x)-A)表示方向;t表示線參數。為了便于找到霧線,可以將3D線方程的RGB坐標系進行平移,以便使大氣光位于原點:IA(x)=I(x)-A,然后將矢量IA(x)用球面坐標系進行表示:
IA(x)=[r(x),θ(x),φ(x)]
(3)
其中,r是到原點的距離(即‖I-A‖);θ和φ分別是經度角和緯度角。霧線是由具有相同θ和φ角的點組成的。
3.1.2 霧線估計大氣光

d(I(x),(A,φ,θ))=(A-I(x))·(cos(θ),sin(φ))
(4)
僅當到一條線的距離小于閾值τ時,像素才會對候選大氣光值A進行投票。該閾值取決于A到I(x)之間的距離,且是自適應的。該閾值表達式為:
(5)


(6)
其中,K=40,l[·]是一個指示函數,如果為真則等于1,否則等于0。如果大氣光值A的所有像素都大于I(x)的對應像素,則l[A>I(x)]=1。
另外為了防止大氣光值A是一個遠大于1的解,本文對接近像素值的A賦予一個更大的權重,其優化后的表達式為:

(7)
其中,f(y)=1+4·e-y,f(y)為快速衰減權值。
3.1.3 優化計算速度
如果在3D RGB空間中為所有角度和大氣光候選值在所有像素值上進行投票,其計算量將會非常巨大。為此本文使用了一種近似的方法,即在保持計算精度的同時,加快了計算速度。首先,對圖像中的顏色進行聚類,并使用聚類中心的像素而不是所有像素;然后,在二維上執行投票方案,投票重復三次,每次只使用(R,G,B)顏色通道中的兩種。

(8)
通過一次對兩個顏色通道進行累加,計算出三個邊緣概率,其中每次累加在不同的顏色通道上。最后,將由邊緣累加的矢量積產生的3D體積的最大值來表示最終的候選大氣光值。
3.2.1 構建降維DHWT霧圖模型

Ic=Jc⊙t+ac(1-t),c=1,2,3
(9)


(10)
其中,上標a、h、v和d分別表示小波變換的低頻近似、水平、垂直和對角子帶塊。大氣光傳輸分布t的DHWT矩陣將會有四個相同的子帶塊,即:
(11)
可以進一步得到DHWT的霧圖模型表達式:

(12)
(13)
3.2.2 降維DHWT霧圖模型的凸優化
(14)
可以看到式(14)變成了線性的問題,然后對式(14)進行正則化凸優化,得到下式:
c=1,2,3
(15)


(16)

(17)
其中,‖·‖2表示為L2范數,‖·‖TV表示為全變差范數λ的取值為1。
因此,最終透射率分布的凸優化函數表達式為:
(18)
本文的仿真環境為Matlab 2018b,所使用的電腦CPU配置為intel(R)Core(TM)i5-7500 3.40 GHz,內存為16GB,操作系統為Win 10。對6幅具有代表性的霧霾圖像和合成霧霾圖像進行去霧
實驗,并將本文算法和其他圖像去霧算法在主觀和客觀兩方面進行對比分析。
主觀分析主要是以人的肉眼觀察作為評價標準,是一種主觀判斷,能直觀地反映復原效果。圖3為6幅圖像不同算法的去霧效果對比圖。

圖3 不同算法的去霧效果對比
從圖3可以看出,本文提出的算法通常能在整個圖像上產生更真實、更自然和顏色對比度更均衡的效果。在6幅圖像中,文獻[10]的暗通道先驗算法基本去除了霧霾影響,但其處理后的天空和白色花瓣區域都存在嚴重的過飽和現象;文獻[8]的利用中值濾波優化透射率的算法在“峽谷”、“高山”、“書桌”、“山脈”四幅圖像中出現了條紋偽影和光暈的現象,在“百合”圖像中出現了過飽和現象,在“高樓”圖像中去霧效果比較差;在“峽谷”圖像中,文獻[17]的邊界約束算法出現了光暈現象,文獻[14]的霧線先驗算法、文獻[18]的顏色衰減先驗算法和文獻[19]的差分結構保存先驗算法使圖像對比度過度增強,文獻[20]的人工多次曝光融合的算法和文獻[15]的算法雖然在人眼視覺上比較自然,但是其處理后的圖像細節方面不如本文算法;在“高山”圖像中,文獻[17]和文獻[14]的算法在天空區域出現了顏色失真現象,文獻[18]的算法使土地顏色過飽和,與其余算法相比,本文算法處理效果更自然一些;在“百合”圖像中,文獻[17]的算法出現了偽影和失真現象,文獻[20]的算法得到的去霧圖像顏色飽和度不足,看起來比較暗淡,文獻[18]、文獻[14]和文獻[19]的算法在較低的花瓣上產生了陰影,文獻[15]與本文算法處理后的圖像比較接近且本文算法沒有以上缺點;在“書桌”圖像中,文獻[17]、文獻[18]、文獻[14]、文獻[19]和文獻[15]的算法在其圖像的左下角區域有不同程度的失真現象,在其右上角區域有不同程度的顏色過飽和現象,而本文算法保留了正確的飽和度和豐富的細節;在“高樓”圖像中,文獻[17]的算法出現了顏色失真現象,文獻[15]的算法對天空區域處理的不太好,文獻[20]的算法處理的圖像整體比較暗,本文算法雖然處理的比較自然,但是對樓體的紅色部分處理的不夠好,文獻[14]的算法達到了最好的效果;在“山脈”圖像中,文獻[17]的算法在云朵區域產生了失真和偽影現象,文獻[18]和文獻[19]的算法在中央森林區域因顏色過飽和而導致部分細節丟失,文獻[20]的算法去霧效果不好,仍能明顯看見霧霾,文獻[14]的算法雖然能得到一個好的結果,但是在山脈區域沒有本文算法處理的真實自然。
為了更加客觀公正地對比本文算法和其他算法的去霧效果,本文采用圖像質量客觀評價指標:無參考評價指標:信息熵(H)和全參考評價指標:峰值信噪比(PSNR)、結構相似性(SSIM)來定量進行分析,結果如表1和表2所示。
由表1可知,經本文算法處理后的“百合”、“峽谷”、“高山”、“山脈”四幅圖像的信息熵比其他算法的值都要高,一幅圖像的信息熵越高,表示復原圖像包含的信息量越大,細節強度越大,復原結果越清晰。在“高樓”、“書桌”兩幅圖像上雖然沒有達到最大的值,但是也與最大值比較接近,同時最大值(文獻[14])的算法因為過于增亮圖像,導致圖像變得不夠自然,而本文算法處理出的圖像清晰自然,證明了本文算法的效果更好。

表1 6幅圖像的霧圖和不同算法的去霧圖的信息熵值大小

表2 對數據集SOTS進行去霧的平均全參考評價結果
在表2中,本文引入了最近提出的一個大型數據集RESIDE[21],并對其中主要的綜合客觀測試集(SOTS)進行了測試。在與其他去霧算法的對比實驗中發現,本文所提出的算法在全參考圖像質量評價指標:峰值信噪比(PSNR)和結構相似性(SSIM)兩方面都有了大的提高,分別為23.43和0.8715,這進一步證明了本文算法的有效性和穩定性。
為較好地恢復出圖像的細節并有效抑制天空區域的光暈效應和去霧圖像顏色過飽和等問題,本文提出了一種聯合霧線和凸優化的單幅圖像去霧算法。該算法使用霧線先驗來代替暗通道先驗,結合霍夫變換去估計更為準確的大氣光值,并通過構建的降維子帶霧圖模型和凸優化對透射率進行求解,最后采用正則化的思想去優化透射率,經過大氣散射模型恢復出無霧圖像。實驗結果表明,去霧后的圖像清晰自然,解決了天空區域的光暈效應和圖像顏色過飽和的問題,圖像的主觀視覺效果有了提升。但對于較濃霧的圖像去霧效果不理想,下一步將尋找更優的方法對霧霾圖像進行處理。