楊燕,陸鑫璇
(蘭州交通大學電子與信息工程學院,730070,蘭州)
在霧霾環境下,受到大氣中的懸浮顆粒和水滴對光線進行散射的影響,戶外成像設備捕獲的圖像會出現嚴重退化,表現為清晰度低、對比度低、信息量少等問題,對人們的日常生活造成極大的影響。因此,對有霧圖像進行去霧獲得清晰的無霧圖像具有十分重要的研究意義[1-2]。
圖像去霧方法主要分為3大類。第1類是基于圖像增強的去霧方法[3-5],該方法基于非物理模型,僅從提高對比度、強化細節方面達到對圖像進行增強去霧處理,但沒有充分考慮霧天圖像降質的因素,增強處理后效果不自然,主要有直方圖均衡、小波變換和Retinex算法[3]等。第2類是基于圖像復原的去霧方法[6-10],通過參考霧天成像物理模型,加以一定的先驗條件或者圖像信息,從圖像復原角度進行處理。該類方法能夠在復雜場景下獲得較好的去霧效果,成為近年來研究的熱點和突破的難點。其中,He等提出的基于暗通道先驗理論的去霧方法[6],通過大氣散射模型復原出無霧圖像,雖然該方法取得了顯著的去霧效果,但是在恢復包含大片天空區域的圖像中會出現天空失真現象,并且采用軟摳圖優化透射率,存在著算法復雜度高、處理速度慢等問題。此后,He等為了提高處理速度提出引導濾波優化透射率方法[7],但在景深變化劇烈區域有明顯的殘霧現象。Meng等提出基于邊界約束的去霧方法[8],將透射率固有的約束和相鄰像素的約束關系相結合,從而增加物理模型的約束條件逼近透射率,通過建立優化透射率的模型實現圖像去霧,但該方法犧牲了部分細節特征來提高恢復效果。Zhu等提出基于顏色衰減先驗的去霧方法[9],通過HSV空間的V分量和S分量的差值,使用監督學習方法來估計場景深度信息,該方法恢復了較多的細節,但是存在一定的殘霧現象,同時學習過程較復雜。Wang等提出基于線性傳輸的去霧方法[10],通過有霧圖像與無霧圖像最小通道的正相關性構造線性關系,該方法去霧較徹底,但恢復的圖像較暗,顏色失真嚴重。第3類是機器學習的去霧方法[11-12],該方法通過訓練樣本來獲取模型參數,實現圖像去霧。主要有Ren等提出多尺度卷積神經網絡的去霧算法[11],采用粗尺度網絡對圖像預測透射率,以及精細尺度網絡進行局部性的優化,其運行速度快。Cai等提出端到端系統的去霧算法[12],通過學習有霧圖像與其對應的透射率之間的映射關系。由于訓練過程中,采用合成數據集,并且訓練的過程需要大量的數據集,因此不適用于多種類型的圖像。
針對以上研究的不足,本文基于圖像復原的方法,提出一種結合自適應亮度變換不等式估計透射率的圖像去霧方法。通過對顏色衰減先驗進行亮度變換不等式操作,獲取場景深度表達式;并將恒定的大氣散射系數向動態的形式轉換,使其能夠適應不同圖像的場景需求;再結合中值濾波和區間估值估計的局部大氣光恢復出無霧圖像。實驗結果表明,本文的方法能夠獲得較好的去霧效果,同時能實現實時處理。
目前在計算機視覺和圖形學領域中,廣泛應用于霧天條件下的大氣散射模型[13]其數學表達式為
I(x)=J(x)t(x)+A(1-t(x))
(1)
t(x)=exp(-βd(x))
(2)
式中:I(x)表示待處理的有霧圖像;J(x)表示恢復出的無霧圖像;A表示為無窮遠處大氣光值;t(x)表示透射率;d(x)表示場景深度;β表示大氣散射系數,在假設大氣均勻分布的條件下,β通常設為1。
文獻[9]對大量有霧圖像進行統計分析后提出,對于大多數戶外有霧圖像而言,任意區域霧的濃度隨景深的變化而變化,霧濃度越高,該區域像素點的亮度和飽和度相差越大,即霧濃度與亮度和飽和度之差呈正相關。由于霧的濃度隨著場景深度的變大而變濃,因此,可以獲得如下關系式
d(x)∝c(x)∝v(x)-s(x)
(3)
式中:c(x)表示霧的濃度;v(x)表示亮度分量;s(x)表示飽和度分量。為了準確表述上式關系,根據正相關表達式,建立線性模型
d(x)=θ0+θ1v(x)+θ2s(x)+ε(x)
(4)
式中:θ0、θ1、θ2均表示未知參數;ε(x)表示期望為0、方差為σ的高斯函數隨機誤差。通過訓練數據集得到θ0=0.121 779,θ1=0.959 710,θ2=-0.780 245,σ=0.041 337。由于表達式傾向于白色物體作為遠景處的對象,導致近景區域存在白色物體時會誤判為高景深區域,因此假設場景深度是局部恒定的,利用窗口大小為15×15像素的引導濾波[7]平滑場景深度,獲得最終透射率。假設大氣光已知的情況下,可以恢復出無霧圖像,但恢復后的圖像存在光暈效應。
同時,文獻[9]算法將關鍵的參數β取為1具有一定的局限性。因為大氣并不全是均勻分布,其值可能存在比場景真實值偏大或偏小的問題:當β偏大時,所估計的透射率偏小,使得恢復的圖像出現顏色過飽和現象,去霧過度;反之亦然。
本文提出一種結合自適應亮度變換不等式估計透射率的圖像去霧方法,其流程如圖1所示。

