Yes indeed! In theory as long as the wavelet is orthogonal, the sum of the squares of all the coefficients should be equal to the energy of the signal. In practice, one should be careful that:
- the decomposition is not "expansive", i.e. the number of samples and of coefficients is the same.
- wavelet filter coefficients are not re-scaled, as happens in some applications (like lifting wavelets, to keep integer computations).
- wavelets are orthogonal (this is not the case in JPEG2000 compression).
You can verify this indirectly, looking at approximation coefficients. At each level, their number of samples is halved, and their amplitudes have around a $1.4$ scale factor, which is just $\sqrt{2}$. This feature is used for instance to estimate the Gaussian noise power from wavelet coefficients:
$$ \hat{\sigma} = \textrm{median} (w_i)/0.6745$$
A little further, there is a notion that generalizes (orthonormal) bases: frames. A set of functions $(\phi_i)_{i\in \mathcal{I}}$ ($\mathcal{I}$ is a finite or infinite index set) is a frame if for all vectors $x$:
$$ C_\flat\|x\|^2 \le \sum_{i\in \mathcal{I}} |<x,\phi_i>|^2\le C_\sharp\|x\|^2$$
with $0<C_\flat,C_\sharp < \infty$. This is a more general Parseval-Plancherel-like result used for general wavelets.
In other words, it "approximately preserves energy" by projection (inner product). If the constants $ C_\flat$ and $C_\sharp $ are equal, the frame is said to be tight. Orthonormal bases are non-redundant sets of vectors with $ C_\flat=C_\sharp = 1 $.
For those using Matlab, you should care about the native border extension, which is obtained by dwtmode('status')
. Some add tails to the data to help inversion with little border artifacts. With a periodic mode dwtmode('per')
and a number of samples that can be divided by $2^L$ where $L$ is the wavelet level, you can get a good match in energy, with tiny differences:
