2015-12-21 19:38:37 jiangjieqazwsx 阅读数 5186

        最近在拜读杨老师的基于稀疏字典的论文,并运行了作者提供的代码,遇到了一些问题,因为有人也问我这个问题,所以分享一下自己的心得(我的版本是matlab2013a):


最可能遇到的问题的显示如下:


箭头所指的函数就是问题所在,原代码里面train_couupled少传了一个参数,添加一个upscale参数就可以了(这个在文件Demo_Dicttionary_Training.m里面)


第二个可能遇到的问题是版本原因引起的,可能会出现以下提示:

Error using fmincon (line 816), Hessian option set to 'on' but no Hessian function provided in optio

我有测试过,在matlab13下是会出现这个提示,但是在2012下面运行正常

解决方案:

(在l2ls_learn_basis_dual.m文件中)找到options = optimset('GradObj','on', 'Hessian','on');

改成options = optimset('Algorithm','trust-region-reflective' ,'GradObj','on', 'Hessian','on');


这是我遇到的两个问题,希望对你有用。

2015-12-28 14:36:13 jiangjieqazwsx 阅读数 7853

最近在看杨建超老师的关于基于字典的SR方法,觉得特别有意思,在研究了作者的几篇论文和代码,并在南冲岭博友的帮助下,做了如下总结,希望对于刚接稀疏的朋友有帮助:

1.     什么是信号稀疏

信号稀疏的定义:


令字典D的原子个数M,信号维度为N,则有以下三种关系:

                     M = N时,D为完备的;

                     M > N时,D为冗余的;

                     M>>N时, D为过完备的。

图解如下:


 

 

2.     为什么要选择稀疏表示的方法

借鉴了压缩感知的思想,通过对大量低分辨率图像和高分辨率图像的稀疏表示和训练降维,实现超分辨率在整个学习样本空间的优化求解。一方面保证了足够的先验知识,减少了重构时所需的数据,提高了效率;另一方面有效克服了领域嵌入方法的过拟合或欠拟合现象。(可以稀疏化表示 )

 

3.     程序的流程图

流程图:



杨的是对一系列高分辨率图像进行HR图块的选取,再对这些高分辨率的图像降质,形成一系列LR的图块,组成训练集。

代码下载:

github代码链接

  

4.     有趣的地方

       a.字典训练的图片并不需要跟测试图片内容相同,例如,我要对一个人脸进行SRR,我的训练集的图片可以是花,建筑或者其它事物。只要结构相似就行。


    原因分析:因为在训练字典的时候,杨老师取的是样本的特征向量,所以只要图像块具有类似的特征就行,稀疏重建的过程本来也就是从字典中自适应的选择一个或者多个最适合当前输入低分辨率图像块特征的字典原子,利用这些字典原子的线性组合来得到相应的高频细节。不过,我个人认为,训练集最好和你需要处理的图像是相同类别的,例如,你要对人脸图像进行超分辨率重建的话,训练集最好大部分是人脸图像,这样重建的效果应该会好些;这个我觉得非常有意思。

 

       b.为什么要采用下面的方式选择图像高低图像块:作者从训练图片里面抽取出高分辨率的图像块Px,然后把这些图片进行减采样,再双三次插值成跟原训练图片一样大小的图片,抽取出低分辨率的图像块Py。

      原因分析:我查过相关文献,有文章说尽管低分辨率的图像存在退化降质,高分辨率图像与其对应的低分辨率图像的几何结构,或两者在变换域(字典)下的稀疏表示是近似的。

总结一下特征块的选取步骤:

低分辨率图像特征小块的步骤:首先对训练库中的高分辨率图像进行下采样处理,得到低分辨率图像,然后对得到的低分辨率图像进行上采样,通过插值得到与原始高分辨率图像同样大小的图像,最后,利用四个滤波器hf1, vf1, hf2,vf2来提取其中的高频细节特征。      高分辨率图像特征小块的获取简单些:首先,对训练库中原始高分辨率图像进行分块操作,然后,减去其均值即可。得到低分辨率图像特征小块和高分辨率图像特征小块之后,再将它们组合在一起进行联合字典训练来保证低分辨率图像块和高分辨率图像块稀疏表示系数的一致性。

 

        c.用来重建的图片似乎也不需要知道其分辨率是否跟前使用的一致?

        原因分析:杨建超老师这篇论文的主要思想是输入单幅低分辨率图像的每个图像块能够在一个低分辨率超完备字典上得到一组稀疏表示系数,高分辨率图像块能够用同样的稀疏表示系数在给定的高分辨率超完备字典上进行重建,然后由高分辨率图像块连接得到完整的高分辨率图像。这种基本思想的前提是,低分辨率超完备字典和高分辨率超完备字典需要进行联合训练来保证它们稀疏表示系数的一致性。因此,只要通过对训练集中的图片进行联合字典训练,得到了共同的稀疏表示系数,那么,对需要进行重建的输入图像的分辨率大小是没有要求的。只要我们能够提高训练图片的结构丰富性就好! 

 

