# Understanding JPEG

date post

09-Jan-2016Category

## Documents

view

23download

2

Embed Size (px)

description

### Transcript of Understanding JPEG

Understanding JPEGMIT-CETI Xian 99Lecture 10Ben Walter, Lan Chen, Wei Hu

What is JPEG?JPEG is a method for compressing image data so it takes less space to store or transmit across a network.JPEG is very efficient. A file that was 1Mb in size could be compressed to as little 25Kb (1:40)!JPEG achieves such good compression ratios because it is lossy - but the loss is not visually perceptible.

OverviewImages contain different frequencies; low frequencies correspond the slowly varying colors, high frequencies correspond to fine detail.The low frequencies are much more important than the high frequencies; we can throw away some high frequencies to compress our data!

OverviewNote that we arent talking about the frequencies of light, but of the light and dark areas in the image!We need a way to go from the color of pixels, which is essentially a number, to frequenciesThis way is called the Discrete Cosine Transform (DCT).

A JPEG EncoderEntropy EncoderDCTQuantizer

The Discrete Cosine Transform=

The Discrete Cosine Transform

The Discrete Cosine Transform= x1 + x2+ + x15+ x16

The Discrete Cosine Transform

The 2D DCTSo far weve been talking about one-dimensional images, just one line of the picture but an image has two dimensions.We can talk about frequencies in two dimensions, although its much harder to visualize.

BasisRemember we saw that every 16-pixel line can be written as the sum of 16 different waves?Those 16 waves formed a basis for the set of 16-pixel lines.

BasisWhen we are compressing a JPEG, we work in blocks of 8x8 pixels. Thats 64 numbers, so there are 64 different basis images.This means we can describe any 8x8 image as a combination (a sum) of those 64 images.

Basis

The 2D DCT

The 2D DCT

SummaryThe Discrete Cosine Transform (DCT) allows us to determine what frequencies make up an image.Into this stage we have 8x8 numbers that are the values of each pixel.Out of this stage we have 8x8 numbers that represent how much of each frequency (or how much of each basis) is in the image.

A JPEG EncoderEntropy EncoderDCTQuantizer

QuantizationSo we still have 64 numbers to work with - we havent reduced the size at all!The reason we wanted the numbers as frequencies was because some frequencies are more important than others.The low frequencies are the most important, the high frequencies are not very important (think back to building up the image).

QuantizationBefore quantization, each frequency can be between 0 and 255.To quantize, we divide frequencies by a number so that the range is reduced. For example, it becomes 0 to 31. For high frequencies we divide by a higher number.

QuantizationBefore we had, say: 134,113,145,117,32,11,17,5 4.

After quantization, we might have: 116, 55, 55, 30, 1, 0, 0, 0.

Quantization

Quantization300 kB75 kBOriginalMedium Quality JPEG

Quantization300 kB35 kBOriginalLow Quality JPEG

SummaryThe degree of quantization, dictates the amount of information thrown away.If you throw away more information, you will get better compression, but the picture will start to look bad.When you adjust the quality of a JPEG save from Photoshop, you are changing the quantization!

A JPEG EncoderEntropy EncoderDCTQuantizer

Entropy EncodingEntropy encoding is another stage of compression, that relies on statistical properties of the data, e.g. most frequently occuring numbers, lots of the same number in a row.So the take the 64 numbers, do Run Length Encoding, then follow that with Huffman Coding! (Remember yesterday?)

Entropy EncodingThese compression schemes now work very well, because quantization turns numbers like 132, 117, 78 into numbers more like 31, 31, 15. After quantization, the range of numbers is smaller, and there are often large runs of numbers - so it can be highly compressed!This is where all of the compression happens!

SummaryEntropy EncoderDCTQuantizer

SummaryWe break up the image into 8x8 blocks.We calculate the frequencies in each block, this allows us to identify the important and less important data.We throw away some less important data.We compress the resulting data.The result: ~ 1:40 compression!

*View more*