任 敏 敏
(武警工程大學 信息工程學院,西安 710086)
對于戶外機器視覺系統而言,霧是影響成像質量的重要因素.受大氣中懸浮顆粒對光線散射作用的影響,霧天條件下拍攝的戶外圖像往往會出現遠景目標能見度差、對比度低、顏色失真等質量退化問題,為后續的機器視覺任務,如目標的識別和跟蹤、交通監控、智能導航等,帶來障礙和挑戰.因此,有效地對霧天圖像實施去霧,是確保戶外機器視覺系統克服霧天成像影響,穩定工作的重要前提.
傳統的圖像去霧算法主要分為兩類:一類是圖像增強處理,另一類是基于大氣散射成像模型的去霧算法.圖像增強處理主要是通過增強圖像對比度,突出景物特征來實現去霧,如直方圖均衡化[1]、伽馬校正[2]、Retinex算法[3]、小波變換[4]等等.這類算法不研究霧天圖像成像的機理,僅利用增強算法進行圖像清晰化處理,對圖像中的濃霧區域,復原效果較差,細節信息易丟失.
而大氣散射成像模型的去霧算法多利用統計的先驗知識,估計模型中的物理量,如透射率,來實施去霧.如He等人[5]提出的暗通道先驗去霧算法.它發現清晰無霧的戶外圖像中,一個局部區域內總有像素在一個顏色通道中的灰度值趨近于零.利用此暗通道先驗可有效計算透射率.Fattal等人[6]利用圖像中局部鄰域內的像素值在RGB顏色空間呈一維線性分布特性來估計透射率.Berman等人[7]提出了非局部先驗去霧算法,它利用無霧圖像中顏色信息在空間坐標系下呈線性分布的霧線來預測透射率.雖然算法具有簡單高效的優勢,但當已有先驗無法準確描述復雜霧天場景圖像的透射率時,去霧結果會出現光暈,顏色失真等問題.為此,更多基于特征融合和結果優化的去霧算法相繼提出.如Li等人[8]通過融合暗通道,照明,色度,清晰度,顯著性等霧氣相關的特征實現去霧.Galdran等人[9]通過融合多個人工曝光的霧天圖像實施去霧.Zhao等人[10]融合基于像素和基于鄰域計算的透射率實現去霧.此外,多尺度優化策略也被采用來優化去霧結果.這類算法雖有效地提高了去霧性能,但融合策略中的權重是通過對大量圖像特征進行人工統計和評估獲取的,不僅耗時費力,還易出現誤差,若能采用機器學習的策略計算融合權重,將進一步提高算法的去霧性能.
目前,基于機器學習的神經網絡去霧算法被廣泛采用,它通過構建霧天圖像與清晰圖像之間的非線性模型,有效實現端到端的去霧[11].如Li等人[12]將透射率和大氣光強的關聯參數整合到神經網絡去霧模型中,構建一體化的去霧網絡All in One Dehazing Network(AOD-Net).陳永等人[13]利用多尺度卷積核并行提取霧天圖像的不同特征,構建了多尺度卷積神經網絡去霧模型Multi Scale Dehaze Network(MSDN).Zhang 等人[14]利用編碼解碼網絡,U 型網絡和生成對抗網絡聯合學習大氣散射物理成像模型中的透射率,大氣光強和清晰圖像,構建了稠密金字塔去霧模型Densely Connected Pyramid Network(DCPN).黃靖等人[15]將自編碼網絡與回歸模型相結合,提出了端到端的自編碼去霧網絡.然而,這類神經網絡的去霧算法仍存在以下兩點問題:其一,網絡多為黑盒模型,并未將傳統方法中行之有效的特征融合策略融入其中;其二,因受參數,網絡層數及內存空間的限制,網絡模型不能有效實施去霧結果由粗到細的優化.為此,本文將傳統去霧算法中的信息融合和結果優化策略與神經網絡算法相結合,提出了圖像融合的循環神經網絡去霧算法.該算法首先由初始霧天圖像衍生出白平衡圖像、對比度增強圖像、伽馬校正圖像作為融合算法所需的融合圖像;隨后,利用編碼解碼的神經網絡自動地學習和生成圖像融合時所需的融合權重,解決了傳統圖像融合去霧算法中融合權重估計耗時費力,存在偏差的問題;最后,在此網絡模型上進一步添加循環網絡結構,以便在不增加網絡層數和參數的前提下,有效地優化去霧結果.實驗結果表明,本文算法較已有算法的去霧精度提高了19%.
多圖像融合的循環神經網絡去霧算法流程圖見圖1.

