I understand how the discrete cosine transform is used in image compression in standards like JPEG. However, the concept of wavelets is a mystery to me. I do know that wavelets are functions that have a wave like functions with value >0 only for short intervals of time, then they vanish. That is why they are called wavelets. I do not know anymore

What is not clear to me is precisely how such functions help in image compression and achieve a higher compression rate than our other transforms like the cosine transform.

What is the best place to learn this?


A common wavelet based standard is JPEG 2000 and a common DCT based standard is JPEG.

JPEG 2000 uses wavelets, but a good portion of the better compression it achieves than JPEG is due to the fact that JPEG uses a much much simpler entropy coder (JPEG does context-dependent Huffman codes and run length coding, JPEG 2000 does arithmetic coding with some extra tricks). You can gain a lot by tweaking the entropy coding stage. The particular wavelet transform you choose will make a difference as well. And how you decide to compress the coefficients makes a huge difference as well (JPEG reads its dct block coefficients in a zig-zag pattern and uses run length coding to compress long runs of zeros in the higher freq components due to the nature of the quantizers it uses).

The primary advantage of wavelets as used in JPEG 2000 versus rounding the DCT coefficients in the manner of JPEG is that it reduces blocking artifacts.

If you're not familiar with wavelets, you can look at an introductory text on wavelets, like Mallat's Wavelet tour of Signal Processing or Vetterli's new book (freely available online). Then, you can read the JPEG 2000 standard. These notes are kinda nice at a high level as well (and it has good pointers to the references).

For a quick review of JPEG, you can look at Gonzalez & Woods' Digital Image Processing (second or third edition should be fine).

  • $\begingroup$ I know that for JPEG we take the original image and carry out a DCT on it on 8x8 blocks, then we scan diagonally and carry out entropy encoding using huffman encoding. I know about that. What is mystery to me is what is a wavelet transform and how does it help in compression. $\endgroup$ – quantum231 May 10 '15 at 18:42
  • $\begingroup$ I've pointed you out to some references. It helps compression in the same way transforming and quantizing DCT coefficients -- if you choose the right wavelet, you can zero out some coefficients and quantize others and store them instead of all the coefficients and get pretty good approximations of the image. $\endgroup$ – Batman May 11 '15 at 0:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.