필터 지우기
필터 지우기

3D Wavelet Transform via Linear Algebra

조회 수: 3 (최근 30일)
Dylan Tarter
Dylan Tarter 2024년 5월 29일
답변: Dylan Tarter 2024년 5월 29일
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
Dylan Tarter
Dylan Tarter 2024년 5월 29일
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

댓글을 달려면 로그인하십시오.

채택된 답변

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Wavelet Toolbox에 대해 자세히 알아보기

제품


릴리스

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by