圖1 網絡算法流程圖
Fig.1 Flow chart of network algorithm
各步驟的簡要說明如下:
2.1.1 融合圖像獲取
霧天圖像的降質主要體現在兩個方面:一是因大氣光所導致的色偏,二是因光線衰減而產生的低能見度.如果能從初始的霧圖中衍生出多張去除色偏,恢復能見度的圖像,則可利用圖像融合策略融合各圖像的去霧信息,高效地實現去霧.為此,我們采用白平衡算法去除色偏,利用圖像增強算法加強圖像整體的對比度.考慮到圖像增強的結果中仍會存在偏暗的區域,進一步采用伽馬校正來獲取增亮后的圖像,以彌補增強圖像的缺陷.隨后,將此三類衍生圖像聯合霧天圖像共同作為神經網絡模型的輸入,以便自動學習圖像融合的權重.
2.1.2 多圖像融合的循環網絡構建
已有文獻[14]表明,編碼解碼網絡能利用自底向上和自頂向下的路徑提取不同尺度下的層次化信息,有效地實現圖像去霧.為此,我們采用編碼解碼網絡作為多圖像融合去霧的框架.然而,此類前向傳遞的網絡結構難以在不添加網絡深度和網絡參數的前提下,實現去霧結果的優化.這里,我們不但將網絡的輸出作為網絡的輸入,更將LSTM循環單元嵌入編碼解碼網絡中,構建有效的循環神經網絡,使得去霧結果在循環優化過程中,共享網絡參數,節省網絡內存.
本文采用初始霧天圖像衍生出的白平衡圖像Iw,對比度增強圖像Ie,伽馬校正圖像Ig作為融合圖像.以霧天圖像圖2(a)為例,三幅衍生圖如圖2(b)-圖2(d)所示.

圖2 初始霧圖,白平衡圖,對比度增強圖和伽馬校正圖
2.2.1 白平衡圖像
白平衡圖像能恢復出有霧場景中潛在的色彩信息,消除大氣光引起的顏色偏移.這里采用灰度世界假設理論來獲取白平衡圖像[16].該假設認為自然界景物對于光線的平均反射均值在總體上是個“灰色”定值,即彩色圖像中RGB三個通道的平均值趨于灰色值K.當霧天圖像中投射的大氣光擾亂了原始圖像的灰色世界假設后,可利用灰度世界假設來修正霧圖,使其重新滿足此統計規律,消除色偏.具體來說,可利用可公式(1)來計算K值:
(1)

得到K值后,即可對霧圖I的像素進行校正:
(2)

雖然白平衡圖像去除大氣光所引起的色偏,但處理后的結果仍存在對比度低的問題,如圖2(b)所示.為此,引入了對比度增強圖像.
2.2.2 對比度增強圖像

(3)


2.2.3 伽馬校正圖像
伽馬校正圖像是利用非線性色調操作,對圖像中的亮度或三色激勵值進行編碼或解碼而得到的一種對比度增強圖像.計算方法如下:
Ig=αIγ
(4)
式中:α為常系數,γ為伽馬校正系數,本文分別設置為1和2.5.實驗表明,Ig能有效提高初始霧圖I的能見度,彌補增強圖像Ie易產生黑暗區域的缺陷,如圖2(c)中黑暗的地面區域在圖2(d)中得到了亮度的增強.隨后,將初始霧圖I與3幅衍生圖像串聯,共同作為網絡模型的輸入.
最近,編碼解碼的神經網絡已被證明能成功地應用于圖像去霧,它在編碼階段將初始霧圖轉換為空間尺寸逐漸減小,通道數逐漸增多的特征圖,而在隨后的解碼階段將特征圖逐步映射為與輸入圖像大小相同的清晰圖.模型雖能提取不同尺度下的層次化特征,但這種前向傳遞的網絡結構難以在不增加網絡參數和深度的前提下,實現去霧結果由粗到細的優化.為此,本文提出了循環編碼解碼的去霧網絡來解決此問題.
2.3.1 編碼解碼的去霧網絡構建
首先,我們構建一個基本的編碼解碼去霧網絡.選用1個卷積層(Conv及激活函數Relu)和文獻[17]中除去批歸一化處理的3個殘差模塊(Resblock)共同構成編碼模塊.從圖3中可見,編碼器選用了3個編碼模塊,.同時,解碼器對稱的選用了3個解碼模塊,每個解碼模塊包含3個殘差模塊(Resblock)和1個反卷積層(DeConv及激活函數Relu).由此,輸入圖像在經過每個編碼模塊時,特征空間大小縮小一半,通道數加倍,而在經過解碼模塊時,特征空間尺寸加倍,通道數目減半.此外,網絡還使用了跳躍連接,使編碼階段的特征能直接連接到解碼階段,加快網絡收斂.

