压缩感知和 Haar 小波

compressive sensing and Haar wavelet

我想使用 CS 从更少的样本中重建图像。

我使用高斯随机矩阵作为测量矩阵。我的问题是 Psi matrix 我想成为 Haar wavelet 系数,但我不知道如何定义它。

我使用了 DCTFourier 基础并且效果很好。这是我的基于 Fourier 的代码。

谁能告诉我如何将 Psi 矩阵定义为 haar 小波 变换?

提前致谢。

clc
clear all
close all
[fn,fp]=uigetfile({'*.*'});
tic 
A=im2double(rgb2gray(imread([fp,fn])));
figure(1),imshow(A)
xlabel('original')
x=A(:);
n=length(x);
m=1900;
Phi=randn(m,n);   %Measurment Matrix
Psi=fft(eye(n));   %sensing Matrix( or can be dct(eye(n)) )
y=Phi*x;  %compressed signal
Theta=Phi*Psi;
%Initial Guess:  y=Theta*s => s=Theta\y
s2=Theta\y;
%Solution
s1=OMP( Theta, y, 1e-3);
%Reconstruction
x1=Psi*s1;
figure,imshow(reshape(x1,size(A))),xlabel('OMP')
toc

您只需要生成一个适当维度的 haar 矩阵。考虑这个 MATLAB 函数:

function [h]=haargen(N)
% Generating Haar Matrix
ih=zeros(N,N); 
h(1,1:N)=ones(1,N)/sqrt(N);
for k=1:N-1 
p=fix(log(k)/log(2)); 
q=k-(2^p); 
k1=2^p; t1=N/k1; 
k2=2^(p+1); t2=N/k2; 
for i=1:t2 
h(k+1,i+q*t1)   = (2^(p/2))/sqrt(N); 
h(k+1,i+q*t1+t2)    =-(2^(p/2))/sqrt(N); 
end 

结束