本节摘要:SOURCE 2.1:噪声来自传感器、传输、量化。本节动手对比均值、中值、高斯滤波对椒盐与高斯噪声的 PSNR,理解「保边 vs 平滑」权衡。
| 类型 | 外观 | 典型来源 |
|---|---|---|
| 高斯 | 颗粒细 | 传感器热噪声 |
| 椒盐 | 黑白点 | 传输错误 |
| 泊松 | 信号相关 | 低照度 |
import cv2, numpy as np def psnr(a, b): mse = np.mean((a.astype(float)-b.astype(float))**2) return 10*np.log10(255**2/mse) if mse else float('inf') clean = cv2.imread('gray.png', 0) gauss = clean + np.random.normal(0, 25, clean.shape) gauss = np.clip(gauss, 0, 255).astype(np.uint8) sp = clean.copy() rnd = np.random.rand(*clean.shape) sp[rnd<0.05] = 0; sp[rnd>0.95] = 255
blur = cv2.blur(gauss, (5,5)) median = cv2.medianBlur(sp, 5) gaussian = cv2.GaussianBlur(gauss, (5,5), 1.0) print('median on SP', psnr(clean, median)) print('gaussian on gauss', psnr(clean, gaussian))
SOURCE 3.2:均值模糊边缘;中值对椒盐最佳;高斯加权更自然。

| 噪声 | 3×3 均值 | 5×5 中值 | 5×5 高斯 |
|---|---|---|---|
| 高斯 σ=25 | 填 PSNR | — | 填 PSNR |
| 椒盐 5% | 填 PSNR | 填 PSNR | 填 PSNR |
⚠️ 常见坑:大核中值过平滑纹理 — 核大小需 A/B。
💡 关键直觉:没有万能滤波 — 先看噪声模型。
下一节直方图均衡与伽马校正。
选择去噪滤波器的第一原则是"看噪声长什么样"。椒盐噪声是随机黑白点,属于极端值;中值滤波取邻域中值,能直接把孤立极端值顶掉,同时保留边缘——因为边缘像素在中值运算里不受少数极端值影响。高斯噪声是加性随机扰动,均值和高斯滤波都能抑制,但均值把邻域所有像素一视同仁地平均,边缘和纹理同样被抹平;高斯滤波给中心像素更高权重,保留的边缘相对好一些。理解这个"噪声模型决定滤波器"的逻辑,比记住结论更重要。
import cv2, numpy as np # 双边滤波:同时考虑空间距离和像素值差异,保边去噪 denoised = cv2.bilateralFilter(gauss, d=9, sigmaColor=75, sigmaSpace=75)
去噪永远面对"平滑 vs 保边"的矛盾:核越大、滤波越强,噪声越少但边缘越糊。这个权衡在阈值分割和边缘检测前尤其关键——分割前过度去噪会把细小的目标抹掉,边缘检测前去噪不足则碎边遍地。实际工程的做法是"就低不就高":先用小核试探,能用最小核达到目标就不加大。对纹理丰富的图像,中值和均值都会破坏纹理,此时可考虑保持滤波(保边)或只在低频分量上降噪。
双边滤波在空域平滑时加入像素值差异的权重:亮度相近的像素贡献大,差异大的(跨越边缘的)贡献小,于是平滑的同时保住边缘。代价是计算量大,Sigma 参数要按图像灰度范围调节。工程上还有更进一步的 BM3D(块匹配三维协同滤波,非局部思路)和深度学习方法(DnCNN、NAFNet),后者去噪效果更好但需要训练数据。传统方法的价值在于无数据、可解释、低延迟,适合嵌入式实时场景。
用 PSNR 评估去噪要小心两点:一是它只对"有干净参考图"的合成实验有意义,真实照片没有参考;二是 PSNR 与人眼感知不完全一致——两张 PSNR 相近的图,一张可能更"干净但糊",另一张"有细节但带噪"。评估去噪效果建议 PSNR 加目视双轨:PSNR 看数值提升,目视确认边缘和纹理是否被保留。实验记录表里除了填 PSNR,还建议写一句对每个结果的主观评价,这是比单纯填数字更有价值的实验产出。
噪声来源的工程视角也值得补充:传感器噪声随曝光时间和 ISO 升高而增大,低照度环境本质是信噪比下降。所以"少噪"的最优解往往不是更强的滤波器,而是更好的采集条件——补光、延长曝光(静态场景)、降低 ISO。去噪只是最后的手段,先问"能不能从源头降低噪声",是工业项目里更划算的优化路径。本节实验建议用同一张干净图分别叠加椒盐和高斯噪声,再各自用三种滤波器处理,把 PSNR 填进记录表。完成这个对比,你就建立了"噪声类型、滤波器、评价指标"的完整闭环,这是后面所有预处理实验的标准范式。