1
$\begingroup$

Where the CWT in the title refers to the continuous wavelet transform. Torrence1998 proposed a reconstruction formula as shown below

enter image description here

Obviously, Eq.(11) is a single integral. However, Torrence1998 didn't say whether Eq.(11) holds true for the real-valued wavelet function.

$\endgroup$
3
  • $\begingroup$ I wasn't entirely satisfied with my answer so I looked deeper here. It's still incomplete as I've not figured out exact that qualify any general wavelet for one-integral inversion, but it (plus answer here) does prove and demonstrate real wavelets can do it. $\endgroup$ Jul 12 at 4:09
  • $\begingroup$ This paper claims to provide the exact conditions but it concludes (I think) the results as analytic-only, which is clearly false. Still while conclusions may be false, premises need not be, and they do include the LP summation and tight frame. $\endgroup$ Jul 12 at 4:11
  • $\begingroup$ I figured it out; see updated. $\endgroup$ Jul 12 at 5:00
1
$\begingroup$

Yes. This proof for analytic case is generalized by extending the scales' limits to $-\infty$, which permits the change of variables and splitting of integral.

It can also be observed as follows from $2(c)$:

$$ \begin{align} f(b) &= \frac{1}{2} \Re e \left\{ \frac{1}{C_\psi} \int_0^\infty \left< f(t), \psi_b(t) \right> \frac{da}{a} \right\} \\ &= \frac{1}{2} \frac{1}{C_\psi} \int_0^\infty \left< f(t), \Re e \{ \psi_{a,b}(t) \} \right> \frac{da}{a} \end{align} $$ where $\psi_{a,b}(t) = \psi((t-b)/a)$, and $<f, \psi_{a,b}> = \int_{-\infty}^{\infty} f(t) \psi^{*}((t - b)/a)$. That is, real part of sum of complex CWT is same as sum of CWT with the real-valued wavelet.

Is $f(t)$ allowed to be complex?

  • Complex wavelet: must be paired with its anti-analytic complement, as $\hat f(\omega)$ is no longer Hermitian-symmetric.
  • Real wavelet: if one integral can reconstruct a real $f(t)$, it can reconstruct an imaginary $f(t)$ - and by linearity of convolution, it can also reconstruct $f(t) = g(t) + ih(t)$. I have validated this for the Morlet wavelet with ssqueezepy.

Requirements for both are: 1) scales span $-\infty$ to $\infty$, and 2) $\hat\psi(\omega)$ is zero-phase (i.e. real-valued). (2 may be optional, am unsure - see below). Note that in general case, $C_\psi$ should be computed by integrating $-\infty$ to $\infty$ rather than relying on Hermitian symmetry.

Update: definitive answer here.


Additional considerations

Texts omit two important points regarding any CWT reconstruction:

  1. DC: the CWT only captures DC at infinite scale, which in practice means "never". To compensate we require a lowpass filter.
  2. Filterbank: what's the minimum number of wavelets required for one-integral inverse to recover the input? One, two, infinite? Briefly: the filterbank must tile the entire frequency axis. Details follow.

2 is explained by the Littlewood-Paley sum:

$$ A(\omega) = |\hat \phi(\omega)|^2 + \sum_{\lambda \in \Lambda} |\hat\psi_\lambda(\omega)|^2 $$

where $1 - \alpha \leq A(\omega) \leq 1$ with $\alpha < 1$. This states that the wavelets, along the lowpass filter, tile the entire frequency axis. Further, applying Parseval-Plancherel's theorem, it's a statement on energy conservation:

$$ \text{CWT}(x) = x\star \phi(t) + x \star \psi_\lambda (t) \Rightarrow $$ $$ (1 - \alpha)||x||^2 \leq ||\text{CWT}(x)||^2 \leq ||x||^2 $$

(where $||\cdot||^2$ is energy, $\sum |\cdot|^2$) The summation with L1-normed analytic Morlet wavelet filterbank + Gaussian lowpass looks like this:

($\leq 1$ is an optional (but desired) criterion; in general we have $a \leq A(\omega) \leq b$)

If $\alpha = 0$, then $||\text{CWT}(x)||^2 = ||x||^2$, i.e. $E_\text{out} = E_\text{in}$, and the filterbank constitutes a tight frame.

Notice, if we remove some of the wavelets, the sum will diminish (potentially to zero), and we deviate from $E_\text{out} = E_\text{in}$, in worst case $E_\text{out}=0$ if input lies entirely in excluded portion. Also notice that fewer wavelets deviate more from a tight frame:

We can imagine that one or two wavelets will have an awful LP-sum - and that more wavelets in general improve the sum. Reconstruction quality can be directly predicted from this summation, as it dictates which frequencies are amplified or attenuated relative to one another.

We can also see the role of zero-phase: if summing zero phase wavelets yields the original signal, then summing wavelets with phase differences will yield the signal with frequencies out of phase. (Granted this logic permits for non-zero phase, as long as relative phases remain same - but this'd be complicated to design)


Plots code

import numpy as np
from kymatio.numpy import Scattering1D
from kymatio.visuals import plot
from scipy.fft import ifftshift

for Q in (8, 1):
    ts = Scattering1D(11, 2048, Q=Q, max_pad_factor=None)
    N = len(ts.psi1_f[0][0])
    lp = np.sum([p[0]**2 for p in ts.psi1_f], axis=0)
    lp[1:] += lp[1:][::-1]
    lp += ts.phi_f[0]**2
    lp = ifftshift(lp)
    
    w = np.linspace(-np.pi, np.pi, N)
    title = ("Morlet | analytic + anti-analytic + lowpass | %s wavelets per octave"
             % Q)
    plot(w, lp, title=title, show=1, ylims=(0, 1.25))

Master branch doesn't include visuals; install latest via pip install git+https://github.com/kymatio/kymatio.git@refs/pull/674/head

$\endgroup$
5
  • $\begingroup$ What does <...,...>mean? $\endgroup$
    – Wang Yun
    Jul 16 at 8:44
  • $\begingroup$ @WangYun Inner product; for discrete vectors, it's sum(a * b), for continuous functions, $\int_{-\infty}^{\infty} f(x) g(x) dx$. Here it's used for cross-correlation (of signal with wavelet, as a "similarity" measure), which is equivalently convolution with flipped kernel. $\endgroup$ Jul 16 at 8:49
  • $\begingroup$ Is $<f,\psi>$ the integral $\int_{-\infty}^{+\infty} f(t)\psi(t) dt$? $\endgroup$
    – Wang Yun
    Jul 16 at 8:53
  • $\begingroup$ @WangYun Yes, but I admit the notation is lacking, it should really be with $\psi^{*}(t - b)$, alternatively $<f, \psi_b>$ - it's just brevity in original derivation. And the conjugate for the complex kernel is assumed by default. Edited. $\endgroup$ Jul 16 at 9:04
  • $\begingroup$ @WangYun If this answers your question, consider accepting. $\endgroup$ Nov 30 at 8:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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