I recently finished an interesting course at university which dealt about basic image analysis. Essentially, it described 2 differenct aspects of image analysis: applying filters or compressing a signal. I’m not going to talk about the first one because there is plenty of literature around (i.e. this book). Instead i got interested in the second part and i also developed a small project as part of the exam.
Wavelets
Wavelets are a way to represent a continuous signal, alternative to the classic Fourier series. The underlying idea is simple: under general circumstances any function can be represented as a (possibly infinite) sum of periodic functions. Finding out these functions is not an easy task, but wavelets provide a way to discover them.
A wavelet transform therefore is a way to represent a continuous function by a series of real coefficients representing the highest frequencies of an image. Wavelets are defined by a wavelet function (a.k.a. mother function) and a scaling function (a.k.a. father function).
The wavelet function is in effect a band-pass filter and scaling it for each level halves its bandwidth. This creates the problem that in order to cover the entire spectrum, an infinite number of levels would be required. The scaling function filters the lowest level of the transform and ensures all the spectrum is covered.
In the simple example i developed in C++, i used the Haar-wavelets; you can download the source here (all files are released under the LGPL license).
