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 函数的零点,就是那些暗条纹的位置。

我常用这个特性来估计模糊参数:

  1. 对模糊图像做 FFT,得到频谱图
  2. 在频谱里找到暗条纹的方向(就是运动方向)
  3. 测量条纹间距,算出模糊长度 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 知识结构总览

下面这张图,把三种退化模型的关系串起来了。你一看就明白:

图像退化模型知识结构图 图像退化模型知识结构 退化图像 g(x,y) 运动模糊模型 噪声模型 低照度成像模型 匀速直线运动 频域零点条纹 PSF 估计 高斯噪声 泊松噪声 椒盐 / 均匀噪声 光照衰减因子 t Retinex 分解 信噪比低 / 偏色 理解退化模型 → 选择对应复原策略 → 避免“一刀切”算法

2.6 小结

这一节我们讲了三个核心模型:

  • 运动模糊 —— 关键是估计模糊长度 L 和方向 θ,频域零点条纹是重要线索
  • 噪声模型 —— 高斯、泊松、椒盐,各有各的数学描述和处理方法
  • 低照度成像 —— 光照衰减 + 噪声放大,Retinex 是经典框架

你想想看,如果连图像是怎么变差的都不清楚,你怎么可能把它修好?所以,模型先行,算法后上——这是我做图像增强十年来的铁律。