陳 瑋,陳永順,尹 鐘
(上海理工大學 光電信息與計算機工程學院,上海 200093)
圖像增強是一個非常熱門的研究領域,因為圖像質量直接影響到計算機視覺系統.一般而言,戶外圖像都會因為不同的大氣條件而受到一定程度的影響,尤其是霧霾的影響.這些大氣條件造成的主要影響是圖像的低對比度、扭曲的顏色和降低的能見度,致使監視、目標跟蹤、遙感、交通控制和自動駕駛等系統性能可能會受到嚴重的影響[1,2],因此,人們對圖像的去霧算法日益重視.
實現圖像的去霧是一個高度不適定的難題.在過去的幾十年里,人們提出了許多不同的圖像去霧方法來解決這一難題,大致可分為傳統的方法和現代的方法.這兩種類型最顯著的區別是,前一種類型是基于先驗知識和物理模型進行去霧,后一種類型是基于神經網絡的圖像去霧方法.
Tan等[3]根據統計分析發現無霧圖像比有霧圖像具有更高的對比度,使用最大化局部對比度的策略實現圖像去霧.Tarel等[4]提出了一種基于兩種不同濾波器的方法:中值濾波器和保留邊緣的濾波器,但去霧后的圖像在景深變化邊緣的地方會出現Halo效應.Fattal等[5]利用獨立成分分析(Indepe-ndent component analysis,ICA)的方法來估計透射率,但該方法耗時較長,且對重霾圖像的去霧效果一般.He等[6]通過對大量無霧圖像的統計與分析提出了暗通道先驗去霧方法(Dark Channel Prior,DCP),使用DCP計算透射率和大氣散射模型恢復圖像,然而,DCP在天空圖像中降低了去霧圖像的質量,且去霧耗時長、計算量大.為了解決He等方法中的問題,Meng等[7]對傳輸函數進行了邊界約束,使透射率預測更加準確.Berman D等[8]人提出了一種基于非局部先驗的去霧方法(面向像素的算法),該方法實時性較好,但出現恢復的圖像會留有殘霧和天空區域容易失真等情況.近年來,人工神經網絡技術發展迅速,在計算機視覺系統中越來越受到人們的重視,在圖像處理領域表現尤為顯著,所以出現了基于神經網絡的圖像去霧方法.Cai等[9]提出一種從有霧圖像直接生成無霧圖像的去霧網絡,將透射率和大氣光值聯合起來,并用神經網絡對其進行估計,但對具有濃霧的圖像處理時,存在對參數估計不精確的缺點,導致去霧程度不夠.He Zhang等人[10]提出了一種邊緣保持密集連接的金字塔去霧網絡模型,圖像去霧效果良好,然而恢復的圖像細節不清晰.
綜合來看,無論是基于大氣散射模型的去霧算法,還是基于神經網絡的去霧方法,現有的大多數圖像去霧算法都會有某種程度上的不足,前者在某些較為特殊的環境下去霧效果欠佳,后者對大氣光值的估計沒有足夠重視,而且還有可能出現對去霧透射率估計不精確的情況,導致去霧性能不佳.針對上述去霧研究的問題,本文提出了一種結合天空分割和條件生成對抗網絡去霧算法.
大氣散射是一種當光穿過大氣中的微小顆粒時并使其產生了偏離的物理現象.那么有霧圖像的成因就可以用大氣散射模型來解釋,其模型公式如下:
I(x,y)=J(x,y)t(x,t)+A[1-t(x,y)]
(1)
其中,I(x,y)表示待去霧的圖像,J(x,y)表示恢復的清晰圖像,t(x,y)是透射率,A是大氣光值.假設大氣光是均勻的,則透射率可表示為:
t(x,y)=e-βd(x,y)
(2)
其中,β表示大氣的散射系數,d(x,y)為場景深度.若能估計出A和t(x,y),代入式(1),由于是I(x,y)已知的,即可得到去霧后的圖像J(x,y),式(1)可轉化為:
(3)
暗通道先驗規律是He等[6]通過對大量的室外無霧圖像進行實驗與分析發現的,其定義為:在無霧圖像的R、G、B3個顏色通道之中,其非天空區域總是會有一個顏色通道的像素灰度值極低,幾乎接近0.即暗通道先驗理論:
(4)
其中,Jdark(x,y)為無霧圖像的暗通道圖,Jc(z)為RGB圖像的某一個顏色通道,Ω(x,y)是以點(x,y)為中心的一個方形區域.以大氣光值A是已知的且為正作為前提條件,對式(1)的兩邊作最小值的運算,然后同時除以大氣光值A,可得:
(5)

