Proceed from the level 2 and up in a Discrete Wavelet Transform Daubechies kind 4

wavelets

The wavelet elements of a Daubechies kind 4 are

$$(0.4830, 0.8365, 0.2241, -0.1294) $$

Let's say I have the following signal array

$$ [1, 2, 0, 4, 5, 6, 8, 10 ]$$

Doing a Daubechies 4 DWT of this array is basically multiplying a $8\times 8$ array with a $8\times 1$ array (signal).

The $8\times1$ array will have the following elements,
\begin{array}{cccc} 0.483 & 0.8365 &0.2241 &-0.1294 &0 &0 &0 &0 \\
0 &0 &0.483 &0.8365 &0.2241 &-0.1294 &0 &0 \\
0 &0 &0 &0 &0.483 &0.8365 &0.2241 &-0.1294 \\
0.2241 &-0.1294 &0 &0 &0 &0 &0.483 &0.8365 \\
-0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 &0 &0 \\
0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 \\
0 &0 &0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 \\
0.8365 &-0.483 &0 &0 &0 &0 &-0.1294 &-0.2241 \\
\end{array}

The result will be

for the scaling function…

- 0 : 1.638357430415108
- 1 : 3.6903274198537357
- 2 : 7.9329681069730205
- 3 : 12.194191165473843

for the wavelet

- 0 : -2.5095489112134235
- 1 : 0.3882285676537802
- 2 : -0.1294095225512608
- 3 : -3.4061243833814774

Sorry but my math is rusty. I don't know the exact terms for these two elements that come from the DWT decomposition. Some call, scaling function and wavelet, others call trend subsignal and fluctuation, others call c and d… etc.

Anyway, now I need to perform another level of DWT DB4, what values do I send to the algorithm that will perform the decomposition? The scaling function c or the wavelet d?

and what about the inverse transformations?

Best Answer

The inverse of this step of the transform will be the inverse matrix to the matrix you wrote above. Mechanically just build a matrix of the values you wrote, and then invert this matrix. The Db4 should be designed so that this inverse matrix will be the same (up to maybe a scaling / normalization factor / transpose), which is what makes orthogonal wavelets so simple to use. We only need one filter pair two short arrays of numbers.

Makes programming simpler and/or memory overheads slimmer than if we needed separate filters for forward and backward transform.

Usually in discrete wavelet transforms you iterate on the low-pass channel, which is the output from the scaling function or father wavelet. This is called dyadic decomposition, You can read more here. At every level you don't stop you will only have "result" of the mother wavelet. These are the "detail" coefficients at this level of resolution. At the lowest level of resolution (where you stop the transform) you will also have "approximation" coefficients, which come from the father wavelet function belonging this coarsest scale.

There also exist wavelet packet analysis, where you can iterate also on the high-pass band (where mother wavelets live) and not only on the low-pass band (where father wavelets live). But these packet analyses are probably a bit over-course.

What happens at next level is that for the coefficients of the high pass filter you put an identity matrix $I$ and for the coefficients of the low pass filter coefficients you put a subsampled version of original matrix.

We can see by ocular inspection that high pass filter comes last in the 8x8 matrix, so those are the elements which will be affected by the $I_4$ block. $$\begin{bmatrix}D&0\\0&I_4\end{bmatrix}$$

The "$D$" here will be the 4x4 size transform matrix for Db4. If we write it out it will look like this:

$$\left[\begin{array}{cccc|cccc}0.483&0.8365&0.2241&-0.1294&0&0&0&0\\0.2241&-0.1294&0.483&0.8365&0&0&0&0\\ -0.1294&-0.2241&0.8365&-0.483&0&0&0&0\\0.8365&-0.483&-0.1294&-0.2241&0&0&0&0\\\hline0&0&0&0&1&0&0&0\\0&0&0&0&0&1&0&0\\0&0&0&0&0&0&1&0\\0&0&0&0&0&0&0&1\end{array}\right]$$

With lines to clarify the block-structure. Now when you have both transform matrices, what remains is to find their inverses, and for ON transform, Inverse is equal to transpose, so this is easily done.

Related Question