Tuesday, July 31, 2007

JPEG XR

When approved, the new JPEG compression system submitted earlier this year will be called JPEG XR.

As I mentioned in my 29 April 2007 post on MPEG-A, that week Microsoft had submitted HD Photo as a new possible JPEG standard. Earlier this morning Microsoft sent out a press release announcing that JPEG introduced a new work item for this specification and its tentative name is JPEG XR. In truth, this is actually old news, as JPEG already made this announcement in their 6 July 2007 press release after their 42nd meeting at the EPFL in Lausanne. If you want to stay tuned, the next date is 16 November 2007, when the press release on the 43th meeting in Kobe will come out.

If you are a JPEG delegate or have access to one, the relevant working draft document is ISO/IEC JTC 1/SC 29/WG1 n4336, or wg1n4336 for short.

As I mentioned in my 8 March 2007 post, JPEG XR is somewhere between JPEG and JPEG 2000. It is a file format and associated codec specifically designed to for use with all types of continuous tone photographic content. The codec has some reminiscences of MPEG-4 AVC (Advanced Video Coding, a.k.a. ITU-T H.264), like the use of 4×4 blocks. However, the main innovation is the extended range for the numerical encoding of the pixel values.

In the beginning of digital color imaging standardization, the Xerox Color Encoding Standard adopted the concept of arbitrary color gamuts that was already in use in earlier standards for digital monochrome imaging. Such an encoding was used also in the ISO ODA Color Addendum and in color fax (ITU-T T.42, T.81). However, then in 1994 a less brilliant decision was made with sRGB to cast in concrete a specific device gamut based on a byte encoding.

In 1994 that not-so-smart ad hoc decision was plausible from an engineering point of view because at that time digital cameras in the consumer market had only 6 bits of information, and the rest was noise. CRTs typically had 8 bits per channels, and to use a 10 bit CRT you had to have a very clean power source.

Today the situation is quite different. In the consumer market, digital reflex cameras use sensors that have 12 bits of information per channel, and also typical desktop LCD panels have 12 bits of information per channel. Today we use algorithms like retinex (e.g., digital flash) to compress the sensor's dynamic range into 8 bits, but then when the LCD panel's controller logic expands the data again to 12 bits, those 4 bits are gone, and we see contouring.

The overall goal of JPEG XR is to support the greatest possible level of image dynamic range and color precision, maintain forward compatibility with existing formats, and keep the device implementations of the encoder and decoder as simple as possible.

To maintain full compatibility with existing legacy devices and applications, JPEG XR supports a variety of color profiled pixel formats using unsigned integer representations in bit depths of 8 and 16, as well as smaller bit depths for specialized applications. Additionally, JPEG XR also supports a number of advanced pixel formats that avoid many of the limitations and complexity imposed by unsigned integer representations.

Specifically, JPEG XR supports three types of numerical encoding, each at a variety of bit depths: unsigned integer, fixed point, and floating point.