clear
tic;
% 读文件
X=imread('Pirate512.bmp');
I=imnoise(X,'gaussian',0,0.01);
I1=double(I);
[a,b]=size(I1);
ww=DWT(a);
X1=ww*sparse(I1)*ww';
X1=full(X1);
% 随机矩阵生成
M=512;
R=randn(M,a);
% 测量
Y=R*X1;
% OMP算法
X2=zeros(a,b); % 恢复矩阵
for i=1:b % 列循环
rec=omp(Y(:,i),R,a);
X2(:,i)=rec;
end
% 压缩传感恢复的图像
X3=ww'*sparse(X2)*ww;
X3=full(X3);
toc;
% 误差(PSNR)
errorx=sum(sum(abs(X3-double(X)).^2)); % MSE误差
psnr=10*log10(255*255/(errorx/a/b)) % PSNR