喬 丹, 張 闖,2*, 朱晨雨
(1. 南京信息工程大學(xué) 電子與信息工程學(xué)院,江蘇 南京 210044;2. 江蘇省氣象探測與信息處理重點實驗室,江蘇 南京 210044)
在霧天場景下,大氣中懸浮較多水滴。光在傳輸過程中遇到雜質(zhì)被吸收和散射,導(dǎo)致拍攝圖像輪廓模糊,圖像清晰度以及色彩飽和度下降。這不僅對人類主觀感受產(chǎn)生消極影響,而且不利于目標(biāo)分辨和捕獲細(xì)節(jié)信息,降低圖像的應(yīng)用價值。因此,圖像去霧技術(shù)成為計算機視覺的重要研究之一[1]。
目前,傳統(tǒng)圖像去霧方法主要分為兩類,第一類是基于非物理模型去霧算法,其主要包括直方圖均衡化[2]、基于視網(wǎng)膜大腦皮層(Retinex)理論[3]、同態(tài)濾波法[4]等去霧算法,此類方法主要是提高有霧圖像對比度及清晰度,而未分析霧氣形成原理以及光學(xué)成像本質(zhì),不能從根本上實現(xiàn)去霧。第二類是基于大氣散射模型[5]去霧算法,該方法主要研究成霧原因以及圖像降質(zhì)的客觀原理,依據(jù)大氣散射模型構(gòu)建數(shù)學(xué)公式,復(fù)原出無霧圖像。Tan等人[6]采用最大局部對比度的方法實現(xiàn)去霧,由于清晰化后圖像比霧天圖像的對比度高,在邊緣檢測時可檢測到更多邊緣信息的先驗知識。Fattal[7]提出基于獨立分量分析(ICA)的彩色圖像去霧算法,并假設(shè)表面陰影與傳輸函數(shù)統(tǒng)計無關(guān),根據(jù)這一前提對大氣散射模型進行運算分析。He等人[8-9]提出暗通道去霧算法(DCP),該方法依據(jù)有霧圖像存在一個通道像素值低的先驗知識求解大氣散射模型。Shao[10]改進暗通道去霧算法,將有霧圖像分為近景和遠(yuǎn)景兩個區(qū)域,依據(jù)灰度值不同分段映射,去霧后圖像清晰度提高。Zhang等人[11]提出結(jié)合顏色線和暗通道去霧算法,通過計算可信度權(quán)重加權(quán)顏色線先驗和暗通道先驗求得透過率圖。但基于暗通道去霧算法存在去霧效率低、去霧后圖像偏暗的問題。Meng等人[12]研究出正則化去霧(BCCR),對透射率圖邊界約束,該方法存在去霧后圖像失真、曝光等問題。盡管這類傳統(tǒng)方法去霧效果相對較好,但需人工提取有霧特征且大部分依賴先驗知識,仍有局限性。
近年來,深度學(xué)習(xí)理論應(yīng)用到圖像去霧領(lǐng)域,部分學(xué)者提出了基于卷積神經(jīng)網(wǎng)絡(luò)的去霧算法。Cai等人[13]提出DehazeNet方法,使用多尺度卷積神經(jīng)網(wǎng)絡(luò)和MaxPooling估計透射率圖,反演出無霧圖像。該方法沒有融合深層淺層信息,存在提取有霧圖像特征較少的問題,易出現(xiàn)顏色失真、去霧不徹底的現(xiàn)象。Li[14]提出AOD-Net去霧模型,將大氣光照值和光透射率假設(shè)為一個參數(shù),減少單個參數(shù)累計造成的誤差。Ren等人[15]提出MSCNN方法,首先利用粗尺度網(wǎng)絡(luò)估計場景透射率圖,然后由精細(xì)尺度網(wǎng)絡(luò)細(xì)化。但是,該方法對夜晚霧情況處理較差。陳清江等人[16]提出基于卷積神經(jīng)網(wǎng)絡(luò)去霧算法,采用多尺度操作提取有霧圖像信息。上述去霧算法使用卷積神經(jīng)網(wǎng)絡(luò)自動提取圖像特征,提高去霧效率,但訓(xùn)練模型局限于淺層結(jié)構(gòu),沒有深度學(xué)習(xí)有霧圖像,存在特征提取疏漏等問題;且所得透射率圖部分存在斑塊,影響復(fù)原圖像的質(zhì)量,導(dǎo)致圖像去霧不徹底。
為解決去霧后圖像顏色偏暗以及去霧不徹底等問題,本文提出了一種基于多尺度融合卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)的去霧網(wǎng)絡(luò)模型。該網(wǎng)絡(luò)多次采用特征融合操作,自動學(xué)習(xí)有霧圖像深層特征信息,并初步提取出有霧圖像透射率圖;然后由雙邊濾波優(yōu)化透射率圖,在保留輪廓信息的基礎(chǔ)上有效除去噪聲;最后依據(jù)大氣散射模型公式復(fù)原出無霧圖像。由實驗結(jié)果可知,與其他方法相比,本文方法得到的去霧圖像顏色清晰自然,視覺效果較好。
Narasimhan和Nayar[17-18]通過建立數(shù)學(xué)模型,解釋了霧天圖像包含要素以及成像過程。該模型認(rèn)為霧天成像質(zhì)量下降的原因主要包括兩方面:一是由于大氣中懸浮粒子對目標(biāo)反射光吸收和散射的影響致使其能量衰減,最終降低成像亮度;二是太陽光等環(huán)境光受大氣介質(zhì)的散射作用形成背景光,其強度過大,影響成像清晰度,造成圖像色彩不自然。根據(jù)以上原因,將大氣散射模型定義為:
I(x,y)=t(x,y)J(x,y)+A[1-t(x,y)],
(1)
式中:I(x,y)表示有霧圖像,J(x,y)表示無霧圖像,A表示中大氣光值,t(x,y)表示圖像透射率圖,可定義為:
t(x,y)=e-βd(x,y),
(2)
式中:β表示大氣的散射系數(shù),d(x,y)表示物體與成像設(shè)備間的距離。
由上述可知,圖像去霧是先從有霧圖像中估算透射率圖和大氣光值,然后根據(jù)大氣散射模型求解無霧圖像的過程。因此,在I(x,y)已知的前提下,求得t(x,y)和A是復(fù)原無霧圖像的關(guān)鍵。
依據(jù)大氣散射模型復(fù)原無霧圖像,其主要目標(biāo)是求解透射率圖以及大氣光值。傳統(tǒng)暗通道去霧算法,依據(jù)有霧圖像中至少存在一個通道像素值低的假設(shè)實現(xiàn)去霧。而當(dāng)像素點的值接近大氣光值時,去霧的圖像出現(xiàn)局部的顏色偏暗效應(yīng)。為避免這一缺點,本文設(shè)計了一種基于多尺度融合CNN的圖像去霧算法。該算法首先搭建了多尺度融合去霧網(wǎng)絡(luò) (Multi-scale Concat Dehaze Network, MCDN),初步預(yù)測透射率圖,然后經(jīng)過圖像優(yōu)化模塊,由雙邊濾波對粗透射率圖優(yōu)化得到細(xì)透射率圖;根據(jù)所得透射率圖和有霧圖像求解大氣光值A(chǔ);最后結(jié)合大氣散射模型還原出無霧圖象。具體算法框架如圖1所示。
圖1 算法框架圖Fig.1 Algorithm framework
有霧圖像細(xì)節(jié)信息保留的完整程度影響著復(fù)原后無霧圖像的質(zhì)量,卷積網(wǎng)絡(luò)層數(shù)過淺會導(dǎo)致提取有霧圖像信息不足,致使去霧不徹底。所以本文網(wǎng)絡(luò)模型多次引入特征融合操作,連接具有相同尺寸的卷積層,實現(xiàn)信息融合。MCDN是一個端到端的網(wǎng)絡(luò)預(yù)測模型,直接學(xué)習(xí)有霧圖像和透射率之間的映射關(guān)系,網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。模型設(shè)計主要包括以下步驟:(1)搭建預(yù)處理模塊,提取有霧圖像的淺層特征;(2)設(shè)計多尺度卷積層實現(xiàn)特征提取與融合,并在淺層與深層間搭建信息融合分支;(3)應(yīng)用反卷積模塊恢復(fù)圖像原始尺寸,輸出粗透射率圖。
圖2 MCDN網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 MCDN network structure
3.1.1 圖像預(yù)處理模塊
以有霧圖像作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,首先連續(xù)采用3個卷積核大小為3×3的卷積層,對原始圖像進行預(yù)處理。每層卷積核之間通過局部連接、權(quán)值共享的方式與輸入圖像進行運算,以實現(xiàn)有霧圖像淺層特征提取,卷積層的輸出為:
Fs(Y)=PRelu[Ws*Fs-1(Y)+Bs],
(3)
式中:Fs表示第s層特征圖,Ws表示第s層卷積核,Fs-1表示第s-1層輸出的特征圖,*表示卷積,Bs表示第s層的偏置。激活函數(shù)采用改進的帶參數(shù)修正線性單元(PRelu)。PRelu在負(fù)數(shù)區(qū)間有斜率,在Relu的基礎(chǔ)上增加參數(shù),可以加快網(wǎng)絡(luò)的收斂速度,避免梯度彌散。其表達(dá)式為:
XPRelu=max(xi,0)+bimin(0,xi),
(4)
式中:xi表示第i層正區(qū)間的輸入信號,bi表示第i層負(fù)區(qū)間的系數(shù)。
3.1.2 多尺度映射模塊
多尺度映射模塊主要分為兩部分:多尺度特征提取、深層淺層信息融合。預(yù)處理模塊提取圖像淺層信息,而霧天圖像恢復(fù)通常還依賴不同尺度的紋理信息,因此MCDN模型對預(yù)處理后圖像分別進行卷積核大小為3×3、5×5、7×7 的多尺度卷積運算,多尺度濾波器之間是平行關(guān)系,每一層都輸出16個特征圖,多尺度卷積計算公式為:
Fsi(Y)=PRelu[Wsi*Fs-1(Y)+BS],
(5)
式中:Fsi表示s層的第組i特征圖,Wsi(i=1,2,3)表示s層的第i組卷積核,Fs-1表示第s-1層輸出的特征圖,*表示卷積,Bs表示第s層的偏置。網(wǎng)絡(luò)采用最大池化采樣,簡化網(wǎng)絡(luò)復(fù)雜度。每個卷積層后使用BN歸一化處理,防止網(wǎng)絡(luò)過擬合,加速網(wǎng)絡(luò)收斂。
由于有霧圖像既包含廣泛的輪廓信息同時也含有小的紋理特征信息,因此為進一步提取深層細(xì)節(jié)特征,本文多次采用特征融合(Concat)的方法。為減小參數(shù)量,對經(jīng)過3×3,5×5,7×7 卷積層后的特征圖分別進行最大池化采樣。隨后對其特征融合,增加網(wǎng)絡(luò)容量,提高捕獲圖像內(nèi)部信息的魯棒性和有效性,有助于梯度反向傳播。而后再次使用多尺度3×3,5×5,7×7 卷積核進行卷積操作,對其所得特征圖進行Concat操作,獲得更深層次的有霧圖像感受野的信息,同時減少特征冗余,保證了圖像細(xì)節(jié)信息的有效傳遞。最后,在淺層和深層網(wǎng)絡(luò)間搭建特征融合分支,匯聚不同等級圖像信息, 為滿足融合圖像間尺寸需求,引入了空間金字塔池化網(wǎng)絡(luò)Spatial Pyramid Pooling Net(SPP-Net)固定圖像大小。該分支可以提高計算精度,保留完整的特征信息透射率圖。經(jīng)多尺度融合所得特征圖既包含淺層特征,也保留了更多細(xì)節(jié)信息,避免信息丟失導(dǎo)致去霧不徹底。多尺度卷積參數(shù)如表1所示,MCDN模型中卷積層采用零填充方式,保持圖像尺寸不變。每一層激活函數(shù)使用PRelu。
表1 多尺度卷積參數(shù)Tab.1 Multi-scale convolution paramenters
3.1.3 反卷積模塊
反卷積層(Deconvolution)在本文網(wǎng)絡(luò)模型相當(dāng)于上采樣,增加圖像的空間維度。該過程可以表示為:
Pi(Y)=σ[Wi*PI-1(Y)]+Bi,
(6)
式中:Pi(Y)表示第i層反卷積的輸出,Wi表示第i層反卷積層的權(quán)重參數(shù),Pi-1(Y)表示第i-1卷積層的輸出特征圖,Bi表示第i層偏置項。本文將反卷積核的尺寸設(shè)定為2×2,步長取1,padding設(shè)定為SAME的填充模式,將池化操作后的特征圖還原成輸入圖像大小。網(wǎng)絡(luò)模型最后一層采用3通道,卷積核大小為1×1的卷積層,輸出粗透射率圖。
粗透射率圖存在較多斑塊,去霧效果不徹底。針對此問題,本文采用雙邊濾波法優(yōu)化粗透射率圖。雙邊濾波法是一種非線性保邊濾波方法,通過將圖像空間鄰近度和像素值相似度結(jié)合處理,同時考慮空域信息和灰度相似性,達(dá)到保邊去噪的目的。
首先根據(jù)空域半徑對圖像平面高斯濾波,依據(jù)值域濾波半徑對圖像值域高斯濾波。然后以空域和值域高斯濾波得到的結(jié)果乘積作為雙邊濾波加權(quán)因子,根據(jù)雙邊濾波器的模型實現(xiàn)透射率圖的細(xì)化,得到最終的透射率圖。
其中,雙邊濾波器的模型定義為:
(7)
式中:f(k,l)表示圖像中心點(k,l)的像素值,g(i,j)表示圖像中點(i,j) 的像素,ω(i,j,k,l)表示權(quán)值系數(shù),可定義為:
(8)
式中:σd表示空域濾波半徑,σr表示值域濾波半徑。
文中σd、σr分別選取為6和23。如圖3所示,對粗透射率圖進行雙邊濾波后圖像斑點明顯減少,優(yōu)化后的細(xì)透射率圖中物體輪廓更加清晰、平滑。
圖3 粗細(xì)透射率圖對比Fig.3 Comparison of coarse and fine transmittance images
本文網(wǎng)絡(luò)模型學(xué)習(xí)有霧圖像和透射率圖的映射關(guān)系,訓(xùn)練過程中以均方誤差作為損失函數(shù),計算有霧圖像真實透射率圖和網(wǎng)絡(luò)預(yù)測透射率圖之間的誤差,即:
(9)
式中:xi表示第i組有霧圖像,yi表示第i組真實透射率圖,f(xi)表示第i組輸出值,i=1,2…,N表示訓(xùn)練樣本數(shù)目。
網(wǎng)絡(luò)訓(xùn)練時使用隨機梯度下降和反向傳播算法最小化損失函數(shù)。其中初始學(xué)習(xí)率設(shè)置為0.001,每迭代15輪學(xué)習(xí)率衰減一次,衰減率為0.97,動量取0.9。同時為了避免網(wǎng)絡(luò)發(fā)生過擬合現(xiàn)象,在訓(xùn)練時采用Dropout方法,以50%的概率隨機丟棄神經(jīng)元。
式(1)變形可得:
(10)
根據(jù)式(10),無霧圖像的求解還需計算A值。由式(2)可知,圖像中場景深度趨于無窮遠(yuǎn)時,有t(x)=0;而當(dāng)t(x)→0時,A=I(x)。這表明當(dāng)透射率圖像素值很低時,A為有霧圖像對應(yīng)位置像素值。因此,在透射率圖t(x)中選擇前0.1%的低像素值,并且在I(x)中尋找其對應(yīng)位置處的最高像素值可以作為大氣光值A(chǔ)。已知傳播率圖t(x)和大氣光值A(chǔ),無霧圖像J(x)可以通過公式(11)得到:
(11)
式中,t0是透射率圖中前0.1%低像素值的臨界點。當(dāng)透射率圖t(x)很小時,會使無霧圖像J(x)的值偏大,導(dǎo)致圖像向白場過度,所以設(shè)置t0為透射率圖的下限。
為了衡量本文算法的性能,從合成有霧圖像和真實有霧圖像兩方面分析,分別與傳統(tǒng)去霧方法[8-9,12]以及深度學(xué)習(xí)去霧方法[13,15]做比較。實驗中選取Python編程語言,應(yīng)用Tensorflow深度學(xué)習(xí)框架搭建網(wǎng)絡(luò)實現(xiàn)數(shù)據(jù)集訓(xùn)練與測試。
本文選取了有霧圖像RESIDE數(shù)據(jù)集[19]作為實驗樣本,完成MCDN網(wǎng)絡(luò)訓(xùn)練與測試。RESIDE數(shù)據(jù)集包含72 135張合成有霧圖像,實驗過程中選取70%的數(shù)據(jù)作為訓(xùn)練集,30%的數(shù)據(jù)作為測試集,并設(shè)置大氣散射系數(shù)β在[0.6,1.6]區(qū)間。
本文算法對RESIDE數(shù)據(jù)集合成有霧圖像進行實驗,并分別與DCP[8-9]、BCCR[12]、DehazeNet[13]、MSCNN[15]算法比較,所得結(jié)果如圖4所示。DCP[8-9]算法能有效去霧,但去霧后圖像整體顏色偏暗。BCCR[12]算法亮度相比DCP[8-9]算法有所優(yōu)化,但與無霧圖像相比局部區(qū)域出現(xiàn)了顏色失真,如圖4(d)Hovel中桌子顏色去霧后由深色變?yōu)闇\灰色。DehazeNet[13]算法相比兩種傳統(tǒng)去霧算法效果明顯優(yōu)化,但存在去霧不徹底的現(xiàn)象,如圖4(e)Meeting room去霧后照片仍存在大量的霧。MSCNN[15]算法視覺效果較好,但是對圖像的細(xì)節(jié)紋理信息處理不夠精確,如圖4(f)Bedroom 床面去霧后有顆粒感,不光滑。本文算法相比其他方法去霧徹底,圖像清晰,邊緣細(xì)節(jié)保留完整,去霧效果真實自然。
圖4 合成有霧圖像結(jié)果對比。(a)霧天圖像;(b)原始圖像;(c)DCP;(d)BCCR;(e)DehazeNet;(f)MSCNN;(g)本文算法。Fig.4 Comparison of dehazing results of synthetic foggy images. (a) Foggy images; (b) Original clear images; (c)DCP; (d) BCCR; (e) DehazeNet; (f) MSCNN; (g) Proposed.
為了客觀驗證不同方法的去霧效果,本文選取峰值信噪比(PSNR)以及結(jié)構(gòu)相似性(SSIM)作為實驗評價指標(biāo)。PSNR是評價圖像質(zhì)量的客觀標(biāo)準(zhǔn),其值越大表明圖像去霧后圖像效果越好。SSIM主要描述圖像相似度,由亮度、對比度、結(jié)構(gòu)3種對比模塊組成,其值越大表明去霧圖像與真實圖像越接近。表2列出了各方法在合成有霧圖像實驗中的指標(biāo)結(jié)果,由表可知所提算法PSNR和SSIM值均取得最優(yōu)值,分別達(dá)到了29.238和0.950。這表明本文模型能較好地保持去霧圖像信息完整性,與真實無霧圖像更接近,相較于其他算法具有優(yōu)勢。
表2 合成有霧圖像的實驗結(jié)果Tab.2 Results of synthetic foggy images
續(xù) 表
自然環(huán)境中霧分布呈現(xiàn)不均勻性,其去霧模型更復(fù)雜。為測試本文算法對自然有霧圖像的去霧效果,以3幅自然有霧圖像作為實驗樣本,去霧結(jié)果如圖5~7。圖6紅框中天空顏色去霧后由原始灰色變?yōu)榘登嗌砻鱀CP[8-9]算法使天空區(qū)域亮度降低,且出現(xiàn)色彩突變現(xiàn)象。BCCR[12]算法在明亮區(qū)域出現(xiàn)顏色失真以及光暈問題,如圖5紅框中頭發(fā)處的局部曝光。DehazeNet[13]算法和MSCNN[15]算法使用卷積神經(jīng)網(wǎng)絡(luò)復(fù)原無霧圖像,效果優(yōu)于以上兩種算法,但是存在降低圖像亮度,導(dǎo)致圖像丟失細(xì)節(jié)信息的缺點。圖7中紅框區(qū)域去霧后只有花紅色特征,樹枝、樹葉紋理特征丟失。
圖5 自然有霧圖像Girls結(jié)果對比Fig.5 Comparison of dehazing results of natural images of Girls
圖6 自然有霧圖像Pumpkin結(jié)果對比Fig.6 Comparison of dehazing results of natural images of Pumpkin
圖7 自然有霧圖像Tian An Men結(jié)果對比Fig.7 Comparison of dehazing results of natural images of Tian An Men
實驗選取平均梯度(Average gradient)、信息熵(Information Entropy)作為測試指標(biāo),以進一步客觀地比較不同方法應(yīng)用于自然有霧圖像的去霧效果。平均梯度用于衡量圖像清晰度,梯度值越大則表明去霧圖像保留了更多的細(xì)節(jié)特征;信息熵描述了圖像信息量的大小,其值越大說明圖像去霧后包含信息量越多。如圖8柱狀圖所示,本文算法所測無霧圖像的平均梯度值相較于其他方法均有優(yōu)勢,尤其在自然有霧圖像Pumpkin場景下更突出;而各方法去霧圖像的信息熵值趨于一致,本文所提方法略微占優(yōu)。結(jié)果表明,本文模型在保持去霧圖像信息完整性的基礎(chǔ)上,增強了對圖像細(xì)節(jié)處理的能力,有效地保留原始圖像豐富飽和的顏色信息,達(dá)到良好的視覺效果。
(a)平均梯度 (a)Average gradient
(b)信息熵 (b)Information entropy圖8 自然有霧圖像的實驗結(jié)果Fig.8 Results of natural foggy images
為驗證深層與淺層特征信息的融合分支對本文算法性能的影響,以融合操作內(nèi)部多層卷積層為變量進行消融對比實驗。對比網(wǎng)絡(luò)模型結(jié)構(gòu)如圖9,其消去了原先網(wǎng)絡(luò)中深層與淺層信息融合的分支,其余網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)保持不變。表3給出了對比模型與本文模型對自然有霧圖像分別去霧后測得的圖像信息熵值。
表3 消融實驗信息熵對比Tab.3 Comparison of information entropy in ablation experiments
由表(3)可知,本文模型測得的去霧圖像信息熵均優(yōu)于對比模型,表明在網(wǎng)絡(luò)中添加深層與淺層特征的融合分支,可以增強網(wǎng)絡(luò)保持圖像信息完整性的能力,便于后續(xù)卷積層對圖像細(xì)節(jié)信息的深度特征提取。
圖9 對比網(wǎng)絡(luò)模型圖Fig.9 Comparison of network model
針對目前大多數(shù)去霧算法存在去霧不徹底和顏色變暗等問題,本文提出了一種基于多尺度融合卷積神經(jīng)網(wǎng)路的圖像去霧算法。網(wǎng)絡(luò)模型設(shè)計多尺度卷積層對有霧圖像進行深度特征學(xué)習(xí),并結(jié)合深層與淺層信息融合分支,初步預(yù)測有霧圖像的粗透射率圖,然后使用雙邊濾波法優(yōu)化透射率圖,根據(jù)大氣散射公式計算最終無霧圖像。本文算法在有霧圖像RESIDE數(shù)據(jù)集上測得的客觀實驗數(shù)據(jù)優(yōu)于其他算法,其中合成有霧圖像樣本中PSNR和SSIM能分別達(dá)到29.238和0.950,而在自然有霧圖像實驗中去霧圖像在保留圖像信息完整的基礎(chǔ)上,能更好地處理細(xì)節(jié)特征。所提方法去霧后的圖像有豐富飽和的顏色,主觀上具有良好的視覺效果,與文中其他方法相比具有優(yōu)勢。