附录 D:术语表、深度索引与经典文献导读
本章概要:
本附录旨在连接理论与实践,提供全书的“导航地图”。内容包含:
- D.1 符号系统详解:涵盖线性代数、凸分析及变分法中的标准符号。
- D.2 建模与算法决策指南:遇到具体成像问题时的“诊断流程图”与算法选型对比。
- D.3 经典文献注释书单:分门别类的必读论文清单(附“推荐理由”与核心贡献)。
- D.4 常见算法特性速查表:收敛速度、参数敏感度与内存开销对比。
D.1 符号与术语约定 (Extended Notation & Terminology)
为了消除不同文献间的符号歧义,本书统一采用以下标准。
1. 空间与几何
| 符号 | 含义 | 详细说明 |
| 符号 | 含义 | 详细说明 |
|---|---|---|
| $\mathbb{R}^N, \mathbb{C}^N$ | 实/复欧几里得空间 | 图像通常被视为 $\mathbb{R}^{H \times W}$ 或向量化后的 $\mathbb{R}^N$。 |
| $\Omega$ | 图像定义域 | 连续域中 $\Omega \subset \mathbb{R}^2$;离散域中指像素索引集合。 |
| $\langle x, y \rangle$ | 内积 (Inner Product) | 标准点积 $x^T y$ 或 $\text{tr}(X^T Y)$。 |
| $\text{dom}(f)$ | 有效定义域 | $\{x \mid f(x) < +\infty\}$,对于指示函数很重要。 |
| $\Gamma_0(\mathbb{R}^N)$ | 函数类 | 所有真(proper)、下半连续(lower semi-continuous)、凸(convex)函数的集合(Prox 算子存在的必要条件)。 |
2. 算子与矩阵
| 符号 | 含义 | 详细说明 |
| 符号 | 含义 | 详细说明 |
|---|---|---|
| $A, \Phi, \mathcal{K}$ | 线性算子 | $A$ 常用于通用逆问题;$\Phi$ 常用于压缩感知;$\mathcal{K}$ 常用于卷积核。 |
| $A^*$ | 伴随算子 (Adjoint) | 若 $y=Ax$,则 $\langle Ax, y \rangle = \langle x, A^*y \rangle$。代码中对应 A_T 或 backward。 |
| $\nabla, \text{div}$ | 梯度与散度 | $\nabla: \text{Image} \to \text{Vector Field}$;$\text{div} = -\nabla^*$。 |
| $D, \mathcal{D}$ | 字典 (Dictionary) | $D \in \mathbb{R}^{N \times K}$,通常 $K > N$ (过完备)。 |
| $\sigma_i(X)$ | 奇异值 | 矩阵 $X$ 的第 $i$ 大奇异值。 |
| $\mathcal{S}_{\tau}(\cdot)$ | 软阈值算子 | Soft-thresholding,$\mathcal{S}_\tau(x) = \text{sgn}(x)\max(\lvert x\rvert-\tau, 0)$,$\ell_1$ 的 Prox。 |
3. 范数与度量
| 符号 | 名称 | 数学定义 | 物理/几何直觉 |
| 符号 | 名称 | 数学定义 | 物理/几何直觉 |
|---|---|---|---|
| $|x|_2$ | $\ell_2$ 范数 | $\sqrt{\sum x_i^2}$ | 能量,平滑,高斯噪声假设。 |
| $|x|_1$ | $\ell_1$ 范数 | $\sum \lvert x_i\rvert$ | 稀疏性,拉普拉斯分布,鲁棒误差。 |
| $|x|_0$ | $\ell_0$ 伪范数 | $#\{i \mid x_i \neq 0\}$ | 真实的稀疏度(NP难)。 |
| $|X|_*$ | 核范数 (Nuclear) | $\sum \sigma_i(X)$ | 矩阵秩的凸松弛,用于低秩恢复。 |
| $|X|_F$ | Frobenius 范数 | $\sqrt{\sum \sigma_i^2} = \sqrt{\sum X_{ij}^2}$ | 矩阵元素的 $\ell_2$ 能量。 |
| $|x|_\infty$ | $\ell_\infty$ 范数 | $\max_i \lvert x_i\rvert$ | 最大幅值,常与对偶范数有关。 |
| $D_f(x, y)$ | Bregman 距离 | $f(x) - f(y) - \langle \nabla f(y), x-y \rangle$ | 广义距离,用于 Split Bregman 和镜像下降。 |
D.2 建模与算法决策指南 (Decision Guide)
本节通过“诊断问题”的方式,帮助读者在众多的模型和算法中找到合适的切入点。
第一步:诊断退化模型 (Forward Model Diagnosis)
问题:我的数据 $y$ 是怎么来的?
- 线性且高斯噪声 ($y = Ax + n, n \sim \mathcal{N}$):
- 模型: Least Squares $\frac{1}{2}|Ax-y|_2^2$。
- 难点: $A$ 是否良态?若病态(如去模糊),必须加正则。
- 存在离群点/遮挡 (Outliers/Occlusions):
- 模型: $\ell_1$ 数据项 $|Ax-y|_1$ 或 Huber Loss。
- 高级: 使用 RPCA 思想,令 $y = Ax + S + n$,其中 $S$ 为稀疏大噪声。
- 光子计数/低光照 (Poisson Noise):
- 模型: Kullback-Leibler (KL) 散度 $D_{KL}(Ax, y)$。
- 注意: 必须约束 $x \ge 0$。
- 乘性噪声 (Speckle/SAR):
- 策略: 对数变换转为加性噪声,或使用专门的 Gamma 分布数据项。
第二步:选择先验知识 (Prior Selection)
问题:我期望恢复出的图像 $x$ 长什么样?
| 图像特征 | 推荐正则项 | 典型应用 | 备注 |
| 图像特征 | 推荐正则项 | 典型应用 | 备注 |
|---|---|---|---|
| 分段常数/卡通 | Total Variation (TV) | 医学图像(MRI/CT)、深度图 | 经典但有阶梯效应 (Staircasing)。 |
| 平滑但有边缘 | TGV (二阶TV) 或 Huber-TV | 自然图像去噪 | 改善阶梯效应。 |
| 重复纹理/细节 | Patch-based (Dictionary/Non-local) | 超分辨率、纹理修复 | 计算量大,效果好。 |
| 全局相关性 | Low Rank (核范数) | 视频背景建模、对齐人脸 | 处理矩阵数据 $X$。 |
| 已知基下稀疏 | Wavelet/Framelet $\ell_1$ | 压缩感知 | 快速,适合全图恢复。 |
| 物理约束 | $x \in [0, 1]$ 或 单纯形约束 | 高光谱解混、概率图 | 需使用投影算子 (Projection)。 |
第三步:算法选型决策树 (Algorithm Flowchart)
问题:我该写哪个算法的代码?
[开始]
|
+--- 目标函数是否光滑 (Differentiable)?
| |
| +-- [是] (e.g., L2 + Tikhonov)
| +-- [是] (e.g., L2 + Tikhonov)
| | |
| | +-- A 是否是大规模矩阵?
| | +-- [否] -> 直接求逆/Cholesky分解 (Closed-form)
| | +-- [是] -> 共轭梯度法 (CG) 或 L-BFGS
| |
| +-- [否] (包含 L1, TV, 核范数, 约束)
| |
| +-- 正则项是否简单 (Proximable)? (e.g., f(x) + g(x), g简单)
| | |
| | +-- [是] -> ISTA / FISTA (近端梯度法)
| | | (适合: Lasso, 稀疏编码)
| |
| +-- 是否包含线性复合算子 (e.g., ||Kx||_1)?
| |
| +-- [是] -> 算子 K 是否易于求逆 (如正交/FFT对角化)?
| |
| +-- [是] -> ADMM / Split Bregman
| | (适合: 周期边界去模糊, MRI)
| |
| +-- [否] -> Primal-Dual (Chambolle-Pock)
| (适合: TV去噪, 光流, 通用逆问题)
|
+--- 是否追求极致效果与SOTA?
|
+-- [是] -> Plug-and-Play (PnP) 或 Deep Unrolling
(用预训练去噪器代替 Prox)
D.3 经典文献注释书单 (Annotated Bibliography)
这里的文献是变分图像处理领域的里程碑。标记 [Must Read] 的建议精读。
1. 基础理论与全变分 (TV & Foundations)
- [Rudin, Osher, Fatemi 1992] Nonlinear total variation based noise removal algorithms (ROF).
- 贡献: 提出了 TV 模型,定义了图像处理的变分范式。
- 理由: 一切的起源,理解 TV 的几何意义。
- [Getreuer 2012] Rudin, Osher, and Fatemi Total Variation Denoising.
- 贡献: 极好的综述与算法复现细节。
- 理由: [Must Read] 入门最佳材料,包含详细的对偶算法推导。
2. 稀疏表示与压缩感知 (Sparsity & CS)
- [Donoho 2006] Compressed Sensing.
- 贡献: 证明了从少量测量恢复稀疏信号的可能性。
- 理由: 改变了数据采集的底层逻辑。
- [Aharon, Elad, Bruckstein 2006] K-SVD: An Algorithm for Designing Overcomplete Dictionaries.
- 贡献: 将字典学习变成了一个可行的工程问题。
- 理由: 稀疏表示在图像处理中的巅峰之作。
3. 核心优化算法 (Optimization Solvers)
- [Beck & Teboulle 2009] A Fast Iterative Shrinkage-Thresholding Algorithm (FISTA).
- 贡献: 引入 Nesterov 动量,将一阶方法收敛率从 $O(1/k)$ 提升到 $O(1/k^2)$。
- 理由: [Must Read] 简单高效,稀疏优化首选。
- [Boyd et al. 2011] Distributed Optimization and Statistical Learning via ADMM.
- 贡献: ADMM 的百科全书,统一了各种分裂算法的视角。
- 理由: [Must Read] 写得非常通俗,工程必读。
- [Chambolle & Pock 2011] A First-Order Primal-Dual Algorithm for Convex Problems.
- 贡献: 解决了非光滑合成算子问题(如 TV),无需线性算子求逆。
- 理由: 现代非光滑优化的瑞士军刀,灵活性极高。
4. 低秩与矩阵恢复 (Low Rank & RPCA)
- [Candes et al. 2011] Robust Principal Component Analysis?
- 贡献: 证明了核范数+L1范数可以将低秩矩阵和稀疏噪声完全分离。
- 理由: 背景建模、去除阴影/遮挡的理论基础。
5. 深度学习与优化结合 (Deep Learning Era)
- [Venkatakrishnan et al. 2013] Plug-and-Play priors for model based reconstruction.
- 贡献: 提出“优化算法中的 Prox 步骤可以用现成的去噪器(如 NLM, CNN)替换”。
- 理由: 连接传统优化与深度学习的桥梁。
- [Zhang & Ghanem 2018] ISTA-Net: Interpretable Optimization-Inspired Deep Network.
- 贡献: 将 FISTA 算法展开(Unrolling)成神经网络层。
- 理由: 可解释深度网络的代表作。
D.4 常见算法特性速查 (Algorithm Cheat Sheet)
在工程落地时,除了理论收敛性,还需要考虑内存和调参难度。
| 算法 | 适用场景 | 优点 | 缺点/陷阱 | 典型迭代复杂度 |
| 算法 | 适用场景 | 优点 | 缺点/陷阱 | 典型迭代复杂度 |
|---|---|---|---|---|
| PGD / ISTA | 简单 $f+g$ (Lasso) | 实现极简,内存低 | 收敛慢,对病态算子 $A$ 敏感 | $O(1/k)$ |
| FISTA | 简单 $f+g$ | 收敛快 | 无法保证目标函数单调下降(有波纹) | $O(1/k^2)$ |
| ADMM | 约束多,$A^TA+I$ 易逆 | 极为鲁棒,分解复杂问题 | 子问题求逆难;$\rho$ 参数敏感 | 线性收敛 (一般) |
| Primal-Dual (CP) | 复杂算子 (TV, 光流) | 无需矩阵求逆,逐点运算 | 步长需满足 $\tau\sigma |A|^2 < 1$,需估计算子范数 | $O(1/k)$ 或 $O(1/k^2)$ |
| Split Bregman | $\ell_1$ / TV 正则 | 对 $\ell_1$ 问题收敛极快 | 等价于 ADMM,但推导视角不同 | 线性收敛 |
| IRLS | 非凸 $\ell_p$ ($p<1$) | 易于利用加权最小二乘代码 | 每次需解线性方程组;局部最优 | - |
| PnP-ADMM | 追求 SOTA 视觉效果 | 利用深度网络去噪能力 | 收敛性难以严格证明;调参玄学 | 取决于去噪器 |
D.5 调试自救清单 (Debug Checklist)
当你的优化代码跑出来的结果是一片黑、全白或充满噪点时,请按此清单排查:
- 数据归一化:输入图像是否在 $[0, 1]$ 或 $[0, 255]$?模型参数 $\lambda$ 通常对尺度敏感。建议统一归一化到 $[0, 1]$。
- 伴随算子检查:实现
A和A_T后,务必运行 Dot-Product Test:- 随机生成 $u, v$,计算 $\langle Au, v \rangle$ 和 $\langle u, A^*v \rangle$。
- 两者的误差应小于机器精度($10^{-12}$)。如果很大,说明伴随算子写错了(这是最常见的错误)。
- 步长检查:
- 梯度下降/FISTA:步长是否大于 $1/L$($L$ 是 Lipschitz 常数)?发散通常是因为步长太大。
- Primal-Dual:检查 $\tau \sigma |K|^2 \le 1$。
- 维度检查:
- Matlab/Python 中
reshape导致的维度错位。 - 傅里叶变换时
ifftshift是否正确使用?卷积中心是否对齐?
- Matlab/Python 中
- 目标函数曲线:
- 打印 $Cost(x_k)$。它应该(震荡地或单调地)下降。如果一直上升,符号弄反了或步长错了。