JPEG

From Wikipedia

HomePage | Recent changes | View source | Discuss this page | Page history | Log in |

Printable version | Disclaimers | Privacy policy

JPEG is a commonly used standard method of compressing photographic images. The name stands for "Joint Photographic Experts Group". JPEG itself specifies only how an image is transformed into a stream of bytes, but not how those bytes are encapsulated in any particular storage medium. A further standard, called JFIF (JPEG File Interchange Format) specifies how to produce a file suitable for computer storage and transmission (such as over the Internet) from a JPEG stream. In common usage, when one speaks of a "JPEG file" one generally means a JFIF file, though there are some software systems that encode JPEG streams differently. JPEG/JFIF is the most common format used for storing and transmitting photographs on the World Wide Web. It is not as well suited for line drawings and other textual or iconic graphics, because its compression method performs badly on these types of images (the PNG and GIF formats are in common use for that purpose; GIF, having only 8 bits per pixel is not well suited for colour photographs, but PNG may have as much or more detail as JPEG).

There are many options in the standard, but many are little used. Here is a brief desciption of one of the more common ones when applied to an input that has 24 bits per pixel (8 each of red, green, and blue). This particular option is a lossy method.

First the image is converted from RGB into a different color space called YUV. This is similar to the color space used by US televisions. The Y component represents brightness of a pixel, and the U and V components represent the hue. This part is useful because the human eye can see more detail in the Y component than in the others. This enables the next step which is to reduce the U and V components to half size in both vertical and horizontal directions (called "downsampling"), thereby reducing the size in bytes of the whole image by a factor of 2. For the rest of the compression process, Y, U and V are processed seperately and in a very similar manner.

Next, each component (Y, U, V) of the image is "tiled" into sections of 8 by 8 pixels each, then each tile is converted to frequency space using a two-dimensional discrete cosine transform.

Next phase: quantization. The human eye is fairly good at seeing small differences in brightness over a relatively large area, but not so good at distinguishing the exact strength of a high frequency brighness variation. This fact allows you to get away with greatly reducing the amount of information in the high frequency components. This is done by simply dividing each component in the frequency domain by a constant for that component, and then rounding to the nearest integer. This is the main lossy operation in the whole process. As a result of this, it is typically the case that many of the higher frequency components are rounded to zero, and many of the rest become small positive or negative numbers.

Last phase: entropy coding (this is a special form of lossless compression). Basically a combination of putting the components in a good order, then run length coding zeros, then using Huffman coding on what's left. The standard also allows the use of Arithmetic coding, which is always superior to Huffman coding, but this feature is rarely used because it is covered by patents that encumber development of software.

Decoding to display the image consists of doing all the above in reverse.

The resulting compression ratio can be varied according to need, by being more or less agressive in the divisors used in the quantization phase. 10 to 1 compression usually results in an image that can't be distinguished by eye from the original. 100 to 1 compression is usually possible, but will look distinctly "blocky" and "blurry" compared to the original. The appropriate level of compression depends on the use to which the image will be put.

JPEG is at its best on photographs and paintings of realistic scenes with smooth variations of tone and color. In this case it usually performs much better than purely lossless methods while still giving a good looking image (in fact it will produce a much higher quality image than other common methods such as GIF which are lossless for drawings and iconic graphics but require severe quantization for full-color images) . Newer lossy methods, particularly wavelet compression, perform even better in these cases. However, JPEG is a well established standard with plenty of software available, including free software, so it continues to be heavily used as of 2001. Also, many wavelet algorithms are patented, making it difficult or impossible to use them freely in many software projects.

The MIME media type for JFIF is image/jpeg (defined in RFC 1341).