張 臏, 張運杰, 白明明
(大連海事大學理學院, 大連 116026)
近年來,稀疏表示在信號、圖像處理領域受到廣泛關注,其中最為經典的應用是Aharon等[1]、Elad等[2]提出的稀疏表示圖像去噪算法,但是該算法對整幅圖像只使用一個固定原子大小的字典。只使用一個固定原子大小的字典不利于對圖像細節的準確描述。為有效解決該問題,Jia等[3]和Takeda等[4]提出了具有自適應原子大小的分組字典學習算法(grouped dictionaries with adaptive atom sizes, GDwAAS)。GDwAAS算法根據圖像幾何特征以及光照相似性先將過冗余圖像塊分為若干組,再由統計變異系數最終將過冗余圖像塊分為平滑、邊緣、紋理三大類;然后根據噪聲程度為每一類分別設計字典大??;最后依據稀疏表示圖像去噪算法[2]完成去噪。該算法可以根據圖像自身幾何特征去設計字典大小,相比原算法能更好地描述圖像細節。但有時測試圖像大小并非一致,該算法沒有討論圖像大小是否會影響分組字典大小的選擇。
傳統的稀疏表示算法大多都以過冗余圖像塊為基本單元來重建圖像,然而將圖像整體分為若干部分會破壞圖像中一些隱藏的內部結構,最終降低了重建圖像整體質量。為更好地學習圖像特征表示圖像,Zeiler等[5]提出了卷積稀疏編碼(convolutional sparse coding, CSC)模型。CSC模型通過交替訓練將圖像表示成卷積核與其特征響應的卷積之和線性稀疏逼近。對特征子問題通過求解大型線性系統得到最優解,卷積子問題則是通過簡單的收縮函數得到最優解。模型通過引入了輔助變量(t),使用一種連續的方法將目標函數中卷積部分與正則項分開,在空間域中使用傳統梯度算法依次求解各子問題。雖然卷積稀疏編碼模型比傳統稀疏表示算法能更好地學習圖像特征,但由于優化過程較復雜從而導致計算復雜度、運行時間都相對較高。為有效解決CSC模型計算效率問題,Bristow等[6]借鑒廣義拉格朗日函數以及信號處理中的相關方法,提出具有全局最優子問題和超線性收斂的快速算法(fast convolutional sparse coding, FCSC)。FCSC提倡使用交替方向乘子法(alternating direction method of multipliers, ADMM)分離卷積分量。算法將CSC原始目標四分解為傅立葉域中具有有效參數的凸子問題,并且證明了在傅里葉域中優化求解CSC模型要比在空間域上直接使用梯度優化算法求解效率更高。FCSC算法雖然大大降低了CSC模型計算復雜度,但是該算法直接使用高斯消元法求解線性系統。高斯消元法雖然能夠有效地處理線性系統,但是并不對于大型線性系統求解。Wohlberg[7]給出另一種在傅里葉域中結合 ADMM 算法的優化方法,并指出可以使用Sherman-Morrison公式有效求解CSC模型線性系統。新算法并沒有完全依賴傅里葉域優化求解CSC模型,而是僅將計算復雜度最高的卷積子問題置于傅里葉域求解,相比FCSC算法進一步降低了模型計算復雜度;Bristow等[8]對目前在空間域或傅里葉域中CSC可行優化方法做出了匯總。這些方法旨在解決涉及CSC模型中卷積約束和稀疏正則化的問題,并通過結合實例說明CSC模型可以用于解決信號、圖像處理領域中各種常見的問題。Wohlberg[9]通過引入過度松弛變量以及如何選擇ADMM算法參數上,對前期所提算法[7]做出了相關延伸,還通過實驗證明了,采用輔助變量交替迭代更新ADMM算法求解CSC模型要比采用ADMM標準形式求解CSC模型收斂速度更快,并且首次提出可以在CSC模型中部署多尺度字典學習算法。
雖然在傅里葉域中優化CSC模型可以大大降低計算復雜度,但是在優化過程中會產生邊界偽影。Zeiler等[5]曾指出,在傅里葉域上優化求解CSC模型會產生邊界偽影現象,從而選擇在空間域中優化CSC模型。后來Bristow等[6]為了驗證邊界偽影對算法的影響,采用對稱卷積來代替圓形卷積,經實驗得出邊界偽影對算法的影響并不明顯。但是Kavukcuoglu等[10]指出,邊界條件是卷積模型中的基本障礙,即使對于非圓形邊界條件同樣也會影響CSC模型優化,因為通常覆蓋中心像素的濾波器數量要遠高于邊界像素。為有效抑制CSC優化過程中的邊界偽影現象,Heide等[11]采用掩碼矩陣將目標函數解耦為可以有效求解的小型獨立系統,并提出基于拆分思想的卷積稀疏編碼優化方法(fast and flexible convolutional sparse coding, FFCSC)。FFCSC算法雖然有效解決了CSC模型優化過程中邊界偽影現象,但是FFCSC并沒有按照標準ADMM算法對CSC模型進行優化。為解決傳統CSC模型邊界偽影問題,Wohlberg[12]提出可以在卷積過程中排除與信號邊界重疊的任何濾波器位置(boundary overlap suppression,BOS),或者通過在稀疏表示過程中添加掩碼(additive mask simulation, AMS)的方式來避免邊界偽影現象。
卷積稀疏編碼雖然已經有了一些不同的優化方法,但都是在傅里葉域中結合 ADMM 算法進行求解。盡管已經有些研究者討論過如何有效求解CSC模型,但都很少從理論上對所提優化方法的成功性給出過解釋。Papyan等[13-15]從全局模型局部求解的角度重新分析了卷積稀疏編碼模型,為優化求解CSC模型可行性提供了理論保障,并與2017年提出基于圖像切片的卷積字典學習算法(slice-based dictionary learning, S-BCSC)[16]。S-BCSC算法不再依賴于傅里葉域進行稀疏求解、訓練字典,這是之前其他方法所未提及的。該算法相比其他卷積稀疏編碼模型更易訓練、收斂速度更快,而且易于其他稀疏編碼算法相結合。雖然S-BCSC算法已經可以成功應用于圖像修復[16]、圖像去噪[17], 但是該算法在應用中與稀疏表示圖像去噪算法[1]類似,也是只使用一個固定大小的字典。
現嘗試將GDwAAS算法應用到卷積稀疏編碼圖像去噪中,并討論了如何根據圖像大小確定卷積字典大小。為進一步提升S-BCSC算法的去噪效果,依據GDwAAS算法,在原S-BCSC算法的基礎上提出分組訓練卷積字典的圖像去噪算法(group slice-based dictionary learning,GS-BCSC)。為驗證所提算法的有效性,通過將所提算法去噪結果與原S-BCSC算法、GDwAAS算法直接應用于卷積稀疏編碼進行了實驗對比。
稀疏表示模型假設信號可以由過完備字典D∈Rn×m(m?n)中若干列通過線性組合的方式構成,X=DΓ,其中,Γ為全局稀疏向量,X為去噪后圖像。稀疏表示算法近年來受到廣泛關注,其中最為經典的應用是Elad等[1-2]所提出的圖像去噪算法,該模型表達形式為


