Wavelet Transforms

The Haar Wavelet Transform performs sum and difference calculations on the
input image data. The actual transform is as follows:

This transform can be applied to adjacent horizontal points (paired off in
twos), then adjacent vertical cells. The transform is then run again on
the upper left quadrant of the new image. The process can be repeated
until
you get down to a two-by-two image in the upper left quadrant, although
it turns out
that a minimum block size of 16-by-16 or 32-by-32 is ideal for
compression.
The new image is the same size as the previous image, but most of the
information is located in the upper left smallest block. This block
contains
the normalized average of the original image, scaled to a smaller block
size. The rest of the image contains a mix of the addition and
subtraction
information. The idea is that most of the adjacent pixels of the original
picture have close to the same value as each other, so storing the
difference
between them requires a small number of bits. The actual bit
allocation algorithm will be discussed in the next section.

Once we have assigned the number of bits we want to represent each pixel,
we can use the same transform to invert our data and return to the
original
image. Note that the Haar wavelet transform is equal to its inverse. You
can view an example of a transformed image in the ``Sample Images''
section
of the web page.