圖1 本文方法流程圖Fig.1 Algorithm flow chart
首先,根據霧的濃度與亮度分量和反飽和度分量之間的統計關系,利用亮度變換不等式和對數變換構造粗略的場景深度;其次,基于局部恒定采用正則化對粗略的場景深度進行優化,獲得精確的場景深度;然后,利用局部平均深度信息和聯合雙邊濾波得到動態大氣散射系數,根據精確的場景深度和動態大氣散射系數獲得最終透射率;最后,使用中值濾波和區間估值優化局部大氣光值,結合大氣散射模型恢復無霧圖像。
2.1.1 場景深度估計 由于式(4)的線性模型具有局限性,參數繁多,且監督學習獲取模型數值具有復雜性,需要大量數據集。為了簡化模型,將顏色衰減先驗變換為霧濃度與亮度分量和反飽和度均呈正相關。因此,對式(3)進行拆分變換,如式(5)所示

(5)
式(5)對于歸一化圖像設定h≥1時成立。通過實驗統計分析,得到霧濃度與亮度和反飽和度之間的關系,圖2為霧濃度與場景深度關系。同一幅霧圖中的亮度和與反飽和度分布相似,將兩個正相關進行乘積,霧濃度與乘積形式亦滿足正相關
d(x)∝c(x)∝v(x)(h-s(x))
(6)
為了利用亮度和反飽和度求取場景深度相對最優值,采用式(7)的均值不等式形式構造,現設不等式最右項的系數為u,進行實驗對比分析
(7)
u的取值范圍為[0.5,1],u取值不同場景深度有較大差異。圖3為u取不同值時場景深度比較。由圖3可見,當u越小,場景深度圖像整體像素值越小,反之亦然。
在大多數霧天圖像中,景物距離觀察者通常都較遠,圖像中屬于遠景區域的像素點應具有較大的深度值,反之亦然。霧圖的亮度信息能充分反應霧的分布,且均值不等式在求取最值具有較好表現。結合均值不等式和亮度分量對式(6)進行自適應亮度變換補償優化,如式(8)所示

(a)有霧圖像 (b)對應區域的霧濃度、亮度和反飽和度 (c)霧濃度分析曲線圖2 霧濃度與場景深度關系Fig.2 Analysis of the relationship between fog concentration and scene depth
d(x)∝(v(x)2+(h-s(x))2)min(v(x),0.5)
(8)
為了便于后續運算,文中設定h=1。根據場景深度在近景區域取值較小,遠景區域取值較大的規律,使用對數函數估計景深,且能達到擴展灰度值的目的
d(x)=
mln((v(x)2+(h-s(x))2)min(v(x),0.5)+1)
(9)
式中:d(x)表示粗略的場景深度;m表示對數變換系數,用于控制灰度變換幅度。經過大量實驗表明,m取1.5更逼近于場景深度。景深變換過程如圖4所示。
2.1.2 場景深度優化 利用Meng等的正則化構造加權函數[8],解決相似景深區域透射率相差過大問題,運用到粗略景深的優化,目標函數為
(10)
式中:第一項表示數據項,使精確的場景深度d′和粗略的場景深度d相對平衡;μ表示平衡兩者的正則化系數;第二項表示精確的場景深度中相鄰像素的關系;ω表示索引集;Wj(j∈ω)為權值矩陣;Dj是一階微分算子;運算符°表示元乘算子;?表示卷積算子。通過最小化目標函數,可以獲得精確的場景深度d′。
為了優化式(10),通過變量分裂法,引入輔助變量γj,從而構造代價函數
(11)
將式(11)變化為
(12)

