What is the xyz ordering and shifting used by dwt3?

1 view (last 30 days)
MB
MB on 4 Aug 2015
Commented: MB on 4 Aug 2015
Hello,
I have been recently implementing my own wavelet library in C++. I successfully validated my implementation against Matlab in the 1D and 2D cases. By doing so, I realized that given an input vector, Matlab dwt and dwt2 functions implicitly shifts it (M-1) times to the left, where M is the number of vanishing moments of the wavelet used (btw I am using dwtmode='per').
However, I can't validate my 3D implementation: - I obtain the right result for some wavelet but not for others (all from Daubechies family though). I get mostly sign errors. => I tried all possible permutation of the initial signal ([123], [213], [321], ...) BUT NONE WORKED FOR ALL WAVELETS.
I can't figure out why. => Would you know what is the ordering in which Matlab performs the 1D WT, in the context of dwt3? does it do x, y, then z or something else. => What about the shifting? I haven't seen it documented anywhere on the web...
Thank you very much, Best, Max
  1 Comment
MB
MB on 4 Aug 2015
I think I figured it out: Matlab does not shift the input vectors in the 3D wavelet transform, while it does in 1D and 3D. I believe that this should be done and is inconsistent with what is expected. I would appreciate confirmation still, thank you.

Sign in to comment.

Answers (0)

Categories

Find more on Discrete Multiresolution Analysis in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!