2D Forward and Inverse Discrete Wavelet Transform

Single level dwt2

The relation to the other common data layout where all the approximation and details coefficients are stored in one big 2D array is as follows:

                            -------------------
                            |        |        |
                            | cA(LL) | cH(LH) |
                            |        |        |
(cA, (cH, cV, cD))  <--->   -------------------
                            |        |        |
                            | cV(HL) | cD(HH) |
                            |        |        |
                            -------------------

PyWavelets does not follow this pattern because of pure practical reasons of simple access to particular type of the output coefficients.

Single level idwt2

2D multilevel decomposition using wavedec2

2D multilevel reconstruction using waverec2

2D coordinate conventions

The labels for “horizontal” and “vertical” used by dwt2 and idwt2 follow the common mathematical convention that coordinate axis 0 is horizontal while axis 1 is vertical:

dwt2, idwt2 convention
----------------------

axis 1 ^
       |
       |
       |
       |--------->
               axis 0

Note that this is different from another common convention used in computer graphics and image processing (e.g. by matplotlib’s imshow and functions in scikit-image). In those packages axis 0 is a vertical axis and axis 1 is horizontal as follows:

 imshow convention
-------------------
             axis 1
       |--------->
       |
       |
       |
axis 0 v