(6)
為了防止去霧過度而出現圖像不自然的問題,引入一個約束常數ω(ω∈[0,1])(通常取值為ω=0.95),這樣可以使得恢復的清晰圖像保留輕微的霧霾而顯得更加地真實自然.但是由式(6)得出的透射率是不足以起到去霧作用的,為此,He等人利用導向濾波算法[11]來對其實行進一步的處理,根據導向濾波算法處理后的透射率,由式(7)可得去霧后的清晰圖像J(x,y):
(7)
其中,t0表示為透射率t(x,y)的一個約束值,因為當t(x,y)的值過小時,J(x,y)的像素值則會出現過大的情況,所以會導致恢復的清晰圖像出現色偏.因此,需要給定求得的透射率一個最小值限制t0(通常取t0=0.1).He等[6]對大氣光值A計算方法為:
(8)
其中,Ic(x,y)為待去霧的圖像,Idark(x,y)為暗通道圖,h和w分別表示為圖像的高度和寬度,c為通道數.
通過上述的分析發現,現有的大多數圖像去霧算法存在著對去霧參數的估計不精確和去霧效果的顏色失真等問題,為了解決這些問題,本文提出了結合天空分割和條件生成對抗網絡(Conditional Generative Adversarial Network)的單幅圖像去霧算法.首先,利用閾值分割法將圖像劃分為天空區域和非天空區域,并使用分割出的天空區域來估計大氣光值A;然后,利用改進后的條件生成對抗網絡估計出精確的透射率;最


圖1 算法總體流程框架Fig.1 Flowchart of the proposed algorithm

圖2 去霧效果圖Fig.2 Recovered results for foggy image
以往大多的去霧算法較為側重對透射率的估計,而對于大氣光值A,往往采用經驗公式去估計,沒有對大氣光值足夠的重視且會受到明亮的非天空區域的干擾,影響了去霧算法的表現.為了避免出現上述問題,本文提出一種可行的基于閾值的天空分割算法分割出天空區域,大氣光值A取值為天空區域所有像素值的平均值,使得大氣光值被準確估計在天空區域中.本文使用式(8)來計算不存在天空區域的待去霧圖像的大氣光值A.
天空分割算法:首先,求有霧圖像的暗通道圖(暗通道圖具有豐富的邊緣信息[13]),以準確保留邊界信息,記為Idark(x,y).由于圖像中的天空區域為明亮區域,其像素值一般比較大, 當天空區域面積占的比例較大時,該像素值占據的比例也較大.本文先使用最大類間差算法對暗通道圖Idark(x,y)進行第1次粗略分割處理,此時得到的分割結果并不是理想的結果,其存在著誤判的情況,但是真實的天空區域占據著大部分,在第1次粗略分割后的天空區域中求出出現頻率最高的點,并將該點的像素值記為N,又因為該像素值N是比非天空區域和天空區域臨界邊處的像素值更大, 所以使用一個大于0且小于1的常數μ(經驗值取0.85)限制N.因此,將T=μN作為本文天空分割算法的閾值,根據該閾值T可分割得二值圖像:
(9)
其中,It(x,y)表示為有霧圖像天空區域的第2次粗分割結果,It(x,y)中的白色部分為天空區域.此時,分割結果還會存在著誤判的情況,表現為零散的小面積白色區域錯誤的分割為天空區域,為解決該問題,根據天空區域的位置特點和面積的大小進行優化第2次粗分割結果, 優化的具體操作如下:
1)在It(x,y)的所有白色連通區域中,找到面積最大的白色連通區域,并求出其在It(x,y)中的最大行數值,記為Rmax,并令It(x,y)中行數大于Rmax的值置為0;
2)根據經過1)處理后的分割結果,在該基礎上利用求最大連通區域的方法把白色區域面積小于圖像總面積0.02%(經驗取值)的區域的像素值置為0,最后得到的白色區域就是天空區域.
近年來,隨著生成對抗網絡的誕生與發展[14],條件生成對抗網絡被運用在圖像處理的多個領域[15,16].基于上述的啟發,本文提出了一種基于條件生成對抗網絡圖像去霧算法,將生成器進行改進,引入均方差損失、基于VGG-19的特征損失和雙向梯度損失對損失函數進行修正,進而使得對抗網絡能夠生成邊緣細節清晰的圖像,提高圖像的質量,使圖像顯得更加真實.
3.2.1 生成器
生成器的任務是將輸入的模糊圖像生成清晰的圖像,并且保留輸入圖像的結構和細節信息.本文生成器網絡為一個帶有多尺度卷積核的神經網絡,該網絡基本操作單元包括有7個卷積層、3個連接層和1個BReLU激活層,分別為Conv1、Conv2、Concat1、Conv3、Concat2、Conv4、Concat3、Conv5、Conv6、Conv7和BReLU.Conv1 和 Conv2通過Concat1連接,Conv2和Conv3通過Concat2 連接,Conv1、Conv2、Conv3和Conv4通過Concat3 連接.在經過卷積層(Conv)操作后,對卷積后的輸出依次進行批量歸一化(BatchNorm)和ReLU激活操作,通過Padding保持卷積層輸入和輸出大小一致,由于透射率是一個概率([0,1]),最后一層使用Cai[9]提出的雙邊糾正線性單元(Bilateral Rectified Linear Unit,BReLU).為了使條件生成對抗網絡能夠提取到圖像不同尺度的特征,進而使其可以生成出細節信息更好的圖像,所以生成器部分的卷積層設置了不同尺度的卷積核.經過改進優化后的生成器的結構圖如圖3所示,其具體的網絡參數設置見表1.

