<< Chapter < Page Chapter >> Page >
This module gives a clever method of coding, JPEG entropy coding.

The entropy plots of the Quantisation of the DCT coefficients show the theoretical entropies of each DCT sub-band. In practise this would be a poor way to code thedata because:

  • 64 separate entropy codes would be required (each requiring many extra states to represent run-length coding of zeros).
  • The statistics for each code are likely to vary significantly from image to image.
  • To transmit the code table for each sub-band as header information would involve a large coding overhead (many extra bits).
  • Coding the sub-bands separately does not take account of the correlations which exist between the positions of the non-zero coefsin one sub-band with those of nearby sub-bands (see subfigures (c) and (d) from a previous module).
JPEG uses a clever alternative method of coding, based on combining run-length and amplitude information into a single Huffman code forthe whole of the image (except the DC sub-band which is coded separately because its statistics are so different).

The code is applied to each block of 8 8 quantised DCT coefs from a single 8 8 pel region. The blocks are the coefs before reordering as shown in subfigure (b) of a previous module and comprise one coef from each of the 64 sub-bands.

Each block of 8 8 quantised coefs is formed into a 1-D vector by zig-zag scanning in the sequence: 0 1 5 6 14 15 27 28 2 4 7 13 16 26 29 42 3 8 12 17 25 30 41 43 9 11 18 24 31 40 44 53 10 19 23 32 39 45 52 54 20 22 33 38 46 51 55 60 21 34 37 47 50 56 59 61 35 36 48 49 57 58 62 63

The jpeg code for dc coefs

The first coefficient (0) of each block (vector) is the DC coef, which represents the mean value of the pels in the block (see the top leftbasis function in subfigure (a) from previous discussion).

The DC coefs still exhibit significant local correlations (top left of subfigure (b) ), so differential coding is used in which the value to be codedis the difference between the current DC coef and that of the previous block - the blocks are scanned from left toright, row by row. The first block in each row is coded with respect to zero.

The histogram of entropies of the DC coef differences is compared in with that of the raw DC coefs from this previous figure . We note the histogram peak around zero and see that the entropy is reduced from 6.42 bits to 6.07 bits.

Histograms of the DC coefficients from the 8 8 DCT of Lenna, showing the entropy reduction with differential coding.

The size of the differences can in theory be up to ± 255 8 ± 2040 if the input pels occupy the range -128 to + 127 (the DCT has a gain of 8 at very low frequencies). Hence the Huffman code table would have to bequite large. JPEG adopts a much smaller code by using a form of floating-point representation, where Size is the base-2 exponent and Additional Bits are used to code the polarity and precise amplitude as follows:

DC Coef Difference Size Typical Huffman codes for Size Additional Bits (in binary)
0 0 00 -
-1,1 1 010 0,1
-3,-2,2,3 2 011 00,01,10,11
-7,…,-4,4,…,7 3 100 000,…,011,100,…111
-15,…-8,8,…,15 4 101 0000,…,0111,1000,…,1111
-1023,…-512,512,…,1023 10 1111 1110 00 0000 0000,…,11 1111 1111
-2047,…-1024,1024,…2047 11 1 1111 1110 000 0000 0000,…,111 1111 1111

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Image coding. OpenStax CNX. Jan 22, 2004 Download for free at http://cnx.org/content/col10206/1.3
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Image coding' conversation and receive update notifications?

Ask