2.1.3 動態大氣散射系數 大氣散射系數β表示單位體積的大氣顆粒對各方位光線的散射能力,大氣顆粒越多,散射能力越強[14]。在多數場景中,β取1。本文對不同的β值做大量實驗對比驗證,選取具有代表性的幾個定值做出對比如圖6所示。
由圖6可見,當β較小時,恢復圖像在近景區域效果較好,而遠景區域存在去霧不徹底現象,反之亦然。因此,霧圖中霧濃度越大,景深越大,大氣散射能力越強,即大氣散射系數與場景深度呈正相關。

(a)有霧圖像

(a)有霧圖像 (b)初步構造景深 (c)粗略的景深 (d)對數變換圖圖4 場景深度變換過程及相應的對數變換圖Fig.4 Scene depth transformation process and corresponding logarithmic transformation diagram

(a)有霧圖像

(a)有霧圖像
據此,本文提出了動態散射系數對不同景深選取不同的β值,以提高整體去霧效果。由于散射系數與圖像的細節無關,利用精確的場景深度求取局部平均操作,消除紋理效應,保持散射系數的局部恒定性;再通過指數函數和平均景深構造大氣散射系數的表達式
(13)
式中:da(x)表示平均深度信息;d′(x)表示精確的場景深度;N表示圖像局部塊中包含的像素個數,δ取0.001,為了防止對數運算的結果趨于負無窮,并采用聯合雙邊濾波使其平滑
β(x)=(1-exp(-da(x)))2+mean(d′(x))
(14)
式中,mean(·)表示取均值。通過深度信息的均值反應霧圖的整體亮度和指數函數的可調控性,以控制動態大氣散射系數的分布。
結合精確的場景深度和動態大氣散射系數可以獲得最終的透射率,表達式為
t(x)=exp(-β(x)d′(x))
(15)
大氣光值A是大氣散射模型中的一個重要參數,其決定了恢復圖像的視覺效果。文獻[6]采用暗通道圖像中亮度最大的前0.1%的像素點,所對應的有霧圖像中的最高強度的像素值選取為大氣光值;文獻[8]對有霧圖像進行最小值濾波直接選擇亮度最高的像素值作為大氣光值。但是,這兩種方法都容易受到高像素值區域的影響,出現誤差。文獻[10]使用四叉樹算法對大氣光值進行估計,但易受噪聲干擾。文獻[15]利用形態學操作消除有霧圖像中大面積的白色物體估計大氣光值。為了更準確地估計大氣光值A,本文基于局部大氣光方法[16]提出了改進方法,避免局部區域大氣光值過小,造成圖像偏亮或偏色現象。具體步驟為:
(1)計算有霧圖像的亮度圖,利用中值濾波去除噪聲和削弱高亮像素點的干擾;
(2)對步驟1的結果圖像進行閉運算,保持圖像局部特性;
(3)使用亮度圖對步驟2的結果圖進行聯合雙邊濾波,以消除塊狀效應,得到初級局部大氣光Al(x);
(4)通常情況下,局部大氣光A(x)的值不大于有霧圖像中像素的最大值,即
(16)
(5)估計A(x)的區間為
(17)
式中:φ表示調節參數,其范圍為[0,1],對初級局部大氣光Al(x)中的所有像素點取均值作為φ的值。由于φ是與局部大氣光分布關聯的參數,因此具有自動調節大氣光取值的功能。
局部大氣光A(x)優化效果對比,如圖7所示;與各算法對比結果,如圖8所示。可以看出,本文所提方法的局部大氣光恢復效果更好。

(a)有霧圖像

(a)有霧圖像
將最終透射率t(x)和局部大氣光值A(x)代入式(1),可以恢復出無霧圖像

