程春燕
摘要:为了克服传统方法去噪会损失部分有用信息的缺点,该文采用稀疏编码和字典训练两个关键技术,准确又高效地区分开图像的有用信号和噪声信号,更好地实现了去噪。针对字典训练的过程利用了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