基于稀疏表示与字典学习的图像超分辨率算法
题目描述:
图像超分辨率的目标是从一张低分辨率图像中重建出对应的高分辨率图像。传统的插值方法(如双线性、双三次插值)往往导致结果模糊,丢失高频细节。基于稀疏表示与字典学习的图像超分辨率算法是一种经典且有效的重建方法。其核心思想是:自然图像块在一个过完备字典下具有稀疏表示,并且假设低分辨率图像块和高分辨率图像块共享同一稀疏表示系数。通过学习一个成对的低分辨率和高分辨率字典,可以利用低分辨率图像块的稀疏系数来重建对应的高分辨率图像块。本题目将详细讲解该算法的数学模型、学习过程以及重建步骤。
解题过程:
第一步:问题建模与稀疏表示基本假设
- 基本思路:我们将图像分割成相互重叠的小图像块进行处理。对于任意一个高分辨率图像块 \(\mathbf{y}_h \in \mathbb{R}^{n}\),假设存在一个过完备字典 \(\mathbf{D}_h \in \mathbb{R}^{n \times m}\) (n < m),使得 \(\mathbf{y}_h\) 可以近似表示为字典中少数原子的线性组合,即 \(\mathbf{y}_h \approx \mathbf{D}_h \boldsymbol{\alpha}\),其中 \(\boldsymbol{\alpha} \in \mathbb{R}^{m}\) 是稀疏系数向量(大部分元素为0)。
- 关键假设:通过一个已知的线性退化模型(如下采样、模糊),低分辨率图像块 \(\mathbf{y}_l \in \mathbb{R}^{p}\) (p < n) 可以从对应的高分辨率图像块退化得到。进一步假设,存在一个对应的低分辨率字典 \(\mathbf{D}_l\),使得高、低分辨率图像块在该对字典下具有相同的稀疏表示系数 \(\boldsymbol{\alpha}\)。即:
\[ \mathbf{y}_l \approx \mathbf{D}_l \boldsymbol{\alpha} \quad \text{和} \quad \mathbf{y}_h \approx \mathbf{D}_h \boldsymbol{\alpha} \]
- 重建流程:给定一个低分辨率图像,我们将其分块得到 \(\mathbf{y}_l\)。对于每个 \(\mathbf{y}_l\),我们在低分辨率字典 \(\mathbf{D}_l\) 上求解其稀疏表示系数 \(\boldsymbol{\alpha}\)。然后,将求得的 \(\boldsymbol{\alpha}\) 与高分辨率字典 \(\mathbf{D}_h\) 相乘,即可重建出对应的高分辨率图像块 \(\hat{\mathbf{y}}_h = \mathbf{D}_h \boldsymbol{\alpha}\)。最后,将所有重建的高分辨率图像块融合(如加权平均重叠区域),得到最终的高分辨率图像。
第二步:成对字典的学习
我们无法直接获得真实的高、低分辨率图像块对,但可以从外部高分辨率图像库中学习字典对。
- 准备训练数据:
- 收集大量高分辨率训练图像 \(\mathbf{X}_h\)。
- 通过人工退化(如:高斯模糊后下采样)得到对应的低分辨率图像 \(\mathbf{X}_l\)。
- 从 \(\mathbf{X}_h\) 和 \(\mathbf{X}_l\) 中,在相同位置提取图像块对 \(\{ \mathbf{p}_h^i, \mathbf{p}_l^i \}_{i=1}^N\),其中 \(\mathbf{p}_h^i\) 是高分辨率图像块向量,\(\mathbf{p}_l^i\) 是低分辨率图像块向量。通常会对这些块进行预处理,如减去均值、归一化。
- 字典学习的目标函数:我们希望学习一对字典 \(\mathbf{D}_h\) 和 \(\mathbf{D}_l\),使得所有训练图像块对都能用相同的稀疏系数 \(\boldsymbol{\alpha}^i\) 很好地表示,并且表示误差最小。这可以通过求解以下联合优化问题实现:
\[ \min_{\mathbf{D}_h, \mathbf{D}_l, \boldsymbol{\alpha}^i} \sum_{i=1}^{N} \left( \frac{1}{2} \|\mathbf{p}_l^i - \mathbf{D}_l \boldsymbol{\alpha}^i\|_2^2 + \frac{1}{2} \|\mathbf{p}_h^i - \mathbf{D}_h \boldsymbol{\alpha}^i\|_2^2 + \lambda \|\boldsymbol{\alpha}^i\|_1 \right) \]
* 前两项是重建误差项,确保用 $ \boldsymbol{\alpha}^i $ 和对应字典能分别重建出低分辨率和高分辨率图像块。
* 第三项是 $ \ell_1 $ 正则化项,用于约束系数 $ \boldsymbol{\alpha}^i $ 的稀疏性,$ \lambda $ 是控制稀疏程度的正则化参数。
- 学习算法:上述优化问题对 \(\{ \mathbf{D}_h, \mathbf{D}_l \}\) 和 \(\{ \boldsymbol{\alpha}^i \}\) 是非凸的,通常采用交替优化的方法(如K-SVD算法的扩展):
- 稀疏编码:固定字典 \(\mathbf{D}_h, \mathbf{D}_l\),为每个图像块对 \(( \mathbf{p}_l^i, \mathbf{p}_h^i )\) 求解稀疏系数 \(\boldsymbol{\alpha}^i\)。这等价于求解:
\[ \min_{\boldsymbol{\alpha}^i} \frac{1}{2} \| \begin{bmatrix} \mathbf{p}_l^i \\ \mathbf{p}_h^i \end{bmatrix} - \begin{bmatrix} \mathbf{D}_l \\ \mathbf{D}_h \end{bmatrix} \boldsymbol{\alpha}^i \|_2^2 + \lambda \|\boldsymbol{\alpha}^i\|_1 \]
这是一个标准的稀疏编码问题,可以使用正交匹配追踪、基追踪等算法求解。
* **字典更新**:固定所有稀疏系数 $ \{ \boldsymbol{\alpha}^i \} $,更新字典 $ \mathbf{D}_h $ 和 $ \mathbf{D}_l $。这可以通过类似K-SVD的方法,逐个更新字典原子及其对应的稀疏系数行。注意,高低分辨率字典的更新是耦合的,因为它们的原子需要对应同一个稀疏模式。
第三步:基于学习字典的超分辨率重建
- 输入与预处理:给定一张低分辨率输入图像 \(\mathbf{Y}_l\)。首先,用双三次插值将其上采样到目标高分辨率尺寸,得到初始高分辨率图像 \(\mathbf{Y}_{\text{init}}\)。然后,从 \(\mathbf{Y}_{\text{init}}\) 中提取重叠的图像块 \(\mathbf{y}_l\)(注意,这里的 \(\mathbf{y}_l\) 对应的是上采样后图像中的低分辨率特征块,与训练时提取自真正低分辨率图像有所不同,但通过退化模型关联,实践中常用此方式)。
- 稀疏编码:对于每个提取的低分辨率图像块 \(\mathbf{y}_l\)(通常也做去均值处理),在低分辨率字典 \(\mathbf{D}_l\) 上求解其稀疏表示系数 \(\hat{\boldsymbol{\alpha}}\):
\[ \hat{\boldsymbol{\alpha}} = \arg\min_{\boldsymbol{\alpha}} \frac{1}{2} \|\mathbf{y}_l - \mathbf{D}_l \boldsymbol{\alpha}\|_2^2 + \lambda \|\boldsymbol{\alpha}\|_1 \]
这一步为每个低分辨率块找到其在高/低字典空间中最稀疏的表示。
- 高分辨率块重建:利用上一步求得的稀疏系数 \(\hat{\boldsymbol{\alpha}}\) 和高分辨率字典 \(\mathbf{D}_h\),重建对应的高分辨率图像块:
\[ \hat{\mathbf{y}}_h = \mathbf{D}_h \hat{\boldsymbol{\alpha}} + \mathbf{m} \]
其中 $ \mathbf{m} $ 是从初始高分辨率图像对应块中提取的均值(或其它高频残差信息,具体方法因算法变体而异),用于恢复块的局部对比度。
- 块聚合与全局优化:
- 将所有重建的高分辨率图像块 \(\hat{\mathbf{y}}_h\) 放回它们在最终高分辨率图像网格中的对应位置。
- 由于块是重叠提取的,同一像素位置可能被多个块覆盖。通过对所有覆盖该像素的块值进行加权平均(通常权重与块中心距离相关),得到该像素的最终值。
- 为了进一步保证重建的全局一致性,有时会在所有块重建聚合后,增加一个全局约束优化步骤,例如要求最终高分辨率图像下采样后应尽可能接近原始输入的低分辨率图像。这可以通过梯度下降等迭代方法实现。
算法总结:
基于稀疏表示与字典学习的图像超分辨率算法,其核心在于利用自然图像块的稀疏先验,并通过学习一个耦合的高、低分辨率字典对,建立两个分辨率空间之间的稀疏表示映射关系。重建时,先在低分辨率字典空间求解输入块的稀疏系数,然后将此系数映射到高分辨率字典空间完成重建。该方法相比简单插值能恢复更多纹理细节,是连接传统模型驱动方法与现代深度学习超分辨率方法的重要桥梁。后续的许多深度学习方法(如SCN、SRCNN的某些思想)也受到了稀疏表示思想的启发。