参考文献:《A non-local algorithm for image denoising》
非局部均值滤波,顾名思义,与高斯滤波等只利用待滤波点周围像素的局部滤波不同,非局部体现在利用整张图像的像素点(一般追求速度,会设置一个搜索块)进行滤波。主要是利用了一张图像丰富的冗余信息。
比如上图中的,
,
位置处的信息十分相似,如果仅利用
局部的信息滤波,会导致资源的浪费。
首先看论文中对NLM的定义式:
其中,可以认为是位置的参数空间。
指数部分可以看成是不同位置
处的权重,
是权重归一化因子,所以上式可以认为
处的滤波结果是由参数空间
内的不同位置处像素值的加权平均。
怎么理解呢,其实可以把指数部分看成是位置参数
的概率密度函数(只是看成)。我们都知道,对于连续型随机变量
,其均值可由下式获得:
那么同理,上式即可理解为不同位置处的像素值
的均值了。只不过概率密度函数是由
指数部分的权重决定的,所以又叫加权平均。
下面看离散形式:
其中,权重满足归一化形式:
权重是决定滤波结果的重要因素,我们必须给相似的部分较大的权重,给不相似的部分小的权重,甚至是0,才能保证滤波结果的正确性。作者使用邻域相似性作为评判标准确定权重的,这点从上式可以看出:表示的是以
为中心的邻域内的像素集合,通过欧几里得距离来计算两个块之间的相似性,距离越小,相似度越高,权重也就越大。计算欧氏距离的时候,采用了高斯加权,考虑了距离因素,式中的
即是高斯方差。
一般来说,是不会在全局范围内进行搜索的,一般会设置一个搜索块(21*21),否则效率不高,相似块一般设置成7*7。
说到非局部均值滤波,就不能不提BM3D。BM3D是结合非局部思想与变换域滤波思想的算法,应该是传统算法里性能最好的一种滤波算法了。与NLM不同的是,BM3D是在DCT变换后的变换域空间中进行相似性匹配的,然后将相似的图片块叠加在一起,再进行DCT协同滤波(不像NLM直接对相似块加权平均,可以进一步去除噪声),最后DCT逆变换后加权放回原处。这里推荐一篇很好的文章,感兴趣的可以看看,这里就不再赘述。https://zhuanlan.zhihu.com/p/46399784