陳 瑋,陳永順,尹 鐘
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
圖像增強(qiáng)是一個(gè)非常熱門的研究領(lǐng)域,因?yàn)閳D像質(zhì)量直接影響到計(jì)算機(jī)視覺系統(tǒng).一般而言,戶外圖像都會(huì)因?yàn)椴煌拇髿鈼l件而受到一定程度的影響,尤其是霧霾的影響.這些大氣條件造成的主要影響是圖像的低對(duì)比度、扭曲的顏色和降低的能見度,致使監(jiān)視、目標(biāo)跟蹤、遙感、交通控制和自動(dòng)駕駛等系統(tǒng)性能可能會(huì)受到嚴(yán)重的影響[1,2],因此,人們對(duì)圖像的去霧算法日益重視.
實(shí)現(xiàn)圖像的去霧是一個(gè)高度不適定的難題.在過去的幾十年里,人們提出了許多不同的圖像去霧方法來解決這一難題,大致可分為傳統(tǒng)的方法和現(xiàn)代的方法.這兩種類型最顯著的區(qū)別是,前一種類型是基于先驗(yàn)知識(shí)和物理模型進(jìn)行去霧,后一種類型是基于神經(jīng)網(wǎng)絡(luò)的圖像去霧方法.
Tan等[3]根據(jù)統(tǒng)計(jì)分析發(fā)現(xiàn)無霧圖像比有霧圖像具有更高的對(duì)比度,使用最大化局部對(duì)比度的策略實(shí)現(xiàn)圖像去霧.Tarel等[4]提出了一種基于兩種不同濾波器的方法:中值濾波器和保留邊緣的濾波器,但去霧后的圖像在景深變化邊緣的地方會(huì)出現(xiàn)Halo效應(yīng).Fattal等[5]利用獨(dú)立成分分析(Indepe-ndent component analysis,ICA)的方法來估計(jì)透射率,但該方法耗時(shí)較長,且對(duì)重霾圖像的去霧效果一般.He等[6]通過對(duì)大量無霧圖像的統(tǒng)計(jì)與分析提出了暗通道先驗(yàn)去霧方法(Dark Channel Prior,DCP),使用DCP計(jì)算透射率和大氣散射模型恢復(fù)圖像,然而,DCP在天空?qǐng)D像中降低了去霧圖像的質(zhì)量,且去霧耗時(shí)長、計(jì)算量大.為了解決He等方法中的問題,Meng等[7]對(duì)傳輸函數(shù)進(jìn)行了邊界約束,使透射率預(yù)測更加準(zhǔn)確.Berman D等[8]人提出了一種基于非局部先驗(yàn)的去霧方法(面向像素的算法),該方法實(shí)時(shí)性較好,但出現(xiàn)恢復(fù)的圖像會(huì)留有殘霧和天空區(qū)域容易失真等情況.近年來,人工神經(jīng)網(wǎng)絡(luò)技術(shù)發(fā)展迅速,在計(jì)算機(jī)視覺系統(tǒng)中越來越受到人們的重視,在圖像處理領(lǐng)域表現(xiàn)尤為顯著,所以出現(xiàn)了基于神經(jīng)網(wǎng)絡(luò)的圖像去霧方法.Cai等[9]提出一種從有霧圖像直接生成無霧圖像的去霧網(wǎng)絡(luò),將透射率和大氣光值聯(lián)合起來,并用神經(jīng)網(wǎng)絡(luò)對(duì)其進(jìn)行估計(jì),但對(duì)具有濃霧的圖像處理時(shí),存在對(duì)參數(shù)估計(jì)不精確的缺點(diǎn),導(dǎo)致去霧程度不夠.He Zhang等人[10]提出了一種邊緣保持密集連接的金字塔去霧網(wǎng)絡(luò)模型,圖像去霧效果良好,然而恢復(fù)的圖像細(xì)節(jié)不清晰.
綜合來看,無論是基于大氣散射模型的去霧算法,還是基于神經(jīng)網(wǎng)絡(luò)的去霧方法,現(xiàn)有的大多數(shù)圖像去霧算法都會(huì)有某種程度上的不足,前者在某些較為特殊的環(huán)境下去霧效果欠佳,后者對(duì)大氣光值的估計(jì)沒有足夠重視,而且還有可能出現(xiàn)對(duì)去霧透射率估計(jì)不精確的情況,導(dǎo)致去霧性能不佳.針對(duì)上述去霧研究的問題,本文提出了一種結(jié)合天空分割和條件生成對(duì)抗網(wǎng)絡(luò)去霧算法.
大氣散射是一種當(dāng)光穿過大氣中的微小顆粒時(shí)并使其產(chǎn)生了偏離的物理現(xiàn)象.那么有霧圖像的成因就可以用大氣散射模型來解釋,其模型公式如下:
I(x,y)=J(x,y)t(x,t)+A[1-t(x,y)]
(1)
其中,I(x,y)表示待去霧的圖像,J(x,y)表示恢復(fù)的清晰圖像,t(x,y)是透射率,A是大氣光值.假設(shè)大氣光是均勻的,則透射率可表示為:
t(x,y)=e-βd(x,y)
(2)
其中,β表示大氣的散射系數(shù),d(x,y)為場景深度.若能估計(jì)出A和t(x,y),代入式(1),由于是I(x,y)已知的,即可得到去霧后的圖像J(x,y),式(1)可轉(zhuǎn)化為:
(3)
暗通道先驗(yàn)規(guī)律是He等[6]通過對(duì)大量的室外無霧圖像進(jìn)行實(shí)驗(yàn)與分析發(fā)現(xiàn)的,其定義為:在無霧圖像的R、G、B3個(gè)顏色通道之中,其非天空區(qū)域總是會(huì)有一個(gè)顏色通道的像素灰度值極低,幾乎接近0.即暗通道先驗(yàn)理論:
(4)
其中,Jdark(x,y)為無霧圖像的暗通道圖,Jc(z)為RGB圖像的某一個(gè)顏色通道,Ω(x,y)是以點(diǎn)(x,y)為中心的一個(gè)方形區(qū)域.以大氣光值A(chǔ)是已知的且為正作為前提條件,對(duì)式(1)的兩邊作最小值的運(yùn)算,然后同時(shí)除以大氣光值A(chǔ),可得:
(5)
(6)
為了防止去霧過度而出現(xiàn)圖像不自然的問題,引入一個(gè)約束常數(shù)ω(ω∈[0,1])(通常取值為ω=0.95),這樣可以使得恢復(fù)的清晰圖像保留輕微的霧霾而顯得更加地真實(shí)自然.但是由式(6)得出的透射率是不足以起到去霧作用的,為此,He等人利用導(dǎo)向?yàn)V波算法[11]來對(duì)其實(shí)行進(jìn)一步的處理,根據(jù)導(dǎo)向?yàn)V波算法處理后的透射率,由式(7)可得去霧后的清晰圖像J(x,y):
(7)
其中,t0表示為透射率t(x,y)的一個(gè)約束值,因?yàn)楫?dāng)t(x,y)的值過小時(shí),J(x,y)的像素值則會(huì)出現(xiàn)過大的情況,所以會(huì)導(dǎo)致恢復(fù)的清晰圖像出現(xiàn)色偏.因此,需要給定求得的透射率一個(gè)最小值限制t0(通常取t0=0.1).He等[6]對(duì)大氣光值A(chǔ)計(jì)算方法為:
(8)
其中,Ic(x,y)為待去霧的圖像,Idark(x,y)為暗通道圖,h和w分別表示為圖像的高度和寬度,c為通道數(shù).
通過上述的分析發(fā)現(xiàn),現(xiàn)有的大多數(shù)圖像去霧算法存在著對(duì)去霧參數(shù)的估計(jì)不精確和去霧效果的顏色失真等問題,為了解決這些問題,本文提出了結(jié)合天空分割和條件生成對(duì)抗網(wǎng)絡(luò)(Conditional Generative Adversarial Network)的單幅圖像去霧算法.首先,利用閾值分割法將圖像劃分為天空區(qū)域和非天空區(qū)域,并使用分割出的天空區(qū)域來估計(jì)大氣光值A(chǔ);然后,利用改進(jìn)后的條件生成對(duì)抗網(wǎng)絡(luò)估計(jì)出精確的透射率;最
圖1 算法總體流程框架Fig.1 Flowchart of the proposed algorithm
圖2 去霧效果圖Fig.2 Recovered results for foggy image
以往大多的去霧算法較為側(cè)重對(duì)透射率的估計(jì),而對(duì)于大氣光值A(chǔ),往往采用經(jīng)驗(yàn)公式去估計(jì),沒有對(duì)大氣光值足夠的重視且會(huì)受到明亮的非天空區(qū)域的干擾,影響了去霧算法的表現(xiàn).為了避免出現(xiàn)上述問題,本文提出一種可行的基于閾值的天空分割算法分割出天空區(qū)域,大氣光值A(chǔ)取值為天空區(qū)域所有像素值的平均值,使得大氣光值被準(zhǔn)確估計(jì)在天空區(qū)域中.本文使用式(8)來計(jì)算不存在天空區(qū)域的待去霧圖像的大氣光值A(chǔ).
天空分割算法:首先,求有霧圖像的暗通道圖(暗通道圖具有豐富的邊緣信息[13]),以準(zhǔn)確保留邊界信息,記為Idark(x,y).由于圖像中的天空區(qū)域?yàn)槊髁羺^(qū)域,其像素值一般比較大, 當(dāng)天空區(qū)域面積占的比例較大時(shí),該像素值占據(jù)的比例也較大.本文先使用最大類間差算法對(duì)暗通道圖Idark(x,y)進(jìn)行第1次粗略分割處理,此時(shí)得到的分割結(jié)果并不是理想的結(jié)果,其存在著誤判的情況,但是真實(shí)的天空區(qū)域占據(jù)著大部分,在第1次粗略分割后的天空區(qū)域中求出出現(xiàn)頻率最高的點(diǎn),并將該點(diǎn)的像素值記為N,又因?yàn)樵撓袼刂礜是比非天空區(qū)域和天空區(qū)域臨界邊處的像素值更大, 所以使用一個(gè)大于0且小于1的常數(shù)μ(經(jīng)驗(yàn)值取0.85)限制N.因此,將T=μN(yùn)作為本文天空分割算法的閾值,根據(jù)該閾值T可分割得二值圖像:
(9)
其中,It(x,y)表示為有霧圖像天空區(qū)域的第2次粗分割結(jié)果,It(x,y)中的白色部分為天空區(qū)域.此時(shí),分割結(jié)果還會(huì)存在著誤判的情況,表現(xiàn)為零散的小面積白色區(qū)域錯(cuò)誤的分割為天空區(qū)域,為解決該問題,根據(jù)天空區(qū)域的位置特點(diǎn)和面積的大小進(jìn)行優(yōu)化第2次粗分割結(jié)果, 優(yōu)化的具體操作如下:
1)在It(x,y)的所有白色連通區(qū)域中,找到面積最大的白色連通區(qū)域,并求出其在It(x,y)中的最大行數(shù)值,記為Rmax,并令I(lǐng)t(x,y)中行數(shù)大于Rmax的值置為0;
2)根據(jù)經(jīng)過1)處理后的分割結(jié)果,在該基礎(chǔ)上利用求最大連通區(qū)域的方法把白色區(qū)域面積小于圖像總面積0.02%(經(jīng)驗(yàn)取值)的區(qū)域的像素值置為0,最后得到的白色區(qū)域就是天空區(qū)域.
近年來,隨著生成對(duì)抗網(wǎng)絡(luò)的誕生與發(fā)展[14],條件生成對(duì)抗網(wǎng)絡(luò)被運(yùn)用在圖像處理的多個(gè)領(lǐng)域[15,16].基于上述的啟發(fā),本文提出了一種基于條件生成對(duì)抗網(wǎng)絡(luò)圖像去霧算法,將生成器進(jìn)行改進(jìn),引入均方差損失、基于VGG-19的特征損失和雙向梯度損失對(duì)損失函數(shù)進(jìn)行修正,進(jìn)而使得對(duì)抗網(wǎng)絡(luò)能夠生成邊緣細(xì)節(jié)清晰的圖像,提高圖像的質(zhì)量,使圖像顯得更加真實(shí).
3.2.1 生成器
生成器的任務(wù)是將輸入的模糊圖像生成清晰的圖像,并且保留輸入圖像的結(jié)構(gòu)和細(xì)節(jié)信息.本文生成器網(wǎng)絡(luò)為一個(gè)帶有多尺度卷積核的神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)基本操作單元包括有7個(gè)卷積層、3個(gè)連接層和1個(gè)BReLU激活層,分別為Conv1、Conv2、Concat1、Conv3、Concat2、Conv4、Concat3、Conv5、Conv6、Conv7和BReLU.Conv1 和 Conv2通過Concat1連接,Conv2和Conv3通過Concat2 連接,Conv1、Conv2、Conv3和Conv4通過Concat3 連接.在經(jīng)過卷積層(Conv)操作后,對(duì)卷積后的輸出依次進(jìn)行批量歸一化(BatchNorm)和ReLU激活操作,通過Padding保持卷積層輸入和輸出大小一致,由于透射率是一個(gè)概率([0,1]),最后一層使用Cai[9]提出的雙邊糾正線性單元(Bilateral Rectified Linear Unit,BReLU).為了使條件生成對(duì)抗網(wǎng)絡(luò)能夠提取到圖像不同尺度的特征,進(jìn)而使其可以生成出細(xì)節(jié)信息更好的圖像,所以生成器部分的卷積層設(shè)置了不同尺度的卷積核.經(jīng)過改進(jìn)優(yōu)化后的生成器的結(jié)構(gòu)圖如圖3所示,其具體的網(wǎng)絡(luò)參數(shù)設(shè)置見表1.
圖3 生成器結(jié)構(gòu)圖Fig.3 Generator network structure
表1 生成器網(wǎng)絡(luò)參數(shù)Table 1 Generator network parameter
3.2.2 判別器
判別器網(wǎng)絡(luò)主要的作用是為了判斷生成器網(wǎng)絡(luò)生成的圖像的真和假(即生成器生成的圖像是否服從真實(shí)樣本分布).本文判別器使用一個(gè)神經(jīng)網(wǎng)絡(luò),輸入和條件通過Concat一并作為判別器的輸入,該網(wǎng)絡(luò)的基本操作單元包括卷積層、批量歸一化層(Batch-Norm)和LeakyReLU激活,判別器的的輸出是一個(gè)概率值,所以最后一層使用Sigmoid函數(shù)進(jìn)行特征映射,并將判別器結(jié)果進(jìn)行歸一化處理.判別器的詳細(xì)結(jié)構(gòu)圖如圖4所示,其網(wǎng)絡(luò)參數(shù)的設(shè)置見表2.
圖4 判別器結(jié)構(gòu)圖Fig.4 Discriminatory network structure
表2 判別器網(wǎng)絡(luò)參數(shù)Table 2 Discriminator network parameter
3.2.3 損失函數(shù)
條件生成對(duì)抗網(wǎng)絡(luò)的生成器G的輸入為噪聲z和附加的條件信息y,網(wǎng)絡(luò)的判別器D的輸入為數(shù)據(jù)x和附加的條件信息y,判別器對(duì)x是否屬于真實(shí)數(shù)據(jù)的概率做進(jìn)一步判別.對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使其達(dá)到一個(gè)平衡(即判別器無法判定生成器生成的圖像的真假),所以,條件生成對(duì)抗網(wǎng)絡(luò)的目標(biāo)函數(shù)V(D,G)為:
(10)
(11)
(12)
(13)
其中,Vi表示VGG-19的網(wǎng)絡(luò)結(jié)構(gòu),ci,wi,hi分別表示為Vi網(wǎng)絡(luò)結(jié)構(gòu)輸出特征的通道數(shù)、寬度和高度.雙向梯度損失Lg包括水平梯度和垂直梯度,定義為:
(14)
其中,Hx為水平方向的梯度運(yùn)算,Hy表示垂直方向的梯度運(yùn)算,w和h分別表示特征圖的寬度和高度;最后,結(jié)合網(wǎng)絡(luò)的對(duì)抗損失Ladv、均方差損失LMSE、基于VGG-19的特征損失LVGG和雙向梯度損失Lg,則改進(jìn)后的條件生成對(duì)抗總損失函數(shù)Lloss定義為:
Lloss=WadvLadv+WMSELMSE+WVGGLVGG+WgLg
(15)
Wadv、WMSE、WVGG和Wg分別表示對(duì)抗損失Ladv、均方差損失LMSE、基于VGG-19的特征損失LVGG和雙向梯度損失Lg占的權(quán)重比例.
由于CGAN是一種有監(jiān)督的技術(shù),因此執(zhí)行訓(xùn)練步驟需要匹配模糊樣本和真實(shí)樣本.在本工作中,真實(shí)樣本的計(jì)算采用文獻(xiàn)[6]中的軟摳圖(softmatting)算法(即從有霧圖像中利用softmatting算法求出精細(xì)透射率圖),該算法在He等[6]中已被證明適用于去霧問題,但其計(jì)算處理時(shí)間和內(nèi)存要求都很高.圖像軟摳圖過程可以表示為:
I=Fα+B(1-α)
(16)
(17)
為了檢驗(yàn)本文大氣光值估算方法的是否準(zhǔn)確有效,設(shè)計(jì)了實(shí)驗(yàn),使用不同的方法去進(jìn)行估計(jì)大氣光值,實(shí)驗(yàn)的去霧結(jié)果對(duì)比如圖5所示,圖5(a)為有霧圖像,圖5(b)為利用本文天空分割算法的分割結(jié)果,白色的是天空區(qū)域,圖5(c)為利用He方法[6]來估計(jì)大氣光值的去霧結(jié)果,圖5(d)為利用本文天空分割算法來估計(jì)大氣光值的去霧結(jié)果,這兩個(gè)去霧結(jié)果都是利用經(jīng)過本文去霧算法優(yōu)化后的透射率以及大氣散射模型來實(shí)現(xiàn)去霧的.從圖5的去霧結(jié)果觀察出,在利用He等[6]的方法來估計(jì)大氣光值恢復(fù)的無霧圖像中,其天空區(qū)域出現(xiàn)了輕微的色偏;而利用本文天空分割算法實(shí)現(xiàn)對(duì)大氣光值的估計(jì),恢復(fù)的無霧圖像的天空區(qū)域更加清晰、自然.
圖5 去霧結(jié)果與大氣光值估計(jì)結(jié)果對(duì)比Fig. 5 Comparison for dehazed images and atmospheric light estimation results
圖6為7張有霧圖像以及7種去霧算法恢復(fù)的相應(yīng)去霧結(jié)果.圖6(a)為清晰的無霧圖像,圖6(b)為對(duì)應(yīng)的待去霧圖像,圖6(c)和圖6(e)分別為He的方法[6]和Meng的方法[7],雖然這兩者的去霧效果都能夠達(dá)到較好的水準(zhǔn),但其不足的是在天空等明亮區(qū)域都容易出現(xiàn)顏色失真;圖6(d)為Berman D等人的方法[8],該方法天空明亮區(qū)域容易出現(xiàn)較為嚴(yán)重的顏色失真;圖6(f)和圖6(g)分別為Ren的方法[18]和Cai的方法[9],這兩個(gè)方法都因?yàn)橥干渎实墓烙?jì)并不十分準(zhǔn)確,致使恢復(fù)的清晰圖像中還是包含著不少的霧霾,去霧程度不足,且前者比后者殘留著更多的霧霾;圖6(h)為Zhang等人的方法[10],其能夠達(dá)到去霧效果,但恢復(fù)的圖像出現(xiàn)輕微色偏,且恢復(fù)的細(xì)節(jié)不清晰;圖6(i)為本文算法的去霧效果,可以從圖6的去霧結(jié)果觀察出,與其他算法的去霧圖像相比,本文生成的去霧圖像更加自然,細(xì)節(jié)信息更加清晰,且更加接近圖6(a)的清晰圖像.
圖6 不同算法去霧效果對(duì)比Fig.6 Comparison of different algorithms to defog
為了更有說服力地度量本文所提去霧方法的性能,采用在去霧評(píng)估廣泛使用的兩個(gè)指標(biāo):峰值信噪比PSNR(Peak Signal to Noise Ratio)和結(jié)構(gòu)相似指數(shù)SSIM(Str-uctural Similarity Index Measuremen).PSNR定義為:
(18)
其中,peakvalue表示圖像點(diǎn)顏色的最大值,MSE為均方誤差,其定義如下:
(19)
其中,w表示圖像的寬度,h表示圖像的高度,Jt(x,y)為真實(shí)的清晰圖像,Jo(x,y)為恢復(fù)的無霧圖像.SSIM是基于感知模型的歸一化度量,定義為:
S(x,y)=f[l(x,y),c(x,y),s(x,y) ]
(20)
其中,l(x,y)表示為亮度的對(duì)比,c(x,y)表示對(duì)比度對(duì)比,s(x,y)表示圖像結(jié)構(gòu)對(duì)比.
為了直觀地體現(xiàn)出本文算法的去霧性能,表3給出了圖5中使用不同大氣光值估計(jì)方法的去霧結(jié)果的性能指標(biāo):PSNR和SSIM,對(duì)于存在天空區(qū)域的有霧圖像,相比于使用He的方法[6]估計(jì)大氣光值來恢復(fù)的圖像,使用本文天空分割算法估計(jì)大氣光值來恢復(fù)的圖像的PSNR和SSIM指標(biāo)都有一定程度的提升,證明了本文估計(jì)大氣光值的方法更加準(zhǔn)確有效,恢復(fù)的圖像質(zhì)量更高;表4和表5分別給出了圖6中7張測試圖像的PSNR和SSIM指標(biāo)的值,對(duì)于PSNR,本文去霧算法在image2和image4分別略低于Cai[9]和Meng[7]的算法,但均高于其他算法,且本文算法的PSNR均值最高,達(dá)到了23.84;對(duì)于SSIM,Cai[9]的算法在image5和image7比本文算法略高,但本文算法的SSIM指標(biāo)均值是最高的,達(dá)到了0.9471.根據(jù)數(shù)據(jù)分析結(jié)果表明,更進(jìn)一步證明了本文去霧算法的去霧性能比其它的去霧算法更好,恢復(fù)的圖像質(zhì)量更高.
表3 不同大氣光值估計(jì)方法的去霧結(jié)果評(píng)價(jià)指標(biāo)Table 3 Evaluation of dehazing results of different atmospheric light value estimation methods
表4 各方法峰值信噪比比較Table 4 Comparative analysis using the PSNR
表5 各方法結(jié)構(gòu)相似度比較Table 5 Comparative analysis using the SSIM
本文提出了一種結(jié)合天空分割和條件生成對(duì)抗網(wǎng)絡(luò)的單幅圖像去霧算法.利用天空分割方法使大氣光值被準(zhǔn)確的估計(jì)在天空區(qū)域中,使用改進(jìn)后的條件生成對(duì)抗網(wǎng)絡(luò)精確的估計(jì)出有霧圖像的透射率,再利用大氣散射模型恢復(fù)無霧圖像,對(duì)恢復(fù)后的圖像進(jìn)行對(duì)比度增強(qiáng)處理.實(shí)驗(yàn)結(jié)果表明,與對(duì)比算法比較,本文算法恢復(fù)的清晰圖像在PSNR和SSIM指標(biāo)的均值最高,具有顏色自然、對(duì)比度高、邊緣細(xì)節(jié)清晰等優(yōu)點(diǎn).論文后續(xù)的工作是解決本文算法時(shí)間復(fù)雜度較高的問題,以提高其實(shí)用性.