1. Field of the Invention
The present invention relates to image color conversions and more particularly to converting image data from an input color space to an output color space in the real domain.
2. Statement of the Problem
Image data from an input device, such as a digital camera or scanner, is often defined by a color space that does not directly map to the color space of an output device, such as a printer or a computer monitor. A color conversion process is therefore used to convert the color space of the input image data to the color space of the output device. For instance, a color in the Red, Green and Blue (RGB) color space may require mapping to the Cyan, Magenta, Yellow, and Black (CMYK) color space, and vice versa. Moreover, many printers print in black ink or toner such that the output color space is rendered in “halftone” grayscale values. Thus, if the input color value is in the CMYK color space, then the CMYK color is converted to the halftone grayscale value for rendering by the “black and white” printer.
While some input image data is compressed, such as images compressed by the Joint Photographic Experts Group (JPEG) compression technique, other input image data exists in the real domain. The pixels in the real domain are typically converted to the output color space in the real domain using a color conversion lookup table. These color lookup tables include color values that map one color value of an input color space to a color value of the output color space. However, these tables are exceptionally compute intensive. For example, perceptual color tables include many thousands of color translations. During a color conversion from an input color space to an output color space, each pixel of the input image data is converted by retrieving an output color space value from the lookup table as it corresponds to the input color space. The input color space values of the image data are thus replaced with the output color space values of the look up table. Since the input color space may contain billions of possible colors, the input color space is commonly covered by a mesh that contains only relatively few points. The lookup table carries the output space values just for the mesh points. For example, a CMYK input space with 8 bits per channel has 2^32 input colors. The lookup tables are often constructed using a 17×17×17×17 mesh, yielding a much more manageable table size. During the color conversion, the input space colors not in a mesh are converted by interpolating the output values for the surrounding mesh nodes. There are several interpolation algorithms known in the art, but all are computationally intensive, especially since they have to be repeated for every one of possibly several million input pixels in the image.