Take the 2-minute tour ×

I am familiar with much of the mathematical background behind wavelets. However when implementing algorithms on a computer with wavelets I am less certain about whether I should be using continuous or discrete wavelets. In all reality everything on a computer is discrete of course, so it seems obvious that discrete wavelets are the right choice for digital signal processing. However according to wikipedia it is the continuous wavelet transform that is primarily used in (digital) image compression as well as a large number of other digital data processing activities. What are the pros and cons to consider when deciding whether to use an (approximate) continuous wavelet transform instead of an (exact) discrete wavelet transform for digital image or signal processing?

P.S. (Checking an assumption here) I am assuming continuous wavelet transforms are used in digital processing by simply taking the value of the continuous wavelet at evenly spaced points and using the resulting sequence for wavelet computations. Is this correct?

P.P.S. Usually wikipedia is pretty precise about mathematics, so I am assuming that the applications in the article on Continuous Wavelet Transforms are in fact applications of the Continuous Wavelet Transform. Certainly it mentions some that are specifically CWT so there is clearly some use of CWT in digital applications.

share|improve this question

2 Answers 2

up vote 6 down vote accepted

As Mohammad stated already the terms Continuous Wavelet Transforms (CWT) and Discrete Wavelet Transforms (DWT) are a little bit misleading. They relate approximately as (Continuous) Fourier Transform (the math. integral transform) to DFT (Discrete Fourier Transform).

In order to understand the details it is good to see the historical context. The wavelet transform was originally introduced in geophysics by Morlet, and was basically a Gabor transform with a Window that grows and shrinks together with the selected scale/frequency. Later Daubchies (a physicist-ett from Belgium) realized that by choosing special orthogonal wavelet bases the infinitely redundant CWT can be critically sampled on a dyadic grid. From the resulting DWT the corresponding full CWT can be obtained by convolving the DWT with the reproducing kernel of the respective wavelet. The reproducing kernel is the CWT of the wavelet itself.

Daubchies findings gave a big boost to the wavelet theory in the early 80ies. The next big result was that the DWT can be computed very efficiently (this is sometimes called FWT [fast WT] as well) by using techniques from the theory of filterbanks, namely quadrature mirror filters (QMF) together with downsampling filterbanks. By constructing special QMFs the corresponding DWT can be computed via filtering and downsampling, which is the state-of-the-art algorithm to compute DWTs today. You do not need the scaling function to compute the DWT, it is just an implementation detail that FWT process.

Concerning the application side the CWT is the more ideal candidate for signal or time series analysis due to its more fine grained resolution and is usually chosen in most tasks (e.g. singularity detection). The DWT is more of interest in the context of fast non redundant transforms. The DWT has a very good energy compactification and is thus a good candidate for lossy compressions and signal transmissions.

Hope that clarified things.

share|improve this answer

A very common yet unfortunate mis-conception in the field of wavelets has to do with the ill-coined terminology of "Continuous Wavelet Transforms".

First thing's first: The Continuous Wavelet Transform, (CWT), and the Discrete Wavelet Transform (DWT), are both, point-by-point, digital, transformations that are easily implemented on a computer.

The difference between a "Continuous" Transform, and a "Discrete" Transform in the wavelet context, comes from:

1) The number of samples skipped when you cross-correlate a signal with your wavelet.

2) The number of samples skipped when you dilate your wavelet.

3) The CWT uses only a wavelet, while the DWT uses both a wavelet and a scale-let. (Not important for this discussion, but here for completeness).

But make no mistake - a CWT, just like a DWT, is at all times a discrete, digital, operation.

Let this example illustrate this: Consider the Haar Wavelet, [1 -1]. Let us say that we wanted to do a DWT with the Haar Wavelet. So you convolve your signal, with the Haar mother wavelet, [1 -1], but only at dyadic delays. For example, let us say your signal is the following vector:

$$ x = [1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8] $$

The first result of the DWT convolution with your Haar Wavelet is:

$$ 1(-1) + 2(1) $$

The next result is: $$ 3(-1) + 4(1) $$

The next is:

$$ 5(-1) + 6(1) $$

And finally the last one is:

$$ 7(-1) + 8(1) $$

Does something strike you as odd? I said take the convolution of your signal with the wavelet - so how come I only end up with four values? This is because I skip samples when I do convolutions in the DWT. I first took [1 2], did a dot product, and then took [3 4]. What happened to [2 3]? I skipped it.

When do you not skip it? When you do a CWT. If you did a CWT, it would be a 'normal' digital convolution of your signal, with the Haar wavelet.

The second thing, is the way you dilate your wavelet. In the top example, the Haar Wavelet is [1 -1] for the first level decomposition. In the second level, the DWT Haar Wavelet becomes [1 1 -1 -1]. However, in the CWT, the second level Haar wavelet is [1 0 -1]. Once again, in the DWT, I am not expanding point for point - I never have a three-length wavelet. However, in the CWT, I go from length 2, to length 3. In the DWT, I went straight from length 2, to length 4.

This is the long and short of it, hope this helped.

share|improve this answer
While it is true that in a DSP realization of any Wavelet transform (CWT or DWT), the implementation is likely to be done as a point by point discrete multiply with a discrete wavelet function (similar to the way the DFT is formulated), the mathematical definition of a CWT is continuous. There are versions of the DWT that were developed for discrete data, so some DWT implementations are exact by definition. Any implementation of a CWT is an approximation that was arrived at by converting a continuations operation (integration) with a continuous wavelet function, into a discrete operation. –  user2718 Feb 27 '13 at 14:03
@BruceZenone Certainly, and the definition certainly takes from the context. Two mathematicians talking about " the CWT" would mean the continuous version with the integrals, while two engineers mussing about implementation would say "the CWT" and mean the discrete version, (that is not the same as the DWT), hence the source of OP's confusion. –  Mohammad Feb 27 '13 at 14:21
True enough. I'd like to see a well documented implementation of a CWT (say Morlet) for DSP to see the details of how the continuous operations / functions are translated to the world of discrete processing. Note that the DFT and Fourier transforms are quite different beasts mathematically speaking. –  user2718 Feb 27 '13 at 16:11

Your Answer