圖3 生成器結構圖Fig.3 Generator network structure

表1 生成器網絡參數Table 1 Generator network parameter
3.2.2 判別器
判別器網絡主要的作用是為了判斷生成器網絡生成的圖像的真和假(即生成器生成的圖像是否服從真實樣本分布).本文判別器使用一個神經網絡,輸入和條件通過Concat一并作為判別器的輸入,該網絡的基本操作單元包括卷積層、批量歸一化層(Batch-Norm)和LeakyReLU激活,判別器的的輸出是一個概率值,所以最后一層使用Sigmoid函數進行特征映射,并將判別器結果進行歸一化處理.判別器的詳細結構圖如圖4所示,其網絡參數的設置見表2.

圖4 判別器結構圖Fig.4 Discriminatory network structure

表2 判別器網絡參數Table 2 Discriminator network parameter
3.2.3 損失函數
條件生成對抗網絡的生成器G的輸入為噪聲z和附加的條件信息y,網絡的判別器D的輸入為數據x和附加的條件信息y,判別器對x是否屬于真實數據的概率做進一步判別.對網絡進行訓練,使其達到一個平衡(即判別器無法判定生成器生成的圖像的真假),所以,條件生成對抗網絡的目標函數V(D,G)為:

(10)

(11)

(12)

(13)
其中,Vi表示VGG-19的網絡結構,ci,wi,hi分別表示為Vi網絡結構輸出特征的通道數、寬度和高度.雙向梯度損失Lg包括水平梯度和垂直梯度,定義為:
(14)
其中,Hx為水平方向的梯度運算,Hy表示垂直方向的梯度運算,w和h分別表示特征圖的寬度和高度;最后,結合網絡的對抗損失Ladv、均方差損失LMSE、基于VGG-19的特征損失LVGG和雙向梯度損失Lg,則改進后的條件生成對抗總損失函數Lloss定義為:
Lloss=WadvLadv+WMSELMSE+WVGGLVGG+WgLg
(15)
Wadv、WMSE、WVGG和Wg分別表示對抗損失Ladv、均方差損失LMSE、基于VGG-19的特征損失LVGG和雙向梯度損失Lg占的權重比例.
由于CGAN是一種有監督的技術,因此執行訓練步驟需要匹配模糊樣本和真實樣本.在本工作中,真實樣本的計算采用文獻[6]中的軟摳圖(softmatting)算法(即從有霧圖像中利用softmatting算法求出精細透射率圖),該算法在He等[6]中已被證明適用于去霧問題,但其計算處理時間和內存要求都很高.圖像軟摳圖過程可以表示為:
I=Fα+B(1-α)
(16)


(17)



為了檢驗本文大氣光值估算方法的是否準確有效,設計了實驗,使用不同的方法去進行估計大氣光值,實驗的去霧結果對比如圖5所示,圖5(a)為有霧圖像,圖5(b)為利用本文天空分割算法的分割結果,白色的是天空區域,圖5(c)為利用He方法[6]來估計大氣光值的去霧結果,圖5(d)為利用本文天空分割算法來估計大氣光值的去霧結果,這兩個去霧結果都是利用經過本文去霧算法優化后的透射率以及大氣散射模型來實現去霧的.從圖5的去霧結果觀察出,在利用He等[6]的方法來估計大氣光值恢復的無霧圖像中,其天空區域出現了輕微的色偏;而利用本文天空分割算法實現對大氣光值的估計,恢復的無霧圖像的天空區域更加清晰、自然.

