李洪平 , 趙 波, 金汝寧, 李炎炎
(1.四川大學機械工程學院, 成都 610065;2.先進制造技術四川省重點實驗室, 成都 610065)
如今戶外圖像采集廣泛應用于無人駕駛、視頻監控和地形勘測等各個領域,但當水蒸氣、灰塵或其他微粒在穩定的大氣中積聚時,就會出現霧霾[1-2].霧霾中的微粒會散射或者吸收光線,從而導致戶外采集的圖像出現色彩失真,紋理模糊.這不僅對圖像處理等后期工作帶來了不便,還會導致戶外圖像采集設備的工作性能下降.因此,對圖像去霧算法展開研究,從有霧圖像中復原出清晰的圖像具有重要的研究意義.
目前圖像去霧算法主要分為圖像增強、深度學習和圖像復原三類.圖像增強去霧的主要算法有CLAHE算法、Retinex算法[3]以及小波變化算法[4]等,但圖像增強的本質是利用圖像增強技術提升對比度,去除噪點,還原圖像的視覺效果,但忽略了霧天圖像降質的機理,圖像去霧的效果有限.受益于計算資源和計算能力的發展,基于深度學習的圖像去霧算法[5-8]得到廣泛研究,它主要通過卷積神經網絡模型學習有霧圖像,從而構建圖像去霧模型,但模型的訓練需要大量的霧天圖像,數據集的采集和模型的可靠性限制了基于深度學習去霧算法的普適性.
近年來,基于大氣散射物理模型的圖像復原算法受到廣泛關注,通過結合假設或先驗知識,利用有霧圖像反演推導無霧圖像.Fattal[9]提出了圖像局部透射率與明暗程度不相關的假設,消除了散射光的影響,復原了具有高能見度、高對比度的圖像,但在非均勻、濃霧區域不能有效地去霧.Berman等[10]統計大量圖片發現霧天圖像顏色聚類特性,提出了霧線先驗,可根據圖像RGB值直接估計透射率,但當圖像亮度不均勻、天空色彩不自然時,算法將失效.Zhu等[11]提出了一種簡單而有效的顏色衰減先驗算法,利用亮度和飽和度的差異來估計霧濃度,建立深度模型進行去霧,但該算法對遠景處的去霧效果一般.Liu等[12]利用霧度通常分布在低頻域的特征,提出了開放暗通道模型,實現低頻霧消除,有效提升了濃霧區域的感知能見度,但復原圖像整體偏暗.He等[13]提出了暗通道先驗理論,在圖像去霧領域一直被廣泛關注,但軟摳圖法時間復雜度高,且暗通道先驗在亮區域(天空和白色區域)將會失效.之后,他們又提出了引導濾波代替軟摳圖法[14],加快了透射率的細化.但引導濾波會導致圖像邊緣處透射率估計不準確,從而產生Halo效應[15-16].曾接賢等[17]在暗通先驗的基礎上,同時考慮空域信息和灰度信息,采用自適應雙邊濾波進行復原圖像的邊緣保持,但并未徹底解決Halo效應,且在高亮區域復原失效.
針對上述分析,基于He等[13-14]提出的暗通道先驗理論在解決亮區域顏色失真和引導濾波引起的Halo效應方面的不足,本文提出了基于亮區域暗通道矯正和加權聚合引導濾波的改進算法.該方法首先基于相對景深閾值分割亮區域,然后采用飽和度和灰度值校正亮區域暗通道,利用加權聚合引導濾波細化透射率,最后將復原圖像轉化到HSV色彩空間,對亮度進行矯正,并基于霧濃度均值加權聚合得到最終結果.實驗結果表明,所提算法亮區域分割準確,復原圖像邊緣紋理清晰,色彩自然,去霧徹底.
如圖1所示,本文算法分為三部分.(1) 亮區域暗通道矯正.基于亮度分量和飽和分量求取輸入圖像的相對景深圖,根據閾值分割出圖像中的亮區域,并基于飽和度和灰度值對亮區域的暗通道進行矯正.(2) 加權引導濾波.為解決引導濾波容易導致Halo現象,本文引入加權引導濾波對初始投射率進行細化,在引導濾波的聚合階段為不同的窗口分配權值,準確求解場景透射率.(3) 亮度矯正.將復原圖像J1(x)轉換到HSV空間,對V分量進行均衡化后轉回RGB空間得到J2(x),利用相對霧濃度均值對J1(x),J2(x)進行線性加權,得到最終的復原圖像J(x).

