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) 光圈全开时的失焦
各向异性模糊 方向依赖的高斯核 光学像差、散光

我在项目中遇到过最坑的情况:用高斯模糊核训练的超分模型,拿到监控视频上测试,结果全是振铃效应。后来一查,监控摄像头的模糊其实是运动模糊和散焦模糊的混合体。所以,模糊核的假设直接决定了模型的泛化能力。

我的建议:实际落地时,不要假设模糊核是已知的。最好用盲超分(Blind SR)的思路,或者至少准备一个模糊核估计模块。

2.2.2 下采样(Downsampling)

下采样是把高分辨率图像缩小到低分辨率的过程。常见方式:

  • 最近邻插值 — 最简单,但会产生锯齿
  • 双线性插值 — 平滑,但会丢失高频细节
  • 双三次插值 — 工业界最常用,效果折中
  • 面积平均(Area Pooling) — 模拟传感器像素合并

这里有个关键点:下采样和模糊的顺序不能搞反。正确的物理顺序是:先模糊(抗混叠),再下采样。如果先下采样再模糊,那模糊操作就失去了抗混叠的意义。

我曾经踩过的坑:用 MATLAB 的 imresize 直接生成 LR 图像,默认会先做抗混叠滤波。但用 OpenCV 的 resize 默认不做。两种方式生成的训练数据,训练出来的模型性能差异能达到 1-2dB PSNR。所以,数据生成流程必须跟实际退化过程对齐。

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 倾向于生成自然图像
一句话总结:正则化项就是告诉模型「什么样的图像是合理的」。TV 先验说「边缘要锐利」,稀疏先验说「系数要简洁」,深度先验说「要像自然图像」。

2.3.3 迭代求解 vs 端到端学习

传统方法用迭代优化求解 MAP 问题,比如 ISTA、ADMM、HQS。这些方法可解释性强,但速度慢。

深度学习方法直接学习从 y 到 x 的映射:

x̂ = f_θ(y)

训练时最小化重建损失:

L = ||f_θ(y) - x_gt||²

两种思路各有优劣:

对比维度 迭代优化方法 端到端深度学习方法
推理速度 慢(几十到几百次迭代) 快(一次前向传播)
可解释性 高(每一步有物理含义) 低(黑盒)
退化模型适应性 强(可灵活更换模糊核) 弱(需要重新训练)
性能上限 受限于先验设计 高(大数据驱动)

我个人习惯:落地时用端到端模型做推理,但用迭代优化的思路做数据生成和模型微调。这样既保证了速度,又保留了灵活性。

2.4 本章知识结构图

下面这张图,把退化模型和逆问题求解的完整脉络画出来了:

图像退化模型与逆问题求解知识结构 高分辨率图像 x 模糊 ⊗ k 下采样 ↓_s 加噪 + n 低分辨率图像 y 正向退化过程(已知 x → 生成 y) 逆问题求解(已知 y → 估计 x̂) 观测图像 y MAP 估计框架 重建图像 x̂ 数据保真项 正则化项 TV 先验 稀疏先验 深度先验 迭代优化(ISTA/ADMM) 端到端学习(CNN/Transformer) 展开网络(Deep Unfolding)

2.5 落地实战中的退化模型选择

讲完理论,说点实际的。在落地项目中,退化模型的选择直接决定了最终效果。我总结了一个简单的决策流程:

  1. 先搞清楚你的数据是怎么来的 — 是手机拍的?监控摄像头?还是卫星遥感?不同传感器的退化特性完全不同。
  2. 能标定就别猜 — 如果条件允许,用棋盘格或点光源标定模糊核。我见过太多项目,花几个月调模型,最后发现换个标定好的模糊核,效果直接翻倍。
  3. 退化模型越简单,泛化越差 — 只用高斯模糊训练的模型,在真实场景下基本不能用。至少准备 3-5 种模糊核做数据增强。
  4. 噪声模型要跟 ISP 链路对齐 — 如果你处理的是 RAW 图,噪声模型要考虑 sensor 的增益、温度、曝光时间等因素。别直接用高斯噪声糊弄。
我的经验:在工业项目中,我通常会准备一个「退化模型池」,包含 10 种模糊核、3 种下采样方式、5 种噪声参数组合。训练时随机组合,测试时用盲估计模块自适应选择。这样出来的模型,在真实场景下的鲁棒性会好很多。