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

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

1. 基本原理

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

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

而在低秩聚类相关算法中,是将图像建模成 Y = X − N \mathbf{Y}=\mathbf{X} - \mathbf{N} Y=XN,其中 Y \mathbf{Y} Y同样是由带有噪声的相似样本组成而成的样本矩阵。 X \mathbf{X} X N \mathbf{N} N分别为对应的的无噪声的样本矩阵以及噪声。我们给出的限制条件是 X \mathbf{X} X是低秩矩阵。由于相似样本组成的矩阵具备低秩性,噪声不具备低秩性,因此通过低秩聚类可以实现图像降噪的效果

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

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

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

WNNM的全称是Weighted Nuclear Norm Minimization,中文翻译成加权核范数最小化方法,算法的流程如下图所示:
在这里插入图片描述
如果在图像上搜索相似patch的流程就不用赘述了,方法多种多样,重要的是,假定我们要降噪的图像块为 P i \boldsymbol{P_i} Pi,由该图像块以及图像上与其相似的图像块组成的矩阵为 Y i \boldsymbol{Y_i} Yi,对应的降噪后的矩阵为 X i \boldsymbol{X_i} Xi,低秩矩阵最小化可以用来求矩阵的解,于是我们得到目标函数 X i = argmin ⁡ x i ∥ Y i − X i ∥ F 2 + rank ⁡ ( X i ) \boldsymbol{X}_{i}=\operatorname{argmin}_{x_{i}}\left\|\boldsymbol{Y}_{i}-\boldsymbol{X}_{i}\right\|_{F}^{2}+\operatorname{rank}\left(\boldsymbol{X}_{i}\right) Xi=argminxiYiXiF2+rank(Xi)但是,其中 ∥ X ∥ F \left\|\boldsymbol{X}\right\|_F XF是F范数,F范数的定义是矩阵 X \boldsymbol{X} X各项元素的绝对值平方的总和,即 ∥ X ∥ F ≡ ∑ i = 1 m ∑ j = 1 n ∣ x i j ∣ 2 \|\mathbf{X}\|_{F} \equiv \sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n}\left|x_{i j}\right|^{2}} XFi=1mj=1nxij2 上式是一个非凸函数,求解过程将是一个NP问题,因此需要对该问题转为凸优化问题后再求解,为此,前辈提出了标准核范数最小化的求解方法,也就是NNM——本文要介绍的WNNM算法的前身,NNM的目标函数如下: X i = argmin ⁡ X i ∥ Y i − X i ∥ F 2 + λ ∥ X i ∥ ∗ \boldsymbol{X}_{i}=\operatorname{argmin}_{X_{i}}\left\|\boldsymbol{Y}_{i}-\boldsymbol{X}_{i}\right\|_{F}^{2}+\lambda\left\|\boldsymbol{X}_{i}\right\|_* Xi=argminXiYiXiF2+λXi式中, λ \lambda λ是一个正数, ∥ X i ∥ ∗ \left\|\boldsymbol{X}_{i}\right\|_* Xi是核范数,核范数的定义为 ∥ X ∥ ∗ = tr ⁡ ( X T X ) = tr ⁡ ( Σ ) \|\boldsymbol{X}\|_{*}=\operatorname{tr}\left(\sqrt{\boldsymbol{X}^{T} \boldsymbol{X}}\right)=\operatorname{tr}(\boldsymbol{\Sigma}) X=tr(XTX )=tr(Σ)

求解方法是对 Y i \boldsymbol{Y_i} Yi进行奇异值分解为 Y j = U Σ V \boldsymbol{Y}_{j}=\boldsymbol{U \Sigma V} Yj=UΣV,然后对奇异值进行软阈值收缩: S λ ( Σ ) i i = max ⁡ ( Σ i i − λ , 0 ) \mathcal{S}_{\lambda}(\boldsymbol{\Sigma})_{i i}=\max \left(\boldsymbol{\Sigma}_{i i}-\lambda, 0\right) Sλ(Σ)ii=max(Σiiλ,0)其中, Σ i i \boldsymbol{\Sigma}_{i i} Σii为奇异矩阵 Σ \boldsymbol{\Sigma} Σ对角线元素,于是得到目标函数的解: X i = U S λ ( Σ ) V \boldsymbol{X}_{i}=\boldsymbol{U}\mathcal{S}_{\lambda}\left(\boldsymbol{\Sigma}\right) \boldsymbol{V} Xi=USλ(Σ)V在NNM算法中,是使用同一个 λ \lambda λ值对所有奇异值进行软阈值收缩,这样做没有考虑到图像的信息主要集中在数值较大的上这个特点,因此会导致图像细节过度平滑而变得模糊,为了解决这个问题,于是就诞生了WNNM算法,使用不同的 λ \lambda λ值对奇异值进行软阈值收缩,数值大的奇异值对应数值小的 λ \lambda λ。由此我们得到目标函数 X ^ i = argmin ⁡ X i 1 σ n 2 ∥ Y i − X i ∥ F 2 + ∥ X i ∥ w , ∗ \hat{\boldsymbol{X}}_{i}=\operatorname{argmin}_{X_{i}} \frac{1}{\sigma_{n}^{2}}\left\|\boldsymbol{Y}_{i}-\boldsymbol{X}_{i}\right\|_{F}^{2}+\left\|\boldsymbol{X}_{i}\right\|_{\boldsymbol{w},*} X^i=argminXiσn21YiXiF2+Xiw,其中 σ n 2 \sigma_{n}^{2} σn2为噪声方差,用于归一化F范数,而其中 w = [ w 1 , … , w n ] \boldsymbol{w}=\left[w_{1}, \ldots, w_{n}\right] w=[w1,,wn]中的每一项都为非负数,对应每一个奇异值,如下: w i = c k / ( σ i ( X ) + ε ) {w}_{i}=c \sqrt{k} /\left(\sigma_{i}\left(\boldsymbol{X}\right)+\varepsilon\right) wi=ck /(σi(X)+ε) 其 中 , σ i ( X ) 其中,\sigma_{i}\left(\boldsymbol{X}\right) σi(X) X \boldsymbol{X} X的第 i i i奇异值,可以观察到,当奇异值越大时权重越小。 k k kw为相似图像patch的数量, ε \varepsilon ε为防止被零正常的小参数。但是这里有个问题是, σ i ( X ) \sigma_{i}\left(\boldsymbol{X}\right) σi(X)是未知的呀,我们可以假设在初始时刻,噪声能量是在各个特征上分布是均匀的,因此初始化 σ i ( X ) \sigma_{i}\left(\boldsymbol{X}\right) σi(X)为: σ i ( X ) = max ⁡ ( σ i 2 ( Y ) − k σ n 2 , 0 ) \sigma_{i}\left(\boldsymbol{X}\right)=\sqrt{\max \left(\sigma_{i}^{2}\left(\boldsymbol{Y}\right)-k \sigma_{n}^{2}, 0\right)} σi(X)=max(σi2(Y)kσn2,0) 最后同样我们对 Y i \boldsymbol{Y_i} Yi进行奇异值分解为 Y j = U Σ V \boldsymbol{Y}_{j}=\boldsymbol{U \Sigma V} Yj=UΣV,然后目标函数的解为: X i = U S w ( Σ ) V \boldsymbol{X}_{i}=\boldsymbol{U}\mathcal{S}_{\boldsymbol{w}}\left(\boldsymbol{\Sigma}\right) \boldsymbol{V} Xi=USw(Σ)V

2. matlab代码

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

3. 结论

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

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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