附录 D:术语表、深度索引与经典文献导读

本章概要
本附录旨在连接理论与实践,提供全书的“导航地图”。内容包含:

  1. D.1 符号系统详解:涵盖线性代数、凸分析及变分法中的标准符号。
  2. D.2 建模与算法决策指南:遇到具体成像问题时的“诊断流程图”与算法选型对比。
  3. D.3 经典文献注释书单:分门别类的必读论文清单(附“推荐理由”与核心贡献)。
  4. 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_Tbackward
$\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$ 是怎么来的?

  1. 线性且高斯噪声 ($y = Ax + n, n \sim \mathcal{N}$):
    • 模型: Least Squares $\frac{1}{2}|Ax-y|_2^2$。
    • 难点: $A$ 是否良态?若病态(如去模糊),必须加正则。
  2. 存在离群点/遮挡 (Outliers/Occlusions):
    • 模型: $\ell_1$ 数据项 $|Ax-y|_1$ 或 Huber Loss。
    • 高级: 使用 RPCA 思想,令 $y = Ax + S + n$,其中 $S$ 为稀疏大噪声。
  3. 光子计数/低光照 (Poisson Noise):
    • 模型: Kullback-Leibler (KL) 散度 $D_{KL}(Ax, y)$。
    • 注意: 必须约束 $x \ge 0$。
  4. 乘性噪声 (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)

当你的优化代码跑出来的结果是一片黑、全白或充满噪点时,请按此清单排查:

  1. 数据归一化:输入图像是否在 $[0, 1]$ 或 $[0, 255]$?模型参数 $\lambda$ 通常对尺度敏感。建议统一归一化到 $[0, 1]$。
  2. 伴随算子检查:实现 AA_T 后,务必运行 Dot-Product Test
    • 随机生成 $u, v$,计算 $\langle Au, v \rangle$ 和 $\langle u, A^*v \rangle$。
    • 两者的误差应小于机器精度($10^{-12}$)。如果很大,说明伴随算子写错了(这是最常见的错误)。
  3. 步长检查
    • 梯度下降/FISTA:步长是否大于 $1/L$($L$ 是 Lipschitz 常数)?发散通常是因为步长太大。
    • Primal-Dual:检查 $\tau \sigma |K|^2 \le 1$。
  4. 维度检查
    • Matlab/Python 中 reshape 导致的维度错位。
    • 傅里叶变换时 ifftshift 是否正确使用?卷积中心是否对齐?
  5. 目标函数曲线
    • 打印 $Cost(x_k)$。它应该(震荡地或单调地)下降。如果一直上升,符号弄反了或步长错了。