4. 噪声类型与模型
做安防监控图像处理这些年,我打交道最多的就是噪声。说白了,噪声就是图像里那些不该出现的随机波动。你想想看,一个监控摄像头在低照度环境下拍出来的画面,那种密密麻麻的颗粒感,就是噪声在作祟。
要搞定噪声,首先得摸清它的脾气。每种噪声都有自己的数学模型,理解了模型,才能对症下药。这一章我就带你把这四种最常见的噪声模型掰开揉碎了讲清楚。
4.1 高斯噪声:最普遍的背景噪声
高斯噪声是安防监控里最常见的噪声类型。它主要来自传感器本身的电子热运动,还有电路放大器的随机波动。我习惯叫它“白噪声”,因为它的功率谱密度在整个频域里是均匀的。
高斯噪声的概率密度函数长这样:
P(x) = (1 / (σ * √(2π))) * exp(-(x - μ)² / (2σ²))
其中:
- μ —— 均值,通常为0
- σ —— 标准差,决定噪声强度
- x —— 像素灰度值
关键参数:高斯噪声的强度完全由标准差 σ 控制。σ 越大,画面越花。
我在项目中遇到过一个问题:某款IPC在夜间模式下,画面总是灰蒙蒙的。排查了半天,发现是传感器温度升高导致热噪声增大,σ值从正常的5跳到了12。后来加了温控补偿,问题才解决。
4.2 泊松噪声:光子计数的随机性
泊松噪声跟光子的量子特性有关。说白了,就是单位时间内到达传感器的光子数量不是固定的,而是服从泊松分布。这在低照度环境下特别明显。
泊松分布的数学模型:
P(k) = (λ^k * e^(-λ)) / k!
其中:
- λ —— 平均光子数(也是方差)
- k —— 实际观测到的光子数
个人经验:泊松噪声有个特点——它的方差等于均值。这意味着信号越弱(λ越小),噪声相对信号的比例就越大。这就是为什么夜景监控画面总是噪点满满。
我记得有一次做星光级摄像头的去噪算法,一开始用高斯模型去拟合,效果很差。后来换成泊松-高斯混合模型,才把暗区的噪声压下去。嗯,这里要注意,纯泊松模型只适用于光子计数阶段,实际传感器输出还要叠加读出噪声(高斯)。
4.3 椒盐噪声:脉冲式的像素损坏
椒盐噪声,也叫脉冲噪声。它的表现就是图像上随机出现白点(盐)和黑点(椒)。这通常是因为传感器像素单元损坏、ADC采样错误或者传输过程中的比特翻转造成的。
椒盐噪声的数学模型比较简单:
P(x) =
p_a, x = 0 (黑点,椒)
p_b, x = 255 (白点,盐)
1 - p_a - p_b, x = 原始值
其中:
- p_a —— 出现黑点的概率
- p_b —— 出现白点的概率
避坑指南:我曾经在一条产线上发现,某批次的摄像头在高温老化后,椒盐噪声密度从0.1%飙升到5%。后来查出来是焊点虚焊导致的数据线接触不良。所以,遇到椒盐噪声,先别急着调算法,先查硬件。
4.4 固定模式噪声:传感器的“胎记”
固定模式噪声(FPN)是每个传感器独有的“指纹”。它表现为图像上固定的条纹、网格或斑点,不随时间变化。这主要是因为传感器制造工艺的差异,每个像素的暗电流和增益不完全一致。
FPN的数学模型:
I_out(x,y) = G(x,y) * I_in(x,y) + O(x,y)
其中:
- I_out —— 输出像素值
- I_in —— 理想像素值
- G(x,y) —— 像素(x,y)的增益偏差
- O(x,y) —— 像素(x,y)的暗电流偏移
核心理解:FPN是乘性噪声(增益)和加性噪声(偏移)的组合。它不随机,是确定性的,所以理论上可以通过标定来校正。
我做过一个项目,客户投诉某款摄像头画面有“水波纹”。我一看就知道是FPN没校准好。后来用均匀光源采集了100帧暗场和亮场,计算每个像素的G和O,写入传感器寄存器,水波纹就消失了。
4.5 四种噪声的对比与实战选择
在实际项目中,你遇到的往往是多种噪声的混合体。我整理了一张对比表,方便你快速判断:
| 噪声类型 | 来源 | 分布特性 | 数学模型 | 典型场景 |
|---|---|---|---|---|
| 高斯噪声 | 热噪声、放大器噪声 | 正态分布,均匀 | P(x) = (1/(σ√2π))·exp(-(x-μ)²/(2σ²)) | 所有光照条件 |
| 泊松噪声 | 光子计数随机性 | 泊松分布,信号相关 | P(k) = λᵏ·e⁻λ / k! | 低照度、弱光 |
| 椒盐噪声 | 像素损坏、传输错误 | 脉冲式,稀疏 | P(0)=pₐ, P(255)=p_b | 硬件故障、传输干扰 |
| 固定模式噪声 | 传感器工艺差异 | 固定位置,不随机 | I_out = G·I_in + O | 所有场景(需标定) |
实战建议:我个人的习惯是,拿到一张噪声图像,先做三步诊断:
- 看噪声是否随信号强度变化 → 是则考虑泊松,否则高斯
- 看是否有固定位置的亮点/暗点 → 有则考虑FPN
- 看是否有随机出现的纯黑/纯白点 → 有则考虑椒盐
4.6 噪声模型知识图谱
下面这张图把四种噪声的核心要素串起来了,方便你建立整体认知:
4.7 噪声模型的参数估计
知道了模型,还得会估计参数。我常用的方法有几种:
- 高斯噪声:取一块均匀区域(比如天空),计算像素值的标准差σ。我习惯取100x100的块,多取几块取平均。
- 泊松噪声:在不同光照下采集多帧图像,计算每个像素的均值和方差,验证方差是否等于均值。
- 椒盐噪声:统计图像中纯黑(0)和纯白(255)像素的比例。注意要排除图像本身的黑白区域。
- 固定模式噪声:盖上镜头盖拍暗场,计算每个像素的偏移O;再用均匀光源拍亮场,计算增益G。
注意:参数估计的精度直接影响去噪效果。我曾经见过有人用100x100的块估计高斯噪声,结果块里有纹理,σ估计值偏大了一倍,去噪后图像糊成一片。所以,选块一定要选平坦区域。
好了,四种噪声的数学模型就讲到这里。理解了这些模型,后面讲去噪算法时,你就能明白为什么中值滤波对椒盐噪声有效,为什么高斯滤波对高斯噪声有效,为什么FPN需要标定而不是滤波。这些都是环环相扣的。