齊永鋒,李占華
(西北師范大學 計算機科學與工程學院,甘肅 蘭州730070)
霧霾中的懸浮顆粒具有散射和吸收的作用,使得室外圖像呈現(xiàn)出較低的對比度和有限的可見性,從而導致在霧霾天采集到的圖像質量較低,限制了圖像在智能識別、目標監(jiān)控、目標追蹤等方面的應用。為使計算機系統(tǒng)能更好地識別和提取相關的圖像特征,去霧霾技術成為計算機視覺領域的研究熱點[1-5]。
目前圖像去霧霾的方法大致分為兩種:基于自適應對比度增強的方法[6-7]和基于透射率估計的方法[8-13]。前一種方法又分為全局增強的方法和局部化增強的方法,其中全局化增強的方法包括全局直方圖均衡化[14]、Retinex[15]等。而局部化增強的方法包括局部直方圖均衡化[16]、局部對比度增強方法[17]等。自適應對比度增強的方法雖然可以排除圖像中的部分干擾信息,但未對霧霾天圖像的成像原理進行分析,只是通過增強對比度去除霧霾,因而對霧霾嚴重的區(qū)域無法特殊處理。透射率估計的方法依據(jù)大氣散射模型,從光學成像的本質上去除霧霾,通過圖像退化基理和先驗知識恢復無霧霾圖像,去霧霾效果較好,因而得到了廣泛的研究和應用。根據(jù)圖像先驗知識估計大氣透射率,例如暗通道先驗(dark channel prior,DCP)方法[8],利用先驗知識初步估計大氣透射率,再用軟摳圖細化透射率,最終根據(jù)大氣光物理散射模型恢復無霧霾的圖像。該方法假設在清晰圖像中的暗通道值接近于零,然而當場景中的物體與大氣光相似時該假設并不成立,同時由于軟摳圖計算復雜,因此該算法復雜度高、耗時大。
基于大氣散射模型的方法由于估計透射率成本較高,Tang等人[18]將機器學習算法應用到去霧霾算法中,以各種先驗特征為輸入,通過隨機森林模型估計透射率,從而降低透射率的估計成本,但該方法對霧度分布不均勻的圖像去霧霾效果并不是很理想,且存在明亮區(qū)域內(nèi)去除霧霾時顏色被過度增強的問題。Meng等人[19]應用透射函數(shù)固有的邊界約束,將該約束與加權L1范數(shù)的上下文正則化相結合,估計圖像的透射率,該方法往往產(chǎn)生銳利的邊緣和高度對比的顏色。Cai等人[20]以卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNN)架構為基礎,提出可訓練的端到端系統(tǒng)進行透射率的估計,根據(jù)大氣散射模型從清晰圖像生成霧霾圖像的數(shù)據(jù)庫,該方法通過大氣散射模型的逆運算計算清晰圖像,去霧霾效果會受到模型其它參數(shù)的影響。
Ren等人[21]提出了多尺度卷積神經(jīng)網(wǎng)絡(multi-scale convolutional neural network,MSCNN)估計大氣透射率,該方法在真實霧霾圖像中的主觀評估結果較好,但合成室內(nèi)圖像的峰值信噪比(peak signal to noise ratio,PSNR)和結構相似性(structural similarity index,SSIM)結果較低,其在場景識別中對天空、白云和明亮區(qū)域的識別性能也較低。針對以上算法的不足,本文提出了一種新的改進算法。在多尺度卷積神經(jīng)網(wǎng)絡模型中將粗尺度網(wǎng)絡估計的透射率的輸出作為附加特征圖傳遞到精細尺度網(wǎng)絡后,通過分類統(tǒng)計的方式確定明亮區(qū)域的像素值,該統(tǒng)計方法實現(xiàn)了像素的運算,不僅減弱了陰影的影響而且避免了明亮區(qū)域被過度增強的現(xiàn)象,并進一步采用高斯濾波器提高圖像質量,通過平滑所求的場景輻射度得到最終無霧霾圖像。
圖像去霧霾算法中廣泛使用的退化模型是McCartney等人[22]提出的大氣散射模型,其表達如式(1)所示:
式中:I(x)和J(x)分別表示為觀察到的霧霾圖像和無霧霾圖像的場景輻射度;A表示全球大氣光;t(x)是場景的透射率,即光線透過媒介透射到視覺系統(tǒng)沒有被散射的部分,t(x)表示為:
式中:β是大氣中的介質消光系數(shù);d(x)是場景深度。由于給定的霧霾圖像存在多種解決方案,顯然這個問題是病態(tài)的。若能直接得到圖像大氣透射率t(x)和全球大氣光A,那么在霧霾圖像已知的情況下,根據(jù)式(1)恢復原始無霧霾圖像。為獲得大氣透射率t(x),本文結合多尺度卷積神經(jīng)網(wǎng)絡和分類統(tǒng)計的方法估計大氣透射率t(x),先用多尺度卷積神經(jīng)網(wǎng)絡進行t(x)值的初步計算,再對所計算的t(x)值進行分類統(tǒng)計。
為實現(xiàn)圖像透射率t(x)的初步估計,采用了多尺度卷積神經(jīng)網(wǎng)絡模型[23],該模型分為2部分:粗尺度網(wǎng)絡和精細尺度網(wǎng)絡。
多尺度卷積神經(jīng)網(wǎng)絡模型如圖1所示。一個粗尺度的網(wǎng)絡首先對透射率進行整體的估計,然后通過一個精細的網(wǎng)絡在局部區(qū)域內(nèi)對其進行修改。這兩個組成部分都運用原始霧霾圖像作為輸入。此外,粗尺度網(wǎng)絡的輸出作為附加特征圖傳遞到精細尺度網(wǎng)絡,通過這種方式,精細尺度網(wǎng)絡能夠細化粗尺度網(wǎng)絡。
1.2.1 粗尺度網(wǎng)絡
粗尺度網(wǎng)絡的目標是用場景的全局視圖預測圖像的整體透射率,粗尺度網(wǎng)絡由4部分組成:卷積,最大池化,上采樣,線性組合。
卷積:該模型將RGB圖像作為輸入,卷積層由與輸入特征圖卷積的濾波器組組成,每個卷積層表示為:
式中:fml和fnl+1分別表示為當前層l的特征圖到下一層l+1的特征圖;k表示卷積核,索引(m,n)表示從當前層第m個特征映射到下一層第n個特征的映射;*表示卷積;函數(shù)σ(·)表示濾波器上的修正線性單元,所有隱藏層都使用修正線性單元進行激活;b表示的是偏置單元。
最大池化:在每個卷積層之后使用降采樣因子為2的最大池化層,保留了更多的紋理信息。
上采樣:在卷積中由于輸入霧霾圖像與輸出透射率的大小是一樣的,而特征圖的大小在最大池化層之后將會減小。因此,在最大池化層后增加了一個上采樣層[24],以確保輸入霧霾圖像和輸出透射率的大小相等。上采樣層緊隨池化層之后將恢復子采樣特征的大小,同時保持網(wǎng)絡的非線性。每個上采樣層被定義為:
該函數(shù)將位置(x,y)處的像素值從最大池化特征復制到緊隨其后的上采樣層中大小為2×2的塊上,因為上采樣層中的每個塊由同樣大小的值組成,這個層的反向傳播規(guī)則就是反向的平均池化層,其尺度因子為2。每個上采樣層中2×2的塊函數(shù)被定義為:
線性組合:在粗尺度卷積網(wǎng)絡中輸出層通過線性組合[23]將來自最后一個卷積塊的特征通道組合在一起。然后用sigmoid激活函數(shù)產(chǎn)生最終輸出。sigmoid函數(shù)表示為:
用sigmoid激活函數(shù)產(chǎn)生最終的輸出:
式中:tc在粗尺度網(wǎng)絡中表示場景透射率的輸出;n是特征映射通道的索引;s(·)是sigmoid激活函數(shù);fnp表示輸出透射率前的倒數(shù)第二個特征映射;ω和b分別是線性組合的權重和偏置單元。
1.2.2 局部精細網(wǎng)絡
考慮了整個圖像預測粗場景透射率之后,用一個精細的網(wǎng)絡進行細化,除了第一和第二個卷積層之外,精細尺度網(wǎng)絡堆棧的架構與粗尺度網(wǎng)絡相似。精細尺度網(wǎng)絡的結構如圖1的下半部分所示,粗輸出透射率用作附加特征圖。根據(jù)設計,粗尺度預測的大小與第一個上采樣層的輸出大小相同,將這兩者連接在一起,并使用預測的粗透射率與精細尺度網(wǎng)絡中的學習特征圖相結合來重新修正透射率。
為進一步確定天空、白云和明亮區(qū)域等特定區(qū)域內(nèi)的像素值,對多尺度網(wǎng)絡估計的透射率t(x)進行分類統(tǒng)計。
在估計大氣透射率t(x)后,為了準確地分類統(tǒng)計確定天空、白云和明亮區(qū)域的像素值,在此用了Huang等人[25]分類統(tǒng)計的方法,該方法表明天空、白云和明亮區(qū)域的暗通道先驗值幾乎都必須大于160像素。
根據(jù)公式(8)精確估計特定區(qū)域內(nèi)霧霾圖像的大氣透射率t(x):
式中:ω取值為0.75。
圖1 多尺度卷積神經(jīng)網(wǎng)絡模型Fig.1 Model diagram of multi-scale convolution neural network
為了恢復清晰的圖像除了需要估計透射率t(x)外還需要估計大氣光A,由(1)式可知,當t(x)→0時I(x)=A。由于在室外圖像中出現(xiàn)的物體可能遠離觀察者,所以深度d(x)的范圍為[0,+∞),并且當d(x)→∞時有t(x)=0。因此在透射率t(x)中通過選擇0.1%暗像素來估計大氣光A。現(xiàn)已得到圖像大氣透射率t(x)和全球大氣光A,那么在霧霾圖像已知的情況下,根據(jù)式(1)恢復原始無霧霾圖像,得到無霧霾圖像場景的輻射度J(x)。
在估計t(x)和A后,用式(1)恢復無霧霾圖像,為了避免更多噪聲的影響,對t設置一個下限t0為0.1,這樣處理后圖像較自然,因此最終的無霧霾圖像場景的輻射度為:
得到無霧圖像場景的輻射度J(x)后,然后采用高斯濾波器進行平滑處理。
利用低通高斯濾波器平滑上述得到的無霧霾圖像場景的輻射度,精化輻射輪廓V(x)表示為:
式中:Wg是以像素x為中心的鄰域區(qū)塊的整體權重。
式中:G是高斯函數(shù),并且參數(shù)σ表示用于平滑像素的區(qū)域的大小,高斯傳播的標準偏差確定為標量或正值的3分量矢量。根據(jù)低通高斯濾波器精化場景輻射度,使靠近聚焦像素x的像素將獲得相當大的權重。
圖像去霧霾算法流程如下所示:
輸入:霧霾圖像I(x)
輸出:無霧霾圖像場景的輻射度J(x)
Step 1:用11×11×5的三維卷積核對原始輸入層進行卷積,通過最大池化和上采樣實現(xiàn)色差、紋理和對比度特征的提取,輸出霧霾圖像的整體透射率t(x)。
Step 2:將Step 1的輸出作為附加特征圖傳遞給精細網(wǎng)絡進行細化,估計透射率t(x)。
Step 3:分類統(tǒng)計特定區(qū)域內(nèi)霧霾圖像的大氣透射率t(x)。
Step 4:估計全球大氣光A。
Step 5:根據(jù)式(1)得無霧霾圖像的場景輻射度J(x)=[I(x)-A]/max[t(x),0.1]+A。
Step 6:用高斯濾波器平滑Step 5所得的結果J(x)。
訓練集:通常情況下不可能捕捉到同樣視覺場景下有霧霾和無霧霾而其它所有環(huán)境條件都相同的的圖像。所以只能用無霧霾圖像合成霧霾圖像得到訓練集。用公開的indoor training set(ITS)和outdoor training set(OTS)[26]數(shù)據(jù)集,ITS室內(nèi)合成訓練集中包含110000張圖片,OTS室外合成訓練集中包含313950張圖片。為了控制訓練的數(shù)據(jù)量同時保證訓練模型的泛化能力,本文分別從ITS和OTS中選取1100張和3100張圖片組成混合訓練集。為了適應多尺度網(wǎng)絡模型的尺度,所有的訓練圖像都被調整為320×240像素的標準尺寸。
測試集:為了驗證本文模型的實際性能表現(xiàn),從synthetic objective testing set(SOTS)和hybrid subjective testing set(HSTS)數(shù)據(jù)集[26]的50幅圖像生成霧天圖像測試集。利用峰值信噪比和結構相似性作為評價結果的量化標準。
實驗中粗尺度網(wǎng)絡和精細網(wǎng)絡均由3個卷積層構成,在粗尺度網(wǎng)絡中前兩層分別用了5個大小為11×11和9×9的卷積層,最后一層是由大小為7×7的10個濾波器組成。在精細網(wǎng)絡中,第一個卷積層是由大小為7×7的4個濾波器組成,最后兩層分別由大小為5×5的5個濾波器和3×3的10個濾波器組成,粗尺度網(wǎng)絡和精細尺度網(wǎng)絡都是用具有0.9動量的隨機梯度下降法訓練,實驗使用了100幅圖像(320×240個像素)的批量大小,初始學習速率設置為0.001,每迭代20次初始學習速率為原來的0.1倍,迭代次數(shù)設置為70次。如圖2(a)第一、第二和第三個尺度網(wǎng)絡之間的比較表示更大規(guī)模的網(wǎng)絡不會帶來更好的效果。圖2(b)更多層的CNN和提出的多尺度CNN之間的比較表示多尺度CNN訓練效果比多層的CNN好。
為了更加客觀地評價方法的有效性,首先在合成數(shù)據(jù)集上定量評估所提出的透射率估計性能的方法。利用峰值信噪比和結構相似性將所提出的算法與其他的去霧霾方法[8,13,21]進行了比較。表1給出了本文的方法和其他方法的比較結果。
為了直觀驗證提出的方法去霧霾的有效性,分別在室內(nèi)合成圖像和室外真實圖像上對所提方法和目前常用的去霧霾方法進行直觀效果分析對比。首先用室內(nèi)合成的霧霾圖像比較各算法的去霧霾效果。如圖3所示,DSPP[13]的算法能夠增加圖像細節(jié)并增強圖像的可見性。但是,恢復的圖像中仍有顏色扭曲,如第2幅圖像的桌面部分。而DCP[8]的方法高估了霧的厚度并產(chǎn)生較暗的結果,如第3幅圖的桌面部分和第4幅圖的地面部分。MSCNN[21]的方法總體去霧霾效果較好,但會顯著增強圖像明亮區(qū)域。相比之下,圖3(f)的去霧霾效果基本接近于真實無霧圖像,這表明本文的方法去霧霾效果較好。圖4中DSPP[13]提出的方法存在圖像丟失細節(jié)、過度
其次比較各算法在室外真實霧霾場景中的效果。增強圖像明亮區(qū)域的問題。如第1、2幅圖的白云部分。此外,第3幅中也增強了藍天、白云的亮度。DCP[8]去霧霾效果較好,但顏色仍然比實際情況更暗。相比之下,MSCNN[21]的方法和本文所提出的方法在真實霧霾場景中關于天空、白云和明亮區(qū)域的主觀評估結果差異不大,因而本文將在3.3節(jié)用場景的識別做進一步對比分析。
在3.2節(jié)室外真實霧霾場景直觀效果分析中MSCNN算法和本文算法直觀效果難以區(qū)分。為了進一步證明本文提出的算法去霧霾結果在場景識別中的性能,用GoogleVisionAPI(https://cloud.google.com/vision)測試真實霧霾圖像增強之后是否提高場景識別能力。對比MSCNN和本文算法在場景識別性能上的表現(xiàn),結果如圖5所示??梢钥闯?,本文算法在霧霾圖像增強之后的場景識別中比MSCN N算法識別效果更好,尤其是在天空、白云和明亮區(qū)域表現(xiàn)更佳。如圖5GoogleVision API識別結果示例中顯示,本文方法在霧霾圖像增強之后會增加主要對象檢測的分數(shù)。如(c)中天空和白云的分數(shù)較(a)和(b)都有較大提升。
圖2 各尺度網(wǎng)絡以及多層網(wǎng)絡之間的比較Fig.2 Comparis ons between sc ale networksa nd multi-layer networks
表1 合成數(shù)據(jù)集的平均PSNR 和SSIMTable 1 Average PSNR and SSIMof thesy nthesized data set
圖3 室內(nèi)合成成圖像去霧霾結結果對比Fig.3 Comparrisons of indoorr synthetic imagges dehazy resuults
圖4 真真實圖像去霧霾霾結果對比Fig.4 Commparisons of reaal image dehazyy results
圖5 MSCNN算法和本文算法識別結果對比Fig.5 Comparisonsbetween MSCNNalgorithm and the recognition result of the algorithm
本文結合多尺度卷積神經(jīng)網(wǎng)絡和分類統(tǒng)計的方法改善原有算法在透射率計算上的問題,通過調整算法中參數(shù)并且給出相應參數(shù)的合適范圍,確保最終的去霧霾效果。通過定量和直觀效果分析的結果對比,本文算法能夠有效地解決特定區(qū)域內(nèi)顏色失真、顏色扭曲及過度增強等問題,且在合成的霧霾圖像和真實的霧霾圖像中都有較好的效果。在接下來的研究中,如何提高去霧霾圖像的分辨率將是一個重點,以期進一步提高去霧霾圖像的分辨率。