基于字典SR各种方法【稀疏编码多种方法】
基于字典的图像超分辨率实现 - CSDN博客 http://blog.csdn.net/u011630458/article/details/65635155
简介
这段时间在看基于字典的单帧图像超分辨率重建,本篇主要是对这块做个笔记记录。
基本原理
预处理
1、准备好用于字典训练的低分辨率图像LR及与之对应的高分辨率图片HR。
2、将低分辨率图像双线性或者三次方插值到高分辨率图像相同大小,得到MR。
3、将MR图像分成若干个3x3或者5x5之类的小块,小块之间有1x1或者2x2之类的重叠区域,对应的高分辨率图像同样对应坐标位置,分成这个多块。
4、对MR的图像块做特征提取操作,可以是每个块减去该块平均值、或者是每个块做梯度散度提取。
非稀疏字典处理
方法一
1、MR特征块集合作为低分辨率字典,对应的高分辨率块集合作为高分辨率字典。
2、输入待处理的低分辨率图像,并用和字典训练一样的块大小做分割。
3、所有低分辨率图像分割块做特征提取。
4、每个特征块X,在低分辨率字典中找到最接近的K个块。
5、通过这K个块,拟合得到最接近该特征块的权重系数A。
6、找到高分辨率字典上对应的该K个块,乘上权重系数A,得到低分辨率块X对应的高分辨率图像块Y。
7、循环计算,直到所有低分辨率块都得到对应高分辨率块。
8、所有高分辨率块,根据之前分割坐标,反向贴合(块与块之间重合区域,直接平均),得到结果的高分辨率图像。
参考论文:Super-Resolution Through Neighbor Embedding
方法二
1、MR特征块集合作为低分辨率字典,对应的高分辨率块集合作为高分辨率字典。
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、所有高分辨率块,根据之前分割坐标,反向贴合(块与块之间重合区域,直接平均),得到结果的高分辨率图像。
参考论文:1、Image super-resolution as sparse representation of raw image patches.
2、On 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双线性插值效果, 右边为低配版方法三效果)
基于字典SR各种方法【稀疏编码多种方法】的更多相关文章
- 稀疏编码概率解释(基于1996年Olshausen与Field的理论 )
一.Sparse Coding稀疏编码 稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效地表示样本数据.稀疏编码算法的目的就是找到一组基向量 ,使得我们能将输入向量 表示为这些 ...
- 稀疏编码直方图----一种超越HOG的轮廓特征
该论文是一篇来自CMU 的CVPR2013文章,提出了一种基于稀疏编码的轮廓特征,简称HSC(Histogram of Sparse Code),并在目标检测中全面超越了HOG(Histogram o ...
- 使用mshta.exe绕过应用程序白名单(多种方法)
0x00 简介 很长一段时间以来,HTA文件一直被web攻击或在野恶意软件下载程序用作恶意程序的一部分.HTA文件在网络安全领域内广为人知,从红队和蓝队的角度来看,它是绕过应用程序白名单有价值的“ ...
- Sparsity稀疏编码(三)
稀疏编码(sparse coding)和低秩矩阵(low rank)的区别 上两个小结介绍了稀疏编码的生命科学解释,也给出一些稀疏编码模型的原型(比如LASSO),稀疏编码之前的探讨文章 ...
- Sparsity稀疏编码(一)
稀疏编码来源于神经科学,计算机科学和机器学习领域一般一开始就从稀疏编码算法讲起,上来就是找基向量(超完备基),但是我觉得其源头也比较有意思,知道根基的情况下,拓展其应用也比较有底气.哲学.神经科学.计 ...
- 稀疏编码(Sparse Coding)的前世今生(一) 转自http://blog.csdn.net/marvin521/article/details/8980853
稀疏编码来源于神经科学,计算机科学和机器学习领域一般一开始就从稀疏编码算法讲起,上来就是找基向量(超完备基),但是我觉得其源头也比较有意思,知道根基的情况下,拓展其应用也比较有底气.哲学.神经科学.计 ...
- 用 Python 排序数据的多种方法
用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭 ...
- MFC 在对话框显示图片的多种方法
我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一 ...
- 转载 deep learning:八(SparseCoding稀疏编码)
转载 http://blog.sina.com.cn/s/blog_4a1853330102v0mr.html Sparse coding: 本节将简单介绍下sparse coding(稀疏编码),因 ...
随机推荐
- java编写Loadrunner脚本
web.set_max_html_param_len("1000000"); lr.start_transaction("red_envelop"); web. ...
- vue 的 生命周期
图示: 解析: 那么下面我们来进行测试一下 <section id="app-8"> {{data}} </section> var myVue=new V ...
- Hibernate 第一个体验程序
首先要导入包,将下载的hibernate所有required包导入,将下载的hibernate用来写log的slf4j的api和nopjar包导入,将下载的mysql链接引擎jar包导入. 然后新建j ...
- Drupal启动阶段之二:页面缓存
页面缓存是什么意思?有些页面浏览量非常大,而且与状态无关,这类页面就可以使用页面缓存技术.在页面第一次请求完毕以后,将响应结果保存起来.下一次再请求同一页面时,就不需要从头到尾再执行一遍,只需要将第一 ...
- thinkphp 3.2多语言设置
1.将CheckLangBehavior.class.php(没有的话去下载完整版)文件放到此目录下:\ThinkPHP\Extend\Behavior 2.修改目录下文件Application\Ho ...
- HTML5学习笔记 视频
许多时髦的网站都提供视频.html5提供了展示视频的标准 检测您的浏览器是否支持html5视频 Web上的视频 直到现在,仍然不存在一项旨在网页上显示视频的标准. 今天,大多数视频是通过插件(比如Fl ...
- ajax 参数data问题 data中的 参数名 参数值为string 提交到后台后,会自动转换参数名相同的 类型 和 js字符串拼接
latlng"14.6005238,100.43635419999998"Cusid"accb5c1b-6aef-4f3b-a4eb-d60ea1ca5f54" ...
- win8安装Visual C++ 2015 build tools闪退解决办法
win8安装Visual C++ 2015 build tools闪退解决办法 安装Visual Studio 2015闪退问题也同样应用此解决办法. 1.控制面板——添加删除程序——启动关闭wind ...
- GNU--gprof使用总结
Added macros ACE_USES_GPROF which enables users to use gprof in a multithreaded environment with ACE ...
- SVN服务器更改ip地址客户端怎么设置(转载)
SVN 服务器 IP 地址修改后,客户端对服务器的连接可以采用以下的方法重定位: 1. 如果客户端工具是TortoiseSVN,直接在工作副本上右键,选择TortoiseSVN->relocat ...