圖5 去霧結果與大氣光值估計結果對比Fig. 5 Comparison for dehazed images and atmospheric light estimation results
圖6為7張有霧圖像以及7種去霧算法恢復的相應去霧結果.圖6(a)為清晰的無霧圖像,圖6(b)為對應的待去霧圖像,圖6(c)和圖6(e)分別為He的方法[6]和Meng的方法[7],雖然這兩者的去霧效果都能夠達到較好的水準,但其不足的是在天空等明亮區域都容易出現顏色失真;圖6(d)為Berman D等人的方法[8],該方法天空明亮區域容易出現較為嚴重的顏色失真;圖6(f)和圖6(g)分別為Ren的方法[18]和Cai的方法[9],這兩個方法都因為透射率的估計并不十分準確,致使恢復的清晰圖像中還是包含著不少的霧霾,去霧程度不足,且前者比后者殘留著更多的霧霾;圖6(h)為Zhang等人的方法[10],其能夠達到去霧效果,但恢復的圖像出現輕微色偏,且恢復的細節不清晰;圖6(i)為本文算法的去霧效果,可以從圖6的去霧結果觀察出,與其他算法的去霧圖像相比,本文生成的去霧圖像更加自然,細節信息更加清晰,且更加接近圖6(a)的清晰圖像.

圖6 不同算法去霧效果對比Fig.6 Comparison of different algorithms to defog
為了更有說服力地度量本文所提去霧方法的性能,采用在去霧評估廣泛使用的兩個指標:峰值信噪比PSNR(Peak Signal to Noise Ratio)和結構相似指數SSIM(Str-uctural Similarity Index Measuremen).PSNR定義為:
(18)
其中,peakvalue表示圖像點顏色的最大值,MSE為均方誤差,其定義如下:
(19)
其中,w表示圖像的寬度,h表示圖像的高度,Jt(x,y)為真實的清晰圖像,Jo(x,y)為恢復的無霧圖像.SSIM是基于感知模型的歸一化度量,定義為:
S(x,y)=f[l(x,y),c(x,y),s(x,y) ]
(20)
其中,l(x,y)表示為亮度的對比,c(x,y)表示對比度對比,s(x,y)表示圖像結構對比.
為了直觀地體現出本文算法的去霧性能,表3給出了圖5中使用不同大氣光值估計方法的去霧結果的性能指標:PSNR和SSIM,對于存在天空區域的有霧圖像,相比于使用He的方法[6]估計大氣光值來恢復的圖像,使用本文天空分割算法估計大氣光值來恢復的圖像的PSNR和SSIM指標都有一定程度的提升,證明了本文估計大氣光值的方法更加準確有效,恢復的圖像質量更高;表4和表5分別給出了圖6中7張測試圖像的PSNR和SSIM指標的值,對于PSNR,本文去霧算法在image2和image4分別略低于Cai[9]和Meng[7]的算法,但均高于其他算法,且本文算法的PSNR均值最高,達到了23.84;對于SSIM,Cai[9]的算法在image5和image7比本文算法略高,但本文算法的SSIM指標均值是最高的,達到了0.9471.根據數據分析結果表明,更進一步證明了本文去霧算法的去霧性能比其它的去霧算法更好,恢復的圖像質量更高.

表3 不同大氣光值估計方法的去霧結果評價指標Table 3 Evaluation of dehazing results of different atmospheric light value estimation methods

表4 各方法峰值信噪比比較Table 4 Comparative analysis using the PSNR

表5 各方法結構相似度比較Table 5 Comparative analysis using the SSIM
本文提出了一種結合天空分割和條件生成對抗網絡的單幅圖像去霧算法.利用天空分割方法使大氣光值被準確的估計在天空區域中,使用改進后的條件生成對抗網絡精確的估計出有霧圖像的透射率,再利用大氣散射模型恢復無霧圖像,對恢復后的圖像進行對比度增強處理.實驗結果表明,與對比算法比較,本文算法恢復的清晰圖像在PSNR和SSIM指標的均值最高,具有顏色自然、對比度高、邊緣細節清晰等優點.論文后續的工作是解決本文算法時間復雜度較高的問題,以提高其實用性.