圖1 基于亮區域暗通道矯正和加權聚合引導濾波的圖像去霧算法流程圖
在圖像去霧研究領域,Narasimhan等[18-19]提出的大氣散射模型被廣泛應用,其物理模型如下.
I(x)=J(x)t(x)+A(1-t(x))
(1)
式中,I(x)表示霧天圖像;J(x)表示復原后的圖;t(x)為場景透射率;A為大氣光值;x表示像素點.由此可知,A、t(x)未知,求解復原圖像J(x)本身是一個病態問題,因此求解J(x)需要強有力的先驗或假設.
大氣光值的選取直接影響圖像復原的效果,一般定義無窮遠處的像素點強度值作為大氣光強值.He等[13]選取有霧圖像暗通道亮度值前0.1%的像素點,然后找到這些像素點在有霧圖像中的最大通道值作為大氣光值,但白色建筑或明亮區域的暗通道值一般都較高,容易導致大氣光值的誤判.Kim等[20]采用四叉樹搜索法估計全局大氣光,通過將有霧圖像分成四個圖像區域,隨后選取均方差最小的區域繼續四分,直至小于閾值,然后在所得到均方差最小的圖像區域找出像素強度值最大的像素點.該像素點的RGB三通道值即為環境大氣光值.該方法可準確有效地找出環境大氣光值,因此,本文采用四叉樹搜索法求取大氣光值.
暗通道先驗理論表明,在一幅彩色圖像中,絕大多數非天空區域的像素點,R、G、B三個通道中,總有一個通道強度值很小,近似為0,數學表達式如下.

(2)
其中,Jdark(x)表式像素點處的暗通道值;c表示圖像RGB三通道中的某一通道;Ω(x)表示像素x的鄰域;y表示領域中的一個像素點.對式(1)兩邊求取局部最小值,并將式(2)代入式(1),得到透射率的表達式.
(3)
為了防止去霧太過徹底,恢復出的景物不自然,應引入參數ω=0.95,重新定義透射率為:
(4)
暗通道先驗在亮區域去霧時,會導致顏色失真,這是因為在亮區域的RGB三通道值均很大,暗通道先驗將會失效,因此需對該區域的暗通道值進行矯正.Zhu等[11]根據大量實驗表明,景深或霧濃度越大,該處像素的飽和度越小,亮度越大,且與圖像亮度和飽和度的差值成正相關.
d(x)∝c(x)∝[v(x)-s(x)]
(5)
式中,d(x)為場景深度;c(x)為霧濃度;v(x)為圖像亮度;s(x)為圖像飽和度.v(x)-s(x)一定程度可以直接反應場景的深度信息,因此用相對場景深度圖D(x)來表示.
D(x)=v(x)-s(x)
(6)
其中,D(x)值越大,像素點的相對場景深度越深,該區域就越接近于亮區域.設置自適應閾值T,用式(7)表示,對圖像2(a)的亮區域進行分割,分割結果如圖2(b)所示.
T=0.8×max(D(x))
(7)
當像素點處于亮區域時,其透射率應趨于1,由式(4)可知,該處像素點的暗通道值應很低.由于亮區域灰度值均很高,為更好地還原亮區域圖像細節,利用Igray(x)×s(x)作為亮區域暗通道矯正值,用式(8)表示,當像素點飽和度增加時,暗通道值自適應增加,對校正后地暗通道進行均值濾波,消除圖像中噪點的影響,最終暗通道矯正結果如圖2(c)所示.
(8)
式中,Idark(x)表示圖像最小值濾波后的暗通道圖;Igray(x)為像素點灰度值;s(x)為像素點飽和度值.由圖2(b)可知,所提算法可有效地分割出圖像亮區域,圖2(d)的復原圖像亮區域復原色彩真實自然,無色彩失真,表明基于圖像亮區域灰度值和飽和度來矯正暗通道值的有效性和魯棒性.

