喬 丹, 張 闖,2*, 朱晨雨
(1. 南京信息工程大學 電子與信息工程學院,江蘇 南京 210044;2. 江蘇省氣象探測與信息處理重點實驗室,江蘇 南京 210044)
在霧天場景下,大氣中懸浮較多水滴。光在傳輸過程中遇到雜質被吸收和散射,導致拍攝圖像輪廓模糊,圖像清晰度以及色彩飽和度下降。這不僅對人類主觀感受產生消極影響,而且不利于目標分辨和捕獲細節信息,降低圖像的應用價值。因此,圖像去霧技術成為計算機視覺的重要研究之一[1]。
目前,傳統圖像去霧方法主要分為兩類,第一類是基于非物理模型去霧算法,其主要包括直方圖均衡化[2]、基于視網膜大腦皮層(Retinex)理論[3]、同態濾波法[4]等去霧算法,此類方法主要是提高有霧圖像對比度及清晰度,而未分析霧氣形成原理以及光學成像本質,不能從根本上實現去霧。第二類是基于大氣散射模型[5]去霧算法,該方法主要研究成霧原因以及圖像降質的客觀原理,依據大氣散射模型構建數學公式,復原出無霧圖像。Tan等人[6]采用最大局部對比度的方法實現去霧,由于清晰化后圖像比霧天圖像的對比度高,在邊緣檢測時可檢測到更多邊緣信息的先驗知識。Fattal[7]提出基于獨立分量分析(ICA)的彩色圖像去霧算法,并假設表面陰影與傳輸函數統計無關,根據這一前提對大氣散射模型進行運算分析。He等人[8-9]提出暗通道去霧算法(DCP),該方法依據有霧圖像存在一個通道像素值低的先驗知識求解大氣散射模型。Shao[10]改進暗通道去霧算法,將有霧圖像分為近景和遠景兩個區域,依據灰度值不同分段映射,去霧后圖像清晰度提高。Zhang等人[11]提出結合顏色線和暗通道去霧算法,通過計算可信度權重加權顏色線先驗和暗通道先驗求得透過率圖。但基于暗通道去霧算法存在去霧效率低、去霧后圖像偏暗的問題。Meng等人[12]研究出正則化去霧(BCCR),對透射率圖邊界約束,該方法存在去霧后圖像失真、曝光等問題。盡管這類傳統方法去霧效果相對較好,但需人工提取有霧特征且大部分依賴先驗知識,仍有局限性。
近年來,深度學習理論應用到圖像去霧領域,部分學者提出了基于卷積神經網絡的去霧算法。Cai等人[13]提出DehazeNet方法,使用多尺度卷積神經網絡和MaxPooling估計透射率圖,反演出無霧圖像。該方法沒有融合深層淺層信息,存在提取有霧圖像特征較少的問題,易出現顏色失真、去霧不徹底的現象。Li[14]提出AOD-Net去霧模型,將大氣光照值和光透射率假設為一個參數,減少單個參數累計造成的誤差。Ren等人[15]提出MSCNN方法,首先利用粗尺度網絡估計場景透射率圖,然后由精細尺度網絡細化。但是,該方法對夜晚霧情況處理較差。陳清江等人[16]提出基于卷積神經網絡去霧算法,采用多尺度操作提取有霧圖像信息。上述去霧算法使用卷積神經網絡自動提取圖像特征,提高去霧效率,但訓練模型局限于淺層結構,沒有深度學習有霧圖像,存在特征提取疏漏等問題;且所得透射率圖部分存在斑塊,影響復原圖像的質量,導致圖像去霧不徹底。
為解決去霧后圖像顏色偏暗以及去霧不徹底等問題,本文提出了一種基于多尺度融合卷積神經網絡(Convolutional Neural Network, CNN)的去霧網絡模型。該網絡多次采用特征融合操作,自動學習有霧圖像深層特征信息,并初步提取出有霧圖像透射率圖;然后由雙邊濾波優化透射率圖,在保留輪廓信息的基礎上有效除去噪聲;最后依據大氣散射模型公式復原出無霧圖像。由實驗結果可知,與其他方法相比,本文方法得到的去霧圖像顏色清晰自然,視覺效果較好。
Narasimhan和Nayar[17-18]通過建立數學模型,解釋了霧天圖像包含要素以及成像過程。該模型認為霧天成像質量下降的原因主要包括兩方面:一是由于大氣中懸浮粒子對目標反射光吸收和散射的影響致使其能量衰減,最終降低成像亮度;二是太陽光等環境光受大氣介質的散射作用形成背景光,其強度過大,影響成像清晰度,造成圖像色彩不自然。根據以上原因,將大氣散射模型定義為:
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)
式中:β表示大氣的散射系數,d(x,y)表示物體與成像設備間的距離。
由上述可知,圖像去霧是先從有霧圖像中估算透射率圖和大氣光值,然后根據大氣散射模型求解無霧圖像的過程。因此,在I(x,y)已知的前提下,求得t(x,y)和A是復原無霧圖像的關鍵。
依據大氣散射模型復原無霧圖像,其主要目標是求解透射率圖以及大氣光值。傳統暗通道去霧算法,依據有霧圖像中至少存在一個通道像素值低的假設實現去霧。而當像素點的值接近大氣光值時,去霧的圖像出現局部的顏色偏暗效應。為避免這一缺點,本文設計了一種基于多尺度融合CNN的圖像去霧算法。該算法首先搭建了多尺度融合去霧網絡 (Multi-scale Concat Dehaze Network, MCDN),初步預測透射率圖,然后經過圖像優化模塊,由雙邊濾波對粗透射率圖優化得到細透射率圖;根據所得透射率圖和有霧圖像求解大氣光值A;最后結合大氣散射模型還原出無霧圖象。具體算法框架如圖1所示。