(1)

提出使用塊坐標最小化算法對模型進行優化求解:首先固定字典D求解每一個過冗余塊對應的稀疏表示系數:

(2)

(3)

稀疏表示圖像去噪算法[2]雖然十分有效,但是該算法對整幅圖像只使用一個固定原子大小的字典,這并不利于對圖像信息的準確描述。為進一步提升算法的去噪效果,Jia等[3]提出了GDwAAS算法。GDwAAS算法首先根據圖像幾何特征以及圖像像素將過冗余圖像塊分為若干組,再由統計變異系數最終將圖像塊分為平滑、邊緣、紋理三大類。
統計變異系數數學表達式為


(4)
式(4)中:P表示圖像塊區域;|P|表示區域P總像素數;yj表示區域P中第j個像素值;var(P)表示對區域P元素進行方差運算;ave(P)表示對區域P元素進行均值運算。
然后根據噪聲程度為每一類分別設計不同原子大小的字典;最后結合稀疏表示圖像去噪算法[1-2]完成去噪。分組字典原子大小選擇方式為

(5)

噪聲為均值為0,方差為σ的高斯白噪聲。當σ<25時,s=9;當25≤σ<40時,s=11;當σ>40時,s=13。
傳統稀疏表示算法將圖像整體化為若干過冗余塊,然后相互獨立的處理每一個圖像塊,最后通過冗余塊平均化等其他方法完成圖像重建。但將圖像整體分為若干部分后,一些潛在的內部結構可能會因此而被破壞,最終降低了重建圖像的質量。為更有效地學習圖像特征,Zeiler等[5]提出了CSC模型,模型表達式為