圖3 基于編碼解碼的去霧網絡結構
網絡模型構建好后,在網絡的輸入端,可實施一個早期的融合,即將原始霧圖I與其衍生圖像(白平衡圖像Ib,對比度增強圖像Ie,伽馬校正圖像Ig)相串聯,共同構成網絡的輸入.因此,編碼器函數可表示如下:
m=Nete(I,Ib,Ie,Ig;θe)
(5)
式中:I,Ib,Ie,Ig為網絡的輸入;Nete是參數為θe的編碼器函數;m為編碼器輸出.
而解碼器輸出了三種衍生圖像對應的融合權重圖即白平衡權重圖wb,對比度增強權重圖we及伽馬校正權重圖wg,以便利用權重圖將Ib,Ie,Ig進一步融合,得到去霧圖像.故解碼器的函數可表示為:
wb,we,wg=Netd(m;θd)
(6)
式中:Netd是參數為θd的編碼器函數.
圖像融合后估計的無霧圖像J可由式(7)得到:
J=wb⊙Ib+we⊙Ie+wg⊙Ig
(7)
式中:⊙為元素的點乘操作,J為估計的清晰圖像.
2.3.2 循環編碼解碼的去霧網絡構建
為了使編碼解碼的去霧網絡在不加深網絡深度和參數的前提下,實現去霧結果由粗到細的優化,本文不但將上次循環時網絡的輸出作為下次循環時網絡的輸入,還創新性地在編碼解碼網絡中添加LSTM循環單元,使得上次循環時,LSTM提取的隱藏狀態能有效地傳遞到下次循環時LSTM單元中,從而充分利用中間層包含的豐富信息.這里將LSTM模塊插入到編碼器和解碼器中間的瓶頸處,以兩次網絡循環為例,改進后網絡模型如圖4.網絡的函數更新為:
mt=Nete(Jt-1,Ib,Ie,Ig;θe)
(8)
ht=RLSTM(ht-1,mt,θLSTM)
(9)
wbt,wet,wgt=Netd(ht;θd)
(10)
(11)
式中:RLSTM為參數θLSTM的LSTM函數.t為循環次數.從公式(8)可見,在t次循環時,t-1次循環時網絡的輸出Jt-1串聯衍生圖像Ib,Ie,Ig作為編碼器的輸入,輸出特征mt;隨后在公式(9),mt串聯t-1次循環時LSTM模塊輸出的隱藏狀態ht-1作為此次循環LSTM模塊的輸入,輸出ht;在公式(10),ht輸入解碼器,輸出此次循環時的權重圖wbt,wet,wgt;最后,公式(11)利用權重融合三幅衍生圖像,得到t次循環時網絡輸出Jt.重復公式(9)-公式(11),形成循環網絡.本文設置t=2,且當t=1時,J0為初始霧圖I.
值得一提的是LSTM模塊有多種實現方法,為方便實施,本文采用卷積LSTM來實現上述操作,即采用卷積操作(Conv)來設置LSTM模塊中的輸入門i,輸入門控制單元g,遺忘門控制單元f,輸出門控制單元o和記憶單元c詳見圖5所示.這里,輸入門i和輸入門控制單元g共同控制進入記憶單元c的信息;遺忘門控制單元f控制著記憶單元c中的信息被保留或被刪除;輸出門控制單元o控制從LSTM中輸出信息.

圖4 兩次循環的編碼解碼去霧網絡結構

