056、空间降噪的"保边困境"——NLM/Bilateral/Guided Filter在纹理细节与噪声抑制之间的取舍及参数调优心法上个月在调试一款车载夜视系统的时候,客户反馈了一个特别刁钻的问题:车辆在高速上跑,路灯下树影斑驳的路面被降噪算法磨得干干净净,但驾驶员抱怨"路面像铺了层油",纹理全没了。我盯着屏幕看了半天,心里明白——这不是算法选错了,是参数和场景没对齐。空间降噪这个老生常谈的话题,真正落地时全是坑。先说说Bilateral Filter。这玩意儿原理简单,空间距离近的像素加权,灰度差异小的像素加权,两者相乘得到权重。但问题就出在这个"灰度差异"上——它假设边缘两侧的灰度差是大的,噪声的灰度差是小的。可现实里,纹理细节和噪声在灰度域上往往是重叠的。比如一块磨砂金属表面,细小的划痕和传感器的高斯噪声,在局部窗口里灰度波动幅度几乎一样。你调大sigma_r去保边缘,噪声也跟着保住了;调小sigma_r去降噪,划痕也磨平了。我见过有人把sigma_r设成0.05(归一化后),结果图像跟水彩画似的,边缘倒是锐利,但内部纹理全糊了。这里踩过坑——Bilateral的sigma_r不是越大越好,它跟图像的动态范围强相关。你处理8位图,灰度范围0-255,sigma_r设10-15是常规操作,但如果是12位RAW数据,这个值得按比例放大到40-60,否则边缘根本保不住。再说NLM(Non-Local Means)。这算法当年出来的时候惊艳四座,因为它跳出了局部窗口的局限,在全图范围内找相似块。理论上,它对纹理的保留能力比Bilateral强得多——因为纹理是有结构的,噪声是随机的,在全图范围内匹配相似块时,噪声的随机性会被平均