圖1 算法框架圖Fig.1 Algorithm framework
有霧圖像細節信息保留的完整程度影響著復原后無霧圖像的質量,卷積網絡層數過淺會導致提取有霧圖像信息不足,致使去霧不徹底。所以本文網絡模型多次引入特征融合操作,連接具有相同尺寸的卷積層,實現信息融合。MCDN是一個端到端的網絡預測模型,直接學習有霧圖像和透射率之間的映射關系,網絡結構如圖2所示。模型設計主要包括以下步驟:(1)搭建預處理模塊,提取有霧圖像的淺層特征;(2)設計多尺度卷積層實現特征提取與融合,并在淺層與深層間搭建信息融合分支;(3)應用反卷積模塊恢復圖像原始尺寸,輸出粗透射率圖。

圖2 MCDN網絡結構Fig.2 MCDN network structure
3.1.1 圖像預處理模塊
以有霧圖像作為卷積神經網絡的輸入,首先連續采用3個卷積核大小為3×3的卷積層,對原始圖像進行預處理。每層卷積核之間通過局部連接、權值共享的方式與輸入圖像進行運算,以實現有霧圖像淺層特征提取,卷積層的輸出為:
Fs(Y)=PRelu[Ws*Fs-1(Y)+Bs],
(3)
式中:Fs表示第s層特征圖,Ws表示第s層卷積核,Fs-1表示第s-1層輸出的特征圖,*表示卷積,Bs表示第s層的偏置。激活函數采用改進的帶參數修正線性單元(PRelu)。PRelu在負數區間有斜率,在Relu的基礎上增加參數,可以加快網絡的收斂速度,避免梯度彌散。其表達式為:
XPRelu=max(xi,0)+bimin(0,xi),
(4)
式中:xi表示第i層正區間的輸入信號,bi表示第i層負區間的系數。
3.1.2 多尺度映射模塊
多尺度映射模塊主要分為兩部分:多尺度特征提取、深層淺層信息融合。預處理模塊提取圖像淺層信息,而霧天圖像恢復通常還依賴不同尺度的紋理信息,因此MCDN模型對預處理后圖像分別進行卷積核大小為3×3、5×5、7×7 的多尺度卷積運算,多尺度濾波器之間是平行關系,每一層都輸出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層的偏置。網絡采用最大池化采樣,簡化網絡復雜度。每個卷積層后使用BN歸一化處理,防止網絡過擬合,加速網絡收斂。
由于有霧圖像既包含廣泛的輪廓信息同時也含有小的紋理特征信息,因此為進一步提取深層細節特征,本文多次采用特征融合(Concat)的方法。為減小參數量,對經過3×3,5×5,7×7 卷積層后的特征圖分別進行最大池化采樣。隨后對其特征融合,增加網絡容量,提高捕獲圖像內部信息的魯棒性和有效性,有助于梯度反向傳播。而后再次使用多尺度3×3,5×5,7×7 卷積核進行卷積操作,對其所得特征圖進行Concat操作,獲得更深層次的有霧圖像感受野的信息,同時減少特征冗余,保證了圖像細節信息的有效傳遞。最后,在淺層和深層網絡間搭建特征融合分支,匯聚不同等級圖像信息, 為滿足融合圖像間尺寸需求,引入了空間金字塔池化網絡Spatial Pyramid Pooling Net(SPP-Net)固定圖像大小。該分支可以提高計算精度,保留完整的特征信息透射率圖。經多尺度融合所得特征圖既包含淺層特征,也保留了更多細節信息,避免信息丟失導致去霧不徹底。多尺度卷積參數如表1所示,MCDN模型中卷積層采用零填充方式,保持圖像尺寸不變。每一層激活函數使用PRelu。