(6)
式(6)中:dj表示第j個卷積核;zj表示卷積核dj所對應的特征響應;m表示特征響應中非零項總個數;K表示卷積核總數。
卷積稀疏編碼雖然能夠更有效地學習圖像信息,但由于計算復雜度高從而使得模型不易訓練。目前,卷積稀疏編碼雖然已有一些不同的優化方法,但大多數都是在傅里葉域中結合ADMM算法進行優化求解。為進一步優化卷積稀疏編碼模型,Papyan等[13-15]從模型全局與局部關系的角度重新分析了卷積稀疏編碼模型,并提出S-BCSC[11]。S-BCSC算法不再依賴傅里葉域進行優化求解,其模型表達式為

(7)
式(7)中:DL∈Rd2×n表示局部字典,其中n為局部字典列數;αi表示長度為m并且相互獨立的局部稀疏向量;si為圖像切片;ρ為懲罰系數。S-BCSC算法具體計算步驟如表1所示。

表1 S-BCSC算法Table 1 S-BCSC Algorithm
雖然S-BCSC算法已經可以成功應用于圖像去噪[17],但是該算法在應用中與Elad等[2]所提稀疏表示圖像去噪算法類似,也是只使用一個固定大小的字典。事實上,卷積字典大小對S-BCSC算法是具有一定影響的。選取文獻[9]中20幅分辨率不同的圖像,改變字典原子大小,通過S-BCSC算法對不同噪聲水平下圖像進行去噪。實驗中所添加的噪聲為均值為0,方差為σ的高斯白噪聲,通過峰值信噪比(peak signal-to-noise ratio, PSNR)客觀評價去噪效果。圖1為改變原子大小對算法去噪效果的影響。圖2為改變字典列數對算法去噪效果的影響。表2~表4分別為分辨率為340*413的Castle圖像、320*267的Cat圖像及200*200的Couple圖像改變字典原子大小對算法去噪效果的影響。


表2 Castle圖像使用不同字典原子大小去噪結果Table 2 Castle image using different dictionary atom size denoising results

圖1 不同噪聲程度下改變字典原子大小對算法去噪效果的影響Fig.1 The effect of changing the size of the dictionary atom on the algorithm denoising effect under different noise levels

圖2 不同噪聲程度下改變字典列數對算法去噪效果的影響Fig.2 The effect of changing the number of dictionary columns on the denoising effect of the algorithm under different noise levels

表3 Cat圖像使用不同字典原子大小去噪結果Table 3 Cat image using different dictionary atom size denoising results

表4 Couple圖像使用不同字典原子大小去噪結果Table 4 Couple image using different dictionary atom size denoising results

