Method and apparatus for improved color correction
Claim Score by NHIP
Abstract
Methods and apparatuses for color correction that includes gamma correction. One embodiment of the present invention pre-processes the native device information of a color device (e.g., a color display device) to generate pseudo-native device information such that when a single, unique function is applied on the pseudo-native device information, a customized look up table for gamma correction in a video card is generated. The customized look up table is calibrated for the optimization of color rendering for skin tone in one region in a color space while maintaining the gray colors for the user interface elements in another region in the color space.

Term
Term ended
Projected expiry passed 2 June 2024, 2.3 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
25 claims: 5 independent, 20 dependent
- 1Broadest claimClaim Score 86, broad(NHIP)A method for color correction, the method comprising:determining pseudo-native device information for a color device from first color correction functions;wherein, when applied, a predetermined algorithm generates the first color correction functions from the pseudo-native device information.
- 6A machine readable medium containing executable computer program instructions which when executed by a data processing system cause said system to perform a method for color correction, the method comprising:determining pseudo-native device information for a color device from first color correction functions;wherein, when applied, a predetermined algorithm generates the first color correction functions from the pseudo-native device information.
- 11A data processing system for color correction, the data processing system comprising:means for determining pseudo-native device information for a color device from first color correction functions;wherein, when applied, a predetermined algorithm generates the first color correction functions from the pseudo-native device information.
- 16A machine readable medium containing data specifying device information for a color device which when used by a data processing system causes said system to perform color correction specified by the data which is obtained by a method for color correction, the method comprising:determining the data specifying pseudo-native device information for the color device from first color correction functions;wherein, when applied, a predetermined algorithm generates the first color correction functions from the pseudo-native device information.
- 21A machine readable medium containing executable computer program instructions which when executed by a processing system cause the processing system to perform a method of displaying data, the method comprising:receiving uncorrected color data of an image to be displayed on a display device;correcting the uncorrected color data to produce corrected color data through a color correction function obtained from an algorithm which generates the color correction function from pseudo-native device information for a color device;and displaying the corrected color data on the color device.
Independent claims5
81 paragraphs in 5 sections, as filed
0001This application is a divisional of co-pending U.S. patent application Ser. No. 10/637,246, filed on Aug. 7, 2003, which is a continuation-in-part (CIP) application of U.S. patent application Ser. No. 10/112,281, filed Mar. 29, 2002, entitled “Method and Apparatus for Improved Color Correction” and now issued as U.S. Pat. No. 6,844,881.
FIELD OF THE INVENTION
0002The invention relates to color correction, more particularly to tone (“gamma”) correction for devices with multiple color channels.
0003A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. Copyright Apple Computer, Inc., 2003
BACKGROUND
0004The light intensity (Y) produced by a Cathode Ray Tube (CRT) monitor is controlled by the voltage input. A transfer function of the CRT monitor is the light intensity (Y) produced by a Cathode Ray Tube (CRT) monitor varying with respect to the voltage input (V). Typically, the transfer function of a CRT monitor is in the form of a power law (for example, Y=aV<sup>γ</sup>, where “a” is a constant). The exponent of the power law, γ, is frequently referred to as the gamma of the CRT monitor. The theoretical value of the gamma of a CRT monitor, dictated by the physics of the electron gun of a CRT monitor, is around 2.5. Thus, a linear variation in voltage input (V) results in a nonlinear variation in light intensity (Y) in the form of a power law. On a color CRT monitor, red, green and blue phosphors are driven independently by corresponding signals. The light intensities produced by the phosphors in response to the corresponding signals follow the same power law.
0005A computer system may have a nonlinear built-in unit that is closely associated with the CRT monitor (e.g., a graphics controller, or circuitry in the monitor) such that the light intensity produced by the CRT monitor varies with respect to the input digital signal to the display device in the form of a power law controlled by a gamma different from the gamma for the CRT monitor. For example, a typical Apple Macintosh display has a gamma close to 1.8; and a typical PC display has a gamma close to 2.2. Thus, different display devices have different nonlinearities (different gammas) in their transfer functions.
0006In this description, the transfer function per channel of the uncompensated device is referred as native transfer function. The native transfer function is assumed to be different from the desired device transfer function, that is referred as target transfer function. The process of pre-compensating for the nonlinearity in the native transfer function of a display device to a target transfer function is known as gamma correction. With a gamma correction, an input digital signal is mapped by a correction function to a corrected signal such that, when the corrected signal is applied to the display system, the light intensity produced by the display device varies with respect to the input digital signal in the form of a power law with a target gamma. With the gamma correction, the display system behaves as if the transfer function of the system has the target gamma. In case of multiple color channel devices, gamma correction is a unidimensional correction applied per channel. This means that the input signal from one channel is mapped into an output signal for that channel. The correction function is computed based on the native transfer function of the device measured as a correlate of the intensity of light (luminance or density) with the input signal. The intensity of light is used only, neglecting the chrominance information.
0007In general, a gamma correction maps input signals representing the intensity of a light to corrected signals using a nonlinear function. Gamma corrections may be applied to signals for display devices, as well as signals to or from other color related devices, such as scanners, printers, video cameras, and others. Thus, a gamma correction changes or encodes the nonlinearity in signal intensity in each of the color signals using a nonlinear unidimensional mapping function for each channel.
0008On a color CRT display, since the native transfer functions of the three different color components (e.g., red, green and blue in a RGB color space) of a CRT display follow the same power law, a single parameter gamma correction in the form of a power law can be used to map the input signals of each color channel to the corrected signals.
0009However, some display devices, such as twisted nematic Thin-Film Transistor Liquid-Crystal Displays (TFT LCD), have asimilar transfer functions for different color components. Thus, different unidimensional correction functions are required to correct the asimilar transfer functions to similar target transfer functions. A conventional gamma correction applies different unidimensional correction functions to the input signals for different color components; and the different unidimensional correction functions are derived independently from each other from the native transfer functions and the target transfer functions. Not only that, but the TFT LCD devices show a different native transfer function than a power law requiring table based gamma compensation. Typically, these unidimensional correction functions are in the form of unidimensional look-up tables that map the input digital signals to the corrected signals. Because of the asymmetry of the RGB channels, the gray balance of those devices is poor. Due to the human visual system sensitivity to color differences especially for neutral colors (grays), small asymmetries in the color balance associated with gray color rendition, is usually perceived as a hue shift over the grays. This hue shift is known as color cast and is visible in the form of bluish, greenish or reddish grays depending on the color asymmetry on that device. Additionally, in many cases, TFTLCD devices may show a variation of the chromaticity of the primary colors with the input signal. In the case of gamma correction per channel based on light intensity only per channel, when all compensated channels are combined to represent a gray, the combined compensations may cause a noticeable hue shift for different input signal levels.
SUMMARY OF THE DESCRIPTION
0010Methods and apparatuses for color corrections are described here. Some of the embodiments of the present invention are summarized in this section.
0011One embodiment of the present invention pre-processes the native device information of a color device (e.g., a color display device) to generate pseudo-native device information such that when a single, unique function is applied on the pseudo-native device information, a customized look up table for gamma correction in a video card or other display driver system is generated. The customized look up table is calibrated for the optimization of color rendering for skin tone in one region in a color space while maintaining the gray colors for the user interface elements in another region in the color space.
0012In one aspect of the present invention, a method to determine color correction for a device includes: calibrating a plurality of colors produced on the device to generate color correction functions respectively for color components of a first color space, where the plurality of colors are associated with a color parameter having a range of possible values such as a plurality of values (e.g., a color component of the first color space, luminance). In one example, the color correction functions include look up tables for gamma correction; and, the plurality of colors correspond to more than one point in a chromaticity diagram. In one example, the plurality of colors include grays (e.g., including white) in a first range of the color parameter and skin tone colors in a second range of the color parameter (e.g., the luminance levels of the skin tone colors are lower than the luminance levels of the grays). In one example, the plurality of colors are calibrated through reducing differences between the plurality of colors on the device with respect to one or more color points in a second color space (e.g., in an xy color space, where the first color space is an RGB color space). In one example, both luminance and chromaticity values for characterizing the device are used in calibrating the plurality of colors. In one example, the device displays colors; the plurality of colors are calibrated through modifying values of the color components interdependently; and, the plurality of colors are calibrated through displaying the plurality of colors on the device for visual inspection.
0013In another aspect of the present invention, a method to determine color correction for a device includes: combining first color correction functions and second color correction functions to generate third color correction functions respectively for color components of a first color space; where the first color correction functions are calibrated for the device for a first plurality of colors that are associated with a color parameter capable of having a plurality of values (e.g., grays in a first range of the color parameter and skin tone colors in a second range of the color parameter). In one example, the second color correction functions are calibrated for the device for a second plurality of colors that are associated with a color parameter capable of having a plurality of values. In one example, combining the first and second color correction functions includes: normalizing the first and second color correction functions with respect to fourth color correction functions; and, averaging the normalized first and second color correction functions with weights to generate the third color correction functions.
0014In another aspect of the present invention, a method for color correction includes: determining pseudo-native device information for a color device from first color correction functions; wherein, when applied, a predetermined algorithm generates the first color correction functions from the pseudo-native device information. In one example, when applied, the predetermined algorithm generates second color correction functions from the native device information that specifies color characteristics of the color device. In one example, the color device displays colors; and, the native device information includes data specifying transfer functions of the device. In one example, a plurality of colors is calibrated on the device to generate the first color correction functions respectively for color components of a first color space, where the plurality of colors are associated with a color parameter capable of having a plurality of values. In one example, the plurality of colors include grays in a first range of the color parameter and skin tone colors in a second range of the color parameter.
0015The present invention includes methods and apparatuses that perform these methods, including data processing systems that perform these methods, and computer readable media which contain instructions which when executed on data processing systems cause the systems to perform these methods.
0016Other features of the present invention will be apparent from the accompanying drawings and from the detailed description that follows.
BRIEF DESCRIPTION OF THE DRAWINGS
0017The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.
0018<figref idref="DRAWINGS">FIG. 1</figref> shows a block diagram example of a data processing system that may be used with the present invention.
0019<figref idref="DRAWINGS">FIG. 2</figref> illustrates a typical method for color gamma correction.
0020<figref idref="DRAWINGS">FIG. 3</figref> illustrates a method to perform gamma correction according to one embodiment of the present invention.
0021<figref idref="DRAWINGS">FIG. 4</figref> illustrates a chromaticity diagram showing display characteristics of various devices.
0022<figref idref="DRAWINGS">FIG. 5</figref> illustrates a method to determine color components corresponding to colors that are close to white points according to one embodiment of the present invention.
0023<figref idref="DRAWINGS">FIG. 6</figref> illustrates a method of generating color components that correspond to colors that are close to white points according to one embodiment of the present invention.
0024<figref idref="DRAWINGS">FIG. 7</figref> illustrates a method of generating color correction functions from a color correction function for one color component according to one embodiment of the present invention.
0025<figref idref="DRAWINGS">FIG. 8</figref> illustrates a method to generate a color correction function for one color component according to one embodiment of the present invention.
0026<figref idref="DRAWINGS">FIG. 9</figref> shows a flow diagram for a method to generate color correction functions for color components in a color space according to one embodiment of the present invention.
0027<figref idref="DRAWINGS">FIG. 10</figref> shows a flow diagram for another method to generate color correction functions for color components in a color space according to one embodiment of the present invention.
0028<figref idref="DRAWINGS">FIG. 11</figref> shows a detailed flow diagram for a method to generate color correction functions for color components in a color space according to one embodiment of the present invention.
0029<figref idref="DRAWINGS">FIG. 12</figref> illustrates a method of generating color components that generate colors on a device, which colors are close to a number of selected color points according to one embodiment of the present invention.
0030<figref idref="DRAWINGS">FIG. 13</figref> illustrates a method of generating color correction functions to optimize gray scale colors and skin tone colors according to one embodiment of the present invention.
0031<figref idref="DRAWINGS">FIG. 14</figref> illustrates a method to generate a color correction function for one color component to optimize gray scale colors and skin tone colors according to one embodiment of the present invention.
0032<figref idref="DRAWINGS">FIG. 15</figref> shows a flow diagram for a method to generate color correction functions to minimize the distortion relative to a plurality of color points according to one embodiment of the present invention.
0033<figref idref="DRAWINGS">FIG. 16</figref> shows a flow diagram for another method to generate color correction functions for color components in a color space to minimize the distortion of different color tones in different ranges of a color component according to one embodiment of the present invention.
0034<figref idref="DRAWINGS">FIG. 17</figref> shows a detailed flow diagram for a method to generate color correction functions for color components in a color space to minimize the distortion of different color in different ranges of a color parameter according to one embodiment of the present invention.
0035<figref idref="DRAWINGS">FIG. 18</figref> shows another method to generate color correction functions according to one embodiment of the present invention.
0036<figref idref="DRAWINGS">FIG. 19</figref> shows a method to combine color correction functions optimized for different color points to generate color correction functions according to one embodiment of the present invention.
0037<figref idref="DRAWINGS">FIG. 20</figref> shows a method to use pseudo-native device information for color correction according to one embodiment of the present invention.
DETAILED DESCRIPTION
0038The following description and drawings are illustrative of the invention and are not to be construed as limiting the invention. Numerous specific details are described to provide a thorough understanding of the present invention. However, in certain instances, well known or conventional details are not described in order to avoid obscuring the description of the present invention.
0039<figref idref="DRAWINGS">FIG. 1</figref> shows one example of a typical computer system that may be used with the present invention. Note that while <figref idref="DRAWINGS">FIG. 1</figref> illustrates various components of a computer system, it is not intended to represent any particular architecture or manner of interconnecting the components as such details are not germane to the present invention. It will also be appreciated that network computers and other data processing systems that have fewer components or perhaps more components may also be used with the present invention. The computer system of <figref idref="DRAWINGS">FIG. 1</figref> may, for example, be an Apple Macintosh computer.
0040As shown in <figref idref="DRAWINGS">FIG. 1</figref>, the computer system <b>101</b>, which is a form of a data processing system, includes a bus <b>102</b> that is coupled to a microprocessor <b>103</b> and a ROM <b>107</b> and volatile RAM <b>105</b> and a non-volatile memory <b>106</b>. The microprocessor <b>103</b>, which may be a G3 or G4 microprocessor from Motorola, Inc. or IBM is coupled to cache memory <b>104</b> as shown in the example of <figref idref="DRAWINGS">FIG. 1</figref>. The bus <b>102</b> interconnects these various components together and also interconnects these components <b>103</b>, <b>107</b>, <b>105</b>, and <b>106</b> to a display controller and display device <b>108</b> and to peripheral devices such as input/output (I/O) devices which may be mice, keyboards, modems, network interfaces, printers, scanners, video cameras and other devices which are well known in the art. Typically, the input/output devices <b>110</b> are coupled to the system through input/output controllers <b>109</b>. The volatile RAM <b>105</b> is typically implemented as dynamic RAM (DRAM) that requires power continually in order to refresh or maintain the data in the memory. The non-volatile memory <b>106</b> is typically a magnetic hard drive or a magnetic optical drive or an optical drive or a DVD RAM or other type of memory systems that maintain data even after power is removed from the system. Typically, the non-volatile memory will also be a random access memory although this is not required. While <figref idref="DRAWINGS">FIG. 1</figref> shows that the non-volatile memory is a local device coupled directly to the rest of the components in the data processing system, it will be appreciated that the present invention may utilize a non-volatile memory which is remote from the system, such as a network storage device which is coupled to the data processing system through a network interface such as a modem or Ethernet interface. The bus <b>102</b> may include one or more buses connected to each other through various bridges, controllers and/or adapters as is well known in the art. In one embodiment the I/O controller <b>109</b> includes a USB (Universal Serial Bus) adapter for controlling USB peripherals, and/or an IEEE-1394 bus adapter for controlling IEEE-1394 peripherals.
0041It will be apparent from this description that aspects of the present invention may be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other data processing system in response to its processor, such as a microprocessor, executing sequences of instructions contained in a memory, such as ROM <b>107</b>, volatile RAM <b>105</b>, non-volatile memory <b>106</b>, cache <b>104</b> or a remote storage device. In various embodiments, hardwired circuitry may be used in combination with software instructions to implement the present invention. Thus, the techniques are not limited to any specific combination of hardware circuitry and software nor to any particular source for the instructions executed by the data processing system. In addition, throughout this description, various functions and operations are described as being performed by or caused by software code to simplify description. However, those skilled in the art will recognize what is meant by such expressions is that the functions result from execution of the code by a processor, such as the microprocessor <b>103</b>.
0042A machine readable medium can be used to store software and data which when executed by a data processing system causes the system to perform various methods of the present invention. This executable software and data may be stored in various places including for example ROM <b>107</b>, volatile RAM <b>105</b>, non-volatile memory <b>106</b> and/or cache <b>104</b> as shown in <figref idref="DRAWINGS">FIG. 1</figref>. Portions of this software and/or data may be stored in any one of these storage devices.
0043Thus, a machine readable medium includes any mechanism that provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, network device, personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.). For example, a machine readable medium includes recordable/non-recordable media (e.g., read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), as well as electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.
0044<figref idref="DRAWINGS">FIG. 2</figref> illustrates a typical method for color gamma correction. When normalized, the same input signal for different color components results in light of different luminance values on a typical TFT LCD display. For example, curves <b>213</b>, <b>223</b> and <b>233</b> in graph <b>201</b> correspond respectively to transfer functions for Red (R), Green (G) and Blue (B) components in a RGB color space. For example, when the Blue signal is b, curve <b>233</b> shows the luminance of the display (Y<sub>b</sub>) in the absence of the Red and Green signals. In order to correct the transfer functions in graph <b>201</b> to the normalized target transfer functions in graph <b>251</b>, different unidimensional correction functions, shown in graphs <b>211</b>, <b>221</b>, and <b>231</b>, are derived independently from the corresponding native transfer functions in graph <b>201</b>. Correction function <b>215</b> corrects the input Red signal from r<sub>1 </sub>to r<sub>2</sub>; correction function <b>225</b> corrects the input Green signal from g<sub>1 </sub>to g<sub>2</sub>; and correction function <b>235</b> corrects the input Blue signal from b<sub>1 </sub>to b<sub>2</sub>. When the corrected signal levels r<sub>2</sub>, g<sub>2 </sub>and b<sub>2 </sub>are applied to the display, the native transfer functions of the display (in graph <b>201</b>) determine the luminance of the light produced on the display. Graphs <b>201</b><i>a</i>, <b>201</b><i>b </i>and <b>201</b><i>c </i>show the transfer functions <b>213</b>, <b>223</b> and <b>233</b> for the Red, Green, and Blue signals respectively. Signal levels r<sub>2</sub>, g<sub>2 </sub>and b<sub>2 </sub>correspond to points <b>217</b>, <b>227</b> and <b>237</b> on the native transfer functions <b>213</b>, <b>223</b> and <b>233</b> and, therefore, to luminance levels Y<sub>r</sub>, Y<sub>g</sub>, and Y<sub>b </sub>respectively, which in turn correspond to the luminance levels at points <b>253</b>, <b>255</b> and <b>257</b> in graph <b>251</b>. Thus, with the gamma correction functions <b>215</b>, <b>225</b>, and <b>235</b> illustrated in graphs <b>211</b>, <b>221</b> and <b>231</b>, the display system exhibits the normalized transfer functions as shown in graph <b>251</b>, where all the target transfer functions for the three color components coincide with each other. Thus, from the target transfer functions as shown in graph <b>251</b>, one can derive the correction functions <b>215</b>, <b>225</b> and <b>235</b> independently from the native transfer functions <b>213</b>, <b>223</b> and <b>233</b> respectively. For instance, for input Blue signal level b<sub>1</sub>, luminance level Y<sub>b </sub>is determined from the target transfer function <b>257</b> in graph <b>251</b>. From the native transfer function <b>233</b> in graph <b>201</b><i>c</i>, the corrected signal level b<sub>2 </sub>is determined from point <b>237</b>, which has the required luminance level Y<sub>b</sub>. Thus, point <b>235</b> on the correction function for Green in graph <b>231</b> is determined.
0045Due to the similar transfer functions for RGB color components for a color CRT display, such a gamma correction operation ensures inherently the stability of the white point corresponding to digital signals for various gray levels. Thus, the colors produced on the CRT display by the digital signals corresponding to various gray levels coincide with a reference white point, or stay in the vicinity of the reference white point. However, when the conventional gamma correction is performed for twisted nematic TFT LCD displays, the white point of the display varies when the input gray level varies from white to black, due to the asymmetry of the transfer functions for different color components.
0046At least one embodiment of the present invention seeks to perform gamma corrections by utilizing both the luminance and the chromaticity properties of a display device. The correction functions for different color components are derived interdependently from the luminance and the chromaticity data of the display device such that gamma corrections maintain a substantially consistent white point over a plurality of gray levels from a white to a black.
0047<figref idref="DRAWINGS">FIG. 3</figref> illustrates a method to perform gamma correction according to one embodiment of the present invention. In this embodiment, a correction function is first derived for one of the color components (e.g., from the native transfer function of the device). For example, a correction function for color component Green is derived from the native transfer function <b>301</b> in graph <b>301</b>. Green is preferred, since the dominant contribution to the luminance of a gray is from the component Green. Thus, correction function <b>325</b>, illustrated in graph <b>321</b>, can be determined from the native transfer function <b>323</b> and from the target transfer function <b>355</b> in graph <b>351</b>, using a method similar to that described above for determining correction function <b>225</b> in graph <b>221</b>. However, the correction functions for the other components are derived from the correction function <b>325</b> to ensure the stability of the white point corresponding to digital signals for various gray levels. Instead of being derived from the target transfer function and the corresponding native transfer functions, the correction functions <b>315</b> and <b>335</b> are derived from the correction function <b>325</b> to maintain a substantially consistent white point over a plurality of gray levels from a white to a black. For example, for a gray level corresponding to input Red, Green and Blue levels r<sub>g</sub>, g<sub>g </sub>and b<sub>g</sub>, the color difference between a white point and the color produced by corrected color levels r<sub>w</sub>, g<sub>w </sub>and b<sub>w </sub>is reduced or minimized. Since the correction function <b>325</b> determines the corrected Green level g<sub>w</sub>, the corrected red and blue levels (r<sub>w </sub>and b<sub>w</sub>) can be adjusted such that the color produced by the corrected color levels (r<sub>w</sub>, g<sub>w </sub>and b<sub>w</sub>) corresponds to a white point, or is as close to a white point as possible. When corrected color levels for a plurality of gray levels are determined, correction functions <b>315</b> and <b>335</b> can be determined. When the correction functions <b>315</b> and <b>335</b>, derived from the correction function <b>325</b> with the criterion to minimize the color difference between the color produced by the corrected color levels for grays and a white point, are used on the display system, the combination of the correction functions and the native transfer function typically results in different target transfer functions for different color components. For example, the target transfer functions <b>353</b>, <b>355</b> and <b>357</b> for color components Red, Green and blue respectively, as shown in graph <b>351</b>, do not coincide with each other.
0048<figref idref="DRAWINGS">FIG. 4</figref> illustrates a chromaticity diagram showing display characteristics of various devices. In a CIE (Commission International d'Eclairage) 1931 chromaticity diagram, the horseshoe-shaped color space <b>401</b> represents the colors visible to a standard observer. Curve <b>410</b> represents the black body curve, which represents the color of the light emitted by a theoretical “black body at different absolute temperatures (in degrees Kelvin). The light emitted from the black body represents white light with different hues, ranging from yellow-reddish at low temperatures (e.g., 5000K at point <b>411</b>) to bluish at high temperatures (e.g., 9300K at point <b>415</b>). Point <b>413</b> on the black body curve represents the white light emitted from a black body at 6500K. Slightly off the black body curve, point <b>409</b> (D<sub>65</sub>) is the reference white for NTSC television.
0049In the absence of green and blue signals, a display produces a saturated red when the red signal reaches the maximum level. The saturated red is represented by point <b>421</b> (R<sub>1</sub>). Similarly, points <b>423</b> (G<sub>1</sub>) and <b>425</b> (B<sub>1</sub>) represent the saturated green and blue. In the absence of green and blue signals, a CRT display may produce a different red color when the red signal is not at the maximum level. As the red signal reduces from the maximum level to zero, the red color produced by the CRT display under white ambient light typically stays at or near point R<sub>1 </sub>(<b>421</b> ) and then moves quickly along path <b>431</b> toward white point D<sub>65 </sub>(<b>409</b>). Similarly, the light produced by the green signal stays at or near point G<sub>1 </sub>(<b>423</b>) and moves quickly toward D<sub>65 </sub>(<b>409</b>) along path <b>433</b>, as the green signal reduces from the maximum level to zero; and the blue light moves from B<sub>1 </sub>(<b>425</b>) toward D<sub>65 </sub>(<b>409</b>) along path <b>435</b>. Thus, when balanced input signals for a gray is applied on the display, the combined red, blue and green light produced by the CRT display typically has a stable white point on or near the native white, which in this example was selected for illustration purposes as D<sub>65 </sub>(<b>409</b>). Since the color produced by the CRT monitor is the mixture of the light emitted from the red, green and blue phosphors, triangular <b>403</b> represents the colors that can be produced by the CRT monitor.
0050However, some display devices, such as twisted nematic TFT LCD displays, have different display characteristics. In the absence of green and blue signals, the red light emitted from the display moves along a different path, such as path <b>441</b>, toward the white point D<sub>65</sub>, as the red signal reduces from the maximum level to zero. Instead of staying at or near R<sub>1 </sub>(<b>421</b>), the red light moves near the saturated red. Similarly, the green and blue light move along paths <b>443</b> and <b>445</b> respectively. As a result, when balanced red, blue and green signals for a gray are applied on the display, the color produced by the signals does not coincide with the white point D<sub>65</sub>. When the gray level changes from a white to a black, the color produced by the signals moves around the reference white point.
0051In one scenario, balanced red, blue and green signals for a display device produce a white point consistent gray. However, due to the difference in native transfer functions, conventionally gamma corrected signals from balanced red, blue and green signals are not unbalanced, resulting in a white point inconsistent gray after gamma correction. Because native transfer functions are different, a conventional method requires different correct functions f<sub>1</sub>, f<sub>2</sub>, f<sub>3 </sub>for RGB. Thus, balanced uncorrected signals (r=g=b) result in unbalanced corrected signals f<sub>1</sub>(r), f<sub>2</sub>(g), and f<sub>3</sub>(b).
0052In another scenario, a white point consistent gray must be created on a display device with unbalanced red, blue and green signals. In this case, conventional approach for gamma correction, in general, cannot produce signals for generating white point consistent gray levels.
0053Thus, at least one embodiment of the present invention seeks to gamma correct input signals such that the gamma corrected signals for a gray produces a white point consistent color on a target display device.
0054<figref idref="DRAWINGS">FIG. 5</figref> illustrates a method to determine color components corresponding to colors that are close to white points according to one embodiment of the present invention. In <figref idref="DRAWINGS">FIG. 5</figref>, R<sub>1 </sub>(<b>511</b>), G1 (<b>513</b>) and B<sub>1 </sub>(<b>515</b>) represent the saturated red, green and blue produced by a display; paths <b>541</b>, <b>543</b> and <b>545</b> represent the colors of the red, green and blue light produced by the display at different levels of input signals; and D<sub>65 </sub>(<b>550</b>) represents an example of the target white point. Using a conventional approach, red, green and blue signals for a gray is corrected independent from each other to produce colors represented by R<sub>2 </sub>(<b>521</b>), G<sub>2</sub>(<b>523</b>) and B<sub>2 </sub>(<b>525</b>). The mixture of the red, green and blue light represented by R<sub>2 </sub>(<b>521</b>), G<sub>2</sub>(<b>523</b>) and B<sub>2 </sub>(<b>525</b>) corresponding to equal Red, Green, Blue signals produces a color W<sub>2 </sub>(<b>552</b>), which is very different from the target white D<sub>65</sub>. According to one embodiment of the present invention, the signal for Green is corrected to produce green light G<sub>2 </sub>(<b>523</b>). However, the signals for red and blue are corrected such that the corrected signals produce red R<sub>3 </sub>(<b>531</b>) and blue B<sub>3 </sub>(<b>535</b>) on the display. Thus, the mixture of R<sub>3 </sub>(<b>531</b>), G<sub>2 </sub>(<b>523</b>) and B<sub>3 </sub>(<b>535</b>) produces W<sub>3 </sub>(<b>553</b>), which is substantially consistent with the target white point D<sub>65</sub>. Preferably, W<sub>3 </sub>(<b>553</b>) coincides with the white point D<sub>65</sub>. However, on some devices or for some gray levels generating colors close to black it may not be possible to adjust R<sub>3 </sub>and B<sub>3 </sub>along paths <b>541</b> and <b>545</b> such that W<sub>3 </sub>(<b>553</b>) coincides with the target white point D<sub>65</sub>.
0055Notice that a color difference between two colors can be quantified using the distance between the points representing the colors in a chromaticity diagram. This metric was used because for most TFT LCD devices it is possible to adjust R<sub>3 </sub>and B<sub>3 </sub>along paths <b>541</b> and <b>545</b> such that W<sub>3 </sub>(<b>553</b>) physically coincides with the target white point. A proper metric system can also be used in computing the distance. For example, in one metric system, such as a Stiles system, if two neighboring points are just noticeably different colors on the chromaticity diagram, the line element connecting the two points has the same constant value along its length. When such a metric system is used, a minimization process can produce a better solution than that produced without using a metric system. Color difference formula such as AE defined in CIE L*a*b* or CIE L*u*v* can be also used. Also color difference can be estimated visually and minimized through visual feedback. In such implementation Red and Green adjustments are used to adjust R<sub>3 </sub>and B<sub>3 </sub>along paths <b>541</b> and <b>545</b> such that the best visual match is obtained between the target white point and the gray white point resulted by the color mixture of Red, Green and Blue color components. Such implementation can be used in a visual gamma correction application.
0056<figref idref="DRAWINGS">FIG. 6</figref> illustrates a method of generating color components that correspond to colors that are close to white points according to one embodiment of the present invention. For a given green signal level g, curves <b>501</b>, <b>503</b>, <b>505</b> show the signal levels for red, green and blue on points <b>511</b>, <b>513</b> and <b>515</b> that can produce on the display a color that coincides with a target white point on a chromaticity diagram. Due to the limitation of the display device, at a certain range of green signal, it may not be possible to have corresponding red and blue signal levels that can produce a white point consistent gray on the device. For example, white point consistent signal levels for red and blue may follow curves <b>531</b> and <b>535</b> after points X<sub>2 </sub>(<b>522</b>) and X<sub>1 </sub>(<b>521</b>). Thus, it may be desirable to construct curves <b>541</b> and <b>545</b> such that the produced colors for the gray levels are substantially consistent with the white point while the overall curves are monotonic, varying substantially smoothly. The correction for monotonicity and smoothness is however applied for very dark grays, close to a black color where the human visual system sensitivity to color is much reduced.
0057<figref idref="DRAWINGS">FIG. 7</figref> illustrates a method of generating color correction functions from a color correction function for one color component according to one embodiment of the present invention. Graph <b>701</b> shows a correction function for green signal level (e.g., generated according to a traditional method). When the same correction function <b>705</b> is also applied to red and blue signals, balanced red, green and blue signals for a gray level will remain balanced. Graph <b>711</b> shows the signal levels for producing substantially white point consistent gray levels (e.g., generated using a method as illustrated in, and described with, <figref idref="DRAWINGS">FIG. 6</figref>). Thus, balanced signals can be corrected by curves <b>713</b>, <b>715</b> and <b>717</b>, to produce white point consistent gray levels. Combining correction function <b>705</b> and white point curves <b>713</b>, <b>715</b> and <b>717</b> leads to correction functions <b>725</b>, <b>735</b> and <b>745</b> for red, green and blue signal levels. For example, point <b>723</b> on correction curve <b>725</b> for red can be determined from the positions of point <b>703</b> on the correction curve <b>705</b> for green and point <b>713</b> on the white point curve for red. Similarly, points <b>703</b> and <b>717</b> determine the position of point <b>743</b> for the correction function for blue.
0058<figref idref="DRAWINGS">FIG. 8</figref> illustrates a method to generate a color correction function for one color component according to one embodiment of the present invention. In such an embodiment of the present invention, it is desirable to gamma correct the signals such that the luminance of gray levels is corrected to a target gamma. In graph <b>801</b>, balanced uncorrected signal for gray levels from a white to a black is shown by line <b>803</b>. Thus, the luminance represented by the uncorrected signals for various gray levels can be determined as shown by line <b>813</b> in graph <b>811</b>. Therefore, an input green signal level g<sub>1 </sub>for a gray level corresponds to luminance level Y<sub>1 </sub>at point <b>815</b>. On the other hand, graph <b>841</b> shows the signal levels <b>843</b>, <b>845</b> and <b>847</b> for producing white point consistent gray levels on the target display. Thus, the luminance values of the white point consistent gray levels produced on the display can be determined as a function of corrected signal level for green. For example, when the green signal level is g<sub>2 </sub>for producing a white point consistent gray level, point <b>835</b> shows the luminance Y<sub>2 </sub>of the white point consistent gray level on the device. In order to gamma correct the input luminance Y<sub>1 </sub>to the target luminance Y<sub>2</sub>, as shown by point <b>825</b> on curve <b>823</b> in graph <b>821</b>, a correction function <b>853</b> for the green signal level can be determined. For example, point <b>855</b> on curve <b>853</b> in graph <b>851</b> for input green signal g<sub>1 </sub>can be determined from: 1) determining Y<sub>1 </sub>from point <b>815</b>; 2) determining Y<sub>2 </sub>from point <b>825</b>; and 3) determining g<sub>2 </sub>from point <b>835</b>. Once the correction function <b>853</b> for green is determined, it can be combined with the white point curves in graph <b>841</b> to derive the correction functions for the other color components, as illustrated in <figref idref="DRAWINGS">FIG. 7</figref>.
0059<figref idref="DRAWINGS">FIG. 9</figref> shows a flow diagram for a method to generate color correction functions for color components in a color space according to one embodiment of the present invention. Operation <b>901</b> generates a first correction function for a first color component in a color space (e.g., Green in a RGB color space). It can be generated from the native transfer function and the target transfer function for the first color component using a traditional method; or, it can be generated using a method according to the present invention (e.g., a method as illustrated <figref idref="DRAWINGS">FIG. 8</figref>). Typically, luminance property data of the display is used to generate the first correction function. Operation <b>903</b> generates correction functions for the other color components in the color space (e.g., Red and Blue in a RGB color space) by reducing the difference between the color produced on a device by color components of a gray corrected by the correction functions and a target white point (e.g., in a chromaticity diagram). Typically, chromaticity property data of the display is used to generate the correction function for the other color components. Operation <b>905</b> performs gamma correction using the generated correction functions. By reducing the color difference in operation <b>905</b>, the generated correction functions ensure the signals representing gray levels produce white point consistent grays on the display once the correction functions are applied.
0060<figref idref="DRAWINGS">FIG. 10</figref> shows a flow diagram for another method to generate color correction functions for color components in a color space according to one embodiment of the present invention. Operation <b>911</b> determines the color components (e.g., Red and Blue in a RGB color space) as functions of a first color component in the color space (e.g., Green in a RGB color space) by minimizing the difference between the color produced on a device by the color components and a target white point (e.g., in a chromaticity diagram) for the first color component of different magnitudes. Chromaticity property data of a display device is typically used to generate these white point curves, which specify the other color components in terms of the first color component for producing grays with consistent white points on the device. Operation <b>913</b> generates a first correction function for the first color component; and operation <b>915</b> combines the color components as functions of the first color component and the first correction function to generate correction functions for other color components in the color space.
0061<figref idref="DRAWINGS">FIG. 11</figref> shows a detailed flow diagram for a method to generate color correction functions for color components in a color space according to one embodiment of the present invention. Operation <b>921</b> determines color components (e.g., Red and Blue in a RGB color space) as functions of a first color component in a color space (e.g., Green in a RGB color space) by minimizing the difference between the color produced on a device by the color components and a target white point (e.g., in a chromaticity diagram) for the first color component of different magnitudes. After the white point curves are generated from operation <b>921</b>, operation <b>923</b> determines a first function of luminance produced on a device by the color components as functions of the first color component. The first function of luminance represents the luminance of the white point consistent grays on the device as a function of the first color component. Operation <b>925</b> determines a second function of luminance represented by color components of a gray as a function of the first color component. The second function of luminance represents the luminance of the input signal as a function of the first color component. Operation <b>927</b> determines a luminance correction function for mapping luminance represented by color components to luminance produced by corrected color components on the device. The luminance correction function corrects the input luminance to the target luminance. Operation <b>929</b> determines a first correction function for the first color component from the first and second functions of luminance and the luminance correction function; and operation <b>931</b> combines the color components as functions of the first color component and the first correction function to generate correction functions for other color components in the color space. Thus, the correction functions generated according to the method in <figref idref="DRAWINGS">FIG. 11</figref> gamma correct the light intensity of gray levels while maintaining the color of the gray levels substantially consistent with a white point.
0062Although various examples are illustrated for gamma correction in RGB color space for displaying colors on a display device, it is apparent to one skilled in the art that the methods according the present invention can be applied to color corrections for color components represented in device dependent color spaces for various purpose. When the target device is a color producing device, such as a display or a printer, the color producing properties in luminance and chromaticity can be used to generate gamma correction functions according to the various methods of the present invention. When the target device is a color sensing device, such as a scanner or a video camera, the color sensing properties in luminance and chromaticity can be used to generate gamma correction functions according to the various methods of the present invention. Although various illustrated examples use correction functions to generate white point consistent gray levels, it would be apparent to one skilled in the art that the correction functions can be generated to maintain a substantially consistent color point (e.g., a color point as defined in a chromaticity diagram in the xy color space, which is a subspace of the xyY color space) over a plurality of colors.
0063Following is the source code for a method to compute the look-up tables that balance the R and B components of a color signal in a RGB color space for a target white point (e.g., D<sub>65</sub>). A simple (Euclidean) color distance is used in minimizing the color differences between the target white point (D<sub>65</sub>) and the colors corrected by the look-up tables. <tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="259PT" align="left" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>// structure to hold the chromaticity and the luminance value</entry></row><row><entry>typedef struct {</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="35PT" align="left" /><colspec colname="2" colwidth="56PT" align="left" /><colspec colname="3" colwidth="154PT" align="left" /><tbody valign="top"><row><entry /><entry>float</entry><entry>fx;</entry><entry>// x CIE chromaticity value</entry></row><row><entry /><entry>float</entry><entry>fy;</entry><entry>// y CIE chromaticity value</entry></row><row><entry /><entry>float</entry><entry>fY;</entry><entry>// Y Luminance value</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="259PT" align="left" /><tbody valign="top"><row><entry>} CIEColor;</entry></row><row><entry>/*<sub>—————————————————————</sub>*/</entry></row><row><entry>// This function computes the additive mixture of 2 colors</entry></row><row><entry>void</entry></row><row><entry>AdditiveMix (</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="154PT" align="left" /><tbody valign="top"><row><entry /><entry>float x1, float y1, float Y1,</entry><entry>// input 1, chromatic & luminance info</entry></row><row><entry /><entry>float x2, float y2, float Y2,</entry><entry>// input 2, chromatic & luminance info</entry></row><row><entry /><entry>float *xc, float *yc, float *Yc</entry><entry>// output, chromatic & luminance info</entry></row><row><entry /><entry>)</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="259PT" align="left" /><tbody valign="top"><row><entry>{</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="245PT" align="left" /><tbody valign="top"><row><entry /><entry>fa = (Y2/y2) / ( Y1/y1 + Y2/y2 ) ;</entry></row><row><entry /><entry>*xc = x1 + (x2 − x1) * fa ;</entry></row><row><entry /><entry>*yc = y1 + (y2 − y1) * fa ;</entry></row><row><entry /><entry>*Yc = Y1 + Y2;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="259PT" align="left" /><tbody valign="top"><row><entry>}</entry></row><row><entry>/*<sub>—————————————————————</sub>*/</entry></row><row><entry>// This function computes the look-up tables that balance the R and B for</entry></row><row><entry>// the target white point, in this case, D65.</entry></row><row><entry>void</entry></row><row><entry>LUTCorrection(</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="35PT" align="left" /><colspec colname="2" colwidth="56PT" align="left" /><colspec colname="3" colwidth="154PT" align="left" /><tbody valign="top"><row><entry /><entry>int</entry><entry>niSamples,</entry><entry>// number of samples per channel</entry></row><row><entry /><entry>CIEColor</entry><entry>*R,</entry><entry>// Red response, chromatic and luminance info</entry></row><row><entry /><entry>CIEColor</entry><entry>*G,</entry><entry>// Green response, chromatic and luminance info</entry></row><row><entry /><entry>CIEColor</entry><entry>*B,</entry><entry>// Blue response, chromatic and luminance info</entry></row><row><entry /><entry>CIEColor</entry><entry>*W,</entry><entry>// Gray response, chromatic and luminance info</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="35PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="175PT" align="left" /><tbody valign="top"><row><entry /><entry>int</entry><entry>*rLUT,</entry><entry>// output R look-up tables</entry></row><row><entry /><entry>int</entry><entry>*gLUT,</entry><entry>// output G look-up tables</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="35PT" align="left" /><colspec colname="2" colwidth="56PT" align="left" /><colspec colname="3" colwidth="154PT" align="left" /><tbody valign="top"><row><entry /><entry>int</entry><entry>*bLUT,</entry><entry>// output B look-up tables</entry></row><row><entry /><entry>)</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="259PT" align="left" /><tbody valign="top"><row><entry>{</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="21PT" align="left" /><colspec colname="2" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry>int</entry><entry>i, j, k,im,jm, ;</entry></row><row><entry /><entry>float</entry><entry>fx, fy, fY, fx1, fy1, fY1, fD, fDm, fDx, fDy,</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="35PT" align="left" /><colspec colname="1" colwidth="98PT" align="left" /><colspec colname="2" colwidth="126PT" align="left" /><tbody valign="top"><row><entry /><entry>fxw = 0.3127, fyw = 0.3290;</entry><entry>// target white point, i.e. D65</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="245PT" align="left" /><tbody valign="top"><row><entry /><entry>for(k=0; k< niSamples; k++) {</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="35PT" align="left" /><colspec colname="1" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry>im = 0; jm = 0;</entry></row><row><entry /><entry>fDm = 2; // initial value > max distance = (1{circumflex over ( )}2+1{circumflex over ( )}2){circumflex over ( )}.5</entry></row><row><entry /><entry>for(j=0; j< niSamples; j++) {</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="49PT" align="left" /><colspec colname="1" colwidth="210PT" align="left" /><tbody valign="top"><row><entry /><entry>for(i=0; i< niSamples; i++) {</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="84PT" align="left" /><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="126PT" align="left" /><tbody valign="top"><row><entry /><entry>AdditiveMix(</entry><entry>R[i].fx, R[i].fy, R[i].fY,</entry></row><row><entry /><entry /><entry>B[j].fx, B[j].fy, B[j].fY,</entry></row><row><entry /><entry /><entry>&fx1, &fy1, &fY1 );</entry></row><row><entry /><entry>AdditiveMix(</entry><entry>G[k].fx, G[k].fy, G[k].fY,</entry></row><row><entry /><entry /><entry>fx1, fy1, fY1,</entry></row><row><entry /><entry /><entry>&fx, &fy, &fY );</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="84PT" align="left" /><colspec colname="1" colwidth="175PT" align="left" /><tbody valign="top"><row><entry /><entry>// a simple (Euclidean) color distance is used here</entry></row><row><entry /><entry>fDx = fx − fxw ; fDy = fy − fyw ;</entry></row><row><entry /><entry>fD = pow( (fDx*fDx + fDy*fDy), .5 );</entry></row><row><entry /><entry>if( fD < fDm ) { // retain the case of minimum error</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="105PT" align="left" /><colspec colname="1" colwidth="154PT" align="left" /><tbody valign="top"><row><entry /><entry>fDm = fD; im = i; jm = j;</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="84PT" align="left" /><colspec colname="1" colwidth="175PT" align="left" /><tbody valign="top"><row><entry /><entry>}</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="49PT" align="left" /><colspec colname="1" colwidth="210PT" align="left" /><tbody valign="top"><row><entry /><entry>}</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="OFFSET" colwidth="35PT" align="left" /><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="77PT" align="left" /><colspec colname="3" colwidth="98PT" align="left" /><tbody valign="top"><row><entry /><entry>}</entry><entry /><entry /></row><row><entry /><entry>i = im; j = jm;</entry></row><row><entry /><entry>rLUT [k] = im</entry><entry>* 255. / (niSamples−1 .);</entry><entry>// Red look-up table</entry></row><row><entry /><entry>gLUT [k] = k</entry><entry>* 255. / (niSamples−1 .);</entry><entry>// Green look-up table</entry></row><row><entry /><entry>bLUT [k] = jm</entry><entry>* 255. / (niSamples−1 .);</entry><entry>// Blue look-up table</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="245PT" align="left" /><tbody valign="top"><row><entry /><entry>}</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="259PT" align="left" /><tbody valign="top"><row><entry>}</entry></row><row><entry>/*<sub>—————————————————————</sub>*/</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0064When color correction functions are derived for a display device (e.g., an LCD display panel) to have a consistent white point for grays, the display device can display the gray scale colors correctly. However, because of the asymmetry of the transfer functions and the distortion of the primary colors at different levels of driving signals (e.g., as illustrated by curves <b>441</b>, <b>443</b> and <b>445</b> in <figref idref="DRAWINGS">FIG. 4</figref>), the display device may not display other colors optimally according to the preference of a typical observer. For example, the skin tone colors may look desaturated while the observer may prefer a boost of the skin color toward a more vivid skin color. The rendering of the skin tone may be adjusted by modifying the RGB channel balance, which if it is done globally for the entire color space, can induce an apparent pinkish color shift in grays. But because in the color space the skin colors region and the light gray color region are relatively separate regions, they may be corrected through separate corrections for optimal color rendering of each color space region.
0065At least one embodiment of the present invention seeks to correct the color on the displays (e.g., by setting the native display information for a device to pseudo-native display information obtained according to embodiments of the present invention) such that optimal gamma corrections are achieved for photographic reproduction as well as for the user interface elements (e.g., on an LCD display panel).
0066It is discovered that: i) white point consistency of gray scales in high luminance regions are important for a good appearance of user interface elements in different shades of grays; and ii) skin tone colors that are important for photographic reproduction are not in the same high luminance regions. Thus, at least one embodiment of the present invention seeks to derive color correction functions to optimize the grays in one region (e.g., a high luminance region) and optimize the skin tone colors in another region. Thus, optimum color rendering for skin tone colors is achieved while maintaining white point balance of the gray colors of the user interface elements. In one embodiment of the present invention, the color correction is encapsulated in a color profile (e.g., as pseudo-native device properties, such as pseudo-native display transfer functions) such that a single unique system function (e.g., ColorSync API function) can be used to create a customized look up table (LUT) for color correction (including gamma correction) using a video card or other display or printer driver. More details are described below.
0067<figref idref="DRAWINGS">FIG. 12</figref> illustrates a method of generating color components that generate colors on a device, which colors are close to a number of selected color points according to one embodiment of the present invention. In <figref idref="DRAWINGS">FIG. 12</figref>, at each level of the green (g) component, curves <b>1031</b> and <b>1035</b> show the corresponding red (r) and blue (b) components for producing on the device (e.g., an LCD display panel) a color at (or near) a desirable color point in a chromaticity diagram (e.g., the diagram shown in <figref idref="DRAWINGS">FIG. 4</figref>). The curves in <figref idref="DRAWINGS">FIG. 12</figref> can be derived from the native transfer functions (or other information about the device, such as curves <b>441</b>, <b>443</b> and <b>445</b> in <figref idref="DRAWINGS">FIG. 4</figref>). Different regions of the curves in <figref idref="DRAWINGS">FIG. 12</figref> are determined for different color points (or different shades of colors). For example, in a high luminance region (e.g., region <b>1021</b>), the selected colors correspond to a consistent white point in the chromaticity diagram that will correspond to the rendition of gray colors of the user interface elements. For example, when the LCD panel is driven by the uncorrected color signal with: 1) red component at point <b>1001</b>, 2) green component at point <b>1003</b>, and 3) blue component at point <b>1005</b>, the display panel shows a gray color with the consistent white point in the chromaticity diagram. However, instead of optimizing for grays, region <b>1023</b> is used for optimizing skin tone colors. Because the user interface gray colors are not rendered with the tones in the region <b>1023</b>, the color correction in this region is optimized for skin color rendering. For example, when the LCD panel is driven by the uncorrected color signal with: 1) red component at point <b>1011</b>, 2) green component at point <b>1013</b>, and 3) blue component at point <b>1015</b>, the display panel shows a skin tone color with a corresponding color point in the chromaticity diagram. In region <b>1023</b>, the colors produced by the display may correspond to a single color point in the chromaticity diagram, or a number of disconnected color points in the chromaticity diagram, or one or more curves in the chromaticity diagram. The colors selected for regions <b>1023</b> are considered important for the skin tone rendering in photographic reproduction (or for other applications, or user preferences). Thus, the curves in <figref idref="DRAWINGS">FIG. 12</figref> show the levels of color components which, when driving the display device, cause the display device to produce the desirable color shades. The desirable color shades may be grays (e.g., in region <b>1021</b>) and skin tone colors (e.g., in region <b>1023</b>). However, other types of optimization for different regions may also be used. In one embodiment of the present invention, the region in which the green (g) component is larger than 238 (in the range of 0 to 255) is selected for the optimization of grays; and, a region in which the green (g) component is smaller than 238 is selected for the optimization of skin tone colors. In general, the signal curves in <figref idref="DRAWINGS">FIG. 12</figref> may be chosen so that the colors produced on the device by the input signals correspond to a number of selected discrete points in the chromaticity diagram, or a number of curve segments in the chromaticity diagram, or one continuous curve in the chromaticity diagram. The curves may be determined from the selection of the points (and/or curves) in the chromaticity diagram and the native transfer functions of the display panel. Alternatively, the colors may be determined from a graphical user interface. For example, the graphical user interface may display a set of colors on the display device, which can be compared to a reference (e.g., a reference card with pre-printed color shades, a pre-calibrated display, or a measuring instrument). Through the user interface, the input curves can be adjusted until the display result matches the reference (or the preference of an observer).
0068Since the curves in <figref idref="DRAWINGS">FIG. 12</figref> relate the color components (e.g., R, G and B) at different levels for the reproduction of desirable color shades (e.g., grays in region <b>1021</b> and skin tone colors in region <b>1023</b>), the color correction function (e.g., for gamma) for one color component (e.g., G) can be used to derived the corresponding color correction functions for the other color components (e.g., R and B). Thus, the color correction functions for gamma correction are not separately derived from the native transfer functions but independently from each other.
0069<figref idref="DRAWINGS">FIG. 13</figref> illustrates a method of generating color correction functions to optimize gray scale colors and skin tone colors according to one embodiment of the present invention. Graph <b>1101</b> shows a correction function for the green component (e.g., generated according to a traditional method). Graph <b>1111</b> shows the signal levels for producing selected colors (e.g., generated using a method as illustrated in, and described with, <figref idref="DRAWINGS">FIG. 12</figref>). Graph <b>1151</b> shows the input signal levels that correspond to the selected colors before the correction (e.g., that causes a perfect device to display the same selected colors, or that defines the same selected colors on the same chromaticity diagram). For example, in the region optimized for grays, the red, green and blue values are balanced (see segment <b>1159</b>) differently from the region optimized for skin tone, the red, green and blue values (e.g., red component (see curve <b>1153</b>) is higher than the green component (see curve <b>1155</b>); and the blue component (see curve <b>1157</b>) is lower than the green component (see curve <b>1155</b>)). Combining correction function <b>1105</b>, display color point curves <b>1113</b>, <b>1115</b> and <b>1117</b>, and input color curves in graph <b>1151</b> leads to correction functions <b>1125</b>, <b>1135</b> and <b>1145</b> for red, green and blue signal levels. For example, point <b>1103</b> on correction function <b>1105</b> shows the green values before and after the correction (e.g., x and y); points <b>1153</b>, <b>1155</b> and <b>1157</b> show the input values (rx, gx, bx) before the correction if the skin tone color is to be produced when the green component is x; points <b>1113</b>, <b>1115</b> and <b>1117</b> show the input values (ry, gy, by) after the correction if the skin tone color is to be produced when the green component is y; thus, point <b>1123</b> on correction curve <b>1125</b> for red can be determined from the position of point <b>1103</b> on the correction curve <b>1105</b> for green, the position of point <b>1113</b> of the display color point curve for red and the position of point <b>1153</b> of the input color point curve for red. Similarly, the position of point <b>1143</b> for the correction function for blue is determined from the positions of points <b>1103</b>, <b>1117</b> and <b>1157</b>. Different points on curve <b>1105</b> generate different points on curves <b>1125</b> and <b>1145</b>. In <figref idref="DRAWINGS">FIG. 13</figref>, it is seen that curve <b>1135</b> is the same as curve <b>1105</b>, since the green component is used as the reference variable to define the curves in graphs <b>1111</b> and <b>1151</b>.
0070<figref idref="DRAWINGS">FIG. 14</figref> illustrates a method to generate a color correction function for one color component to optimize gray scale colors and skin tone colors according to one embodiment of the present invention. In such an embodiment of the present invention, it is desirable to gamma correct the signals such that the luminance of the selected colors are corrected to a target gamma. In <figref idref="DRAWINGS">FIG. 14</figref>, uncorrected signals of the selected colors are shown in graph <b>1201</b>. For example, the balanced red, green and blue components define the grays in the high green component region; and, the unbalanced red, green and blue components (e.g., curves <b>1203</b>, <b>1205</b> and <b>1207</b>) define the colors for the optimization of skin tone. Thus, the luminance represented by the uncorrected signals for various color shades are determined, as shown by curve <b>1213</b> in graph <b>1211</b>. For example, an input green signal level g<sub>1 </sub>for a color shade (e.g., a skin tone color) corresponds to luminance level Y<sub>1 </sub>at point <b>1215</b>. On the other hand, graph <b>1241</b> shows the signal levels <b>1243</b>, <b>1245</b> and <b>1247</b> for producing the selected color points on the target display, which characterizes the native display properties of the target display. Similarly, the luminance values of the selected colors produced on the display are determined as a function of corrected signal level for green. For example, when the green signal level is g<sub>2 </sub>for producing a target color, point <b>1235</b> shows the luminance Y<sub>2 </sub>on the device. In order to gamma correct the input luminance Y<sub>1 </sub>to the target luminance Y<sub>2</sub>, as shown by point <b>1225</b> on curve <b>1223</b> in graph <b>1221</b>, a correction function <b>1253</b> for the green signal level can be determined. For example, point <b>1255</b> on curve <b>1253</b> in graph <b>1251</b> for input green signal g<sub>1 </sub>can be determined from: 1) determining Y<sub>1 </sub>from point <b>1215</b>; 2) determining Y<sub>2 </sub>from point <b>1225</b>; and 3) determining g<sub>2 </sub>from point <b>1235</b>. Once the correction function <b>1253</b> for green is determined, it can be used to derive the correction functions for the other color components, as illustrated in <figref idref="DRAWINGS">FIG. 13</figref>.
0071In one embodiment of the present invention, a graphical user interface is used to display the colors that are to be calibrated (e.g., the grays and skin tone colors). A set of gamma correction functions (e.g., those derived using a traditional method or a method according to one embodiment of the present invention, or a set of reference gamma correction functions) may be optionally used to perform the gamma correction. In a range of parameter (e.g., luminance or G), the color components are adjusted interdependently (e.g., through the graphical user interface), before the set of gamma correction function are applied if the set of gamma correction functions are used, so that the colors appear on the display device are properly calibrated (e.g., according to a reference color card, according to a reference display device, according to a measuring instrument, or according to the preference of an human observer). The calibration may be performed according to visual inspection or with the help of a measuring instrument. The color corrections for the components can then be determined from the amounts of adjustments applied (which may be combined with the set of gamma correction functions when used).
0072In one embodiment of the present invention, one algorithm is used to derive the correction functions (e.g., look up tables for gamma correction) from a set of native property definitions for the color device (e.g., native transfer functions). For example, when a set of native property definitions is provided for a color display, the operating system can compute the look up tables for gamma correction and load the look up tables into the video card of the computer. To allow the single algorithm to be used for different color correction options (e.g., for a white point consistent only color correction, or for white point consistent in one region and skin tone optimization in another region), the different color corrections are determined from the native property definitions using different algorithms (e.g., methods according to embodiments of the present invention) and then applied to the native property definitions to generate pseudo-native property definitions, such that when the single algorithm is applied on the pseudo-native property definitions, the desired color correction functions are obtained. For example, a single algorithm may use a traditional method to individually derived the correction functions for the red, green and blue channels for a target gamma from the native transfer functions (e.g., using the method as illustrated in <figref idref="DRAWINGS">FIG. 2</figref>); the single algorithm can be reversed to determine the pseudo-native transfer functions from the correction functions; thus, after the new correction functions for red, green and blue channels are determined (e.g., according to embodiments of the present invention, such as the method as illustrated in <figref idref="DRAWINGS">FIG. 3</figref> for a consistent white point, or the method as illustrated in <figref idref="DRAWINGS">FIG. 13</figref> for optimizing both grays and skin tone colors), pseudo-native transfer functions are calculated from the new correction functions such that, when the traditional method is applied on the pseudo-native transfer functions, the traditional method returns the same new correction functions (e.g., that have a consistent white point or that are optimized for both the grays for user interface elements and skin tone colors for photographs). Thus, when the pseudo-native transfer functions are used, the single algorithm (e.g., the traditional algorithm for generating gamma corrections separately for each of the color components) can be used to provide look up tables for the color corrections of various different types (e.g., for a consistent white point, or for optimizing both grays for user interface elements and skin tone colors for photographs or videos). Thus, the pseudo-native transfer functions can be used to upgrade the old systems that use the single algorithm (e.g., the traditional method) in generating the look up tables such that the old systems can produce better colors (e.g., according to embodiments of the present invention to have a consistent white point or optimum display of grays and skin tone colors) without having to update hardware or software (other than the pseudo-native transfer functions for the color device).
0073Further, a number of sets of the pseudo-native transfer functions may be combined (e.g., through a weighted average process) to obtain a set of pseudo-native transfer functions to provide trade-offs among different types of preferences (e.g., white point consistency, skin tone rendering, grays, and others). For example, a weighted average of sets of the pseudo-native transfer functions may be used to generate a set of pseudo-native transfer functions. In another example, the color correction functions are normalized (e.g., with respect to a reference gamma, or the color correction functions derived from a traditional method or a method of the present invention) as normalized color correction functions; and, a weighted average of the normalized color correction functions is then used to generate the new color correction functions and pseudo-native transfer functions. From this description, it will be apparent to one skilled in the art that many variations of the methods for obtaining pseudo-native transfer functions and for combining color correction functions (and thus, the pseudo-native transfer functions) for weighted trade-offs (e.g., for different preferences) can be envisioned.
0074<figref idref="DRAWINGS">FIG. 15</figref> shows a flow diagram for a method to generate color correction functions to minimize the distortion relative to a plurality of color points according to one embodiment of the present invention. Operation <b>1301</b> generates a first correction function for a first color component in a color space (e.g., Green in a RGB color space). It can be generated from the native transfer function and the target transfer function for the first color component using a traditional method; or, it can be generated using a method according to the present invention (e.g., a method as illustrated <figref idref="DRAWINGS">FIG. 14</figref> or <figref idref="DRAWINGS">FIG. 8</figref>). Typically, luminance property data of the display is used to generate the first correction function. Operation <b>1303</b> generates correction functions for other color components in the color space (e.g., Red and Blue in a RGB color space) by reducing the difference between the color produced on a device by color components of a gray corrected by the correction functions and a white point (e.g., in a chromaticity diagram) and reducing the difference between the color produced on a device by color components of a skin color corrected by the correction functions and a color point (e.g., in the chromaticity diagram), where the luminance of the gray and the luminance of the color are in different luminance ranges. Chromaticity property data of the display may be used to generate the correction function for the other color components. Operation <b>1305</b> performs gamma correction using the generated correction functions. Thus, in one embodiment, once the correction functions are applied, the signals representing gray levels produce on the device white point consistent grays for graphical user interface elements; and, the signals representing skin tone colors produce on the device colors good for photograph reproduction. In one embodiment of the present invention, the color correction functions are generated in the form of gamma look up tables for video cards. Thus, the color correction according to embodiments of the present invention can be used with any video cards known in the art that use gamma look up tables for gamma correction without modification to the hardware, once the gamma look up tables according to embodiments of the present invention are loaded into the video cards.
0075<figref idref="DRAWINGS">FIG. 16</figref> shows a flow diagram for another method to generate color correction functions for color components in a color space to minimize the distortion of different color tones in different ranges of a color component according to one embodiment of the present invention. Operation <b>1311</b> determines color components (e.g., Red and Blue in a RGB color space) as functions of a first color component in a color space (e.g., Green in a RGB color space) by: i) minimizing the difference between the color produced on a device by the color components and a white point (e.g., in a chromaticity diagram) for the first color component of different magnitudes in a first range; and, ii) by minimizing the difference between the color produced on the device by the color components and a color point (e.g., a skin tone) for the first color component of different magnitudes in a second range. Chromaticity property data of a display device may be used to generate these device color point curves, which specify the other color components in terms of the first color component for producing selected colors (e.g., corresponding to a white point and skin tone color points) on the device. Alternatively, the color components as functions of the first color component can be generated through displaying (e.g., using a graphical user interface) the colors for the white point (e.g., grays) and the colors for the color point (e.g., skin tone colors) for inspection and through adjusting (e.g., through the graphical user interface) the color components interdependently. Operation <b>1313</b> generates a first correction function for the first color component; and operation <b>1315</b> combines the color components as functions of the first color component and the first correction function to generate correction functions for other color components in the color space.
0076<figref idref="DRAWINGS">FIG. 17</figref> shows a detailed flow diagram for a method to generate color correction functions for color components in a color space to minimize the distortion of different color in different ranges of a color parameter according to one embodiment of the present invention. Operation <b>1321</b> determines color components (e.g., Red and Blue in a RGB color space) of color signals as functions of a first color component in a color space (e.g., Green in a RGB color space) by minimizing the differences between the colors produced on a device by the color components and a plurality of color points (e.g., a white point and a skin tone in a chromaticity diagram) for the first color component of different magnitudes. After the device color point curves are generated from operation <b>1321</b>, operation <b>1323</b> determines a first function of luminance produced on a device by the color components as functions of the first color component. The first function of luminance represents the luminance of the selected colors on the device as a function of the first color component. Operation <b>1325</b> determines a second function of luminance represented by color components of the color signals as a function of the first color component. The second function of luminance represents the luminance of the input signal as a function of the first color component. Operation <b>1327</b> determines a luminance correction function for mapping luminance represented by color components to luminance produced by corrected color components on the device. The luminance correction function corrects the input luminance to the target luminance. Operation 1329 determines a first correction function for the first color component from the first and second functions of luminance and the luminance correction function; and operation 1331 combines the color components as functions of the first color component and the first correction function to generate correction functions for other color components in the color space. Thus, the correction functions generated according to the method in <figref idref="DRAWINGS">FIG. 17</figref> gamma correct the light intensity of color shades while maintaining the proper chromaticity for the color shades (e.g., grays and skin tone colors).
0077<figref idref="DRAWINGS">FIG. 18</figref> shows another method to generate color correction functions according to one embodiment of the present invention. Operation <b>1341</b> determines color signals for a plurality of colors with a color parameter (e.g., luminance, or, Green component of a RGB color space) of a plurality of values. For example, the appearance of the colors produced on a display device by the color signals can be inspected (e.g., visually by an inspector, or by an instrument) and adjusted through adjusting the color signals interdependently so that the plurality of colors on the display device are well calibrated. Operation <b>1343</b> determines a plurality of color points (e.g., in a chromaticity diagram) for the plurality of colors. The color points determine the uncorrected color signals for the plurality of colors. Operation <b>1345</b> determines color correction functions for the color components of the color signals such that, when corrected using the color correction functions, the color signals cause the device to produce colors of the plurality of color points. Operation <b>1347</b> performs gamma correction using the color correction functions.
0078<figref idref="DRAWINGS">FIG. 19</figref> shows a method to combine color correction functions optimized for different color points to generate color correction functions according to one embodiment of the present invention. Operation <b>1351</b> determines a first set of color correction functions for color components (e.g., R, G and B) of first color signals such that, when corrected using the first color correction functions, the first color signals cause the device to produce colors of a first plurality of color points (e.g., on a chromaticity diagram). Operation <b>1353</b> determines a second set of color correction functions for the color components of second color signals such that, when corrected using the second color correction functions, the second color signals cause the device to produce colors of a second plurality of color points (e.g., on the chromaticity diagram). Operation 1355 combines the first and second sets of color correction functions (e.g., through a weighted average process) to obtain a third set of color correction functions. The combination may be performed through a direct weighted average of the correction functions, or through a weighted average of pseudo-native transfer functions, or through a weighted average of normalized correction functions, or others, as discussed above.
0079<figref idref="DRAWINGS">FIG. 20</figref> shows a method to use pseudo-native device information for color correction according to one embodiment of the present invention. Operation <b>1401</b> determines color correction functions for a display device (e.g., an LCD display panel) using a first method (e.g., by optimizing grays for user interface elements and skin colors for photographs). Operation <b>1403</b> determines pseudo-native device information from the color correction functions such that a second method generates the color correction functions from the pseudo-native device information. Operation <b>1405</b> loads the pseudo-native device information on a system that uses the second method for the generation of color correction functions. The pseudo-native device information may be supplied to an existing system as an update for the color profile for the display device. After operation <b>1407</b> determines the color correction functions from the pseudo-native device information on the system using the second method, operation <b>1409</b> loads the color correction functions (e.g., look up tables) into a video card of the system to perform color correction for the display device of the system.
0080Thus, in at least one embodiment of the present invention, pseudo-native device information is generated for a color display device (e.g., an LCD display panel) such that when a single, unique system function for color management is applied on the pseudo-native device information, a customized look up table for gamma correction in a video card is generated. The customized look up table is calibrated for the optimization of color rendering for skin tone in one range of a color parameter (e.g., a medium luminance region) while maintaining the gray colors for the user interface elements in another range of the color parameter (e.g., a high luminance region). The pseudo-native device information is included (or supplied) in the color profile for the color device as the native device information that specifies the characteristics of the device. Thus, the color correction is performed using the generated customized look up table in the video card in real time without any hardware changes. Since the pseudo-native device information is based on the algorithm of the single system function for color management, no modification of the existing system function is required to provide the customized color correction, which is not a part of the algorithm of the single system function. No additional hardware is required to implement these methods. Further, the various methods of the present invention can be used with any types of color devices, such as computer display devices and others.
0081In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of the invention as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.
Contents5
22 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10123005B2 | Cited by | United States of America | Search report |
| US7372597B2 | Cited by | United States of America | Search report |
| US2011075163A1 | Cited by | United States of America | Pre-grant |
| US8587828B2 | Cited by | United States of America | Search report |
| US2010036630A1 | Cited by | United States of America | Pre-grant |
| US2007052735A1 | Cited by | United States of America | Pre-grant |
| US2012062609A1 | Cited by | United States of America | Pre-grant |
| US8135214B2 | Cited by | United States of America | Search report |
| US7936358B2 | Cited by | United States of America | Search report |
| US2010061694A1 | Cited by | United States of America | Pre-grant |
| US2008266317A1 | Cited by | United States of America | Pre-grant |
| US10346711B2 | Cited by | United States of America | Search report |
| US8624942B2 | Cited by | United States of America | Search report |
| US12046217B2 | Cited by | United States of America | Search report |
| US2016261860A1 | Cited by | United States of America | Pre-grant |
| US2018332263A1 | Cited by | United States of America | Search report |
| US7495679B2 | Cited by | United States of America | Search report |
| TWI415104B | Cited by | Taiwan Province of China | Examiner |
| US2011187735A1 | Cited by | United States of America | Pre-grant |
| CN101976552A | Cited by | China | Search report |
| US8274526B2 | Cited by | United States of America | Applicant |
| US10574961B2 | Cited by | United States of America | Search report |
| US2009059079A1 | Cited by | United States of America | Pre-grant |
| US2006077405A1 | Cited by | United States of America | Pre-grant |
| CN105516541A | Cited by | China | Search report |
| US2002018129A1 | Cites | United States of America | Pre-grant |
| US2002063666A1 | Cites | United States of America | Pre-grant |
| US2002180998A1 | Cites | United States of America | Pre-grant |
| US2003058202A1 | Cites | United States of America | Pre-grant |
| US2003091229A1 | Cites | United States of America | Pre-grant |
| US5381349A | Cites | United States of America | Pre-grant |
| US5412433A | Cites | United States of America | Pre-grant |
| US5459678A | Cites | United States of America | Pre-grant |
| US5483259A | Cites | United States of America | Pre-grant |
| US5512961A | Cites | United States of America | Pre-grant |
| US5546105A | Cites | United States of America | Pre-grant |
| US6285350B1 | Cites | United States of America | Pre-grant |
| US6791565B2 | Cites | United States of America | Pre-grant |
| US6862012B1 | Cites | United States of America | Pre-grant |
| US7274487B2 | Cites | United States of America | Pre-grant |
| USRE29570E | Cites | United States of America | Pre-grant |
6 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 11228102 | United States of America | A | |
| 63724603 | United States of America | A |
Members6
| Document | Office | Kind | |
|---|---|---|---|
| US6844881B1 | United States of America | B1 | |
| US2005099429A1 | United States of America | A1 | |
| US7084881B1 | United States of America | B1 | |
| US2006250412A1 | United States of America | A1 | |
| US7456843B2 | United States of America | B2 | |
| US8587603B2 | United States of America | B2 |
84 transactions on the USPTO file
Allowed after 4 non-final rejections, 3 final rejections and 3 RCEs.
- Non-final rejections
- 4
- Final rejections
- 3
- RCEs
- 3
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Expire PatentEXP. | EXP. | |
| Maintenance Fee Reminder MailedREM. | REM. | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Mail Notice of Rescinded AbandonmentAbandonedMNRAB | MNRAB | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Notice of Rescinded Abandonment in TCsAbandonedNRAB | NRAB | |
| Mail-Petition to Revive Application - GrantedMPREV | MPREV | |
| Petition to Revive Application - GrantedPREV | PREV | |
| Petition EnteredPET. | PET. | |
| Mail Abandonment for Failure to Respond to Office ActionAbandonedMABN2 | MABN2 | |
| Aband. for Failure to Respond to O. A.AbandonedABN2 | ABN2 | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Miscellaneous Incoming LetterLET. | LET. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Examiner Interview Summary (PTOL - 413)MEXIN | MEXIN | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Correspondence Address ChangeC.ADB | C.ADB | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Initial Exam Team nnIEXX | IEXX |
10 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20060250412
- Application
- 11484260
Titles
- English
- Method and apparatus for improved color correction
Patent term adjustment
- A delay
- +812 daysthe office missed an examination deadline
- B delay
- +16 dayspendency past three years
- Applicant delay
- −32 days
- Net adjustment
- 796 days
Classification
- CPC, 10
- G09G5/02
- G09G3/3607
- G09G5/06
- G09G5/366
- G09G2320/0276
- G09G2320/0606
- G09G2320/0666
- G09G2320/0673
- H04N9/69
- G06T11/10
- IPC, 5
- G09G5 02
- G06T11 00
- G09G3 36
- H04N5 202
- H04N9 69