表1 多尺度卷積參數Tab.1 Multi-scale convolution paramenters
3.1.3 反卷積模塊
反卷積層(Deconvolution)在本文網絡模型相當于上采樣,增加圖像的空間維度。該過程可以表示為:
Pi(Y)=σ[Wi*PI-1(Y)]+Bi,
(6)
式中:Pi(Y)表示第i層反卷積的輸出,Wi表示第i層反卷積層的權重參數,Pi-1(Y)表示第i-1卷積層的輸出特征圖,Bi表示第i層偏置項。本文將反卷積核的尺寸設定為2×2,步長取1,padding設定為SAME的填充模式,將池化操作后的特征圖還原成輸入圖像大小。網絡模型最后一層采用3通道,卷積核大小為1×1的卷積層,輸出粗透射率圖。
粗透射率圖存在較多斑塊,去霧效果不徹底。針對此問題,本文采用雙邊濾波法優化粗透射率圖。雙邊濾波法是一種非線性保邊濾波方法,通過將圖像空間鄰近度和像素值相似度結合處理,同時考慮空域信息和灰度相似性,達到保邊去噪的目的。
首先根據空域半徑對圖像平面高斯濾波,依據值域濾波半徑對圖像值域高斯濾波。然后以空域和值域高斯濾波得到的結果乘積作為雙邊濾波加權因子,根據雙邊濾波器的模型實現透射率圖的細化,得到最終的透射率圖。
其中,雙邊濾波器的模型定義為:
(7)
式中:f(k,l)表示圖像中心點(k,l)的像素值,g(i,j)表示圖像中點(i,j) 的像素,ω(i,j,k,l)表示權值系數,可定義為:

(8)
式中:σd表示空域濾波半徑,σr表示值域濾波半徑。
文中σd、σr分別選取為6和23。如圖3所示,對粗透射率圖進行雙邊濾波后圖像斑點明顯減少,優化后的細透射率圖中物體輪廓更加清晰、平滑。

圖3 粗細透射率圖對比Fig.3 Comparison of coarse and fine transmittance images
本文網絡模型學習有霧圖像和透射率圖的映射關系,訓練過程中以均方誤差作為損失函數,計算有霧圖像真實透射率圖和網絡預測透射率圖之間的誤差,即:
(9)
式中:xi表示第i組有霧圖像,yi表示第i組真實透射率圖,f(xi)表示第i組輸出值,i=1,2…,N表示訓練樣本數目。
網絡訓練時使用隨機梯度下降和反向傳播算法最小化損失函數。其中初始學習率設置為0.001,每迭代15輪學習率衰減一次,衰減率為0.97,動量取0.9。同時為了避免網絡發生過擬合現象,在訓練時采用Dropout方法,以50%的概率隨機丟棄神經元。
式(1)變形可得:
(10)
根據式(10),無霧圖像的求解還需計算A值。由式(2)可知,圖像中場景深度趨于無窮遠時,有t(x)=0;而當t(x)→0時,A=I(x)。這表明當透射率圖像素值很低時,A為有霧圖像對應位置像素值。因此,在透射率圖t(x)中選擇前0.1%的低像素值,并且在I(x)中尋找其對應位置處的最高像素值可以作為大氣光值A。已知傳播率圖t(x)和大氣光值A,無霧圖像J(x)可以通過公式(11)得到:
(11)
式中,t0是透射率圖中前0.1%低像素值的臨界點。當透射率圖t(x)很小時,會使無霧圖像J(x)的值偏大,導致圖像向白場過度,所以設置t0為透射率圖的下限。
為了衡量本文算法的性能,從合成有霧圖像和真實有霧圖像兩方面分析,分別與傳統去霧方法[8-9,12]以及深度學習去霧方法[13,15]做比較。實驗中選取Python編程語言,應用Tensorflow深度學習框架搭建網絡實現數據集訓練與測試。
本文選取了有霧圖像RESIDE數據集[19]作為實驗樣本,完成MCDN網絡訓練與測試。RESIDE數據集包含72 135張合成有霧圖像,實驗過程中選取70%的數據作為訓練集,30%的數據作為測試集,并設置大氣散射系數β在[0.6,1.6]區間。
本文算法對RESIDE數據集合成有霧圖像進行實驗,并分別與DCP[8-9]、BCCR[12]、DehazeNet[13]、MSCNN[15]算法比較,所得結果如圖4所示。DCP[8-9]算法能有效去霧,但去霧后圖像整體顏色偏暗。BCCR[12]算法亮度相比DCP[8-9]算法有所優化,但與無霧圖像相比局部區域出現了顏色失真,如圖4(d)Hovel中桌子顏色去霧后由深色變為淺灰色。DehazeNet[13]算法相比兩種傳統去霧算法效果明顯優化,但存在去霧不徹底的現象,如圖4(e)Meeting room去霧后照片仍存在大量的霧。MSCNN[15]算法視覺效果較好,但是對圖像的細節紋理信息處理不夠精確,如圖4(f)Bedroom 床面去霧后有顆粒感,不光滑。本文算法相比其他方法去霧徹底,圖像清晰,邊緣細節保留完整,去霧效果真實自然。

