图像超分辨

匿名 (未验证) 提交于 2019-12-03 00:21:02

原博客地址:https://blog.csdn.net/u011630458/article/details/65635155




  这段时间在看基于字典的单帧图像超分辨率重建,本篇主要是对这块做个笔记记录。
     1、准备好用于字典训练的低分辨率图像LR及与之对应的高分辨率图片HR      2、将低分辨率图像双线性或者三次方插值到高分辨率图像相同大小,得到MR      3、将MR图像分成若干个3x3或者5x5之类的小块,小块之间有1x1或者2x2之类的重叠区域,对应的高分辨率图像同样对应坐标位置,分成这个多块。      4、对MR的图像块做特征提取操作,可以是每个块减去该块平均值、或者是每个块做梯度散度提取。
     1MR特征块集合作为低分辨率字典,对应的高分辨率块集合作为高分辨率字典。      2、输入待处理的低分辨率图像,并用和字典训练一样的块大小做分割。      3、所有低分辨率图像分割块做特征提取。      4、每个特征块X,在低分辨率字典中找到最接近的K个块。      5、通过这K个块,拟合得到最接近该特征块的权重系数A      6、找到高分辨率字典上对应的该K个块,乘上权重系数A,得到低分辨率块X对应的高分辨率图像块Y      7、循环计算,直到所有低分辨率块都得到对应高分辨率块。      8、所有高分辨率块,根据之前分割坐标,反向贴合(块与块之间重合区域,直接平均),得到结果的高分辨率图像。
     参考论文:Super-Resolution Through Neighbor Embedding
     1MR特征块集合作为低分辨率字典,对应的高分辨率块集合作为高分辨率字典。      2、将所有低分辨率块和高分辨率块集合,通过欧式距离,分成1024或者4096个类。      3、每个类中,使用最小二程法之类,计算对应所属的低分辨率块到高分辨率块之间的投影矩阵。      4、输入待处理的低分辨率图像,并用和字典训练一样的块大小做分割。      5、所有低分辨率图像分割块做特征提取。      6、找到每个低分辨率特征块X与字典中哪个类最接近,直接使用该类所属的投影矩阵,得到对应高分辨率块Y      7、循环计算,直到所有低分辨率块都得到对应高分辨率块。      8、所有高分辨率块,根据之前分割坐标,反向贴合(块与块之间重合区域,直接平均),得到结果的高分辨率图像。
     参考论文:Fast Direct Super-Resolution by Simple Functions
   常规稀疏字典训练:      1、首先通过DCT之内算法,得到一个初始字典。      2、预处理得到的低分辨率特征块,在初始字典中找到最相关原子。      3、该块和原子相减,得到残差,继续在字典中找到和该残差最接近的原子,继续相减,不断循环,直到残差对于设置阀值或者循环次数超过一定范围,所有对应原子位置,存入稀疏矩阵A中。      4、循环处理,直到计算出所有块的稀疏矩阵A      5、保持所有稀疏矩阵A不变,迭代更新字典,每次更新之后保证所有稀疏矩阵A和字典生成的块与原始低分辨率特征块,误差更小。      6、当误差小于某个阀值之后,便得到对应低分辨率训练字典。
     注意:用来去噪之类的字典可以这么训练,但是超分辨率重建需要高低分辨率字典联合训练,分别得到低分辨率字典和高分辨率字典,在这基础上,更复杂一点。      参考论文:On Single Image Scale-Up Using Sparse-Representations.
   方法一:      1、输入待处理的低分辨率图像,并用和字典训练一样的块大小做分割。      2、所有低分辨率图像分割块做特征提取。      3、每个特征块,在低分辨率字典中找到最接近原子。      4、该块和原子相减,得到残差,继续在字典中找到和该残差最接近的原子,继续相减,不断循环,直到残差对于设置阀值或者循环次数超过一定范围,所有对应原子位置,存入稀疏矩阵A中。      5、对应高分辨率字典和稀疏矩形A相乘,得到高分辨率图像块。      6、循环计算,直到所有低分辨率块都得到对应高分辨率块。      7、所有高分辨率块,根据之前分割坐标,反向贴合(块与块之间重合区域,直接平均),得到结果的高分辨率图像。
     参考论文:1Image super-resolution as sparse representation of raw image patches.                2On Single Image Scale-Up Using Sparse-Representations.
   方法二:      1、在低分辨率字典中,每个原子找到若干个和它最接近的原子;高分辨率字典中,同样取出对应的这些原子。      2、使用最小二程法之类,计算这些低分辨率块、高分辨率原子之间的投影矩阵。      3、遍历完整个字典原子,最终每个原子,对应都有一团邻居原子及投影矩阵。      4、输入待处理的低分辨率图像,并用和字典训练一样的块大小做分割。      5、所有低分辨率图像分割块做特征提取。      6、找到每个低分辨率特征块X与字典中哪个类最接近,直接使用该类所属的投影矩阵,得到对应高分辨率块Y      7、循环计算,直到所有低分辨率块都得到对应高分辨率块。      8、所有高分辨率块,根据之前分割坐标,反向贴合(块与块之间重合区域,直接平均),得到结果的高分辨率图像。
     参考论文:Anchored Neighborhood Regression for Fast Example-Based Super Resolution.
   方法三:      与方法二类似,区别在于:计算投影矩阵时候,每个原子寻找邻居不是找其他原子,而是在训练用的低分辨率、高分辨率块中找,论文中建议是2048个。    如此,计算出来的投影矩阵,得到的高分辨率图像,比方法二效果更好。
    参考论文:A+: Adjusted Anchored Neighborhood Regression for Fast Super-Resolution
    4倍插值效果比较(左边为opencv双线性插值效果, 右边为低配版方法三效果)
     

