The idea of using wavelet to compress images is not new. I was told that JPG2000 uses this technique. The reason for the popularity is because of the amazing results when compressing a regular daily-life photo. Although the technique creates a lossy image (lossy meaning that it has less data -- i.e. more blurry, than the original image), the sacrifice seems to be very much worth while.
I won't get into the math of implementing Haar, or other types of wavelets. There are plenty of literature out there. I am just going to show the results...
| 50% Compression | 80% Compression | 95% Compression | 99% Compression | |
| Standard Haar | ![]() |
![]() |
![]() |
![]() |
| Standard Haar
(Normalized) |
![]() |
![]() |
![]() |
![]() |
| Non-Standard Haar | ![]() |
![]() |
![]() |
![]() |
| Non-Standard Haar (Normalized) |
![]() |
![]() |
![]() |
![]() |
Here's a snap shot of what the image looks like in wavelet space:
I wanted to give a test case where the wavelet compression seems to perform poorly (notice the grey background as opposed to the white background of the input image). Here are the results at 80% Compression:
| Original | Haar | Haar Normalized | Non-Standard Haar | Non-Standard Haar Normalized |
|
|
|
|
|