程春燕
摘要:為了克服傳統方法去噪會損失部分有用信息的缺點,該文采用稀疏編碼和字典訓練兩個關鍵技術,準確又高效地區分開圖像的有用信號和噪聲信號,更好地實現了去噪。針對字典訓練的過程利用了K-SVD算法,研究了其原理和去噪流程,由于字典學習是通過機器學習獲得而不是預先選定得到的,從而可以更完整地保留圖像原有的信息,最終獲取更高的峰值信噪比。通過對不同算法的仿真分析,驗證了該方法的有效性。
關鍵詞:機器學習;字典學習;稀疏表示;K-SVD;圖像去噪
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2018)02-0164-02
Research on Image Denoising Based on Dictionary Learning
CHENG Chun-yan
(Faculty of Information Engineering,Jiangxi University of Science and Technology,Ganzhou 341000, China)
Abstract:In order to overcome the disadvantages of the traditional methods denoising which lead to lose some of effective information,sparse coding and dictionary training are used as two key technologies. This method can distinguish the effective signal and noise signal of the image accurately and efficiently, and better realize the denoising.In view of the K-SVD algorithm that is used in dictionary training, the principle and denoising process are researched.Since dictionary learning is obtained by machine learning rather than pre-selected, it can not only better reserve the original information of the image, but also achieve higher Peak Signal to Noise Ratioultimately.The effectiveness of the method is verified by simulation analysis of different algorithms.
Key words:machine learning;dictionary learning; sparse representation;K-SVD; image denoising
1 概述
圖像去噪的目的在于降低噪聲干擾的同時盡可能完整地保留圖像本身的有效信息。常見的小波去噪、Contourlet變換去噪等方法雖然能夠去除噪聲信號,但也造成了部分有用信息的缺失。在自然圖像分析領域,自適應稀疏表示方法受到廣泛關注,字典訓練所采用的樣本來自于原始圖像中提取的小圖像塊,圖像字典是通過求解圖像塊稀疏表示的方法而獲得的,字典中的元素特征近似于簡單細胞反應中的情況[1],可以利用這種字典表示自然圖像。近年來許多學者將字典學習算法應用于圖像分類、圖像去噪等諸多領域[2],取得一定的顯著效果。
本文所使用的K-SVD字典學習算法,通過稀疏編碼和字典更新兩步迭代學習達到去噪的效果,具有很好的自適應性,可以更大程度地保留圖像原有的有用信息。
2 字典學習基本原理
字典學習的第一步是建立字典,字典由具有許多樣本的許多類構成,當識別圖片時,類中的每個樣本就是一幅小尺寸圖片。有了這些樣本后,接著將其變成特征向量的形式,使用列向量的方式完成對圖片像素值的排列,例如,對于一個35×35的圖片,排列完成后可以獲得一個1225維的向量,學習的過程既簡單又高效。
首先,使用字典學習算法對自然圖像進行適當的訓練,獲取所需要的字典;然后,在上一步得到的字典上,對圖像進行相應的稀疏分解,計算出對應的系數矩陣;之后,把計算出的系數矩陣和字典相乘,從而獲得去噪后的圖像。
3 字典學習算法
字典學習算法可以通過對已有訓練樣本的學習來獲得自適應字典,該字典能夠滿足對重建誤差與稀疏度的要求。字典學習常用的求解方法有MOD算法[3]和K-SVD算法。K-SVD算法提出一種新的字典更新方法,操作的對象是字典的列向量,有效地克服了MOD算法涉及的矩陣求逆等一系列問題,所以本文采用K-SVD作為字典訓練的算法。
3.1 K-SVD算法
K-SVD算法是在K-均值聚類算法的基礎上改進的,該算法的原理是用K個原子的線性組合來恢復原始信號,包含了稀疏編碼和字典更新這兩個關鍵的步驟。稀疏編碼是在字典固定不變的情況下,計算出訓練樣本集在字典上的稀疏表示,求解稀疏系數。在求解稀疏系數時,一般使用MP算法或OMP算法。本文采用了OMP算法,它是在MP算法的基礎上改進而來的,不同的是,OMP算法利用的是施密特正交投影方法來實現對匹配追蹤進行逼近。
3.2 字典訓練
字典的訓練過程:初始化:該字典的初始化是利用DCT字典來完成的,D(0)∈Rn×K。設初始迭代J=1。重復下面的過程直至達到收斂:endprint
(1) 稀疏編碼階段:對各個樣本yi求解如下最優化問題:
[minxyi-Dxi22] subject to [xi0≤T0]
(2) 字典更新階段:對字典矩陣R(J-1)的每一列k=1,2,…,K按以下方式更新。
①定義ωk為重構時用到的訓練樣本:
[ωk=i1≤i≤N,xkT(i)≠0]
②計算重構誤差Ek:
[Ek=Y-j≠kdjxjT]
③選擇Ek中對應ωk的列得到[ERk];
④對[ERk]進行奇異值分解[ERk=UΔV],更新的字典[dk?]為U的第一列,更新系數向量為[xkR=Δ(1,1)×v1]。
(3) 如果滿足收斂條件則停止,否則J=J+1,轉到(2)。
(4) 輸出最終的全局字典或自適應字典。
3.3 稀疏分解
稀疏分解的算法選用OMP算法。該算法的每一步都會對已經選取的原子作施密特正交化處理。具體過程如下:
初始化:殘差r0x=x
(1) r表示的是殘差,di表示的是字典的列,找到二者的最大乘積所對應的第k列原子:
[k=argmaxi=1,2,...mrk-1x,di]
(2) 更新索引集[∧k=∧k-1,k]
(3) 求解最優稀疏表示系數:
[αk=argminakx-D∧kαk2]
(4) 更新殘差:[rk-1x=x-D∧kαk,k=k+1]
(5) 若滿足k>s,則停止迭代;不滿足則執行(1)。
(6) 輸出x的稀疏表示矩陣αk。
4 實驗結果與分析
4.1 算法仿真參數
實驗選用的噪聲類型為高斯白噪聲,選取的字典大小為64×256,圖像大小為512×512,塊大小為8×8,冗余因子為4,K-SVD迭代次數為10。其中,字典的原子數=冗余因子×塊大小×塊大小。
4.2 仿真測試與結果
對原始圖像加入不同的高斯白噪聲進行去噪,對DCT字典、Global字典和K-SVD自適應學習字典進行仿真比較,利用不同算法下的峰值信噪比對測試結果進行評價。原始圖像如圖2所示。
上圖3分別是三種字典的訓練結果圖,將字典原子轉化為像素進行顯示,其中每一小塊的圖像大小都為8×8。三種算法在不同噪聲標準差下去噪后的PSNR值對比情況如下表1所示。
由上表可知,這三種算法中,基于K-SVD算法訓練的自適應字典去噪后的峰值信噪比(Peak Signal to Noise Ratio,PSNR)更高,也就是說K-SVD算法訓練的字典要比DCT字典和Global字典的去噪效果更好。
5 結束語
本文研究了字典學習的字典訓練過程和稀疏分解過程,采用K-SVD字典學習算法取得自適應字典。基于程度不相同的高斯噪聲圖像進行實驗仿真,同時比較了DCT與Global兩種字典的去噪效果,實驗仿真的結果證明:利用K-SVD算法去噪獲得的圖像可以更完整地保留圖像的有用信息,具有更好的自適應性,去噪的效果更明顯。下一步要研究的是如何把稀疏表示應用到非高斯噪聲以及混合噪聲下的圖像稀疏去噪中。
參考文獻:
[1] Yibin T, Yuan S, AiminJ, Ning X, ChangpingZ.Image denoising via graph regularized K-SVD[C].Int-ernational Symposium on Circuits and Systems(ISCAS), 2013:2820-2823.
[2] 練秋生, 石保順, 陳書貞. 字典學習模型, 算法及其應用研究進展[J]. 自動化學報, 2015, 41(2):240-260.
[3] 楊俊, 謝勤嵐. 基于DCT過完備字典和MOD算法的圖像去噪方法[J]. 計算機與數字工程, 2012, 40(5):100-103.endprint