图像降噪算法——低秩聚类:WNNM算法

  • 图像降噪算法——低秩聚类:WNNM算法
  • 1. 基本原理
  • 2. matlab代码
  • 3. 结论


图像降噪算法——低秩聚类:WNNM算法

同样是为了完善自己知识版图的完整性,我决定再补充下低秩聚类算法的相关算法,低秩聚类算法同样是一大类算法,这篇博客是挑选了其中最经典的一种算法WNNM算法进行展开学习,由于没有在这方面做过太多相关的工作,因此可能理解相对肤浅,还请读者见谅

1. 基本原理

在写这篇博客之前,我先学习了稀疏表达相关的知识,这里我从稀疏表达算法出发,引入低秩聚类算法的相关解释:

稀疏表达相关算法中,将图像建模成dncnn去噪朋友torch wnnm去噪_聚类的形式,其中dncnn去噪朋友torch wnnm去噪_WNNM_02是有单个样本按列组成而成的样本矩阵,注意这里的样本并没有要求是相似的dncnn去噪朋友torch wnnm去噪_聚类_03是字典矩阵,矩阵中每一列为一个基向量或者子空间,dncnn去噪朋友torch wnnm去噪_算法_04则为系数矩阵,在系数表达中给定的限制条件是要求系数矩阵是稀疏的。我们通过一个过完备的字典和稀疏的系数矩阵就可以还原样本,而噪声不行,因此可以通过稀疏表达进行去噪。

而在低秩聚类相关算法中,是将图像建模成dncnn去噪朋友torch wnnm去噪_算法_05,其中dncnn去噪朋友torch wnnm去噪_WNNM_02同样是由带有噪声的相似样本组成而成的样本矩阵。dncnn去噪朋友torch wnnm去噪_算法_04dncnn去噪朋友torch wnnm去噪_聚类_08分别为对应的的无噪声的样本矩阵以及噪声。我们给出的限制条件是dncnn去噪朋友torch wnnm去噪_算法_04是低秩矩阵。由于相似样本组成的矩阵具备低秩性,噪声不具备低秩性,因此通过低秩聚类可以实现图像降噪的效果

由此可见,从降噪的本质上来将,稀疏表达的稀疏和低秩聚类中的聚类是具有一定相关性的。

为什么相似样本具备低秩性呢?参考图像降噪方法综述中的说法,当我们拍摄一张大草原的图片时,草原是由草组成的,而草是相似的,如果图片上全是草,那么这张图片实际包含的信息是很少的,因此可以理解为草是草的复制品,这就是低秩性的一个直观理解。

那么接下来就开始具体将WNNM算法的实现,主要参考
非局部相似性去噪算法研究Weighted Nuclear Norm Minimization with Application to Image Denoising

WNNM的全称是Weighted Nuclear Norm Minimization,中文翻译成加权核范数最小化方法,算法的流程如下图所示:

dncnn去噪朋友torch wnnm去噪_WNNM_10


如果在图像上搜索相似patch的流程就不用赘述了,方法多种多样,重要的是,假定我们要降噪的图像块为dncnn去噪朋友torch wnnm去噪_算法_11,由该图像块以及图像上与其相似的图像块组成的矩阵为dncnn去噪朋友torch wnnm去噪_dncnn去噪朋友torch_12,对应的降噪后的矩阵为dncnn去噪朋友torch wnnm去噪_算法_13,低秩矩阵最小化可以用来求矩阵的解,于是我们得到目标函数dncnn去噪朋友torch wnnm去噪_算法_14但是,其中dncnn去噪朋友torch wnnm去噪_WNNM_15是F范数,F范数的定义是矩阵dncnn去噪朋友torch wnnm去噪_dncnn去噪朋友torch_16各项元素的绝对值平方的总和,即dncnn去噪朋友torch wnnm去噪_WNNM_17上式是一个非凸函数,求解过程将是一个NP问题,因此需要对该问题转为凸优化问题后再求解,为此,前辈提出了标准核范数最小化的求解方法,也就是NNM——本文要介绍的WNNM算法的前身,NNM的目标函数如下:dncnn去噪朋友torch wnnm去噪_算法_18式中,dncnn去噪朋友torch wnnm去噪_聚类_19是一个正数,dncnn去噪朋友torch wnnm去噪_聚类_20是核范数,核范数的定义为dncnn去噪朋友torch wnnm去噪_WNNM_21

