2. 图像退化模型与物理基础
做去雾算法,第一件事不是调参数,而是理解雾是怎么来的。
我刚开始接触这个方向时,也踩过坑——拿着深度学习模型直接怼雾图,结果效果时好时坏。后来才明白,不懂物理模型,调参就是瞎蒙。
这一章,我们把雾天成像的物理基础讲透。顺便把多帧合成的数学底子也搭起来。
2.1 大气散射模型
雾天拍照,光线是怎么到传感器的?
说白了,相机接收到的光由两部分组成:
- 直接衰减:物体反射的光,穿过雾气,一路被散射削弱
- 大气光:环境光被雾气颗粒散射进相机,形成雾蒙蒙的底色
这就是经典的大气散射模型,公式长这样:
I(x) = J(x) * t(x) + A * (1 - t(x))
其中:
| 符号 | 含义 | 备注 |
|---|---|---|
| I(x) | 观测到的雾图 | 你拿到的原始图像 |
| J(x) | 无雾的清晰图像 | 我们要恢复的目标 |
| t(x) | 透射率 | 光线穿透雾气的比例,0~1 |
| A | 全局大气光 | 天空区域的亮度值 |
这个模型,是所有去雾算法的起点。你想想看,只要估计出 t(x) 和 A,就能反推出 J(x)。
核心思路:去雾 = 从 I(x) 中分离出 J(x),关键在透射率 t(x) 和大气光 A 的估计。
2.2 雾天图像退化原理
为什么雾天图像对比度低、颜色发白?
原因就两个:
- 物体信号衰减:距离越远,
t(x)越小,物体细节越模糊 - 大气光叠加:雾越浓,
A * (1 - t(x))占比越大,图像整体偏灰白
我记得有一次做车载摄像头去雾,发现远处车辆几乎消失在雾里。当时测了一下,距离200米时透射率已经降到0.3以下。说白了,雾天图像退化,本质是信噪比急剧下降。
经验之谈:透射率 t(x) 与场景深度 d(x) 呈指数关系:t(x) = e^(-β * d(x))。β 是大气散射系数,雾越浓 β 越大。
这里有个避坑点——不要假设全局透射率一致。我见过有人用单一 t 值做去雾,结果近处过暗、远处还是雾蒙蒙。真实场景中,透射率是随深度变化的。
2.3 多帧合成的数学基础
单帧去雾有天花板——信息不够。多帧合成就不一样了,你想想看,多张图互相补充,能恢复出更多细节。
多帧合成的核心两步:配准 + 融合。
2.3.1 配准:把多张图对齐
手持拍摄,帧与帧之间肯定有偏移。配准就是算出一个变换矩阵,把各帧映射到同一坐标系。
常用的配准模型:
| 模型 | 自由度 | 适用场景 |
|---|---|---|
| 平移变换 | 2 | 纯抖动,无旋转 |
| 仿射变换 | 6 | 小角度旋转 + 平移 |
| 透视变换 | 8 | 大角度变化、视角差异 |
我个人习惯先用光流法做粗配准,再用特征匹配精调。光流法速度快,但精度一般;特征匹配(比如 SIFT、ORB)精度高,但计算量大。
注意:配准不准,融合就是灾难。我曾经在运动场景下用全局仿射变换,结果车辆边缘出现重影。后来改用局部光流 + 鲁棒估计才解决。
2.3.2 融合:把对齐后的信息合并
配准完成后,多帧信息怎么合并?
常见融合策略:
- 均值融合:简单平均,能降噪,但会模糊细节
- 中值融合:对异常点鲁棒,适合去除运动物体
- 加权融合:根据置信度分配权重,质量高的帧贡献更大
- 金字塔融合:多尺度分解,低频均值、高频取最大
我做多帧去雾时,常用加权融合 + 拉普拉斯金字塔。低频部分用均值平滑雾区,高频部分保留边缘细节。效果比单帧去雾好一大截。
多帧合成的优势:通过多帧信息互补,可以突破单帧去雾的信息瓶颈,尤其在透射率估计和噪声抑制上效果显著。
2.4 知识结构总览
下面这张图,把本章的核心逻辑串起来了:
2.5 本章小结
这一章,我们干了三件事:
- 搞懂了大气散射模型——去雾的物理根基
- 理清了雾天退化原理——信号衰减 + 大气光叠加
- 搭起了多帧合成数学框架——配准 + 融合