3D Wavelet Transform via Linear Algebra

1 Ansicht (letzte 30 Tage)
Dylan Tarter
Dylan Tarter am 29 Mai 2024
Beantwortet: Dylan Tarter am 29 Mai 2024
Hello, I am putting this out there to see if anyone can help me take my linear algebra solution to the wavelet transform from 2D to 3D. The reason I am doing this is because there is no lwt3 function in the wavelet toolbox, and dwt3 does not organize the coefficients in a way that I would prefer.
The equations for 1D and 2D are fairly simple. Working with an operator "L" and "H" which are N/2 by N, one can perform the 1D by multiplying the vector by the transpose of the operator. In 2D you perform L*X*L' for every combination of L and H (resulting in 4, N/2 by N/2 matrices). Here is some code demonstrating 1D and 2D, if anyone could help me figure out 3D it would be greatly appreciated.
%% Datasets
X1 = reshape(1:4,1,4);
X2 = reshape(1:16,4,4);
X3 = reshape(1:64,4,4,4);
%% Get Operators
ls = liftingScheme('Wavelet','db2');
[LoD,HiD,LoR,HiR] = ls2filt(ls);
L = operator(LoD,4);
H = operator(HiD,4);
%% 1D transform
l = X1*H';
h = X1*L';
%% 2D transform
ll = L*X2*L';
lh = H*X2*L';
hl = L*X2*H';
hh = H*X2*H';
%% 3D transform???
%% FUNCTIONS
function L = operator(a,N)
L = zeros(N/2,N);
for i = 1:N/2
L(i,2*(i-1)+1:2*(i-1)+numel(a)) = a;
end
L = L(:,1:N) + [L(:,N+1:N+floor(numel(a)/2)),zeros(N/2,N-floor(numel(a)/2))];
end
  1 Kommentar
Dylan Tarter
Dylan Tarter am 29 Mai 2024
I did find this toolbox which help form the forward transform, but doing the inverse transform gives errors
In this snippet L is the same as above, this works but if X becomes a 1x1x1 it does not, which is kind of a nice feature for a complete WT
...
lll = tprod(X,{L,L,L}); % forward transform
...
iX = tprod(lll,{L',L',L'})) % broken inverse

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Dylan Tarter
Dylan Tarter am 29 Mai 2024
Sorted it out myself, this library allows for simple tensor math:
lll = tprod(X,{L,L,L});

Weitere Antworten (0)

Kategorien

Mehr zu Lifting finden Sie in Help Center und File Exchange

Produkte


Version

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by