馬悅
(陜西中醫藥大學信息化建設管理處,陜西咸陽 712046)
雨作為最常見的惡劣天氣狀況,對圖像的影響效果最為復雜。通過分析可知,如果所得圖像和視頻是在雨天環境下,則會出現許多大小和方向各不相同的雨線并且其呈現出隨機分布的特點。而雨線不僅會導致圖像和視頻中的光線發生折射和反射,從而造成一些區域的亮度較高,同時也會導致圖像和視頻中的些許紋理和關鍵細節信息丟失造成質量退化[1-2]。此外,無論是在過去的經典視覺算法還是在當下流行的一些視覺算法中,往往都需要輸入質量較高的圖像才能確保系統的正常運行工作,例如對物體的檢測與跟蹤,如果開始輸入的圖像是在雨天條件下獲取的,其包含許多類似于雨線的干擾因素,那么最終可能會導致物體檢測與跟蹤算法無法達到預定效果和目標。如果是在無人機場景下,就很可能會最終導致事故的發生。因此綜上所述,研究和設計出能有效去除圖像中雨線的算法意義較大[3-5]。
目前,圖像去雨的方法可歸納為以下兩大類:第一類是基于先驗知識,如文獻[6]中提出的一種基于圖像斑塊和從背景圖像中分離出雨條紋的判別稀疏編碼框架;第二類是基于深度學習,如文獻[7]中提出了一種用于單幅圖像去雨的條件生成對抗網絡,并利用感知損失來細化最后的結果;文獻[8]中提出了利用循環膨脹卷積神經網絡去雨,并在網絡中嵌入擠壓和激勵機制;文獻[9]中提出了一個密度感知的多流連接網絡,用于聯合雨密度估計和去耦合來提升去雨效果。然而,以上大多數方法由于算法的限定只能工作于特定的條件下,因此有進一步的改進空間。
目前,現有的單幅圖像去雨算法主要基于以下物理模型[10]:

雨痕圖像Is可以看作是無雨背景B和雨痕層S的線性疊加,如圖1 所示。

圖1 雨痕圖像模型分解示意圖
將雨痕層圖像從初始的有雨圖像中剝離出來,便是對圖像去雨本質的定義。通過仔細觀察有雨圖像的細節信息,可以發現對于大多數背景圖像來說都包含天空、墻壁等這些相對平滑的區域,而在這些區域中除了包含些許雨痕以外,其他紋理信息并不明顯甚至沒有,因此將這些區域定義為純雨區域。此外對整幅圖像來說,雨痕的外表特性是重復的,于是通過對部分純雨區域的特征學習來獲得雨痕的相關特征,從而推動進一步有效地檢測出全局圖像所包含的所有雨痕。
此外由于絕大多數背景信息表現為低頻特征,而雨痕和物體邊緣呈現出高頻的特征,可以將輸入的有雨圖像通過濾波的方法分為高頻部分和低頻部分,然后對高頻部分進行雨痕的形態學分析,將高頻部分分為無雨和有雨部分,最后將高頻的無雨部分和輸入圖像的低頻部分相結合得到最終的圖像[11-13]。
提出的整體網絡結構是一個由粗到細的過程,如圖2 所示。

圖2 整體網絡結構示意圖
此過程中采取逐步分級進行去雨,每個處理階段均由3 個部分組成:特征空間、膨脹卷積塊和雨空間。其中,特征空間的作用是將圖像空間轉換為特征空間,對特征空間進行處理的是膨脹卷積塊(DCB),其結構如圖3 所示。

圖3 膨脹卷積塊(DCB)結構示意圖
最后,雨空間的作用是將特征空間映射到雨空間,在歷經多階段處理后再結合細化階段對其結果進行細化。
對于單幅圖像的處理來說,空間的信息非常重要,此外不同尺寸和方向的雨紋更是需要不同的空間信息來匹配處理[14]。為了更好地解決此問題,提出了一個膨脹卷積塊(DCB)方法,它由幾個具有指數膨脹因子的卷積層組成,該文因子數分別設定為1、2、4、8。采用的膨脹卷積不僅可以擴大接受域從而獲得更多的空間信息,而且可以同時保持參數的數量不變。
膨脹卷積塊可以定義為如下公式:

其中,i=1,2,···,L。L為擴張卷積層數,而Convi為3×3 的卷積核與擴張因子2i-1的卷積,Zfusion是最終輸出。這里,令L=4,因為發現L=4 就足以得到滿意的結果。
在最終估計的圖像中存在一些偽影,為了解決這個問題,使用單一卷積網絡來改進最終的結果。定義如下:

目前,均方誤差(MSE)是在圖像去雨中采用最多的損失函數。但是均方誤差會給予擁有較大誤差的區域更多的權重,而對那些小誤差區域往往不能進行有效的處理,導致最終輸出圖像效果不太理想[15]。因此文中采用的是平均絕對誤差(MAE),其函數表示如下:

