2. 图像噪声模型与数学表示
做安防监控的算法,说白了就是跟噪声打交道。我入行那会儿,第一个项目就是给夜间监控画面做去噪。那时候天真地以为,去噪嘛,把画面弄干净就行了。结果被噪声的复杂性狠狠上了一课。
今天我们就来聊聊噪声的数学模型,以及怎么评价去噪效果。这些是基本功,但也是很多人容易忽略的地方。
2.1 噪声的数学模型
先说说噪声的本质。图像噪声,其实就是真实信号和观测值之间的偏差。用数学表达就是:
g(x,y) = f(x,y) + η(x,y)
其中 g 是观测到的图像,f 是原始无噪声图像,η 就是噪声。这个模型叫加性噪声模型,是最常用的。
但实际场景中,噪声没那么简单。我遇到过几种常见的噪声类型:
高斯噪声
这是最常见的噪声模型。它的概率密度函数服从正态分布:
p(z) = (1/√(2πσ²)) · exp(-(z-μ)²/(2σ²))
其中 μ 是均值,σ 是标准差。在安防监控中,传感器热噪声、电路噪声基本都是高斯分布。我记得有一次调试一个户外摄像头,白天画面还行,一到晚上全是颗粒感。后来发现是传感器温度升高导致的高斯噪声加剧。
椒盐噪声
这种噪声表现为随机出现的黑白像素点。数学上可以表示为:
p(z) =
Pa, z = a (黑点)
Pb, z = b (白点)
1-Pa-Pb, 其他
椒盐噪声在监控中很常见,尤其是传输线路老化或者信号干扰的时候。我做过一个停车场项目,画面经常出现闪烁的白点,排查了半天,结果是同轴电缆接头松了。
泊松噪声
也叫散粒噪声,在低光照条件下特别明显。它的特点是噪声强度与信号强度相关:
P(k) = (λᵏ · e⁻λ) / k!
λ 是平均光子数。说白了,光线越暗,这种噪声越严重。夜间监控的痛点就在这里。
实际项目中的噪声混合模型
真实监控场景中,噪声往往是多种类型的混合。我个人习惯用这个模型:
g(x,y) = f(x,y) + η_gaussian(x,y) + η_saltpepper(x,y) + η_poisson(f(x,y))
不同场景下,各噪声成分的比例不同。白天以高斯噪声为主,夜间泊松噪声占比上升,传输过程容易引入椒盐噪声。
2.2 信噪比(SNR)与峰值信噪比(PSNR)
有了噪声模型,怎么量化噪声的严重程度?这就引出了两个核心指标。
信噪比 (SNR)
SNR 的定义很简单:信号功率与噪声功率的比值。
SNR = 10 · log₁₀(σ²_signal / σ²_noise)
其中 σ²_signal 是信号方差,σ²_noise 是噪声方差。单位是 dB。
SNR 越高,说明信号质量越好。我一般这样判断:
| SNR 范围 | 画面质量 | 典型场景 |
|---|---|---|
| > 40 dB | 优秀 | 白天室内监控 |
| 30 - 40 dB | 良好 | 白天室外监控 |
| 20 - 30 dB | 一般 | 黄昏/阴天 |
| < 20 dB | 较差 | 夜间监控 |
我的经验:安防监控中,SNR 低于 25 dB 的画面,人脸识别基本就废了。我曾经做过一个测试,SNR 从 30 dB 降到 20 dB,识别准确率从 95% 直接掉到 60%。
峰值信噪比 (PSNR)
PSNR 是 SNR 的变体,用图像的最大可能像素值代替信号功率:
PSNR = 10 · log₁₀(MAX² / MSE)
其中 MAX 是像素最大值(8位图像就是 255),MSE 是均方误差:
MSE = (1/MN) · ΣΣ [f(i,j) - g(i,j)]²
PSNR 在去噪算法评估中更常用。为什么?因为 SNR 需要知道原始信号功率,而实际中我们往往只有观测图像。PSNR 只需要原始图像和去噪后的图像就能算。
注意:PSNR 不是万能的。我见过很多论文 PSNR 很高,但视觉效果很差。说白了,PSNR 对像素级误差敏感,但对人眼感知的纹理、边缘等特征不敏感。所以评估去噪效果时,PSNR 要结合主观评价一起看。
2.3 噪声评估指标
除了 SNR 和 PSNR,实际项目中我还会用这些指标:
结构相似性指数 (SSIM)
SSIM 从亮度、对比度、结构三个维度比较两幅图像的相似度:
SSIM(x,y) = [l(x,y)]^α · [c(x,y)]^β · [s(x,y)]^γ
取值范围是 0 到 1,越接近 1 说明越相似。SSIM 比 PSNR 更符合人眼感知。我习惯用 SSIM 作为主要评估指标,PSNR 作为辅助。
均方根误差 (RMSE)
RMSE = √MSE
这个指标直观,单位就是像素值。比如 RMSE = 10,意味着平均每个像素有 10 个灰度级的误差。
信噪比增益 (SNR Gain)
这个指标用来衡量去噪算法的效果:
SNR_Gain = SNR_after - SNR_before
单位也是 dB。我一般要求去噪算法至少带来 3-5 dB 的提升,否则效果不明显。
我的评估流程
- 先用 PSNR 和 SSIM 做定量评估
- 再用肉眼观察边缘保持情况和纹理细节
- 最后在实际监控场景中跑一遍,看识别算法的表现
三步下来,基本能判断一个去噪算法是否靠谱。
2.4 本章知识体系
为了让你更直观地理解本章的知识结构,我画了一张图:
这张图把本章的知识体系串起来了。从噪声模型到评估指标,再到实际应用场景,每一步都有对应的数学工具和工程经验。
避坑指南:我曾经在一个项目中,只盯着 PSNR 优化算法,结果 PSNR 涨了 2 dB,但画面变得模糊,边缘细节全丢了。后来才明白,去噪的本质是在「去噪」和「保边」之间找平衡。所以评估时一定要看 SSIM 和主观效果。
好了,噪声模型和评估指标就聊到这里。这些概念虽然基础,但贯穿整个去噪算法的学习过程。后面我们会基于这些知识,一步步搭建实用的去噪算法。
公众号:蓝海资料掘金营,微信deep3321