压缩感知和 Haar 小波
compressive sensing and Haar wavelet
我想使用 CS 从更少的样本中重建图像。
我使用高斯随机矩阵作为测量矩阵。我的问题是 Psi matrix 我想成为 Haar wavelet 系数,但我不知道如何定义它。
我使用了 DCT 和 Fourier 基础并且效果很好。这是我的基于 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
结束
我想使用 CS 从更少的样本中重建图像。
我使用高斯随机矩阵作为测量矩阵。我的问题是 Psi matrix 我想成为 Haar wavelet 系数,但我不知道如何定义它。
我使用了 DCT 和 Fourier 基础并且效果很好。这是我的基于 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
结束