预处理
1、准备好用于字典训练的低分辨率图像LR及与之对应的高分辨率图片HR。
2、将低分辨率图像双线性或者三次方插值到高分辨率图像相同大小,得到MR。
3、将MR图像分成若干个3x3或者5x5之类的小块,小块之间有1x1或者2x2之类的重叠区域,对应的高分辨率图像同样对应坐标位置,分成这个多块。
4、对MR的图像块做特征提取操作,可以是每个块减去该块平均值、或者是每个块做梯度散度提取。
非稀疏字典处理

稀疏字典处理
常规稀疏字典训练:
1、首先通过DCT之内算法,得到一个初始字典。
2、预处理得到的低分辨率特征块,在初始字典中找到最相关原子。
3、该块和原子相减,得到残差,继续在字典中找到和该残差最接近的原子,继续相减,不断循环,直到残差对于设置阀值或者循环次数超过一定范围,所有对应原子位置,存入稀疏矩阵A中。
4、循环处理,直到计算出所有块的稀疏矩阵A。
5、保持所有稀疏矩阵A不变,迭代更新字典,每次更新之后保证所有稀疏矩阵A和字典生成的块与原始低分辨率特征块,误差更小。
6、当误差小于某个阀值之后,便得到对应低分辨率训练字典。

方法二
1、在低分辨率字典中,每个原子找到若干个和它最接近的原子;高分辨率字典中,同样取出对应的这些原子。
2、使用最小二程法之类,计算这些低分辨率块、高分辨率原子之间的投影矩阵。
3、遍历完整个字典原子,最终每个原子,对应都有一团邻居原子及投影矩阵。
4、输入待处理的低分辨率图像,并用和字典训练一样的块大小做分割。
5、所有低分辨率图像分割块做特征提取。
6、找到每个低分辨率特征块X与字典中哪个类最接近,直接使用该类所属的投影矩阵,得到对应高分辨率块Y。
7、循环计算,直到所有低分辨率块都得到对应高分辨率块。
8、所有高分辨率块,根据之前分割坐标,反向贴合(块与块之间重合区域,直接平均),得到结果的高分辨率图像。
方法三:
与方法二类似,区别在于:计算投影矩阵时候,每个原子寻找邻居不是找其他原子,而是在训练用的低分辨率、高分辨率块中找,论文中建议是2048个。
如此,计算出来的投影矩阵,得到的高分辨率图像,比方法二效果更好。



转载请标明出处:图像超分辨
文章来源: 图像超分辨
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!