非局部均值:用图像自身的冗余去噪
去噪的核心矛盾:平滑与细节的拉锯
图像去噪的数学模型很简单:观测值 v(i) = u(i) + n(i),其中 u 是真实图像,n 是加性高斯白噪声。几乎所有去噪方法的本质都是某种形式的”平均”——高斯平滑在空间域做卷积,各向异性滤波沿特定方向平均,全变分最小化通过变分法求解,小波阈值在频域操作。但平均天然与保留细节矛盾:平滑得越多,噪声去得越干净,纹理和边缘也丢得越多。
Buades、Coll 和 Morel 在 2005 年 CVPR 上提出的这篇论文做了两件事:一是引入”方法噪声”(method noise)这个评价工具,用统一的框架揭示各类去噪算法到底破坏了图像的什么结构;二是提出非局部均值算法(Non-Local Means, NL-means),通过利用图像自身在远距离上的冗余模式来突破局部滤波的根本限制。
方法噪声:一面照出算法缺陷的镜子
方法噪声的定义极其直观:给定一幅图像 u 和一个去噪算子 D_h,方法噪声就是 u − D_h(u)。如果算法足够好,这个差值应该看起来像纯噪声,不包含任何可辨识的几何结构。反过来,如果方法噪声中出现了边缘、纹理或其他有意义的图案,说明算法把不该去掉的东西去掉了。
论文对四类经典局部平滑滤波器逐一推导了方法噪声的解析表达式,结论清晰而尖锐:
- 高斯滤波:方法噪声正比于 h²Δu(拉普拉斯算子),在图像平坦区域几乎为零,但在边缘和纹理处——拉普拉斯值大的地方——方法噪声剧烈增大。换言之,高斯滤波必然模糊边缘。
- 各向异性滤波(Perona-Malik 类):方法噪声正比于 h²|Du|·curv(u),即梯度幅值乘以等灰度线曲率。直线边缘(曲率为零)被完美保留,但弯曲边缘和纹理区域仍然受损。
- 全变分最小化(Rudin-Osher-Fatemi):方法噪声为 −(1/2λ)·curv(TV_λ(u)),与各向异性滤波类似地依赖曲率,直边缘安全,细节和纹理在 λ 较小时被过度平滑。
- 邻域滤波(Yaroslavsky 滤波器,以及后来的 SUSAN 和双边滤波):通过比较单个像素灰度值来决定权重,避免了跨边缘平均,但单像素比较在噪声下不够鲁棒,且会产生人工阶跃伪影。
这些解析结果在实验中得到了视觉验证。论文对标准 Lena 图像计算了各算法的方法噪声图:高斯滤波的方法噪声中清晰可见边缘轮廓,各向异性滤波残留弯曲结构,全变分残留纹理,邻域滤波出现块状伪影。而 NL-means 的方法噪声图中几乎看不到任何可辨识的几何结构——这正是一个好的去噪算法应有的表现。
NL-means:从局部邻域到全局自相似
NL-means 的核心思想可以用一句话概括:去噪某个像素时,不只看它周围的几个邻居,而是在整幅图像中寻找所有”邻域模式相似”的像素,用它们的加权平均作为估计值。
具体地,对于像素 i,其去噪值为所有像素 j 的加权平均 NL[v](i) = Σ_j w(i,j)·v(j),权重由两个像素各自邻域块(patch)的相似度决定:
w(i,j) = (1/Z(i)) · exp(−‖v(N_i) − v(N_j)‖²_{2,a} / h²)
其中 N_i 和 N_j 是以 i 和 j 为中心的方形邻域,‖·‖_{2,a} 是高斯加权的欧氏距离,h 是滤波参数,Z(i) 是归一化常数。
与邻域滤波(双边滤波)的关键区别在于:邻域滤波只比较单个像素的灰度值,NL-means 比较的是整个邻域块的几何配置。论文用一个直观的例子说明了这一点:像素 q₃ 可能和参考像素 p 有完全相同的灰度值,但如果它们的邻域模式截然不同,权重 w(p, q₃) 会接近零。这种基于 patch 的比较比单像素比较鲁棒得多。
另一个关键性质是”非局部”:搜索范围不限于参考像素的小邻域,而是(原则上)遍历整幅图像。图像中远距离位置可能存在高度相似的模式——同一纹理的重复、对称结构、相似的边缘走向——NL-means 能够利用这些远距离冗余。论文展示了不同图像结构下的权重分布图:平坦区域的权重分散在同一物体内部的大量像素上;直边缘的权重沿着整条边缘线分布;周期性纹理的权重在所有重复单元上均匀分布。
在噪声鲁棒性���面,论文给出了一个简洁的等式:E‖v(N_i) − v(N_j)‖²_{2,a} = ‖u(N_i) − u(N_j)‖²_{2,a} + 2σ²。这说明在期望意义下,含噪 patch 之间的距离保持了真实 patch 之间的相似性排序——噪声只是均匀地抬高了所有距离,不改变相对大小。
理论保证:趋向条件期望
论文为 NL-means 提供了一个渐近一致性结果。假设图像是一个严格平稳混合随机场的实现,当图像尺寸增长时(即可用的相似 patch 越来越多),NL-means 的输出几乎必然收敛到条件期望 E[V(i) | V(N_i\{i})]。
在加性白噪声模型下,这个条件期望恰好是使均方误差最小的估计——即在所有仅依赖于邻域观测值的函数中,条件期望是最优的。这意味着 NL-means 并非试图将图像分解为”光滑部分 + 振荡部分”(这是全变分和小波方法的思路),而是直接估计给定邻域模式下像素值的最佳预测。这是一个本质性的视角转换:去噪不是分离,而是预测。
与频域方法形成对比的是,《用小波收缩适应未知光滑性》中讨论的 SureShrink 方法通过小波系数的自适应阈值化实现去噪,其理论优势在于对未知光滑性的自适应性。NL-means 走了一条完全不同的路:它不依赖任何关于信号光滑性的假设,而是利用图像的自相似结构——这种结构在自然图像中普遍存在,但在传统函数空间框架中难以刻画。
实验结果与实践启示
实验设置上,NL-means 使用 7×7 的相似性邻域窗口和 21×21 的搜索窗口,滤波参数 h 设为 10σ(σ 为噪声标准差)。算法复杂度约为 49 × 441 × N²(N² 为像素总数),相比局部滤波器显然更高,但作者指出 7×7 窗口在鲁棒性和细节保留之间取得了良好平衡,而指数核的快速衰减使得大距离的权重自动趋近于零,相当于内置了自适应阈值。
在标准差为 20 的高斯噪声下,Lena 图像的均方误差对比如下:
- 高斯滤波:120
- 各向异性滤波:114
- 全变分最小化:110
- 邻域滤波(Yaroslavsky):129
- NL-means:68
NL-means 的均方误差不到全变分的 62%,优势相当显著。在 Baboon 图像(纹理极其丰富)上,差距同样明显:NL-means 为 292,全变分为 365,高斯滤波高达 507。纹理越丰富,图像的自相似冗余越多,NL-means 的优势越大——这与算法的设计直觉完全一致。
视觉质量上,论文展示了标准差 35 的自然纹理去噪对比和标准差 20 的自然图像去噪对比。局部滤波器要么模糊纹理(高斯),要么保留边缘但损失细节(各向异性、全变分),要么产生伪影(邻域滤波)。NL-means 在边缘、纹理和平坦区域上都表现出更均衡的恢复能力。
从实践角度看,NL-means 的贡献不仅是一个具体算法,更是一种思维方式的转变:图像去噪的信息源不必局限于像素的空间邻域,图像自身在全局尺度上的冗余和自相似性是一种尚未被充分利用的资源。这个思路后来深刻影响了图像处理领域——从 BM3D(将 NL-means 的 patch 匹配与频域滤波结合)到深度学习时代的非局部注意力机制(non-local neural networks),核心理念都可以追溯到这篇论文。方法噪声作为评价工具同样有持久价值:它提供了一种不依赖”加噪再去噪”的算法诊断方式,直接揭示算法对真实图像结构的破坏程度。
当然,计算成本是 NL-means 最明显的局限。即使限制了搜索窗口,每像素的计算量仍远高于局部滤波器。论文也未讨论噪声水平估计不准确时的鲁棒性,以及在非高斯噪声模型下的表现。但作为一个概念性突破,它打开的方向远比它自身的局限更重要。


