稀疏表示学习笔记(四)-- 应用实例与压缩感知
稀疏表示学习(四)
本次主要学习资料是Duke大学Guillermo Sapiro教授的公开课——Image and video processing, by Pro.Guillermo Sapiro 课程。该课程可以在 Bilibili 上找到学习资源。
1. 稀疏建模实例:图像去噪、修复与去马赛克
基本想法很简单, y y y 表示带噪声的图像(our data), x x x 是我们正在寻找的。我们不打算处理整个图像,而是处理补丁(patch)。 R R R 是一个基本的简单二进制矩阵,它提取出以 ( i , j ) (i,j) (i,j) 为中心的 patch,例如 8 × 8 8\times 8 8×8 大小的 patch。注意这些 patch 之间是有重叠的,因为每次考虑的中心是挪向下一个。可见我们并非一次处理整个图像,而是处理所有重叠的 patches。
我们可以通过一个大型图片数据集进行离线学习字典,也可以使用图像本身学习使其适应于具体问题。也可以将通过离线学习出来的字典作为初始化,然后使用新图像对字典进行调整。
如果将字典学习考虑进来,则模型转化为下述形式:
不断通过 K-SVD 算法循环优化字典及其稀疏表示。当字典和稀疏表示训练得差不多(收敛),最终出来的结果基本上就是 patches 的加权平均值。每个像素都被多个 patches 所考虑,如果 patch 的大小为 8 × 8 8\times 8 8×8 的,则有 64 个 patches 考虑了同一个像素,除非该像素位于图像的边界附近。
灰度图像去噪实例
我们有一张原图(不可见的),一张添加高斯噪声后的噪声图(已知的),以及一个 64 × 256 64 \times 256 64×256 大小的初始化过完备字典,这里考虑的patch 大小为 8 × 8 8\times 8 8×8 。
最终可以通过这张已知的带噪图学习出一个字典,如下所示。通过两个方面减少了噪声:
- 将每个 patch 投射到空间中并使用稀疏编码
- 平均化 patch
彩色图像去噪实例
主要困难是定义不同彩色通道 R G B 之间的关系。一种最简单的解决方法是考虑一个 3D patch,即大小为 8 × 8 × 3 8 \times 8 \times 3 8×8×3。
Image Inpating 实例
去除原始图像80%的信息,再进行恢复,这个和压缩感知有关,在后续章节中会进行学习讨论。尽管我们只有 20% 的像素,我们也能进行很好的重建。
同样也可以做到删除某些像素,例如去文字,去雨等等。
Video Inpainting 实例
我们可以单独完成每一帧的 Inpainting,也可以进行实物 patch,即在 XY 和时间轴 T 三个维度进行讨论,可以将三帧或者五帧合到一起等等。
去马赛克实例 Demosaicing
这个去马赛克和去除图像中的马赛克不一样,这是从 RGGB 原始信号对图像进行恢复,大多数相机无法同时获取到一个像素点上红色、绿色和蓝色的强度值,只能获取其中一个。类似 Inpainting,不过每个像素点上仅仅有 R 或 G 或 B 的强度值,而前者即使整个像素缺失了也能进行恢复。通过 n × n × 3 n \times n \times 3 n×n×3 的 patch 来进行学习。
2. 压缩感知简述 Compressed Sensing
压缩感知基本上是使用一些我们已经学习过的概念,但是它的目标不是建模表示信号的信号,而是提供新的采样或者新的感知范式。
假设信号 x x x 可以通过非常稀疏的表示 a 0 a_0 a0 进行重建, x = D a 0 x = Da_0 x=Da0,其中 D D D 是一个字典。
压缩感知想要的是,我们考虑在上式上乘上一个矩阵 Q Q Q,然后可以减少行数。 Q Q Q 有 N N N 列,但是少于 N N N 行,这就是压缩的来源。
Q
Q
Q 和
D
D
D 的乘积其实可以看成一个新的字典
D
ˉ
\bar{D}
Dˉ。最终得到的
x
ˉ
\bar{x}
xˉ 并不等于
x
x
x,而是等于比
x
x
x 更短的的有意义的向量。此时我们有
D
ˉ
\bar{D}
Dˉ 和
x
ˉ
\bar{x}
xˉ ,来计算
α
\alpha
α 就和以前是一样的。然后我们通过
D
α
D\alpha
Dα 就可以实现对
x
x
x 的恢复重建。
压缩感知必须要保证这个恢复是可能的。