式中,N為采用的訓練樣本總數量,X^ 為需要進行去雨的圖像,X為真實無雨圖像。此損失函數能夠在對大誤差區域進行懲罰時相對的加大對于誤差區域懲罰的權重,從而有利于圖像高頻區域的處理。
該設計在訓練過程中,需要通過大量的有雨圖像和清晰無雨圖像作為訓練樣本。但是在現實條件下很難一次獲得足夠且滿足條件的圖像,因此為了解決此問題,往往會通過人工合成從而產生需要的大量有雨圖像。文中使用的數據集中有雨和無雨圖像的圖像對共14 000 對,其中擁有14 種不同類別的雨線其主要呈現出不同的大小與方向。此外,該設計主要通過谷歌圖像數據庫、UCID、BSD 數據集來獲取所有高質量輸入圖像[16],而該設計中所涉及的有雨圖像均由技術合成所得到。
同時為了將該設計的結果和其他算法所得到的結果進行對比分析,該設計還從BSDS500 數據集中獲取了100 張清晰的無雨圖片,并通過利用同樣的技術合成獲取了100 個有雨和無雨清晰圖像對,并將其作為本設計的合成雨圖像測試集,稱之為Rain100。同時還確保了該合成雨像測試集與該設計中的網絡訓練集圖像沒有重復交集。此外由于在Rain100 測試集的有雨圖像中雨線也依舊呈現著不同大小和方向,因此,該設計將其分為小雨測試集Rain100L 和大雨測試集Rain100H。
文中實驗環境是Ubuntu16.04 系統,其搭載Inter i7 CPU,通過Nvidia GTX1080 Ti 顯卡對其進行加速網絡訓練,采用Python 編程語言并通過Pytorch框架來實現網絡的搭建。
該設計選擇T=12,而通道的數量則被設置為16。從訓練圖像數據集中隨機裁剪大小為100×100像素的圖像小塊作為輸入,并將小批量大小設置為10來訓練網絡。此外,文中使用Adam作為優化器,初始化學習率為0.001,在240K和320K迭代時除以10。
在測試數據集上對文中設計的網絡性能進行了評估,分別將其與文獻[6]、文獻[7]、文獻[8]和文獻[9]這4種主流去雨方法進行了定性和定量的比較。
首先選擇了不同算法在Rain100L 上的對比,結果如圖4 所示。
從圖4 可以看出,通過文獻[6]算法所得到的最終去雨圖像依然存在著許多雨線;通過文獻[7]算法所得到的去雨圖像雖然殘留的雨線較少但是可以明顯看出圖像較為模糊;文獻[8]算法得到的復原圖像留下的人工痕跡較為嚴重,去雨效果也不盡人意;文獻[9]算法得到的圖像去雨效果較好,但是最后得到的圖像色彩飽和度較低,同時發現一些細節的信息存在丟失。而文中算法的輸出不僅較好地去除了雨線,而且將一些細節信息保存得相對完整,擁有較高的色彩飽和度。

圖4 不同算法在Rain100L去雨結果的比較
雖然文獻[9]的輸出圖像在Rain100L 中對于小雨狀態下的去雨效果比較不錯。為了進一步比較和驗證文中算法在大雨中的去雨效果,如圖5 所示,選擇了不同算法在Rain100H 的對比結果。

圖5 不同算法在Rain100H去雨結果的比較
通過上圖可以觀察到經過文獻[6-9]算法處理得到的輸出圖像在大雨條件下的去雨效果和色彩飽和度和文中算法輸出的圖像相比都要差一些,所以無論是在小雨還是在大雨條件下,文中算法均表現良好。
然而,為了保證評估結果的可靠性,不僅需要視覺上的定性分析,還需要通過定量分析比較來增添可信度。為了評價這些算法的性能,對于復原的圖常用的量化標準為峰值信噪比(PSNR)和結構相似性指數(SSIM)。PSNR 是一個絕對誤差,使用像素相對于其最大可能值的均方誤差來計算。在假設人類的視覺系統高度協調的情況下提取結構信息,SSIM試圖通過更緊密地與人類的感知保持一致來改進絕對誤差度量。這兩個客觀評價指標的值越大,表明圖像處理效果越好,從表1 中看出,文中網絡表現出最優的性能。

表1 不同去雨算法在測試集上的定量比較
文中算法相比于文獻[6]、文獻[7]、文獻[8]、文獻[9]這4 種算法在PSNR 和SSIM 值上都有顯著的提升,由此可見提出的算法擁有更好的去雨效果并且保證了更高的圖像復原質量。
文中提出了一種由粗到細的逐級去雨方法,它是通過多階段的處理過程來完成去雨的。此方法提出的依據是一個好的去雨方法應該能夠去除所有的雨紋,并且能夠反復處理,直到雨紋被去除干凈。通過在Rain100L 和Rain100H 數據集上定量和定性的實驗結果表明,文中算法在與現有幾種去雨方法相比,具有優越性,同時大大減少了使用參數的數量,提升了工作效率。