1

CS を使用して、より少ないサンプルから画像を再構成したいと考えています。

ガウス乱数行列を測定行列として使用します。私の問題は、Haar ウェーブレット係数にしたいPsi 行列にありますが、それを定義する方法がわかりません。

DCTフーリエ基底を使用しましたが、うまくいきました。これがフーリエ基底を使用した私のコードです。

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
4

1 に答える 1

1

適切な次元の 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 

終わり

于 2015-03-21T08:55:22.620 に答える