2. 图像退化模型:经典退化模型与逆问题求解思路
做超分和去噪,第一件事不是调模型,而是搞清楚——图像到底是怎么变糊的。
我刚开始接触这个方向时,上来就怼了一个 SRGAN,结果训练出来的模型,在真实低分辨率图像上效果一塌糊涂。后来才明白,问题出在退化模型上。你用的退化假设跟实际数据不匹配,模型学到的其实就是个「假映射」。
这一章,我们就来把退化模型彻底讲透。说白了,就是回答三个问题:
图像是怎么退化的?怎么用数学描述这个过程?以及,我们怎么反过来求解?
2.1 经典退化模型:一张高清图是怎么变糊的?
先看一个最通用的退化模型公式:
y = (x ⊗ k) ↓_s + n
其中:
- x — 原始高分辨率图像(我们要恢复的目标)
- k — 模糊核(点扩散函数,PSF)
- ⊗ — 卷积操作
- ↓_s — 下采样,缩放因子为 s
- n — 加性噪声
- y — 观测到的低分辨率图像
这个公式,就是超分和去噪领域最核心的「物理模型」。几乎所有算法,都是围绕它展开的。
2.2 三个退化要素的数学建模
2.2.1 模糊核(Blur Kernel)
模糊核,也叫点扩散函数(PSF)。它描述了一个理想点光源经过成像系统后,在图像上扩散成什么样子。
常见的模糊核类型:
| 类型 | 数学形式 | 典型场景 |
|---|---|---|
| 高斯模糊 | G(x,y) = (1/(2πσ²))·exp(-(x²+y²)/(2σ²)) | 镜头失焦、大气湍流 |
| 运动模糊 | 沿运动方向的均匀线 | 相机抖动、物体运动 |
| 散焦模糊 | 均匀圆盘(pillbox) | 光圈全开时的失焦 |
| 各向异性模糊 | 方向依赖的高斯核 | 光学像差、散光 |
我在项目中遇到过最坑的情况:用高斯模糊核训练的超分模型,拿到监控视频上测试,结果全是振铃效应。后来一查,监控摄像头的模糊其实是运动模糊和散焦模糊的混合体。所以,模糊核的假设直接决定了模型的泛化能力。
2.2.2 下采样(Downsampling)
下采样是把高分辨率图像缩小到低分辨率的过程。常见方式:
- 最近邻插值 — 最简单,但会产生锯齿
- 双线性插值 — 平滑,但会丢失高频细节
- 双三次插值 — 工业界最常用,效果折中
- 面积平均(Area Pooling) — 模拟传感器像素合并
这里有个关键点:下采样和模糊的顺序不能搞反。正确的物理顺序是:先模糊(抗混叠),再下采样。如果先下采样再模糊,那模糊操作就失去了抗混叠的意义。
2.2.3 噪声模型(Noise Model)
噪声是成像过程中不可避免的。不同传感器、不同光照条件下的噪声特性差异很大。
| 噪声类型 | 分布特性 | 常见来源 |
|---|---|---|
| 高斯噪声 | n ~ N(0, σ²) | 传感器热噪声、读出噪声 |
| 泊松噪声 | n ~ Poisson(λ) | 光子计数噪声(低光照) |
| 椒盐噪声 | 随机像素被置为0或255 | 传输错误、坏像素 |
| 均匀噪声 | n ~ U(-a, a) | 量化噪声 |
实际场景中,噪声往往是混合的。比如手机夜景模式,既有高斯噪声(传感器),又有泊松噪声(光子不足)。我一般建议:训练时用高斯+泊松混合噪声,测试时再根据实际传感器标定结果微调。
2.3 逆问题求解思路:从 y 反推 x
退化模型是正向过程:x → y。超分和去噪是逆向过程:y → x。这就是典型的图像逆问题。
为什么逆问题难?因为它是病态(ill-posed)的。一个低分辨率图像 y,可以对应无数个高分辨率图像 x。你想想看,下采样丢掉的细节,理论上可以有无限种补法。
解决病态问题的核心思路:引入先验知识(Prior)。
2.3.1 经典求解框架:MAP 估计
最大后验概率(MAP)框架是逆问题求解的基石:
x̂ = argmax_x P(x|y) = argmax_x P(y|x) · P(x)
取负对数后变成能量最小化问题:
x̂ = argmin_x [ -log P(y|x) - log P(x) ]
其中:
- -log P(y|x) — 数据保真项(Data Fidelity),衡量重建结果与观测数据的一致性
- -log P(x) — 正则化项(Regularization),编码对清晰图像的先验知识
2.3.2 常见的正则化先验
| 先验类型 | 数学形式 | 物理含义 |
|---|---|---|
| Tikhonov | ||∇x||² | 图像整体平滑 |
| TV(全变分) | ||∇x||₁ | 边缘保持,分段平滑 |
| 稀疏先验 | ||Ψx||₁ | 在变换域(小波、DCT)稀疏 |
| 非局部自相似 | 基于图像块匹配 | 图像中存在重复结构 |
| 深度先验(DIP) | 网络结构本身作为先验 | CNN 倾向于生成自然图像 |
2.3.3 迭代求解 vs 端到端学习
传统方法用迭代优化求解 MAP 问题,比如 ISTA、ADMM、HQS。这些方法可解释性强,但速度慢。
深度学习方法直接学习从 y 到 x 的映射:
x̂ = f_θ(y)
训练时最小化重建损失:
L = ||f_θ(y) - x_gt||²
两种思路各有优劣:
| 对比维度 | 迭代优化方法 | 端到端深度学习方法 |
|---|---|---|
| 推理速度 | 慢(几十到几百次迭代) | 快(一次前向传播) |
| 可解释性 | 高(每一步有物理含义) | 低(黑盒) |
| 退化模型适应性 | 强(可灵活更换模糊核) | 弱(需要重新训练) |
| 性能上限 | 受限于先验设计 | 高(大数据驱动) |
我个人习惯:落地时用端到端模型做推理,但用迭代优化的思路做数据生成和模型微调。这样既保证了速度,又保留了灵活性。
2.4 本章知识结构图
下面这张图,把退化模型和逆问题求解的完整脉络画出来了:
2.5 落地实战中的退化模型选择
讲完理论,说点实际的。在落地项目中,退化模型的选择直接决定了最终效果。我总结了一个简单的决策流程:
- 先搞清楚你的数据是怎么来的 — 是手机拍的?监控摄像头?还是卫星遥感?不同传感器的退化特性完全不同。
- 能标定就别猜 — 如果条件允许,用棋盘格或点光源标定模糊核。我见过太多项目,花几个月调模型,最后发现换个标定好的模糊核,效果直接翻倍。
- 退化模型越简单,泛化越差 — 只用高斯模糊训练的模型,在真实场景下基本不能用。至少准备 3-5 种模糊核做数据增强。
- 噪声模型要跟 ISP 链路对齐 — 如果你处理的是 RAW 图,噪声模型要考虑 sensor 的增益、温度、曝光时间等因素。别直接用高斯噪声糊弄。