本文主要是实现论文--基于稀疏表示的图像超分辨率《Image Super-Resolution Via Sparse Representation》中的Figure2,通过对100000个高分辨率和低分辨率图像块训练得到的高分辨率图像块字典,字典原子总数为512,图像块尺寸大小为9X9

方法一:

[cpp] view plaincopy
  1. clc;
  2. clear all;
  3. % load dictionary
  4. load('Dictionary/D_512_0.15_9.mat');
  5. patch_size=9;
  6. nRow=24;
  7. nCol=22;
  8. D=Dh';
  9. w=nCol*patch_size;
  10. h=nRow*patch_size;
  11. gridx = 1:patch_size :w;
  12. gridx = [gridx, w-patch_size+1];
  13. gridy = 1:patch_size : h;
  14. gridy = [gridy, h-patch_size+1];
  15. K=512; %字典原子总数
  16. DD=cell(1,K);
  17. row=length(gridx);
  18. col=length(gridy);
  19. hIm=zeros([w,h]);
  20. for i=1:K
  21. DD{i}=D(i,:);
  22. end
  23. for ii = 1:length(gridx),
  24. for jj = 1:length(gridy),
  25. yy = gridx(ii);
  26. xx = gridy(jj);
  27. if (ii-1)*nRow+jj >K
  28. break
  29. end
  30. temp=DD{(ii-1)*nCol+jj};
  31. hPatch=reshape(temp,[patch_size,patch_size]);
  32. hIm(yy:yy+patch_size-1, xx:xx+patch_size-1) = hIm(yy:yy+patch_size-1, xx:xx+patch_size-1) +hPatch;
  33. end
  34. end
  35. figure;
  36. imagesc(hIm);
  37. colormap(gray);
  38. axis image;

输出结果:

可以看出,相比于论文中字典的显示图,颜色有点浅,通过调节MATLAB的colorbar,可以将背景颜色变深,

结果如下图所示:

方法二:

通过http://www.cs.technion.ac.il/~elad/software/提供的ksvd工具箱中的displayDictionaryElementsAsImage( )函数,来实现字典的显示。

displayDictionaryElementsAsImage.m