5.      对程序的思考:

         a).很多地方都有中心化和归一化,在训练字典的时候,只对高分辨率块进行了去中心化,对低分辨率块进行了特征提取,为什么不需要对低分辨率块进行去中心化再提特征?是不是我去中心化后的特征将不是图片的高频信息的原因?

      用高分辨率图像块减去其均值是为了更好地表示图像的纹理,而后面对低分辨率样本做的是滤波处理,目的在于提取低分辨率图像的多种特征,不仅仅是纹理特征,所以没有对其进行减去均值的操作。

        b). 为什么在使用字典进行图像重建的时候,只对低分辨率块进行归一化?

       程序中对低分辨率图像字典Dl和输入图像块同时进行了归一化,然后利用Dl和y,优化求解得到稀疏表示系数w,归一化的操作让优化求解更快的收敛。后面,利用求解得到的稀疏表示系数w与高分辨率图像字典Dh相乘得到高分辨率图像块,对Dh只是一个相乘的操作,没必要归一化,如果要对Dh进行归一化的话,后面还得进行还原,这样反而增加了程序运行的复杂度,所以对高分辨率图像字典Dh可以不进行归一化。

 

6.      程序出错的地方

见博客杨建超老师代码可能遇到的问题


参考资料:

http://blog.csdn.net/geekmanong/article/details/44905279

2016-07-26 17:59:48 aixuexi6666 阅读数 83

 在看杨建超图像重建的程序,跟之前看的elm实验部分提到高斯,正好看到不知是不是,一回事,先记录一下:

这是杨建超的BackProjection的函数:

function [im_h] = backprojection(im_h, im_l, maxIter)


[row_l, col_l] = size(im_l);
[row_h, col_h] = size(im_h);


p = fspecial('gaussian', 5, 1);
p = p.^2;
p = p./sum(p(:));


im_l = double(im_l);
im_h = double(im_h);


for ii = 1:maxIter,
    im_l_s = imresize(im_h, [row_l, col_l], 'bicubic');
    im_diff = im_l - im_l_s;
    
    im_diff = imresize(im_diff, [row_h, col_h], 'bicubic');
    im_h = im_h + conv2(im_diff, p, 'same');
end

    

Matlab中fspecial的用法

Fspecial函数用于创建预定义的滤波算子,其语法格式为:
h = fspecial(type)
h = fspecial(type,parameters,sigma)
参数type制定算子类型,parameters指定相应的参数,具体格式为:
type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。
type= 'gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为 

0.5。
type= 'laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2。
type= 'log',为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5
type= 'prewitt',为prewitt算子,用于边缘增强,无参数。
type= 'sobel',为著名的sobel算子,用于边缘提取,无参数。
type= 'unsharp',为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2。

例子:

>> G=fspecial('gaussian',5)%参数为5,表示产生5*5的gaussian矩阵,如果没有,默认为3*3的矩阵。

G =

    0.0000    0.0000    0.0002    0.0000    0.0000
    0.0000    0.0113    0.0837    0.0113    0.0000
    0.0002    0.0837    0.6187    0.0837    0.0002
    0.0000    0.0113    0.0837    0.0113    0.0000
    0.0000    0.0000    0.0002    0.0000    0.0000

>> G=fspecial('gaussian',5,1.5)%1.5为滤波器的标准差。

G =

    0.0144    0.0281    0.0351    0.0281    0.0144
    0.0281    0.0547    0.0683    0.0547    0.0281
    0.0351    0.0683    0.0853    0.0683    0.0351
    0.0281    0.0547    0.0683    0.0547    0.0281
    0.0144    0.0281    0.0351    0.0281    0.0144

>> 

>> G=fspecial('average')%默认为3*3的矩阵。均值滤波

G =

    0.1111    0.1111    0.1111
    0.1111    0.1111    0.1111
    0.1111    0.1111    0.1111

>> G=fspecial('average',5)%会产生5*5的矩阵。

matlab中conv2 函数在计算二维卷积应用实例如下:

格式:C=conv2(A,B)
        C=conv2(Hcol,Hrow,A)
        C=conv2(...,'shape')
说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1];

C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2

返回二维卷积结果部分,参数 shape 可取值如下:
        》full 为缺省值,返回二维卷积的全部结果;
        》same 返回二维卷积结果中与 A 大小相同的中间部分;
        valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]

关于他的直接理解:

http://blog.csdn.net/viewcode/article/details/8209067


