1.基本思想
非局部均值(Non-Local means)是2011年来提出的一项去噪技术。该方法充分利用了图像中的冗余信息,在去噪的同时能最大程度地保持图像的细节特征。基本思想是:当前像素的估计值由图像中与它具有相似邻域结构的像素加权平均得到(越相似权重越高)。
2.具体实现
理论上,该算法需要在整个图像范围内判断像素间的相似度,也就是说,每处理一个像素点时,都要计算它与图像中所有像素点间的相似度。但是考虑到效率问题,实现的时候,会设定两个固定大小的窗口:搜索窗口和邻域窗口
。邻域窗口在搜索窗口中滑动,根据邻域间的相似性确定像素的权值。
下图是NL-means算法执行过程,大窗口是以目标像素为中心的搜索窗口,两个灰色小窗口分别是以、为中心的邻域窗口。其中以为中心的邻域窗口在搜索窗口中滑动,通过计算两个邻域窗口间的相似程度为赋以权值w(x,y)。
设含噪声图像为,去噪后的图像为
。中像素点处的灰度值通过如下方式得到:
Tips:
(1)上面的公式中存在一个d平方,在实现代码的时候有时候会省略。这是由于d平方是一个确定的值,可以将其看成融合进h平方中。这样在实现代码的时候就少了很多除法。
(2)上述公式和原文有一些差别:
这个距离的平方相当于
,他计算了三通道的距离,我认为没必要,计算单通道就已经占用太多计算资源。
(3)另一个公式差别:
他对距离添加了一个阈值,当距离小于
,则认为该像素点对x的贡献极大,认为是1,大于
时,权重迅速减少,则认为其值对x的贡献变低。
Z(x)为归一化系数,h为平滑参数,控制高斯函数的衰减程度。h越大高斯函数变化越平缓,去噪水平越高,但同时也会导致图像越模糊。h越小,边缘细节成分保持得越多,但会残留过多的噪声点。h的具体取值应当以图像中的噪声水平为依据。
结果:
参考
非局部均值去噪(NL-means)_聚沙塔的博客-CSDN博客
积分图像的应用(二):非局部均值去噪(NL-means)_fastnlmeans和nlmens_聚沙塔的博客-CSDN博客