圖2 亮區域自適應分割與暗通道矯正Fig.2 Adaptive segmentation of bright regions and correction of dark channel
由式(4)求取的透射率因最小值濾波會導致“塊效應”.為了更好地保留圖像邊緣細節,He等[14]提出了引導濾波細化透射率.引導濾波是假設在一個很小的,以像素k為中心的局部窗口ωk內,引導圖像I與輸出圖像Q呈線性變換關系,其數學表達式如下.
Qi=akIi+bk, ?i∈ωk
(9)
式中,ak、bk分別為局部窗口ωk內的線性系數.窗口ωk中的代價函數用于衡量待濾波圖像P與輸出圖像Q之間的差異,其表達式為:
(10)

(11)
(12)
式中,|ω|為窗口ωk內的像素總數;σk2、μk分別為窗口內方差和均值.最后對所有包含像素點i的窗口鄰域ωk取均值,得到引導濾波的最終結果.
(13)
引導濾波在平滑透射率時,由于無法兼顧圖像全局信息,會使一些弱紋理被模糊,從而導致Halo效應.陳彬等[16]在引導濾波的聚合階段為不同的窗口分配權值,賦予接近真實值的窗口較大權值,反之賦予較小的權值,在平滑圖像紋理的同時,清晰地保留了圖像邊緣信息,有效地解決了引導濾波導致的Halo效應.其數學表達式如下.
(14)

(15)
其中,ek為窗口ωk的均方誤差;η是一個很小的常數[16].
(16)
采取加權聚合引導濾波對初始透射率進行細化,其中濾波半徑r= 35,正則化參數ε=0.001,通過反復試驗,當η取經驗值0.03時,復原圖像的保邊性能最好.聚合權值βk隨窗口均方誤差ek的變化關系如圖3所示.當ek較小時,該窗口與像素點i的整體相似度大,因此所占權重應越大,即βk也就越大,反之越小;當ek增大時,βk下降迅速,說明加權聚合引導濾波對圖像邊緣處像素差異響應靈敏,能有效地保護復原圖像的邊緣紋理信息.
基于加權引導濾波細化透射率的復原效果如圖4所示,其中圖4(a)為原圖.對比圖4(b)、圖4(c)和圖4(d)可知,基于引導濾波復原圖像邊緣模糊,有明顯霧感;基于雙邊濾波復原圖像邊緣相對清晰,但在樹干等細節復雜處仍存在部分偽影.對比局部放大圖可知,加權聚合引導濾波的復原圖像,邊緣無Halo效應,其保邊性能明顯優于引導濾波和雙邊濾波.由此可知,基于加權引導濾波可有效準確地細化場景透射率,消除邊緣偽影,復原出紋理清晰、去霧徹底的圖像.

圖3 加權聚合權值與均方誤差的變化關系

圖4 引導濾波復原效果Fig.4 Restoration effect of the guided filter
采用四叉樹搜索法求取大氣光值A,將大氣光值A和加權聚合引導濾波細化后的透射率t(x)帶入式(1),得到最終復原圖像.為保留一定的霧感,透射率下限值設定為t0=0.1,得到復原圖像J1(x).
(17)
針對圖像去霧后圖像整體偏暗,Lee等[21]將復原圖像轉換到HSV色彩空間,對V分量進行均衡化處理,然后再轉化到RGB空間得到亮度矯正后的復原圖像,并基于霧濃度對矯正前后的圖像進行線性擬合.但文中沒有給出與霧濃度相關的權值系數表達式.由式(5)可知,霧濃度與景深成正比,D(x)越大,說明此處像素點受霧的影響越大;當D(x)<0時,說明此處像素點受霧的影響程度很小.為綜合表示相對霧濃度的分布情況,提出相對霧濃度分布圖C(x),且C(x) =D(x).對于受霧影響較小的區域,C(x)取下限值0.01,如下式所示.

