For those looking for a compact description, I found this nice docstring while inspecting the kymatio GitHub repository:
A Morlet filter is the sum of a Gabor filter and a low-pass filter
to ensure that the sum has exactly zero mean in the temporal domain. It is defined by the following formula in time:
$\qquad \qquad \psi(t) = g_{\sigma}(t) (e^{i \xi t} - \beta)$
where $g_{\sigma}$ is a Gaussian envelope, $\xi$ is a frequency and $\beta$ is the cancelling parameter.
Explanation:
- From this description it follows that the admissibility condition is broken when the time-domain wavelet doesn't have zero mean, and the cancelling parameter $\beta$ is explicitly introduced to fix that.
- Using the distributive property, we see that the Gabor filter is the Gaussian times the exponential, and the low-pass is the same Gaussian times a constant. In the Fourier domain, the former is a Gaussian tanslated at freq=$\xi$, and the latter is a Gaussian centered at freq=0.
- We can further observe the effect of $\beta$:
- It is a real-valued number
- It doesn't affect the location of the Gaussian envelope $g_\sigma$
- It affects the intensity of $g_\sigma$, but this effect vanishes as we get away from $t=0$. Therefore, it doesn't alter the fact that the asymptotic value at the extremes is zero (as it would if we subtracted $\beta$ directly from $\psi$)
- It doesn't affect the phase of the complex exponential $e^{i \xi t}$ (i.e. it doesn't "twist the spiral")
- As the frequency $\xi$ increases or the time-localization $\sigma$ decreases, the correction $\beta$ needed vanishes and the Gabor approximates the Morlet. This can be seen on the Fourier domain: the translated Gaussian will have a smaller zero-freq component in those cases.
You can think of this process as "softly curbing" the Gabor into a zero-mean. This effect is stronger whenever we have a small window (large $\sigma$) and low frequencies. Also, the effect happens more strongly at $t=0$, and then vanishes "rapidly, but softly".
Implementation:
The kymatio library is a substantial effort to implement the Scattering transform. Here is the corresponding JMLR (for instance Mallat is a coauthor).
The code permalinked above computes the Morlet directly on the Fourier domain:
- Creates a translated and a centered Gaussian
- Numerical discretization
- Subtracts the centered Gaussian from the translated one, ensuring that the zero-frequency component ends up being zero (i.e., the time-domain signal will have zero mean).
- L1-normalizes the time-domain wavelet