Files
tunmnlu/task_2/others-answer/omsa-main/ISYE-8803-OAN/hw5/DWT.m
louiscklaw 9035c1312b update,
2025-02-01 02:09:32 +08:00

37 lines
936 B
Matlab
Raw Blame History

% Get Wavelet Transofrmation Matrix with Image size N*N, and N=2^P
function ww=DWT(N)
[h,g]= wfilters('sym8','d'); % separate low pass and high pass
% N=256; % Size of Matrix
L=length(h); % Length of bandwidth
rank_max=log2(N); % Maximum Layer
rank_min=double(int8(log2(L)))+1; % Minimum Layes
ww=1; % Proprocessing Matrix
% Matrix construction
for jj=rank_min:rank_max
nn=2^jj;
% Construct Vector<6F>
p1_0=sparse([h,zeros(1,nn-L)]);
p2_0=sparse([g,zeros(1,nn-L)]);
% circlular move
for ii=1:nn/2
p1(ii,:)=circshift(p1_0',2*(ii-1))';
p2(ii,:)=circshift(p2_0',2*(ii-1))';
end
% Orthogonal Matrix
w1=[p1;p2];
mm=2^rank_max-length(w1);
w=sparse([w1,zeros(length(w1),mm);zeros(mm,length(w1)),eye(mm,mm)]);
ww=ww*w;
clear p1;clear p2;
end