(18)
采用相對霧濃度C(x)的均值α表示圖像整體的霧濃度情況,考慮到薄霧天氣,設定α的下限值為0.1,如式(19)所示.
α=max(0.1,mean(C(x)))
(19)
將復原圖像轉到J1(x)轉換到HSV空間,對亮度分量進行均衡化處理,然后在轉化到RGB空間得到亮度矯正后的復原圖像J2(x),并基于加權系數α進行線性加權,得到最終的復原圖像J(x),如式(20).
J(x)=(1-α)J1(x)+αJ2(x)
(20)
仿真實驗的硬件環境如下:Intel Core i7-8750H CPU@ 2.20 GHz; 8 GB RAM,操作系統為64位Windows 10.仿真軟件環境MATLAB R2019a.
本文分別選取含建筑近景、少量天空、大量天空、濃霧天氣和人物5幅不同場景下的有霧圖像,分別記為Image1~Image5,并與文獻[11-12,14,17]等經典算法對比,實驗結果如圖5所示.文獻[17]算法復原圖像去霧較好,但在細節復雜的圖像邊緣處輕微模糊,且在高亮區域去霧將會失效,如圖5(b)的Image4.文獻[14]算法可以去除大部分霧,但在景物邊緣處會出現模糊,產生Halo效應,且天空等亮區域去霧后出現失真,如圖5(c).文獻[12]算法近景處復原效果明顯,相對于文獻[14]算法有效地解決了天空等亮區域失真的問題,但對遠景出的復原效果一般,如圖5(d).文獻[11]算法去霧徹底,近景、遠景去霧后圖像復原自然,但整體偏暗,如圖5(e).對比圖5第一行可知,本文算法復原的圖像邊緣無Halo現象,紋理清晰且去霧徹底;對比圖5第二和第三行,可有效解決天空等亮區域暗通先驗失效問題,在少量天空、大量天空條件下均能有效復原,有較強的魯棒性;對比圖5第四行可知,在濃霧天氣下,恢復細節能力強,效果明顯優于對比算法;對比圖5第五行可知,復原圖像色彩真實自然,很好地保留原圖像的色彩紋理信息,可靠性強.
為更加綜合地評價所提算法的去霧性能,選取峰值信噪比、平均梯度、信息熵和算法運行時間作為指標對圖5進行客觀評價,評價結果如圖6所示.峰值信噪比(PSNR)反應對去霧前后的圖像進行差異性比較,其值越大,失真程度越低,去霧效果越好.平均梯度反映圖像對微小細節反差的表達能力,平均梯度越大,說明圖像越清晰,去霧的效果越好.信息熵反映圖像的信息量,信息熵越大,去霧的效果越好.
從圖6(a)~6(c)可以看出,本文算法復原圖像的峰值信噪比和平均梯度整體優于其他算法,說明復原的圖像色彩保持好,失真程度低,有更清晰的輪廓.在Image2中,峰值信噪比和平均梯度有最大提升,分別為34.46%、99.49%.信息熵顯著高于其他經典算法,說明本文算法復原圖像有更豐富的細節,復原效果好.在Image4中信息熵提升最大,為21.18%.由圖6(d)可知,本文所提算法在引導濾波階段引入了加權聚合步驟,執行效率略低于文獻[17]和文獻[14]算法,但優于其他經典算法,有較高的執行效率.

圖5 各算法去霧效果對比圖Fig.5 Comparison of the effect of each algorithm on fog removal

圖6 各算法去霧客觀評價結果圖Fig.6 Objective evaluation results of each algorithm for fog removal
為解決暗通道先驗在亮區域失效和引導濾波引起的邊緣模糊的現象,本文提出了一種基于亮區域暗通道自適矯正和加權引導濾波的圖像去霧算法.首先利用有霧圖像的亮度和飽和度得到相對景深圖,自適應得到亮區域分割閾值;其次基于像素灰度值和飽和度對亮區域暗通道進行矯正;然后利用加權引導濾波細化透射率;最后基于相對霧濃度均值矯正圖像亮度,得到復原結果.實驗結果表明,所提算法亮區域分割準確,解決了引導濾波引起的邊緣模糊問題,去霧徹底.算法具有較強的可靠性和魯棒性.同時與經典算法對比,本文所提算法復原結果的峰值信噪比、平均梯度與信息熵的最大提升分別為34.46%、99.49%和21.18%.如何進一步提高本文算法執行效率,保證圖像去霧的實時性,需要后續進一步深入研究.