4、经典去噪方法:BM3D、NLM、小波去噪——为什么它们在暗光下失效?

讲HDR去噪之前,咱们得先聊聊那些“老前辈”。

BM3D、NLM、小波去噪,这几个名字做图像处理的应该都不陌生。它们在很多场景下表现确实不错,甚至可以说是经典中的经典。但为什么到了暗光HDR这里,就集体“翻车”了呢?

我个人习惯是,先搞清楚它们为什么好,才能理解它们为什么不好。咱们一个一个来看。

4.1 NLM(非局部均值)—— 找相似块,但暗光下全是“假货”

NLM的核心思想很直观:图像里有很多重复的纹理结构。比如一块蓝天、一面白墙,你可以在图像的其他地方找到跟当前像素块非常相似的块。把这些相似块加权平均,噪声就被抹平了。

核心逻辑: 用“结构相似性”来引导去噪,而不是单纯依赖空间邻近性。

听起来很完美对吧?但暗光下问题就来了。

问题一:噪声破坏了结构相似性。 暗光下信噪比极低,图像里全是颗粒感。原本相似的纹理,被噪声一覆盖,看起来就“谁也不像谁”了。NLM的权重计算依赖于块之间的欧氏距离,噪声一高,这个距离就变得不可靠。你找来的“相似块”,其实只是噪声模式碰巧相近的“假货”。

问题二:计算量爆炸。 为了找到真正的相似块,你需要在整张图或者一个大窗口里搜索。暗光下为了抑制噪声,往往需要更大的搜索半径和更大的块尺寸。我在项目中遇到过,一张1080p的暗光图,用NLM跑一次要几十秒,这在实际产品里根本没法用。

避坑指南: 我曾经尝试用NLM做视频降噪,结果发现帧间的相似块匹配更不稳定。运动稍微大一点,匹配到的全是鬼影。后来我放弃了,改用时域滤波+运动补偿的方案。

4.2 BM3D —— 三维协同滤波,暗光下的“细节杀手”

BM3D可以说是NLM的“升级版”。它把相似的图像块堆叠成一个三维数组,然后在三维空间里做变换域滤波(通常是DCT或小波)。

它的流程大致分两步:

  1. 基础估计: 用块匹配找到相似块,堆叠成3D数组,做硬阈值滤波,再聚合回图像。
  2. 最终估计: 在基础估计的基础上,用维纳滤波做第二次去噪,保留更多细节。

这个思路很巧妙。利用块之间的相关性,在三维空间里把信号和噪声分得更开。但暗光下,它有两个致命伤。

致命伤一:块匹配失效。 跟NLM一样,暗光下噪声破坏了块之间的相似性。匹配到的块数量少、质量差,三维数组的“相关性”大打折扣。滤波效果自然就差了。

致命伤二:细节过度平滑。 这是最要命的。BM3D在三维变换域里做阈值处理,会把一些微弱但真实的细节(比如暗部的纹理、高光的边缘)当成噪声一起滤掉。结果就是,去噪后的图像看起来“干净”了,但也“糊”了。HDR最看重的就是暗部细节,BM3D这一下直接把细节给“杀”了。

对比项 NLM BM3D
核心思想 非局部相似块加权平均 相似块堆叠+三维变换域滤波
暗光下块匹配 极易失效,匹配到噪声块 同样失效,且影响后续三维滤波
细节保留能力 中等,容易产生伪影 较差,容易过度平滑细节
计算复杂度 高(O(N²)) 非常高(块匹配+三维变换)
暗光HDR适用性 差 差

4.3 小波去噪 —— 阈值一设,细节全没

小波去噪的原理是把图像分解到不同频率的子带。噪声通常集中在高频子带,而图像的主要能量在低频。所以,对高频小波系数做阈值处理,就能去除噪声。

听起来很直接,但暗光下有两个坑。

坑一:阈值怎么设? 暗光下噪声的方差很大,而且不是均匀的。全局阈值要么去不干净,要么把边缘细节也去掉了。自适应阈值虽然好一点,但计算复杂,而且对微弱信号仍然不友好。

坑二:小波基的选择。 不同的小波基(Haar、Daubechies、Symlet等)对不同纹理的表示能力不同。暗光下,你很难事先知道哪种小波基最适合当前的噪声和纹理。选错了,去噪效果就大打折扣。

注意: 小波去噪在处理“伪影”时也有问题。硬阈值会产生振铃效应,软阈值虽然平滑,但会进一步模糊细节。在暗光HDR里,这些伪影会被放大,非常难看。

4.4 为什么它们在暗光HDR下集体失效?—— 一张图看懂

下面这张图总结了这三个方法的共同困境。

经典去噪方法在暗光HDR下的失效原因 NLM BM3D 小波去噪 共同困境:低信噪比(SNR < 10dB) 块匹配失效 相似块变成噪声块 权重计算不可靠 细节过度平滑 微弱纹理被当成噪声 三维滤波“一刀切” 阈值难以设定 全局/自适应都难兼顾 小波基选择困难 最终结果:去噪后图像“干净但模糊” 暗部细节丢失,HDR融合后出现断层

4.5 总结:它们不是不好,而是不适合暗光

说了这么多,并不是要否定这些经典方法。它们在光照充足、信噪比高的场景下,效果依然很棒。但暗光HDR是一个特殊的战场。

  • NLM 和 BM3D 依赖“块匹配”,而暗光下噪声破坏了匹配的基础。
  • 小波去噪 依赖“阈值”,而暗光下信号和噪声的界限模糊不清。
  • 它们共同的弱点:对微弱细节的保护能力不足。而HDR最看重的,恰恰就是这些微弱细节。
核心结论: 暗光HDR去噪,不能再用“先找相似块再滤波”的老思路了。我们需要新的方法——比如利用多帧信息、利用噪声模型、利用深度学习——来在抑制噪声的同时,保住那些珍贵的暗部细节。