“True” colors are defined by light wavelengths. A particular wavelength of light corresponds to one true color. Representing an image, however, as a collection of light wavelengths is often inconvenient for image processing. Therefore, a variety of systems have been developed to represent images in data formats that are more convenient for storing, displaying, and otherwise manipulating images. Each of these systems is referred to as a color space. Different devices often use different color spaces. Color space conversion is the process of converting an image from one color space to another. In many cases, the quality of a color conversion is the extent to which the true colors of an image in the first color space are maintained in the second color space.
Color spaces can be quite large. For example, display devices, such as computer monitors, televisions, and projectors, often use mixtures of red (R), green (G), and blue (B) color components, or “colorants.” The color of each pixel displayed on a screen can be defined as some combination of these RGB colorants. If each colorant in an RGB color space is represented, for example, using 8-bits/channel, then each pixel in an image may comprise three bytes of color information. In which case, this 8-bit/channel RGB color space can theoretically display 224, or about 16.77 million, different true colors.
Mapping over 16 million data points from one color space to another can be time consuming and resource intensive. Therefore, many color conversion techniques rely on interpolation. To interpolate data points, a certain number of data points are first mapped from one color space to another using any of a number of mathematical or experimental approaches. These data points comprise a set of “control points,” having predetermined values in both color spaces. Then, when a data point is encountered that has not already been mapped, a value for the data point in the second color space is estimated based on the position of the data point relative to the control points in the first color space.
Examples of the present invention are illustrated in the accompanying drawings. The accompanying drawings, however, do not limit the scope of the present invention. Similar references in the drawings indicate similar elements.
In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the embodiments of the present invention. However, those skilled in the art will understand that the present invention may be practiced without these specific details, that the present invention is not limited to the depicted embodiments, and that the present invention may be practiced in a variety of alternative embodiments. In other instances, well known methods, procedures, components, and circuits have not been described in detail.
Parts of the description will be presented using terminology commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art. Also, parts of the description will be presented in terms of operations performed through the execution of programming instructions. As well understood by those skilled in the art, these operations often take the form of electrical, magnetic, or optical signals capable of being stored, transferred, combined, and otherwise manipulated through, for instance, electrical components.
Various operations will be described as multiple discrete steps performed in turn in a manner that is helpful for understanding the embodiments of the present invention. However, the order of description should not be construed as to imply that these operations are necessarily performed in the order they are presented, nor even order dependent. Lastly, repeated usage of the phrase “in one embodiment” does not necessarily refer to the same embodiment, although it may.
Various embodiments of the present invention provide an improved technique for color space conversion and interpolation. After control points have been mapped between a first color space and a second color space, embodiments of the present invention apply various interpolation techniques to target points in different regions of the first color space to determine values of the target points in the second color space while limiting certain colorants to certain regions in the second color space. Numerous embodiments of the present invention are discussed below to provide examples of how the present invention can be implemented and used.
Computer monitors, televisions, and projectors usually generate red, green, and blue photons, so these display devices often use RGB color spaces. Imaging devices, such as color printers, do not usually generate photons, but instead print reflective pigments, such as cyan, magenta, and yellow, so these display devices often use CMY color spaces. An RGB to CMY color conversion is likely to occur each time a color document is printed from a computer. CMY color spaces can be defined much like the RGB color space described above in the background, with each pixel of an image comprising as a mixture of CMY colorant intensities.
As shown in
Cube 200 similarly includes a coordinate system for the CMY colors inverted over the RGB coordinate system. That is, the W point 250 is the origin for the CMY colors where CMY are all zero, and the K point 210 is where CMY are all maximum. The CMY colors have three primary axes, 225, 235, and 245. Axis 225 corresponds to C intensity, ranging from a minimum at point 250 up to a maximum. C intensity is inversely related to R intensity on axis 220. Similarly, axis 235 corresponds to M intensity, and is inversely related to G intensity on axis 230. And, axis 245 corresponds to Y intensity, and is inversely related to B intensity on axis 240.
In the ideal situation, there would be a one-to-one, linear correspondence between the two coordinate systems, and converting RGB to CMY would simply be a matter converting a point in the RGB coordinate system to the same point in the CMY coordinate system. In reality, however, converting between RGB and CMY color spaces can be much more complicated due to various factors, making a one-to-one, linear correspondence between the two coordinate systems very unlikely.
The colorants, the print mechanism, and the print medium are all examples of factors that can complicate how a CMY color space maps to an RGB color space. For example, toners, inks, and waxes are often used as colorants in CMY color spaces. Each colorant is usually comprised entirely of one particular color intensity, or shade of color. For the case in which the colorant is a liquid colorant, to change the appearance of intensity for a color in an image, the density of tiny droplets of the colorant can be changed. Each droplet of a colorant may be the same intensity, but depending on how many droplets are deposited in a given area, the colorant appears more or less intense. The high end of the intensity range for a given colorant is often where the print medium becomes saturated with the colorant and the intensity cannot be increased. The low end of the intensity range for a given colorant is often where the droplets are scattered so sparsely so as to be individually distinguishable by the naked eye, at which point the intensity cannot decrease further without making the image look grainy. The intensity ranges of CMY colorants are often inadequate to fully represent the intensity ranges of RGB colorants.
One way to increase the intensity ranges is to use additional colorants. Additional colorants are another factor that can complicate color conversion. For instance, a CMYK color space adds a black (K) colorant. In a CMYK color space, K can be mixed in to represent the darker true colors, potentially increasing the intensity range. A CMYKlclm color space adds two more colorants, low-dye cyan (lc) and low-dye magenta (lm). lc and lm can be mixed in to smooth out the lighter true colors, also potentially increasing the intensity range.
When additional colorants are used, certain colorants are often limited to particular regions of a color space. Limiting colorants in this way is referred to as color separation, and color separation also complicates color conversion. For instance, in the color cube of
A data point can be converted from one color space to another color space using any of a number of mathematical or experimental approaches. But, with all of the potential complicating factors, such as those described above, color conversion calculations can be excessively time consuming, especially for a large volume of data points. For this reason, a look-up table (LUT) is often used to store color conversions so that conversions can simply be looked-up when they are needed. In most circumstances, using a LUT is much faster than performing calculations.
A LUT for an entire color space, however, could be quite large. For example, an 8-bit per-channel RGB color space using three bytes for each data point, comprises 224 data points. When mapping to an 8-bit/channel CMYK color space using four bytes for each data point, 224 times four bytes, or about 70 megabytes, of memory would be needed to store a conversion table for the entire color space. For an 8-bit/channel CMYKlclm color space, 224 times six bytes, or about 100 mega bytes, of memory would be needed to store a conversion table for the entire color space. In either case, the amount of memory is likely to be impractical, especially in competitive consumer electronics markets.
Rather than storing conversions for every data point, a subset of the conversions could be stored in the LUT, and then an interpolation approach could be used to dynamically estimate color conversions on the fly for data points between those in the table. Of course, the more data points included in the LUT, the more accurate the dynamic interpolations are likely to be. But, the larger the LUT, the more memory needed and the longer it takes to populate with conversions.
The time it takes to populate a LUT can be very important because any time one of the factors affecting color conversions changes, a new LUT is likely to be needed. This could mean repopulating the LUT every time the print medium is changed, every time an ink cartridge is replaced, every time a print job is received from a different computer having a different RGB color space, etc.
Often times, a LUT includes one data point for every X data points in a color space. For the 8-bit RGB, having 224 data points in the color space, the LUT often includes every 16th or ever 32nd data point, although the LUT may include more or less. The number of data points is often selected so as to evenly divide the total number of data points in the color space. For 8-bit bytes, with values ranging from 0 to 255, every 16th data point means a total of 17 values are used for each colorant. Since there are three colorants in the RGB space, the LUT would hold 173, or 4913, data points. In an 8-bit/channel CMYK conversion, the LUT would need 4913 times four bytes, or about 20 Kbytes, of memory. In an 8-bit/channel CMYKlclm, the LUT would need about 30 Kbytes of memory.
Although using a subset of conversions in a LUT can greatly reduce memory requirements, the time needed to populate the LUT may still be prohibitive. In the example above, 4913 conversions are needed. If each conversion has to be fully calculated, populating the LUT could take several seconds or longer. In order to reduce the time, conversions can be calculated for a subset of the LUT entries. Then, embodiments of the present invention can apply an interpolation technique to populate the rest of the LUT entries.
In one embodiment, conversions are calculated for a set of control points. Control points are often selected along 13 lines in a color space. The color space in
The other 12 control lines are illustrated in
Table 1 below illustrates a LUT for an 8-bit/channel RGB to an 8-bit/channel CMYK color conversion using only 5 control points per control line for ease of illustration. Even with just 5 control points per control line, Table 1 includes 125 data points. Table 1 includes the values for both the RGB and the CMYK data points for purposes of explanation. In practice however, a LUT is unlikely to include the RGB values. Rather, the LUT will usually rely on an index, or simply a position in memory, to indicate the RGB values.
In Table 1, each control point has an * next to its index number. The 13 control lines, with five control points per line, include a total of 47 unique control points. The six control lines for K to the six primary colorants (RGBCYM) include the following control points:
These six control lines define a total of 25 unique control points. The six control lines from W to the six primary colorants (RGBCYM) include the following control points:
These six control lines define an additional 19 unique control points. The last control line from K to W includes the following control points:
This control line defines an additional 3 unique control points for the total 47 control points.
Once the control points have all been mapped, embodiments of the present invention can be used to interpolate the remaining data points in the LUT. Since the LUT in Table 1 includes a total of 125 data points, and there are 47 unique control points, 78 target data points remain to be interpolated.
Next, at 620, the process identifies a number of planar regions in the first color space among the control lines. That is, certain control lines, in groups of three or four, define the boundaries of the planar regions. In one embodiment, the planar regions include six triangular regions and six rectangular regions. The six rectangular regions may simply be the six external surfaces of the color space. The six triangular regions may be internal to the color space, and include all of the triangles that can be formed using the neutral control line.
For instance, skipping briefly to
Returning to
Once regions have been defined using control lines, and color boundaries have been established within the regions, the process applies a “quadrangular” interpolation technique at 640. This quadrangular interpolation includes interpolating target points in the quadrangular regions from the first color space to the second color space using the predetermined values of control points bounding the respective quadrangular regions. One embodiment of this quadrangular interpolation is described in more detail below with respect to
In the embodiment of
For example,
Returning to
At 730, any target points along the boundary line are linearly interpolated. Any number of linear interpolation techniques can be used for these target points. For example, in
At 740, target points in the quadrangular area are selected for interpolation starting from the furthest target point from a corner of the color space corresponding to the limited colorant and working in to the nearest target point. In
At 750, three lengths are determined for each target point in the quadrangular region. One length extends perpendicularly from a target point to a control point on a side of the quadrangular region opposite the boundary line. In
In other embodiments, one of the parallel lengths may extend to the boundary line rather than a side of the quadrangular region. For instance,
Referring again to
Length Factor, L=L1+L2+L3=64+64+127=255
Weight Factors: W1=L/L1=255/64
W2=L/L2=255/64
W3=L/L3=255/127
W=W1+W2+W3=9.98
Normalized Weight Factors: N1=W1/W=0.4
N2=W2/W=0.4
N3=W3/W=0.2
Target C=(N1C1+N2C2+N3C3)=0.4*0+0.4*63+0.2*63=37.8
Target M=(N1M1+N2M2+N3M3)=0.4*127+0.4*63+0.2*255=127
Target Y=(N1Y1+N2Y2+N3Y3)=0.4*127+0.4*63+0.2*255=127
Therefore, the interpolated value of target point 1045 in the second color space is (37.8,127,127,0). Of course, the calculation could have also been done for K, but the result would still have been zero. A similar approach can be used for each target point in the quadrangular region.
Referring again back to
All of the internal triangular planes can be interpolated using various embodiments of the present invention, such as the embodiment described in
For example,
Once the triangle planes are formed, an interpolation process, much like the one described in
For example,
The process of
For surface triangles that do not include the K corner (i.e. include the W corner instead) in a CMYKlclm color conversion, various embodiments of the present invention can form boundary lines to limit the propagation of high dye C and M colorants to the high-light regions of the color space in which low dye lc and lm can be used instead, much like K is limited in other planes. The surface triangles are all arranged so that each triangle includes the W corner and two primaries. These triangles are: WCB, WBM, WMR, WRY, WYG, and WGC. Much like the embodiment of
In
If a first control line from W to a primary uses both high-dye and low-dye (e.g. control line WC) and the other uses only high-dye (e.g. control line WY), only the first control line will have a boundary point. That is, there is no point in the second control line at which the limited colorant is first limited. In order to form a boundary line in this situation, one embodiment of the present invention selects a control point at or near a mid point in the second control line, and uses that point as if it were a true boundary point to form the boundary line through the triangular area.
If neither control line includes a true boundary point because no limited colorant is used in a given triangular plane, any of a number of linear interpolation techniques can be applied to interpolate the entire triangular plane.
Certain embodiments may include additional components, may not require all of the above components, or may combine one or more components. For instance, temporary memory 1320 may be on-chip with processor 1310. Alternately, permanent memory 1340 may be eliminated and temporary memory 1320 may be replaced with an electrically erasable programmable read only memory (EEPROM), wherein software routines are executed in place from the EEPROM. Some implementations may employ a single bus, to which all of the components are coupled, or one or more additional buses and bus bridges to which various additional components can be coupled. Those skilled in the art will be familiar with a variety of alternate internal networks including, for instance, an internal network based on a high speed system bus with a memory controller hub and an I/O controller hub. Additional components may include additional processors, a CD ROM drive, additional memories, and other peripheral components known in the art.
In one embodiment, the present invention, as described above, is implemented using one or more hardware systems such as the hardware system of
Alternately, as shown in
From whatever source, the instructions may be copied from the storage device into temporary memory 1320 and then accessed and executed by processor 1310. In one implementation, these software routines are written in the C programming language. It is to be appreciated, however, that these routines may be implemented in any of a wide variety of programming languages.
In alternate embodiments, the present invention is implemented in discrete hardware or firmware. For example, one or more application specific integrated circuits (ASICs) could be programmed with one or more of the above described functions of the embodiments of the present invention. In another example, one or more functions of the embodiments of the present invention could be implemented in one or more ASICs on additional circuit boards and the circuit boards could be inserted into the computer(s) described above. In another example, programmable gate arrays could be used to implement one or more functions of embodiments of the present invention. In yet another example, a combination of hardware and software could be used to implement one or more functions of the embodiments of the present invention.
Thus, color space conversion using interpolation is described. Whereas many alterations and modifications of the embodiments of the present invention will be comprehended by a person skilled in the art after having read the foregoing description, it is to be understood that the particular embodiments shown and described by way of illustration are in no way intended to be considered limiting. Therefore, references to details of particular embodiments are not intended to limit the scope of the claims.
Number | Name | Date | Kind |
---|---|---|---|
4985759 | Ito | Jan 1991 | A |
5428465 | Kanamori et al. | Jun 1995 | A |
5850471 | Brett | Dec 1998 | A |
6304671 | Kakutani | Oct 2001 | B1 |
6571010 | Inoue | May 2003 | B1 |
6705703 | Zeng et al. | Mar 2004 | B2 |
7009734 | Suwa et al. | Mar 2006 | B2 |
7016530 | Saito et al. | Mar 2006 | B2 |
7019868 | Chang et al. | Mar 2006 | B2 |
Number | Date | Country |
---|---|---|
0820189 | Jan 1998 | EP |
1173004 | Jan 2002 | EP |
2002-033930 | Jan 2002 | JP |
2002-064723 | Feb 2002 | JP |
2002-077650 | Mar 2002 | JP |
2002-335413 | Nov 2002 | JP |
Number | Date | Country | |
---|---|---|---|
20040141642 A1 | Jul 2004 | US |