[cpp] view plaincopy
  1. function I = displayDictionaryElementsAsImage2(D, numRows, numCols,X,Y,sortVarFlag)
  2. % function I = displayDictionaryElementsAsImage(D, numRows, numCols, X,Y)
  3. % displays the dictionary atoms as blocks. For activation, the dictionary D
  4. % should be given, as also the number of rows (numRows) and columns
  5. % (numCols) for the atoms to be displayed. X and Y are the dimensions of
  6. % each atom.
  7. borderSize = 1;
  8. columnScanFlag = 1;
  9. strechEachVecFlag = 1;
  10. showImFlag = 1;
  11. if (length(who('X'))==0)
  12. X = 8;
  13. Y = 8;
  14. end
  15. if (length(who('sortVarFlag'))==0)
  16. sortVarFlag = 1;
  17. end
  18. numElems = size(D,2);
  19. if (length(who('numRows'))==0)
  20. numRows = floor(sqrt(numElems));
  21. numCols = numRows;
  22. end
  23. if (length(who('strechEachVecFlag'))==0)
  24. strechEachVecFlag = 0;
  25. end
  26. if (length(who('showImFlag'))==0)
  27. showImFlag = 1;
  28. end
  29. %%% sort the elements, if necessary.
  30. %%% construct the image to display (I)
  31. sizeForEachImage = sqrt(size(D,1))+borderSize;
  32. I = zeros(sizeForEachImage*numRows+borderSize,sizeForEachImage*numCols+borderSize,3);
  33. %%% fill all this image in blue
  34. I(:,:,1) = 1; %min(min(D));
  35. I(:,:,2) = 1; %min(min(D));
  36. I(:,:,3) = 1; %max(max(D));
  37. % %%% fill all this image in blue
  38. % I(:,:,1) = 0; %min(min(D));
  39. % I(:,:,2) = 0; %min(min(D));
  40. % I(:,:,3) = 1; %max(max(D));
  41. %%% now fill the image squares with the elements (in row scan or column
  42. %%% scan).
  43. if (strechEachVecFlag)
  44. for counter = 1:size(D,2)
  45. D(:,counter) = D(:,counter)-min(D(:,counter));
  46. if (max(D(:,counter)))
  47. D(:,counter) = D(:,counter)./max(D(:,counter));
  48. end
  49. end
  50. end
  51. if (sortVarFlag)
  52. vars = var(D);
  53. [V,indices] = sort(vars');
  54. indices = fliplr(indices);
  55. D = [D(:,1:sortVarFlag-1),D(:,indices+sortVarFlag-1)];
  56. signs = sign(D(1,:));
  57. signs(find(signs==0)) = 1;
  58. D = D.*repmat(signs,size(D,1),1);
  59. D = D(:,1:numRows*numCols);
  60. end
  61. counter=1;
  62. for j = 1:numRows
  63. for i = 1:numCols
  64. %         if (strechEachVecFlag)
  65. %             D(:,counter) = D(:,counter)-min(D(:,counter));
  66. %             D(:,counter) = D(:,counter)./max(D(:,counter));
  67. %         end
  68. %         if (columnScanFlag==1)
  69. %             I(borderSize+(i-1)*sizeForEachImage+1:i*sizeForEachImage,borderSize+(j-1)*sizeForEachImage+1:j*sizeForEachImage,1)=reshape(D(:,counter),8,8);
  70. %             I(borderSize+(i-1)*sizeForEachImage+1:i*sizeForEachImage,borderSize+(j-1)*sizeForEachImage+1:j*sizeForEachImage,2)=reshape(D(:,counter),8,8);
  71. %             I(borderSize+(i-1)*sizeForEachImage+1:i*sizeForEachImage,borderSize+(j-1)*sizeForEachImage+1:j*sizeForEachImage,3)=reshape(D(:,counter),8,8);
  72. %         else
  73. % Go in Column Scan:
  74. I(borderSize+(j-1)*sizeForEachImage+1:j*sizeForEachImage,borderSize+(i-1)*sizeForEachImage+1:i*sizeForEachImage,1)=reshape(D(:,counter),X,Y);
  75. I(borderSize+(j-1)*sizeForEachImage+1:j*sizeForEachImage,borderSize+(i-1)*sizeForEachImage+1:i*sizeForEachImage,2)=reshape(D(:,counter),X,Y);
  76. I(borderSize+(j-1)*sizeForEachImage+1:j*sizeForEachImage,borderSize+(i-1)*sizeForEachImage+1:i*sizeForEachImage,3)=reshape(D(:,counter),X,Y);
  77. %         end
  78. counter = counter+1;
  79. end
  80. end
  81. if (showImFlag)
  82. I = I-min(min(min(I)));
  83. I = I./max(max(max(I)));
  84. imshow(I,[]);
  85. end

测试程序

displayDictionary_test.m

[cpp] view plaincopy
  1. clc;
  2. clear all;
  3. %加载字典
  4. load('F:\Research\ScSR\ScSR\Dictionary\D_512_0.15_9.mat');
  5. patch_size=9;
  6. D=Dh;
  7. K=512;
  8. figure;
  9. %调用KSVD工具箱中的字典显示函数
  10. im=displayDictionaryElementsAsImage(D, floor(sqrt(K)), floor(size(D,2)/floor(sqrt(K))),patch_size,patch_size);

输出结果:

方法三:

因为方法一显示的字典图像偏灰,对比度不强,所以通过对字典原子像素值进行拉伸变化到0-1,增强图像对比度。

[cpp] view plaincopy
  1. clc;
  2. clear all;
  3. % load dictionary
  4. load('Dictionary/D_512_0.15_9.mat');
  5. patch_size=9;
  6. nRow=24;
  7. nCol=22;
  8. D=Dh';
  9. w=nCol*patch_size;
  10. h=nRow*patch_size;
  11. gridx = 1:patch_size :w;
  12. gridx = [gridx, w-patch_size+1];
  13. gridy = 1:patch_size : h;
  14. gridy = [gridy, h-patch_size+1];
  15. K=512; %字典原子总数
  16. DD=cell(1,K);
  17. row=length(gridx);
  18. col=length(gridy);
  19. hIm=zeros([w,h]);
  20. for i=1:K
  21. DD{i}=D(i,:);
  22. end
  23. for ii = 1:length(gridx),
  24. for jj = 1:length(gridy),
  25. yy = gridx(ii);
  26. xx = gridy(jj);
  27. if (ii-1)*nRow+jj >K
  28. break
  29. end
  30. temp=DD{(ii-1)*nCol+jj};
  31. hPatch=reshape(temp,[patch_size,patch_size]);
  32. I=hPatch;
  33. I = I-min(min(min(I)));
  34. I = I./max(max(max(I)));%对字典原子像素值进行拉伸变化到0-1
  35. hIm(yy:yy+patch_size-1, xx:xx+patch_size-1) = hIm(yy:yy+patch_size-1, xx:xx+patch_size-1) +I;
  36. end
  37. end
  38. figure;
  39. imshow(hIm);

调整参数,将字典原子像素值拉伸变换到0-0.7

[cpp] view plaincopy
  1. hPatch=reshape(temp,[patch_size,patch_size]);
  2. I=hPatch;
  3. I = I-min(min(min(I)));
  4. I = 0.7*I./max(max(max(I)));%对字典原子像素值进行拉伸变化到0-0.7

稀疏表示字典的显示【MATLAB实现】相关推荐

  1. 稀疏表示字典的显示(MATLAB实现代码)

    本文主要是实现论文--基于稀疏表示的图像超分辨率<Image Super-Resolution Via Sparse Representation>中的Figure2.通过对100000个 ...

  2. 判别性的低秩字典学习代码matlab,基于分类的判别性字典学习的稀疏编码算法研究...

    第1章绪论1.1课题研究的背景及意义计算机视觉一直是人类视觉研究中的一项非常热门的领域.计算机视觉研究的目的是为了让计算机能够利用图像和图像序列来识别和感知周围的世界,以帮助人们在复杂的情况下解决未知 ...

  3. windows 下 putty 登陆服务器 显示matlab图形界面

    本文需要下载 putty.exe 和 pscp.exe :http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Xming 主 ...

  4. matlab只显示y一部分,突出显示matlab图的部分内容

    我有一个matlab图,看起来像这样: 其中每个子图的Y值存储在单维数组中.我想要做的是找到一个顶部图形高于某个高度的区域,如0.5.我还想在其他图表中突出显示相同的区域. 这是我正在谈论的一个例子: ...

  5. 稀疏表示 河流多元信息处理 matlab

    稀疏表示河流多元信息处理 前言 具体步骤和结果 一.简要介绍多源数据稀疏表示 1)稀疏表示: 2)稀疏表示在多源信息中的应用: 二.四个源头的比重 1) 构建字典 2)计算系数矩阵 3)加权后的距离 ...

  6. 【图像融合】基于稀疏表示多光谱图像融合含Matlab源码

    1 简介 高分辨率的多光谱图像应用广泛,比如变化监测,目标识别,场景解译.通常,商用光学卫星能够同时提供高空间分辨率的全色图像和低分辨率的多光谱图像.物理条件的限制使得单一传感器无法获得高质量的多光谱 ...

  7. plot绘图只能在工具栏的预览显示,无法全屏弹窗显示---matlab 不学无术小问题

    背景:小白在使用他人源码时,对MATLAB中的函数不熟悉,运行成功后发现plot绘图无法直接弹窗显示,只能在工具栏的预览显示. 为了解决此问题对绘图部分所有函数都进行了仔细调试,终于发现问题出在set ...

  8. matlab eval 不显示,matlab中 eval(command); 运算符无效的问题

    下面这个程序是haar-like特征提取-->haar-like关键点显示-->haar-like特征人脸检测代码,该段代码在运行时出现了如图片所示的bug,本人看不懂这个bug出错的根源 ...

  9. matlab相位连续显示,matlab设计复合信号不同频率的初相位

    生成原始信号 为了方便起见,生成一个包含三个频率的复信号,分别是5Hz.10Hz.15Hz,初相位分别为 采样率取100,采样点取512个,代码如下. clc;clear; Fs =100;%采样率 ...

