Top Banner
1 JPEG Compression
18

Jpeg compression

Apr 16, 2017

Download

Education

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Jpeg compression

1

JPEG Compression

Page 2: Jpeg compression

2

JPEG Compression • JPEG compression is lossy, such that the original image cannot be

exactly reconstructed (although a "Lossless JPEG" specification exists as well). • JPEG exploits the characteristics of human vision, eliminating or

reducing data to which the eye is less sensitive. JPEG works well on grayscale and color images, especially on photographs, but it is not intended for two-tone images.

Page 3: Jpeg compression

3

Basic Idea behind compression (JPEG)• Our eyes is highly sensitive to intensity(grayscale) information

and less sensitive to color information.• Again we are more sensitive to low frequency intensity value

and less sensitive to high frequency intensity value.

Page 4: Jpeg compression

4

The key for any compression technique • Compression at block level • Using suitable transformation• Smart quantization • Entropy coding

Page 5: Jpeg compression

5

The Key for JPEG Compression Technique • Compression at block level : split image into non-overlapping

blocks where each block is 8X8 pixels in size.• Using suitable transformation: compute DCT for each block• Smart quantization: quantize DCT coefficients according to

psych visually tuned tables(pre defined quantization table) • Entropy coding: finally the resulting bit stream is coded using

run length coding and Huffman coding

Page 6: Jpeg compression

6

JPEG compression pipeline

Page 7: Jpeg compression

7

Step 1: Color Conversion • First the RGB image is converted to YCrCb (like in a television). Here Y is

the luminance or grayscale and CrCb is the chrominance or color (blue and red).

• The equations to do this: Y=0.299(R-G) + G + 0.114(B-G) Cb=0.564(B-Y) Cr=0.713(R-Y)

• As human eyes are less sensitive to color information it is possible to reduce the amount of information in CrCb channel without losing significant visual quality.

• In general, jpeg down sample by 2 in each direction. Means that the color information is down sampled by 4 (4 times less color than the original one).

• Then this down sampled data is passed to next phase that is DCT.

Page 8: Jpeg compression

8

Step 2: Preprocessing for DCT• At step 2 which is preprocessing for DCT, first the image is

separated into non-overlapping blocks where each block is 8X8 pixels (64 pixels per block).• Then normalize the pixels value to -128 to 127 from 0 to 255,

just by subtracting 128 from each pixel value.

Fig. 1: Separating image into blocks

Fig. 2: Normalization

Page 9: Jpeg compression

9

Step 3: Discrete Cosine Transformation• At step 3: each block is separately encoded with its own discrete

cosine transform. (actually jpeg uses DCT type II)• So, after DCT we have exactly 64 cosine waves for each block,

mean that each pixels is replaced with a equivalent cosine wave. • DCT is reversible means we can recover full data without loss.• The DCT creates a new representation of image where it is easy

to separate important and less important pixels of the images.

[Details of DCT operation is given at the end of presentation]

Page 10: Jpeg compression

10

Step 4: Quantization • This is where the data is compressed in great extent. After performing

DCT, we apply quantization on it to remove the high frequency components. This is the real data compression part of jpeg.

• For quantizing the DCT transformed data, jpeg use a predefined quantization table. The amount of compression is dependent on the choice of quantization table.

• This quantization is non reversible meaning that we cant recover the original data with out loss.

Page 11: Jpeg compression

11

Step 5: Zig Zag Scanning• Then, the quantized data is further processed using zig zag coding or

scanning. This is done to separate the DC and AC components. The first element in each 64x1 array represents the DC coefficient from the DCT matrix, and the remaining 63 coefficients represent the AC components.

• Then the DC components are coded using DPCM and Ac components using running length coding.

Fig.1: Data after performing quantization

Fig.2: Zig Zag scanning

Page 12: Jpeg compression

12

Step 6: Coding of DC and AC coefficients• DPCM Coding for DC components: DC components represent the

intensity of each 8x8 pixel block. The DC coefficient of any given input block is fairly unpredictable by itself. However, significant correlation exists between the DC components of adjacent blocks. That is, we can predict the DC coefficient value of current block from the DC value of previous block. So, we can further compress data.

• By using a differential prediction model (DPCM), we can increase the probability that the value we encode will be small, and thus reduce the number of bits in the compressed image. To obtain the coding value we simply subtract the DC coefficient of the previously processed 8x8 pixel block from the DC coefficient of the current block. This value is called the "DPCM difference

Page 13: Jpeg compression

13

Step 6: Coding of DC and AC coefficients• Run length coding of AC components: Because the values of the AC

coefficients tend towards zero after the quantization step, these coefficients are run-length encoded. The concept of run-length encoding is a straightforward principle.

• The quantized output of the DCT blocks produces many zero-value bytes. Instead of coding each zero individually, we simply encode the number of zeros in a given 'run.' This run-length coded information is then variable-length coded (VLC), usually using Huffman codes.

Page 14: Jpeg compression

14

Step 7: Huffman Coding • Finally, the final bit stream is coded using the Huffman coding which is

the desired output.

Page 15: Jpeg compression

15

What does the DCT do?• Let us work on an example, where we will use the following set

A = {1, 2, 3, 4, 5, 6, 7, 8}.• The set has 8 elements, so n is 8. As you know, in computer science we

love to use the powers of two. Moreover, numbers in the set are correlated, an obvious pattern, incremented by one. It is time to compute DCT coefficients.

• There are 8 numbers in the set A, so there will be 8 DCT coefficients in the frequency domain. If you use the DCT formula above and compute the coefficients for k =0, 1, 2, 3, 4, 5, 6, 7, you will see that the DCT coefficients are: wA = {12.7279, -6.4423, 0, -0.6735, 0, -0.2009, 0, -0.0507}

Page 16: Jpeg compression

16

• Let us talk about the values of the coefficients we computed. The DC coefficient, w0, is 12.7279. The low-frequency coefficient, w1, is -6.4423. As you see the high-frequency coefficients are small numbers. This is something we expected because we have correlated numbers in the set A.

• If you compute DCT coefficients of a set elements where the numbers are not correlated, we cannot say anything about the values of the coefficients. All may be large numbers.

• Anyway, let’s go back to our example. We know that if the value of a coefficient is small, it does not carry much information, so we can ignore the coefficients with absolute values smaller than one.

• We now have wA = {12.7279, -6.4423, 0, 0, 0, 0, 0, 0}

What does the DCT do?

Page 17: Jpeg compression

17

• If you compute DCT coefficients of a set elements where the numbers are correlated, then the numbers are small.

• If you compute DCT coefficients of a set elements where the numbers are not correlated, we cannot say anything about the values of the coefficients. All may be large numbers.

• Again, small numbers(low intensity values) of image are represented by high-frequency coefficients in DCT representation. And the large numbers(high intensity values) are represented by low frequency coefficients in DCT representation.

• So low frequency coefficients in DCT means high intensity value or correlated data (or both). Which is not important.

What does the DCT do?