(8)
雖然傳統稀疏表示圖像去噪算法[2]非常有效,但在應用中僅使用一個固定原子大小的字典不利于圖像信息的準確描述。為提升算法去噪效果,Jia等[3]提出GDwAAS算法,該算法按照平滑、紋理、邊緣特征將圖像塊分為三類,然后為每一類分別設計字典大小,最后依據稀疏表示圖像去噪算法完成去噪。受GDwAAS算法啟發,將該算法思想融入卷積稀疏編碼中,并在原S-BCSC算法基礎上提出分組訓練卷積字典的圖像去噪學習算法(group slice-based dictionary learning, GS-BCSC)。
一般情況下,平滑區域設置的字典原子大小應比紋理、邊緣區域稍大一些。但隨著噪聲程度的增加,圖像信息與噪聲之間越來越難區別開來,較大的原子能夠更好的處理噪聲。再由于CSC模型所要訓練的局部字典不一定為過冗余字典,因此可考慮字典原子較大的情況。為驗證所提猜想,通過使用House和Barbara、Mans圖像進行以下實驗。首先根據Jia等[3]所提方法將圖像塊按照平滑、邊緣、紋理分為三類,然后觀察改變字典原子大小對圖像不同區域去噪效果的影響,實驗結果如圖3~圖5所示。

圖3 Lena圖像不同圖像區域在噪聲程度σ=15、σ=40下使用不同原子大小PSNR比較Fig.3 Comparison of different areas of Lena image under different noise levels σ=15 and σ=40 using different atom size PSNR

圖5 Mans圖像不同圖像區域在噪聲程度σ=15、σ=40下使用不同原子大小PSNR比較Fig.5 Comparison of different areas of Mans image under different noise levels σ=15 and σ=40 using different atom size PSNR
由圖3~圖5可知,字典原子大小同樣也會影響算法對圖像不同區域去噪效果,其中平滑區域原子較邊緣、紋理區域大。從圖3~圖5可以看出,對圖像按平滑、邊緣、紋理分組設計字典能進一步消除噪聲,本文算法按照如式(9)、式(10)確定分組卷積字典大小。

(9)

(10)

實驗將GS-BCSC算法所獲得的結果與S-BCSC算法,以及在卷積稀疏編碼中直接使用GDwAAS算法進行了比較。為驗證本文算法的有效性,通過對施加不同噪聲水平大小為256像素×256像素的House、Lena、Man、Barbara圖像進行實驗。實驗中將各噪聲圖像分成11像素×11像素的過冗余圖像塊用于圖像塊分類。為方便比較算法效果,采用離散余弦變換初始化各字典。S-BCSC算法中參數設置為λ=0.133,L=63。實驗中所添加的噪聲為均值為0,方差為σ的高斯白噪聲。通過PSNR值來客觀評價算法去噪效果,去噪后的圖像對比如圖6所示。表5為S-BCSC算法、GDwAAS算法直接應用于卷積稀疏編碼、GS-BCSC算法去噪結果對比。

圖6 實驗結果對比Fig.6 Comparison of experimental results

表5 S-BCSC、GDwAAS及GS-BCSC算法去噪效果對比Table 5 Denoising effect comparison of S-BCSC, GDwAASand GS-BCSC algorithm
表5中數據表明,使用GS-BCSC算法去噪后的結果優于原S-BCSC算法及在CSC模型中直接應用GDwAAS算法。從圖6可以看出,使用GS-BCSC算法去噪后的圖像在清晰度、質量上都較原始S-BCSC算法有一定的提升,并且這種優勢在噪聲程度較低時更為明顯。
通過對S-BCSC算法的研究,將具有自適應原子大小的分組字典學習算法應用于卷積稀疏編碼中,并且初步討論了如何根據圖像大小確定所需卷積字典大小。得出如下結論。
(1)使用本文算法獲得的去噪后的圖像在圖像質量、清晰度上都要優于原S-BCSC算法以及在CSC模型中直接應用GDwAAS算法。
(2)重構后的圖像質量與一些經典圖像去噪算法之間還有些差距,后續會繼續結合其他可行算法對S-BCSC算法做進一步研究。