最新文章

  1. win2003禁止web等目录执行exe,bat,com的方法
  2. Pandas-层次化索引
  3. Linux 学习记录 二 (文件的打包压缩).
  4. matlab彩色图像变暗
  5. 微信快速开发框架(八)-- V2.3--增加语音识别及网页获取用户信息,代码已更新至Github...
  6. JAVA JDK 、Maven、IDEA安装
  7. 经典:趣解什么叫网关?
  8. js高级学习笔记(b站尚硅谷)-16-原型链的继承
  9. OPNET14.5+WIN10+VS2010安装教程(附安装包)
  10. web前端设计--二级菜单栏
  11. 《第一行代码Android(第3版)》— Android 书籍
  12. 51单片机:点亮LED灯
  13. java web pring log4j_springmvc之log4j
  14. 嵌入式监控【v4l2采集-vpu编码-live555推流】
  15. C语言|博客作业09
  16. vue添加axios及页面的导航、搜索、分页
  17. JavaScript弹出模式窗口
  18. 笔记本WIN7建立共享wifi的简单方法
  19. 产品基础能力研习:CRM系统
  20. 爬虫练习-爬取笔趣阁小说

热门文章

  1. SQL注入:5、SQL盲注
  2. Helgrind:螺纹错误检测器
  3. Python base64编码解码
  4. MySql的存储过程介绍及语法实例操作
  5. Luogu P2319 [HNOI2006]超级英雄
  6. CentOS7.2安装MySql5.7并开启远程连接授权
  7. SpringBoot解决redirect参数中文乱码问题
  8. Poj_1325 Machine Schedule -最大匹配性质题目
  9. Asp: 解决脚本输出网页出现乱码情况
  10. 使用Architecture Explorer分析应用程序及使用层次图