圖5 LSTM模型內部結構圖
當編碼器的輸出m′進入LSTM模塊時,它將作為i,g,f和c的輸入,并由卷積操作得到對應的輸出:
(12)
式中:it為t次循環時,進入輸入門的信息,它由卷積操作自動學習,故*為卷積操作,wmi為卷積權重,bi為偏移.同理,gt為t次循環時,輸入門控制單元g的控制信息,也由wmg權重和bg偏移的卷積獲取.ft和ot為t次循環時,遺忘門的控制信息和輸出門的控制信息,wmf,wmo和bf,bo分別為各自卷積的權重和偏移.
由此,t次循環時,記憶單元中的信息ct,可由輸入門控制單元控制的信息it⊙gt和遺忘門控制單元更新的記憶信息ft⊙ct-1共同決定:
ct=ft⊙ct-1+it⊙gt
(13)
式中:ct為t次循環時記憶單元中的信息,ct-1為t-1次循環時記憶單元中的信息.
最后,利用t次循環時輸出門控制單元的信息ot,得到LSTM模塊的輸出信息:
ht=ot⊙tanh(ct)
(14)
式中:tanh為激勵函數.ht為t次循環時LSTM的輸出.
2.3.3 損失函數
對循環網絡的每次輸出均使用標準的L2損失函數,故網絡總損失函數為:
(15)
式中:Jt為第t次循環時網絡輸出,J*為真實去霧結果.
為了有效地訓練和測試網絡模型,本文選用NYU2數據集[18]中1100張清晰圖像J及其深度圖d,合成訓練和測試所需的霧圖I.具體來說,對已知1000張清晰圖像J和d,隨機選取(0.5,1.0)內的一個值作為光強A,隨機選取(0.5,1.5)內的7個值作為散射系數β,即可由大氣散射物理成像模型I=Je-βd+(1-e-βd)A可合成7000張不同霧氣濃度的圖像,由此構成訓練集.同理,對于剩余的100張霧圖,我們在(0.5,1.0)范圍內選定一個A值,在(0.5,1.0),(1.0,1.5)和(0.5,1.5)三個范圍內,每個范圍各選取三個β值,以合成300張薄霧圖,300張濃霧圖和300張混合霧圖,作為測試集.此外,我們還選取了SOTS公共測試集[19]用于性能測試,該數據集中含有不同霧氣濃度的圖像1000張,包含500張室內圖像和500張室外圖像.
表1 網絡參數設置
Table 1 Network parameters setting

網絡組件網絡層核步長通道特征大小Conv(編碼模塊1)3×3232256×256編碼器Conv(編碼模塊2)3×326464×64Conv(編碼模塊3)3×3212832×32LSTM(iConv,gConv,fConv,oConv)3×3(1,1,1,1)12832×32Deconv(解碼模塊1)3×326464×64解碼器Deconv(解碼模塊2)3×3232256×256Deconv(解碼模塊3)3×323512×512
網絡的結構參數如表1所示,由于殘差模塊(Resblock)選用了文獻[17]的默認設置,且并不改變通道數及特征空間大小,因此表1中僅列出編碼模塊、解碼模塊和LSTM模塊中的卷積和反卷積設置.網絡訓練,選用了初始學習率為0.0001的隨機梯度下降算法,且在每10000次迭代后學習率下降75%.所有輸入圖像大小均設置為512×512.模型在訓練400,000次迭代后獲取最優結果.
為測試算法的性能,本文將所提算法與目前幾種主流的去霧算法相對比,包括基于先驗的算法,如暗通道先驗算法[5],非局部先驗算法[7],以及基于深度學習的算法,如AOD-Net算法[12],MSDN算法[13].量化指標選用SSIM(Structure Similarity)和PSNR(Peak Signal to Noise Ratio).測試圖像包括本文合成的900張不同濃度的霧圖以及SOTS 公共測試集中1000張室內及室外霧圖.圖6(a)是從兩個數據集中選取2幅霧天圖像,圖6(b)~圖6(f)為各算法對應的去霧結果,圖6(g)為真實結果.從圖6可見,基于先驗的算法大多過分估計了霧的濃度,去霧結果偏暗,如圖6(b)及圖6(c)第一行中墻面區域的顏色較深,且出現不同程度的光暈現象.圖6(b)及圖6(c)第二行中天空和公路區域顏色偏暗,與真實圖6(g)相差較遠.此外,AOD-Net的去霧算法圖6(d)和MSDN法的去霧算法圖6(e),雖較圖6(b)及圖6(c)更接近真實結果,但在局部區域也存在霧殘余及過亮的問題,如圖6(d)存在明顯的霧殘余,去霧結果清晰度不高,圖6(e)整體偏亮,其中圖6(e)第二行天空區域最為明顯.相比而言,本算法的去霧結果圖6(f)最接近真實結果圖6(g),且失真最小.此外,圖6中各圖像下方所標的量化指標值(PSNR/SSIM),進一步證明本算法性能的優越性.