2015-11-28 14:20:14 zengjiqin 阅读数 761

1.杨建超的个人主页:关于超分辨重建的项目值得学习,附带有论文相关的代码

http://www.ifp.illinois.edu/~jyang29/

2.马毅的个人主页:关于稀疏表达及低秩的相关项目

http://yima.csl.illinois.edu/

3.Michael,Elad的个人主页:图像处理的大牛,有源代码

http://www.cs.technion.ac.il/~elad/

4.Lei Zhang的个人主页:具有关于最新字典的学习方法并附带源代码

http://www4.comp.polyu.edu.hk/~cslzhang/

5.关于C++学习的英文网站,及函数查询网页,c++学习的个人博客网站

http://www.codeproject.com/

http://www.cplusplus.com/

http://www.cnblogs.com/nihaoCPP/

https://www.chenlq.net/ 陈良桥

6.卡梅隆医学图像处理网站:公开的医学图像数据库

http://www.via.cornell.edu/

7.温碧汉学校主页

http://www.eecs.berkeley.edu/

8.SPAMS稀疏优化工具箱,SPAMS (SPArse Modeling Software) is an optimization toolbox for solving various sparse estimation problems

http://spams-devel.gforge.inria.fr/downloads.html

9.机器学习先关的博客(尤其是算法讲解很透彻)

http://blog.codinglabs.org/articles/pca-tutorial.html?from=timeline&isappinstalled=0

10.矩阵分解(稀疏编码,字典学习的相关MATLAB代码)

http://www.cvchina.info/2011/09/05/matrix-factorization-jungle/

11.代码大全,都有大牛的主页并附有论文中的实验数据Reproducible Research in Computational Science(重点)

http://www.csee.wvu.edu/~xinl/reproducible_research.html

12.医学图像处理的大牛主页(超分辨率)

http://personales.upv.es/jmanjon/

13.医学图像数据库下载

http://www.nitrc.org/frs/?group_id=313

14.A general statistical analysis for fMRI data

http://www.math.mcgill.ca/keith/fmristat/

15.张建个人主页:关于超分辨率附有有源代码

http://124.207.250.90/staff/zhangjian/index-cn.html

15.LeiZhang个人主页附有源代码

http://www4.comp.polyu.edu.hk/~cslzhang/

2018-09-11 10:22:22 u010713502 阅读数 1532

(1)稀疏编码方法(Sparse Coding)

(2)Self-Exemplars

(3)贝叶斯方法

(4)基于金字塔算法

(5)深度学习方法(近几年文章很多啊)

  • Accurate Image Super-Resolution Using Very Deep Convolutional Networks (CVPR2016)
  • Deeply-Recursive Convolutional Network for Image Super-Resolution (CVPR2016)
  • Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network (CVPR2016)
  • Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution (CVPR 2017),
  • Enhanced Deep Residual Networks for Single Image Super-Resolution (Winner of NTIRE2017 Super-Resolution Challenge)

关于深度学习在超分辨率重建中的应用:https://zhuanlan.zhihu.com/p/25532538?utm_medium=social&utm_source=weibo

给出了几种实现方法及介绍,github里面相应的项目实现。另外还发现一篇有点尺度的文章《用GAN去除(爱情)动作片中的马赛克和衣服》,感兴趣的请参见这里

(6)Perceptual Loss and GAN(损失函数上改进)

 

  • Perceptual Losses for Real-Time Style Transfer and Super-Resolution (ECCV2016)
  • Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network (CVPR2017)

(7)Google基于哈希机制的实现

分析:http://blog.csdn.net/jiangjieqazwsx/article/details/69055753

(8)视频SR

  • https://users.soe.ucsc.edu/~milanfar/software/superresolution.html
  • Real-Time Video Super-Resolution with Spatio-Temporal Networks and Motion Compensation (CVPR2017)

小结:SR使用稀疏编码方法取得的方法已经堪称state-of-the-art级别,深度学习出现后又将效果进一步提升。

增补:

今天看到一篇论文:

《Super-Resolution From a Single Image 》(http://www.wisdom.weizmann.ac.il/~vision/SingleImageSR.html),

http://cs.brown.edu/courses/csci1950-g/results/final/pachecoj/ ,

另外附几个相关网页:

https://people.mpi-inf.mpg.de/~kkim/supres/supres.htm

《Example-Based-Super-Resolution-Freeman》

增补:

神经网络实现:

(1)《Accelerating the Super-Resolution Convolutional Neural Network》,使用matlab的实现。

(2)《Pixel Recursive Super Resolution》,项目实现链接

180911增补:

有关项目网站:https://github.com/huangzehao/Super-Resolution.Benckmark

SRCNN测试代码

阅读数 436

没有更多推荐了,返回首页