圖4 合成有霧圖像結果對比。(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)以及結構相似性(SSIM)作為實驗評價指標。PSNR是評價圖像質量的客觀標準,其值越大表明圖像去霧后圖像效果越好。SSIM主要描述圖像相似度,由亮度、對比度、結構3種對比模塊組成,其值越大表明去霧圖像與真實圖像越接近。表2列出了各方法在合成有霧圖像實驗中的指標結果,由表可知所提算法PSNR和SSIM值均取得最優值,分別達到了29.238和0.950。這表明本文模型能較好地保持去霧圖像信息完整性,與真實無霧圖像更接近,相較于其他算法具有優勢。

表2 合成有霧圖像的實驗結果Tab.2 Results of synthetic foggy images

續 表
自然環境中霧分布呈現不均勻性,其去霧模型更復雜。為測試本文算法對自然有霧圖像的去霧效果,以3幅自然有霧圖像作為實驗樣本,去霧結果如圖5~7。圖6紅框中天空顏色去霧后由原始灰色變為暗青色,表明DCP[8-9]算法使天空區域亮度降低,且出現色彩突變現象。BCCR[12]算法在明亮區域出現顏色失真以及光暈問題,如圖5紅框中頭發處的局部曝光。DehazeNet[13]算法和MSCNN[15]算法使用卷積神經網絡復原無霧圖像,效果優于以上兩種算法,但是存在降低圖像亮度,導致圖像丟失細節信息的缺點。圖7中紅框區域去霧后只有花紅色特征,樹枝、樹葉紋理特征丟失。

圖5 自然有霧圖像Girls結果對比Fig.5 Comparison of dehazing results of natural images of Girls

圖6 自然有霧圖像Pumpkin結果對比Fig.6 Comparison of dehazing results of natural images of Pumpkin

圖7 自然有霧圖像Tian An Men結果對比Fig.7 Comparison of dehazing results of natural images of Tian An Men
實驗選取平均梯度(Average gradient)、信息熵(Information Entropy)作為測試指標,以進一步客觀地比較不同方法應用于自然有霧圖像的去霧效果。平均梯度用于衡量圖像清晰度,梯度值越大則表明去霧圖像保留了更多的細節特征;信息熵描述了圖像信息量的大小,其值越大說明圖像去霧后包含信息量越多。如圖8柱狀圖所示,本文算法所測無霧圖像的平均梯度值相較于其他方法均有優勢,尤其在自然有霧圖像Pumpkin場景下更突出;而各方法去霧圖像的信息熵值趨于一致,本文所提方法略微占優。結果表明,本文模型在保持去霧圖像信息完整性的基礎上,增強了對圖像細節處理的能力,有效地保留原始圖像豐富飽和的顏色信息,達到良好的視覺效果。

(a)平均梯度 (a)Average gradient

(b)信息熵 (b)Information entropy圖8 自然有霧圖像的實驗結果Fig.8 Results of natural foggy images
為驗證深層與淺層特征信息的融合分支對本文算法性能的影響,以融合操作內部多層卷積層為變量進行消融對比實驗。對比網絡模型結構如圖9,其消去了原先網絡中深層與淺層信息融合的分支,其余網絡結構參數保持不變。表3給出了對比模型與本文模型對自然有霧圖像分別去霧后測得的圖像信息熵值。

表3 消融實驗信息熵對比Tab.3 Comparison of information entropy in ablation experiments
由表(3)可知,本文模型測得的去霧圖像信息熵均優于對比模型,表明在網絡中添加深層與淺層特征的融合分支,可以增強網絡保持圖像信息完整性的能力,便于后續卷積層對圖像細節信息的深度特征提取。

圖9 對比網絡模型圖Fig.9 Comparison of network model
針對目前大多數去霧算法存在去霧不徹底和顏色變暗等問題,本文提出了一種基于多尺度融合卷積神經網路的圖像去霧算法。網絡模型設計多尺度卷積層對有霧圖像進行深度特征學習,并結合深層與淺層信息融合分支,初步預測有霧圖像的粗透射率圖,然后使用雙邊濾波法優化透射率圖,根據大氣散射公式計算最終無霧圖像。本文算法在有霧圖像RESIDE數據集上測得的客觀實驗數據優于其他算法,其中合成有霧圖像樣本中PSNR和SSIM能分別達到29.238和0.950,而在自然有霧圖像實驗中去霧圖像在保留圖像信息完整的基礎上,能更好地處理細節特征。所提方法去霧后的圖像有豐富飽和的顏色,主觀上具有良好的視覺效果,與文中其他方法相比具有優勢。