圖6 不同算法的合成圖像去霧結果對比
表2和表3給出了不同算法在兩個數據集下的平均量化結果,從中可見無論在濃霧,薄霧和混合霧濃度的合成圖像測試集上,還是在室內及室外的公共圖像測試集SOTS上,本算法始終具有最高的去霧精度.以PSNR指標為例,在SOTS的1000張室內和室外圖像上測試的結果表明,本文算法較存在算法的去霧精度至少提高19%.
表2 合成測試集下不同算法去霧結果的PSNR/SSIM對比
Table 2 Comparison of different algorithms based on synthetic testing data set in terms of PSNR/SSIM

暗通道先驗非局部先驗AOD-NetMSDN本文算法300張薄霧圖像0.8440/17.270.8725/17.710.9214/21.430.9289/23.790.9689/28.50300張濃霧圖像0.8419/17.110.8697/17.420.9185/20.660.9224/23.170.9654/28.44300張混合霧濃度圖像0.8415/17.080.8688/17.360.9016/19.570.9187/22.480.9624/28.27
表3 SOTS測試集下不同算法去霧結果的PSNR/SSIM對比
Table 3 Comparison of different algorithms based on SOTS testing data set in terms of PSNR/SSIM

暗通道先驗非局部先驗AOD-NetMSDN本文算法500張室內圖像0.8277/17.010.7649/17.320.8924/20.020.9026/21.810.9608/26.98500張室外圖像0.8057/16.910.7519/17.220.8718/18.120.8968/20.090.9428/26.221000張室內和室外圖像0.8167/16.960.7584/17.270.8821/19.070.8997/21.450.9518/26.60
為進一步測試算法的有效性,我們選取了多數去霧算法常用的2張真實霧圖實施去霧.各算法的去霧結果如圖7所示.從中可見,基于先驗的去霧算法去除了圖像中大部分霧氣,場景和目標的細節也能大體復原,但去霧結果存在明顯顏色失真,例如暗通道先驗的去霧結果圖7(b)顏色過暗,如圖7(b)第一行女孩的皮膚過暗.非局部先驗的去霧結果圖7(c)仍有霧殘余,其中圖7(c)第二行的遠景區域霧氣尤為明顯.基于深度學習的去霧算法如AOD-Net的結果圖7(d)的清晰度不高,存在明顯的霧殘余,MSDN算法的結果圖7(e)第一行的圖像周邊出現明顯的暗影,而女孩頭發區域較亮,過增強現象明顯.相比而言,本文算法的去霧結果圖7(f)能最大程度的去除霧效應,場景細節也得到了適度增強,具有最佳的視覺效果,如圖7(f)的第二行中遠處的草垛能較好的復原.究其原因主要是由于傳統去霧算法過度依賴已知的先驗知識,對于復雜的霧天圖像,存在透射率估計不準確,算法魯棒性差的問題.而基于深度學習的算法雖能緩解此問題,但因輸入圖像僅為初始霧圖,未能融合多種去霧信息,且去霧結果未實施從粗到細優化策略,導致復原結果存在霧殘余或顏色失真問題.本文利用神經網絡有效估計白平衡圖像,對比度增強圖像,伽馬校正圖像的融合權重,合成清晰圖像,還利用循環網絡優化去霧結果,具有較高的去霧精度.

圖7 不同算法的真實圖像去霧結果對比
本文提出了多圖像融合的循環神經網絡去霧算法.算法利用編碼解碼網絡有效估計白平衡圖像、對比度增強圖像、伽馬校正圖像的融合權重,合成清晰無霧圖像,解決了傳統融合去霧算法中融合權重估計耗時費力,易出現誤差的問題.此外,還在編碼解碼網絡中嵌入LSTM循環單元,并將網絡的輸出作為網絡的輸入,由粗到細的優化去霧結果,具有較好的去霧精度.在合成圖像測試集及真實圖像上測試表明,本文算法具有較高的去霧精度,較常用算法的去霧精度至少提高了約19%,可用于不同場景下的去霧應用中.