当前位置 : 主页 > 编程语言 > python >

【图像重建】基于字典学习 W-KSVD图像低秩重建含Matlab源码

来源:互联网 收集:自由互联 发布时间:2022-06-18
1 简介 基 于超 完备字典的 图像稀疏表 示因其具有稀疏性、特征保持性 、可分性等特 点而被广 泛应用 于图像 处理。本文利用W-KSVD字典 学习算法并应用于 MR图像重建 。将 字典 学习等

1 简介

基 于超 完备字典的 图像稀疏表 示因其具有稀疏性、特征保持性 、可分性等特 点而被广 泛应用 于图像 处理 。本文利用 W-KSVD字典 学习算法并应用于 MR图像重建 。将 字典 学习等价于一 个二次规 划 问题 ,学习得到 的字典能有效描述图像特征。基于学习所得的字典,获得图像的稀疏表示,并重建原始图像.

【图像重建】基于字典学习 W-KSVD图像低秩重建含Matlab源码_无人机

【图像重建】基于字典学习 W-KSVD图像低秩重建含Matlab源码_d3_02

【图像重建】基于字典学习 W-KSVD图像低秩重建含Matlab源码_d3_03

2 部分代码

%==========================================================================
% 函数功能: 显示图像块的字典-显示原子用NxM的网格
% 输入参数:D - 字典
% sz - 图像块的大小
% n,m - 网格区域的大小
% varargin -其它参数
% - lines:用黑线隔开字典原子
% - whitelines:用白线隔开字典原子
% - highcontrast:增加显示的对比度
% 输出参数:x - 返回字典图像的位矩阵
%==========================================================================
function x = showdict(D,sz,n,m,varargin)
% -------------------------- 检查输入参数 ----------------------------------
if (size(D,2) < n*m)
D = [D zeros(size(D,1),n*m-size(D,2))];
end
linewidth = 1;
highcontrast = 0;
drawlines = 0;
linecolor = 0;
for i = 1:length(varargin)
if (~ischar(varargin{i}))
continue;
end
switch(varargin{i})
case 'highcontrast'
highcontrast = 1;
case 'lines'
drawlines = 1;
case 'whitelines'
drawlines = 1;
linecolor = 1;
case 'linewidth'
linewidth = varargin{i+1};
end
end
% ------------------------ 生成字典图像 ------------------------------------
if (drawlines)
D = [D ; nan(sz(1)*linewidth,size(D,2))];
sz(2) = sz(2)+linewidth;
x = col2im(D(:,1:n*m),sz,[n m].*sz,'distinct');
sz = [sz(2) sz(1)];
D = im2col(x',sz,'distinct');
D = [D ; nan(sz(1)*linewidth,size(D,2))];
sz(2) = sz(2)+linewidth;
x = col2im(D(:,1:n*m),sz,[m n].*sz,'distinct');
x = x';
x = x(1:end-linewidth,1:end-linewidth);
if (highcontrast)
for i = 0:n-1
for j = 0:m-1
x(i*sz(1)+1:i*sz(1)+sz(1)-linewidth, j*sz(2)+1:j*sz(2)+sz(2)-linewidth) = ...
imnormalize(x(i*sz(1)+1:i*sz(1)+sz(1)-linewidth, j*sz(2)+1:j*sz(2)+sz(2)-linewidth));
end
end
else
x = imnormalize(x);
end
x(isnan(x)) = linecolor;
else
x = col2im(D(:,1:n*m),sz,[n m].*sz,'distinct');
if (highcontrast)
for i = 0:n-1
for j = 0:m-1
x(i*sz(1)+1:i*sz(1)+sz(1), j*sz(2)+1:j*sz(2)+sz(2)) = ...
imnormalize(x(i*sz(1)+1:i*sz(1)+sz(1), j*sz(2)+1:j*sz(2)+sz(2)));
end
end
else
x = imnormalize(x);
end
end
if (nargout==0)
imshow(x);
end

3 仿真结果

【图像重建】基于字典学习 W-KSVD图像低秩重建含Matlab源码_无人机_04

【图像重建】基于字典学习 W-KSVD图像低秩重建含Matlab源码_d3_05

4 参考文献

[1]穆瑞娟, 徐胜南, 王春兴. 基于低秩约束和字典学习的图像超分辨率重建[J]. 山东师范大学学报:自然科学版, 2016, 31(4):7.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【图像重建】基于字典学习 W-KSVD图像低秩重建含Matlab源码_d3_06

网友评论