霧圖 Zhu Meng Ren Cai 本文(a)景深突變區域場景
(18)
式中:t0為透射率下限,設置為0.1,以避免分母趨于0及恢復圖像出現顏色失真。
本文實驗平臺的操作系統為64位Window7,程序運行環境為Matlab R2016a,硬件環境為Intel(R)Core(TM)i5-6300HQ CPU@2.30 GHz,8 GB內存。為了驗證本文方法恢復的有效性,使用大量圖像在主觀和客觀方面進行對比分析。
目前較為經典的去霧方法主要有Zhu等人的顏色衰減先驗算法[6]、Meng等人的邊界約束算法[8]、Ren等人的多尺度卷積神經網絡算法[11]及Cai等人的端對端去霧網絡算法[12]等。采用本文方法與上述4種算法在不同場景下進行對比,實驗效果如圖9所示。
由圖9a可見:各算法都能恢復出較多細節,但是Zhu算法在景深交替區域存在殘霧現象,且整體去霧不徹底;Meng算法犧牲了圖像色彩保真度,存在偏色現象;Ren算法在近景處因過飽和而顏色偏暗,出現顏色失真;Cai算法去霧不徹底,圖像整體偏暗;本文算法具有良好的色彩保真度,在近景區域顏色更真實自然,色彩鮮艷,景深突變處無殘霧,景物細節豐富,整體效果也更好。
在圖9b包含天空區域或明亮區域場景下,Zhu算法基本去除了霧氣,但存在強光源時會影響大氣光值的估計造成圖像過于偏暗現象;Meng算法整體上能夠恢復圖像的細節,但是天空區域嚴重的顏色失真且存在偽影;Ren算法整體效果較好,但是對藍色區域的處理有所欠缺;Cai算法的天空區域有較好恢復效果,但相較于其他算法去霧不夠徹底;本文算法在視覺效果上占據一定的優勢,基本恢復了圖像細節,保留了天空特征,且高像素點區域不會造成大氣光值的誤判,景深突變處過渡自然,無殘霧現象,但濃霧圖像處理效果并沒有達到最佳。
從圖9d的薄霧區域中,5種算法都能有效地去除霧氣,但是Zhu算法對大氣光值估計的不足,造成圖像偏暗;Meng算法存在相似問題,顏色較Zhu算法更暗;Ren算法和Cai算法對于顏色保真度都表現得較好,但是兩者對于遠景區域復原力度不夠,前者在還殘留著些許霧氣,后者去霧不徹底,細節不夠突出;本文算法在各部分的去霧都較徹底,恢復出了更多的細節,景深交替處也獲得很好地效果。
結合客觀評價進一步分析,避免主觀評價存在片面性。使用無參考的圖像質量評估方法[5],利用圖像對比度(CG,用RCG表示)、視覺對比度(VCM,用MVC表示)、通用質量指數(UQI,用IUQ表示)和運行時間(T)作為恢復圖像的客觀評價指標。其中,RCG體現了圖像的色彩程度,RCG越大,圖像對比度就越高;MVC體現了圖像的可視度,MVC越大,圖像就越清晰,這兩個指標越大越好;IUQ反應了恢復圖像與有霧圖像的結構相似性,IUQ越大,與有霧圖像的結構相似度就越高,T反應了算法運行速度,這兩個指標越小越好。圖像對比度和視覺對比度計算公式如下
(19)
(20)

表1為圖9的客觀評價指標均值對比,從圖像對比度可以看出,本文算法基本上獲得了良好的效果,但相較于Ren算法有所不足;從視覺對比度測量可以看出,本文算法與其他算法具有一定的優勢;通用質量指數表明本文算法有些許優勢,與Ren算法效果相近;從運行時間可以看出,由于Zhu算法使用訓練樣本獲取的固定參數,在運行時間上占據優勢,但是本文相較于其他算法,具有明顯優勢,更具實時性。綜合考慮,本文方法在去霧效果上相對更好。

表1 5種算法的客觀評價指標對比Table 1 Comparison of objective indexes of five algorithms
本文還采用Choi等提出的霧度密度檢測方法[18]對圖9的所有圖像進行檢測分析,霧度密度值越小,表明霧氣的存在性越小。通常來說,薄霧圖像和濃霧圖像的區分主觀上是通過人眼對圖像信息和細節可見度來區分的;客觀上使用圖像的亮度和飽和度進行判斷,亮度越高,飽和度越低,霧越濃;反之亦然。
5種算法的霧密度檢測對比結果如表2所示。由表2可見,本文算法在不同霧濃度場景下的圖像去霧效果都較好,相較于其他經典算法總體上霧度更小,具有明顯優勢。

表2 5種算法的霧度密度檢測結果對比Table 2 Comparison of haze density detection results of fire algorithms
針對圖像去霧中透射率估計不準確問題,本文提出一種結合自適應亮度變換不等式估計透射率的圖像去霧方法。首先,使用亮度變換不等式和對數變換進行雙調節滿足景深變化趨勢,估計粗略的場景深度;其次,采用正則化平滑場景深度,獲取精確的場景深度;之后,使用局部平均深度估計動態散射系數,加以最大值像素點對局部大氣光進行區間優化;最后,恢復出無霧圖像。實驗結果表明,本文算法的自適應參數調節對圖像取得了較好的效果,有效降低了算法復雜度,對薄霧圖像能獲得良好的去霧效果。同時,各項客觀指標占據一定優勢,表明本文算法能夠獲得較好的色調保真度。然而,本文算法在部分圖像會出現過飽和現象,例如薄霧和濃霧區域變化特別劇烈的情況,導致亮度和飽和度的整體變化有一定的差異,影響景深估計,還有待進一步研究和改進。