Haar wavelet (2x2)

From ScienceZero
Jump to: navigation, search
Original picture
Haar transformation

The two-dimensional 2 by 2 Haar wavelet transforms data into 4 bands where b0 contains the DC level of each block while b1-b3 contains higher frequency components. It is useful for both data analysis and compression. It is a very computationally efficient transformation.

By recursively applying the transformation on b0 until b0 reaches a size of 1 we get frequency information about different areas in the picture at different scales. After the transformations most values will have a low value (assuming that the input data is a normal photograph), by using quantization and setting very low values to zero the data will compress very well using a combination of simple compression algorithms like Run-length encoding and Huffman coding.

Input block of 2x2 pixels
p0 p1
p2 p3
Forward 2D Haar transformation
b0 = (p0 + p1) + (p2 + p3) 'DC level
b1 = (p0 - p1) + (p2 - p3) 'Horizontal difference
b2 = (p0 + p1) - (p2 + p3) 'Vertical difference
b3 = (p0 - p1) - (p2 - p3) 'Horizontal and vertical difference
Reverse 2D Haar transformation
p0 = ((b0 + b1) + (b2 + b3)) / 4
p1 = ((b0 - b1) + (b2 - b3)) / 4
p2 = ((b0 + b1) - (b2 + b3)) / 4
p3 = ((b0 - b1) - (b2 - b3)) / 4