Image super-resolution via sparse representation
首先要介绍的一点就是:字典的构建。这个在单帧超分中还是很重要的。
预处理
1、准备好用于字典训练的低分辨率图像LR及与之对应的高分辨率图片HR。
2、将低分辨率图像双线性或者三次方插值到高分辨率图像相同大小,得到MR。
3、将MR图像分成若干个3x3或者5x5之类的小块,小块之间有1x1或者2x2之类的重叠区域,
对应的高分辨率图像同样对应坐标位置,分成这个多块。
4、对MR的图像块做特征提取操作,可以是每个块减去该块平均值、或者是每个块做梯度散度提取。
稀疏字典处理
这里是引用https://blog.csdn.net/u011630458/article/details/65635155
常规稀疏字典训练:
1、首先通过DCT之内算法,得到一个初始字典。
2、预处理得到的低分辨率特征块,在初始字典中找到最相关原子。
3、该块和原子相减,得到残差,继续在字典中找到和该残差最接近的原子,继续相减,不断循环,
直到残差对于设置阀值或者循环次数超过一定范围,所有对应原子位置,存入稀疏矩阵A中。
4、循环处理,直到计算出所有块的稀疏矩阵A。
5、保持所有稀疏矩阵A不变,迭代更新字典,每次更新之后保证所有稀疏矩阵A和字典生成的块与原始低分辨率特征块,
误差更小。
6、当误差小于某个阀值之后,便得到对应低分辨率训练字典。
上文中谈到的DCT:
离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它与离散傅里叶变换类似,但是只使用实数。
这种变化经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损压缩。在压缩算法中,现将输入图像划分为8x8或16x16的图像块,对每个图像块作DCT变换;然后舍弃高频的系数,并对余下的系数进行量化以进一步减少数据量;最后使用无失真编码来完成压缩任务。解压缩时首先对每个图像块作DCT反变换,然后将图像拼接成一副完整的图像。
大多数自然信号(包括声音和图像)的能量都集中在余弦变换后的低频部分。由于人眼对于细节信息不是很敏感,因此信息含量更少的高频部分可以直接去掉,从而在后续的压缩操作中获得较高的压缩比。
下面介绍超分的实现
超分方法一:
1、输入待处理的低分辨率图像,并用和字典训练一样的块大小做分割。
2、所有低分辨率图像分割块做特征提取。
3、每个特征块,在低分辨率字典中找到最接近原子。
4、该块和原子相减,得到残差,继续在字典中找到和该残差最接近的原子,继续相减,不断循环,
直到残差对于设置阀值或者循环次数超过一定范围,所有对应原子位置,存入稀疏矩阵A中。
5、对应高分辨率字典和稀疏矩形A相乘,得到高分辨率图像块。
6、循环计算,直到所有低分辨率块都得到对应高分辨率块。
7、所有高分辨率块,根据之前分割坐标,反向贴合(块与块之间重合区域,直接平均),得到结果的高分辨率图像。
这篇文章中用的可能就是这个方法。
超分方法二:
1、在低分辨率字典中,每个原子找到若干个和它最接近的原子;高分辨率字典中,同样取出对应的这些原子。
2、使用最小二程法之类,计算这些低分辨率块、高分辨率原子之间的投影矩阵。
3、遍历完整个字典原子,最终每个原子,对应都有一团邻居原子及投影矩阵。
4、输入待处理的低分辨率图像,并用和字典训练一样的块大小做分割。
5、所有低分辨率图像分割块做特征提取。
6、找到每个低分辨率特征块X与字典中哪个类最接近,直接使用该类所属的投影矩阵,得到对应高分辨率块Y。
7、循环计算,直到所有低分辨率块都得到对应高分辨率块。
8、所有高分辨率块,根据之前分割坐标,反向贴合(块与块之间重合区域,直接平均),得到结果的高分辨率图像。