降噪算法之滤波

前言

这个部分应该总共会有五个part,来讲述最近的一些工作,分别小结五类图片降噪方法。降噪的本质,是要从观测值中分离噪音,保留图像。算法的关键,是要掌握并借助于图像本身独特的性质和结构。根据算法利用了什么图像性质,就可以分为许多流派了。基本上可以这么划分:滤波类, 稀疏表达类,外部先验,聚类低秩和最近很热的深度网络方法
今天主要来学习第一类滤波算法,最知名的是BM3D算法了。这是一种相对比较传统的算法,通过设计滤波器对图像进行处理。特点是速度比较快,很多卷积滤波可以借助FFT变换来加速。近期的一些算法也结合了一些block matching来利用图片的self-similarity,效果不错。
有两种噪声算法,一种是非局部去噪方法Non-local method(NLM),是一种空间算法,另一种transform method是一种转换算法,都在图像去噪中得到很好的效果,所以自然而然地想:同时使用两种算法效果如何?这便引出了BM3D去噪算法。

Non-Local Means

顾名思义,这是一种非局部平均算法。何为局部平均滤波算法呢?那是在一个目标像素周围区域平滑取均值的方法,所以非局部均值滤波就意味着它考虑到了图像中的所有像素,这些像素根据某种相似度进行加权平均。非局部均值滤波Baudes提出,其出发点应该是借鉴了越多幅图像加权的效果越好的现象,那么在同一幅图像中对具有相同性质的区域进行分类并加权平均得到去噪后的图片,应该降噪效果也会越好。同时,在一个邻域中,不同位置的像素权重也不一样,考虑到复杂度搜索区域大概取21x21,相似度比较的块的可以取7x7。

Transform method

这个方法偏信号角度,比较知名的方法是小波去噪。从信号学的角度看 ,小波去噪是一个信号滤波的问题。尽管在很大程度上小波去噪可以看成是低通滤波 ,但由于在去噪后 ,还能成功地保留信号特征 ,所以在这一点上又优于传统的低通滤波器。由此可见 ,小波去噪实际上是特征提取和低通滤波的综合

BM3D

结构
BM3D算法总体分为两大步估计,每一大步又分为三小步:相似块分组、协同滤波和聚合。Basic estimate与Final estimate,两步除Collaborative filtering不同外,其余子步骤近似。从2007年提出,它在近十年内都被认为是最好的算法。甚至目前一些论文也经常引用到这个模型。说白了,该算法通过相似判定找到与参考块相近的二维图像块,并将相似块按照组合成三维群组,对三维群组进行协同滤波处理,再将处理结果聚合到原图像块的位置。

第一大步:基础估计

第一步,搜索相似块,然后把相似的块grouping成一个个3D stack。(图像本身是2D,变成stack就成了3D)
3D
第二步,协同滤波:先对每个三维矩阵中的二维的块进行二维变换(DCT变换)后再在矩阵的第三个维度进行一维变换,通常为Hadamard Transform。变换后采用硬阈值的方式将小于超参数(lambda_3D)的成分置为0。同时统计非零成分的数量作为后续权重的参考。最后通过在第三维的一维反变换和二维反变换得到处理后的图像块。这里会涉及到一个凸优化的硬阈值(Hard Threshold)的概念。
第三步,聚合:将这些图块逆变换后放回原位,利用非零成分数量统计叠加权重,最后将叠放后的图除以每个点的权重就得到基础估计的图像,权重取决于置0的个数和噪声强度,此时图像的噪点得到了较大的去除。

第二大步:最终估计

1、分组:基础估计已经极大地消除了噪点对于含噪原图的每个目标图块,可以直接用对应基础估计图块的欧氏距离衡量相似程度。按距离从小到大排序后取最多前MAXN1个。将基础估计图块、含噪原图图块分别叠成两个三维数组。所以这一步与第一步中不同的是这次会得到两个三维数组,一个是噪声图像形成的三维数组一个是基础估计得到的三维数组。
2、协同滤波:两个三维矩阵都进行二维和一维变换,这里的二维变换采用DCT变换。不同之处在于,用维纳滤波(Wiener Filtering)将噪声图形成的三维矩阵进行系数放缩,该系数通过基础估计的三维矩阵的值以及噪声强度得出。这一过程用如下公式表示,其中(w_p)是维纳滤波的系数:
3、聚合:与第一步中一样
相对于基础估计图,最终估计图还原了更多原图的细节。