• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Matlab
  • 标签: OMP算法  

资源简介

基于MATLAB OMP算法对图像的恢复

资源截图

代码片段和文件信息

function mcyOMP2
clc;clear
X=imread(‘G:\Program Files\MATLAB\R2012b\graduate\rm.jpg‘); % 读文件
if ndims(X)>2
    X=rgb2gray(X);
end
X=imresize(X[256 256]);
X=double(X);
[ab]=size(X);
ww=DWT(a); % 小波变换矩阵生成
X1=ww*sparse(X)*ww‘; % 小波变换让图像稀疏化(注意该步骤会耗费时间,但是会增大稀疏度
X1=full(X1);
M=128; % 随机矩阵生成
R=randn(Ma);
Y=R*X1; % 测量
% OMP算法
X2=zeros(ab); % 恢复矩阵
for i=1:b % 列循环       
    rec=omp(Y(:i)Ra);
    X2(:i)=rec;
end
figure(1); % 原始图像
imshow(uint8(X));
title(‘原始图像‘);
figure(2); % 变换图像
imshow(uint8(X1));
title(‘小波变换后的图像‘);
figure(3); % 压缩传感恢复的图像
X3=ww‘*sparse(X2)*ww; % 小波反变换
X3=full(X3);
imshow(uint8(X3));
title(‘恢复的图像‘);
% 误差(PSNR)
errorx=sum(sum(abs(X3-X).^2));        % MSE误差
PSNR=10*log10(255*255/(errorx/a/b))   % PSNR
MSE=errorx/a/b
match=1-sum(abs(X3-X).^2)/sum(abs(X3+X).^2)
% OMP的函数
% s-测量;T-观测矩阵;N-向量大小
function hat_y=omp(sTN)
Size=size(T);                                     % 观测矩阵大小
M=Size(1);   

评论

共有 条评论