2. 图像退化模型:运动模糊、噪声模型与低照度成像模型
做图像增强,第一步不是调算法,而是搞清楚——图像到底是怎么变差的。
我早年接手过一个安防项目,晚上监控画面全是雪花和拖影。老板说“你调调参数就行”,结果我折腾了两周,效果还不如原图。后来我才明白:不懂退化模型,调参就是瞎蒙。
这一节,咱们把三种最常见的退化模型掰开揉碎讲清楚。你理解了它们,后面的防抖和低照度增强才有根。
2.1 图像退化的通用数学框架
先说个通用公式。几乎所有退化过程,都能写成这样:
g(x,y) = h(x,y) * f(x,y) + n(x,y)
其中:
- f(x,y) —— 原始清晰图像(你想恢复的那个)
- h(x,y) —— 退化函数(模糊核、点扩散函数 PSF)
- n(x,y) —— 加性噪声
- g(x,y) —— 观测到的退化图像
- * —— 卷积操作
说白了,你看到的烂图 = 好图被模糊了一下,再撒上一层噪声。这个框架虽然简单,但几乎所有去模糊、去噪、低照度增强算法,都是围绕它展开的。
核心思路: 图像复原的本质,就是已知 g 和部分先验信息,反推 f。但注意——h 和 n 通常也是未知的,这就是所谓的“盲复原”问题。
2.2 运动模糊模型
运动模糊,说白了就是曝光期间物体或相机在动。我做过一个手持夜景拍摄的项目,快门一慢,画面就糊成一片。那种模糊不是随机的,它有明确的方向和长度。
2.2.1 匀速直线运动模糊
最常见的运动模糊模型,是匀速直线运动。假设曝光时间 T 内,图像在水平方向移动了 L 个像素,那么它的点扩散函数(PSF)长这样:
h(x,y) =
1/L, 当 0 ≤ x ≤ L-1, y = 0
0, 其他情况
嗯,就是一个均匀的“条状核”。如果运动方向是斜的,旋转一下就行。
| 参数 | 含义 | 典型值(手持拍摄) |
|---|---|---|
| L(模糊长度) | 曝光期间像素位移量 | 5~30 像素 |
| θ(模糊角度) | 运动方向与水平轴夹角 | 0°~360° |
| T(曝光时间) | 快门开启时长 | 1/30s ~ 1s |
避坑指南: 我曾经以为模糊长度 L 越大越好估计,结果发现当 L > 50 像素时,频域里的零点太多,反卷积反而会放大噪声。后来我学乖了——先做边缘检测,再在频域里找“暗条纹”来估计 L 和 θ。
2.2.2 频域特性
运动模糊在频域里有个很有意思的特性——零点条纹。水平运动模糊的频谱里,会出现一组平行的暗条纹,条纹间距和模糊长度 L 成反比。
为什么会这样?因为运动模糊相当于在空域做平均,在频域就是 sinc 函数。sinc 函数的零点,就是那些暗条纹的位置。
我常用这个特性来估计模糊参数:
- 对模糊图像做 FFT,得到频谱图
- 在频谱里找到暗条纹的方向(就是运动方向)
- 测量条纹间距,算出模糊长度 L
2.3 噪声模型
噪声这东西,你躲不开。传感器热噪声、光子散粒噪声、量化噪声……但别怕,大部分噪声都能用几个经典模型描述。
2.3.1 高斯噪声
最常见,也最好处理。它来自传感器热噪声、放大器噪声。概率密度函数:
p(z) = (1 / (σ√(2π))) * exp(-(z-μ)² / (2σ²))
其中 μ 是均值(通常为 0),σ 是标准差(控制噪声强度)。
2.3.2 泊松噪声(散粒噪声)
低照度环境下,光子数量少,光子到达的随机性就特别明显。这就是泊松噪声。它的特点是:信号越强,噪声越大。
我做过一个星空摄影的项目,暗部全是颗粒感。那就是泊松噪声。高斯去噪一上去,星星细节全没了。后来改用泊松去噪模型,效果才出来。
| 噪声类型 | 来源 | 与信号关系 | 典型场景 |
|---|---|---|---|
| 高斯噪声 | 热噪声、放大器 | 独立于信号 | 传感器、传输 |
| 泊松噪声 | 光子散粒效应 | 方差 = 均值 | 低照度、医学成像 |
| 椒盐噪声 | 像素损坏、传输错误 | 随机黑白点 | 老旧传感器、无线传输 |
| 均匀噪声 | 量化、D/A 转换 | 均匀分布 | 量化误差 |
注意: 低照度图像中,泊松噪声和高斯噪声往往同时存在。我建议用“泊松-高斯混合模型”来描述,而不是单独用其中一种。否则去噪后要么残留噪声,要么过度平滑。
2.4 低照度成像模型
低照度图像,不只是“暗”那么简单。它有三个核心问题:
- 信噪比低 —— 信号弱,噪声相对突出
- 动态范围压缩 —— 暗部细节被量化到很窄的灰度区间
- 颜色偏移 —— 色彩通道增益不平衡,出现偏色
2.4.1 经典低照度模型
我常用的低照度成像模型是这样的:
g(x,y) = f(x,y) * t(x,y) + n(x,y)
其中:
- f(x,y) —— 场景辐射度(真实亮度)
- t(x,y) —— 透射率/光照衰减因子(0~1)
- n(x,y) —— 噪声(泊松+高斯)
说白了,低照度就是光照不足 + 噪声放大。t(x,y) 越小,说明那个区域越暗,噪声越明显。
2.4.2 Retinex 理论
说到低照度增强,绕不开 Retinex。它把人眼感知的亮度分解成两部分:
S(x,y) = R(x,y) · L(x,y)
- S —— 观测到的图像
- R —— 反射分量(物体固有属性)
- L —— 光照分量(环境照明)
增强的目标,就是估计并去除 L,保留 R。我做过一个夜间视频增强项目,直接用 Retinex 分解,然后对 L 做 Gamma 校正,对 R 做对比度拉伸。效果比单纯直方图均衡好得多。
我的经验: Retinex 分解时,光照分量 L 的估计很关键。我习惯用引导滤波(Guided Filter)代替传统高斯滤波,边缘保持更好,不会出现光晕伪影。
2.5 知识结构总览
下面这张图,把三种退化模型的关系串起来了。你一看就明白:
2.6 小结
这一节我们讲了三个核心模型:
- 运动模糊 —— 关键是估计模糊长度 L 和方向 θ,频域零点条纹是重要线索
- 噪声模型 —— 高斯、泊松、椒盐,各有各的数学描述和处理方法
- 低照度成像 —— 光照衰减 + 噪声放大,Retinex 是经典框架
你想想看,如果连图像是怎么变差的都不清楚,你怎么可能把它修好?所以,模型先行,算法后上——这是我做图像增强十年来的铁律。