求解方法是对dncnn去噪朋友torch wnnm去噪_dncnn去噪朋友torch_12进行奇异值分解为dncnn去噪朋友torch wnnm去噪_dncnn去噪朋友torch_23,然后对奇异值进行软阈值收缩:dncnn去噪朋友torch wnnm去噪_低秩聚类_24其中,dncnn去噪朋友torch wnnm去噪_聚类_25为奇异矩阵dncnn去噪朋友torch wnnm去噪_算法_26对角线元素,于是得到目标函数的解:dncnn去噪朋友torch wnnm去噪_算法_27在NNM算法中,是使用同一个dncnn去噪朋友torch wnnm去噪_聚类_19值对所有奇异值进行软阈值收缩,这样做没有考虑到图像的信息主要集中在数值较大的上这个特点,因此会导致图像细节过度平滑而变得模糊,为了解决这个问题,于是就诞生了WNNM算法,使用不同的dncnn去噪朋友torch wnnm去噪_聚类_19值对奇异值进行软阈值收缩,数值大的奇异值对应数值小的dncnn去噪朋友torch wnnm去噪_聚类_19。由此我们得到目标函数dncnn去噪朋友torch wnnm去噪_低秩聚类_31其中dncnn去噪朋友torch wnnm去噪_算法_32为噪声方差,用于归一化F范数,而其中dncnn去噪朋友torch wnnm去噪_WNNM_33中的每一项都为非负数,对应每一个奇异值,如下:dncnn去噪朋友torch wnnm去噪_低秩聚类_34dncnn去噪朋友torch wnnm去噪_WNNM_35dncnn去噪朋友torch wnnm去噪_dncnn去噪朋友torch_16的第dncnn去噪朋友torch wnnm去噪_聚类_37奇异值,可以观察到,当奇异值越大时权重越小。dncnn去噪朋友torch wnnm去噪_聚类_38w为相似图像patch的数量,dncnn去噪朋友torch wnnm去噪_低秩聚类_39为防止被零正常的小参数。但是这里有个问题是,dncnn去噪朋友torch wnnm去噪_聚类_40是未知的呀,我们可以假设在初始时刻,噪声能量是在各个特征上分布是均匀的,因此初始化dncnn去噪朋友torch wnnm去噪_聚类_40为:dncnn去噪朋友torch wnnm去噪_低秩聚类_42最后同样我们对dncnn去噪朋友torch wnnm去噪_dncnn去噪朋友torch_12进行奇异值分解为dncnn去噪朋友torch wnnm去噪_dncnn去噪朋友torch_23,然后目标函数的解为:dncnn去噪朋友torch wnnm去噪_dncnn去噪朋友torch_45

2. matlab代码

matlab代码我就直接贴上链接好了 csjunxu/WNNM_CVPR2014 ,这份matlab代码我也没有细读,仅仅跑了一下,感兴趣的同学可以多画时间研究研究。

3. 结论

  1. 低秩聚类不仅仅可以用在图像降噪,在图像分割、分类等方面也有广泛的应用。
  2. 论文中的图像效果如下:
    我测试的结果也差不多,相对BM3D其文理细节保留会更好一些,但是一些纹理密集的区域会出现一些artifact,至于好不好,就要看大家对图片质量的要求了,这篇文章写的比较浅显,有问题欢迎交流

此外,这里我写一个各种算法的总结目录图像降噪算法——图像降噪算法总结,对图像降噪算法感兴趣的同学欢迎参考