分组训练卷积字典的图像去噪算法

2021-04-07 12:38张运杰白明明
科学技术与工程 2021年6期
关键词:傅里叶字典原子

张 膑, 张运杰, 白明明

(大连海事大学理学院, 大连 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算法直接应用于卷积稀疏编码进行了实验对比。

1 相关工作

1.1 稀疏表示图像去噪算法

稀疏表示模型假设信号可以由过完备字典D∈Rn×m(m≫n)中若干列通过线性组合的方式构成,X=DΓ,其中,Γ为全局稀疏向量,X为去噪后图像。稀疏表示算法近年来受到广泛关注,其中最为经典的应用是Elad等[1-2]所提出的图像去噪算法,该模型表达形式为

(1)

提出使用块坐标最小化算法对模型进行优化求解:首先固定字典D求解每一个过冗余块对应的稀疏表示系数:

(2)

(3)

1.2 具有自适应原子大小的分组字典学习算法

稀疏表示图像去噪算法[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。

1.3 卷积稀疏编码

传统稀疏表示算法将图像整体化为若干过冗余块,然后相互独立的处理每一个图像块,最后通过冗余块平均化等其他方法完成图像重建。但将图像整体分为若干部分后,一些潜在的内部结构可能会因此而被破坏,最终降低了重建图像的质量。为更有效地学习图像特征,Zeiler等[5]提出了CSC模型,模型表达式为

(6)

式(6)中:dj表示第j个卷积核;zj表示卷积核dj所对应的特征响应;m表示特征响应中非零项总个数;K表示卷积核总数。

1.4 基于图像切片的卷积字典学习算法

卷积稀疏编码虽然能够更有效地学习图像信息,但由于计算复杂度高从而使得模型不易训练。目前,卷积稀疏编码虽然已有一些不同的优化方法,但大多数都是在傅里叶域中结合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

2 本文算法

2.1 卷积字典大小对S-BCSC算法去噪效果的影响

虽然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.2 分组训练卷积字典的图像去噪算法

虽然传统稀疏表示图像去噪算法[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)

3 实验结果

实验将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算法有一定的提升,并且这种优势在噪声程度较低时更为明显。

4 结论

通过对S-BCSC算法的研究,将具有自适应原子大小的分组字典学习算法应用于卷积稀疏编码中,并且初步讨论了如何根据图像大小确定所需卷积字典大小。得出如下结论。

(1)使用本文算法获得的去噪后的图像在图像质量、清晰度上都要优于原S-BCSC算法以及在CSC模型中直接应用GDwAAS算法。

(2)重构后的图像质量与一些经典图像去噪算法之间还有些差距,后续会继续结合其他可行算法对S-BCSC算法做进一步研究。

猜你喜欢
傅里叶字典原子
一种傅里叶域海量数据高速谱聚类方法
原子究竟有多小?
原子可以结合吗?
带你认识原子
构造Daubechies小波的一些注记
法国数学家、物理学家傅里叶
字典的由来
基于傅里叶域卷积表示的目标跟踪算法
大头熊的字典
正版字典