For some denoising and deconvolution experiments, I'd like to apply a 2nd generation wavelet transform (using lifting steps) to images.

I know that there are several implementations available, but most of them use Matlab, while I want to work in C++ with OpenCV. Since there is no built-in wavelet transform implementation in OpenCV 2.x, I plan to implement it myself (plus, it will make a good exercise for me). After some research, I've been able to find the original articles about the 2nd generation transform, but I'm still a bit confused about the exact way the algorithm works.

Taking for main reference the paper [1] by Sweldens: The Lifting scheme: a construction of second generation wavelets, I'm still confused by the definition of the index sets $\mathcal{K}(j)$ : what is their size ? how are they built ? ...

Hence my question : does anyone know about some resources about the 2nd generation wavelet transform (papers, tutorials, slides...) that are either in a tutorial-like form, or that provide a more algorithmic view (rather than a mathematical one), which would help me designing my own implementation ?

Thank you in advance.


My main reference is:

[1] Sweldens, W. (1998). The lifting scheme: A construction of second generation wavelets. SIAM Journal on Mathematical Analysis, 29(2), 511.

And I am also learning from:

[2] Daubechies, I., & Sweldens, W. (1998). Factoring wavelet transforms into lifting steps. Journal of Fourier analysis and applications, 4(3), 247–269.

[3] Kovacevic, J., & Sweldens, W. (2000). Wavelet families of increasing order in arbitrary dimensions. Image Processing, 9(3), 480–496. doi:10.1109/83.826784

  • $\begingroup$ It would probably help, if you link to the original papers and explain, why you are confused by them. Also, you say, that there are many matlab (scripting language) implementations, which you could read to get an idea, how the algorithm works. $\endgroup$
    – bjoernz
    May 24, 2012 at 8:38
  • $\begingroup$ There are already C++ wavelet libraries. If you're going to code something for exercise, why don't you pick one of the newer multiscale transforms like beamlets, ridgelets, or curvelets so the community can benefit? $\endgroup$
    – Emre
    May 24, 2012 at 11:14
  • $\begingroup$ @Emre: As said before, OpenCV doesn't include a wavelet transform, and I don't wand to add dependencies. I'll check Blitzwave code anyway to see how things are done. For now, I only need 2nd gen. wavelets, but more recent tools (starting with the curvelets) are an option for later work. $\endgroup$
    – sansuiso
    May 24, 2012 at 15:21
  • $\begingroup$ @bjoernz: I added a precise question about a small part of Sweldens's paper that confuses me. $\endgroup$
    – sansuiso
    May 24, 2012 at 15:26
  • $\begingroup$ Could you please reference your articles/books that you are learning this from? $\endgroup$
    – Spacey
    May 24, 2012 at 16:33

1 Answer 1


I've bought finally a copy of [Ripples in Mathematics The Discrete Wavelet Transform][1], and I'm very pleased by this book. The authors explain the DWT with alternating point of views (lifting schemes, filter banks approach, multi-resolution analysis), where each of these viewpoints has its own advantages. Furthermore, the book is implementation oriented, with chapters about boundaries handling and matlab/C implementations.

I'm still looking on a proper way to handle odd-sized signals, but Ripples gave me a good start.

[1]: http://www.control.auc.dk/~alc/ripples.html "Ripples in Mathematics The Discrete Wavelet Transform", by Arne Jensen and Anders la Cour-Harbo

  • 1
    $\begingroup$ Could you share some of your experiments? $\endgroup$
    – Mark
    Oct 4, 2021 at 16:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.