Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

A streamlined technique for obtaining interpolated color output values from corresponding color input values based on color output values stored in a color look-up table, with tetrahedral interpolation being applied so as to dissect each cubic grid of the color look-up table into plural tetrahedrons. According to the invention, processing efficiency is increased by avoiding the use of conditional branches when making a determination as to which of the plural dissected tetrahedrons a particular color input value falls. Preferably, rather than making such a determination, weights for all possible tetrahedrons for one cube are stored in a temporary look-up table, and an index into the temporary look-up table is calculated based on the magnitude of component values for each color input value. The index is calculated in a block of code that does not include conditional branches that are conditioned on the relative magnitude of the component values of the color input value. Most preferabl...

InventorsHeidi M. Schoolcraft, Manish S. Kulkarni, Moshe Broudo
Original AssigneeCanon Kabushiki Kaisha
Primary Examiner: Thomas D. Lee
Attorney: Fitzpatrick Cella Harper & Scinto
Current U.S. Classification358/1.9; 358/522; 358/525
International Classification: G03F/308; H04N/146

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US4275413Jul 3, 1979Jun 23, 1981Linear interpolator for color correction
US4346402May 28, 1980Aug 24, 1982Crosfield Electronics LimitedImage-reproduction apparatus
US4477833Apr 25, 1983Oct 16, 1984R. R. Donnelley & Sons CompanyMethod of color conversion with improved interpolation
US4511989May 17, 1982Apr 16, 1985Dainippon Screen Seizo Kabushiki KaishaLinear interpolating method and color conversion apparatus using this method
US4992861Oct 18, 1988Feb 12, 1991Eastman Kodak CompanyColor image reproduction apparatus having a digitally operated look-up table constructed by means of a least squares algorithm
US5390035Dec 23, 1992Feb 14, 1995International Business Machines CorporationMethod and means for tetrahedron/octahedron packing and tetrahedron extraction for function approximation
US5477334Aug 2, 1994Dec 19, 1995Bemis Manufacturing CompanyMethod of and apparatus for determining if a given data point falls within a population of data points
US5479272Aug 13, 1993Dec 26, 1995Seiko Instruments Inc.Color gradation correction system of combination of looking-up table and interpolation and method thereof
US5481655Sep 18, 1992Jan 2, 1996Iris Graphics, Inc.System for matching a picture on a monitor to a printed picture
US5539540Sep 13, 1994Jul 23, 1996Eastman Kodak CompanyMethod and associated apparatus for transforming input color values in an input color space to output color values in an output color space
US5581376Feb 8, 1996Dec 3, 1996Xerox CorporationSystem for correcting color images using tetrahedral interpolation over a hexagonal lattice
US5583666Feb 16, 1995Dec 10, 1996Eastman Kodak CompanyMethod for cross-device color calibration and enhancement using explicit constraints
US5596510Mar 23, 1994Jan 21, 1997Island GraphicsTable-based linear interpolation for color correction system and method
US5715376Jan 30, 1995Feb 3, 1998Canon Kabushiki KaishaData transformation apparatus
US6040926Dec 12, 1997Mar 21, 2000Hewlett-Packard CompanyCommon non-symmetric pruned radial and non-symmetric pruned tetrahedral interpolation hardware implementation
US6057866Sep 23, 1997May 2, 2000Konica CorporationColor image forming apparatus and method using color compensation

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US6697520Mar 17, 2000Feb 24, 2004Hewlett-Packard Development Company, L.C.Method of color interpolation
US7016530Jul 12, 2001Mar 21, 2006Canon Kabushiki KaishaImage processing method, image processing apparatus, and programs thereof
US7209145Apr 2, 2004Apr 24, 2007Xerox CorporationColor device profile having a buffered look-up table
US7397483Jun 30, 1999Jul 8, 2008Canon Kabushiki KaishaImage data conversion using interpolation
US7952756Jul 12, 2007May 31, 2011Adobe Systems IncorporatedMethods and systems for encoding over-range color values using in-range values
US8237990Jun 28, 2007Aug 7, 2012Adobe Systems IncorporatedSystem and method for converting over-range colors

Claims

1. A method for obtaining an interpolated color output value corresponding to a color input value based on a color look-up table which stores color output values of each vertex of a cubic grid of color input values, the method comprising the steps of:

for at least one vertex of at least one cube of a cubic grid, determining a distance of an input color from the at least one vertex, the distance comprising plural component distances each of which corresponds to a component value of the input color;
calculating plural weights corresponding to the at least one cube of the cubic grid and at least one tetrahedron into which the at least one cube is dissected, the plural weights being calculated based on the distance of the input color from the at least one vertex of the at least one cube;
storing the calculated weights in a temporary look-up table accessible by an index;
executing a block of code, wherein instead of using conditional branch instructions conditioned on a comparison of the plural component values of the input color to determine interpolating weights, the block of code using therein the component distances to calculate the index to the look-up table of weights; and
applying weights accessed at the indexed location of the temporary look-up table to color output values of the color look-up table, the weights being applied to the color output values at vertices of a tetrahedron identified by the index so as to obtain an interpolated output color corresponding to the input color.

2. A method according to claim 1, wherein the block of code also calculates the plural weights by arithmetic operations.

3. A method according to claim 2, wherein the arithmetic operations include subtraction commands that set a condition code.

4. A method according to claim 3, wherein the block of code uses the condition code to build the index.

5. A method according to claim 4, wherein the plural weights and the index are calculated coextensively.

6. A method according to claim 1, wherein the block of code calculates the index using bit shift commands.

7. A method according to claim 1, wherein the block of code calculates the index using bit masking commands.

8. A method according to claim 1, wherein the steps of determining a distance, calculating the plural weights, storing the calculated weights, executing the block of code, and applying the weights are repeated for each pixel of an input image.

9. An apparatus for obtaining an interpolated color output value corresponding to a color input value based on a color look-up table which stores color output values of each vertex of a cubic grid of color input values, comprising:

a memory including a region for storing the color look-up table, a region for storing a temporary look-up table, and a region for storing executable process steps; and
a processor for executing the executable process steps;
wherein the executable process steps include steps of: (a) for at least one vertex of at least one cube of a cubic grid, determining a distance of an input color from the at least one vertex, the distance comprising plural component distances each of which corresponds to a component value of the input color, (b) calculating plural weights corresponding to the at least one cube of the cubic grid and at least one tetrahedron into which the at least one cube is dissected, the plural weights being calculated based on the distance of the input color from the at least one vertex of the at least one cube, (c) storing the calculated weights in the temporary look-up table accessible by an index, (d) executing a block of code, wherein instead of using conditional branch instructions conditioned on a comparison of the plural component values of the input color to determine interpolating weights, the block of code using therein the component distances to calculate the index to the look-up table of weights, and (e) applying weights, accessed at the indexed location of the temporary look-up table to color output values of the color look-up table, the weights being applied to the color output values at vertices of a tetrahedron identified by the index so as to obtain an interpolated output color corresponding to the input color.

10. An apparatus according to claim 9, wherein the block of code also calculates the plural weights by arithmetic operations.

11. An apparatus according to claim 10, wherein the arithmetic operations include subtraction commands that set a condition code.

12. An apparatus according to claim 11, wherein the block of code uses the condition code to build the index.

13. An apparatus according to claim 12, wherein the plural weights and the index are calculated coextensively.

14. An apparatus according to claim 9, wherein the block of code calculates the index using bit shift commands.

15. An apparatus according to claim 9, wherein the block of code calculates the index using bit masking commands.

16. An apparatus according to claim 9, wherein the executable-process steps of determining a distance, calculating the plural weights, storing the calculated weights, executing the block of code, and applying the weights are repeated for each pixel of an input image.

17. Computer-executable process steps stored on a computer-readable medium, the computer executable process steps to obtain an interpolated color output value corresponding to a color input value based on a color look-up table which stores color output values of each vertex of a cubic grid of color input values, the computer-executable process steps comprising:

for at least one vertex of at least one cube of a cubic grid, code to determine a distance of an input color from the at least one vertex, the distance comprising plural component distances each of which corresponds to a component value of the input color;
code to calculate plural weights corresponding to the at least one cube of the cubic grid and at least one tetrahedron into which the at least one cube is dissected, the plural weights being calculated based on the distance of the input color from the at least one vertex of the at least one cube;
code to store the calculated weights in a temporary look-up table accessible by an index;
code to calculate the index to the look-up table of weights, wherein instead of using conditional branch instructions conditioned on a comparison of the plural component values of the input color to determine interpolating weights, the code using therein the component distances to calculate the index to the look-up table of weights; and
code to apply weights accessed at the indexed location of the temporary look-up table to color output values of the color look-up table, the weights being applied to the color output values at vertices of a tetrahedron identified by the index so as to obtain an interpolated output color corresponding to the input color.

18. Computer-executable process steps according to claim 17, wherein the plural weights are calculated by arithmetic operations.

19. Computer-executable process steps according to claim 18, wherein the arithmetic operations include subtraction commands that set a condition code.

20. Computer-executable process steps according to claim 19, wherein the condition code is used to build the index.

21. Computer-executable process steps according to claim 20, wherein the plural weights and the index are calculated coextensively.

22. Computer-executable process steps according to claim 17, wherein the index is calculated using bit shift commands.

23. Computer-executable process steps according to claim 17, wherein the index is calculated using bit masking commands.

24. Computer-executable process steps according to claim 17, wherein the codes to determine a distance, calculate the plural weights, store the calculated weights, execute the block of code, and apply the weights are repeated for each pixel of an input image.

25. A computer-readable medium which stores computer-executable process steps, the computer-executable process steps to obtain an interpolated color output value corresponding to a color input value based on a color look-up table which stores color output values of each vertex of a cubic grid of color input values, the computer-executable process steps comprising:

a determining step to determine, for at least one vertex of at least one cube of a cubic grid, a distance of an input color from the at least one vertex, the distance comprising plural component distances each of which corresponds to a component value of the input color;
a calculating step to calculate plural weights corresponding to the at least one cube of the cubic grid and at least one tetrahedron into which the at least one cube is dissected, the plural weights being calculated based on the distance of the input color from the at least one vertex of the at least one cube;
a storing step to store the calculated weights in a temporary look-up table accessible by an index;
an executing step to execute a block of code, wherein instead of using conditional branch instructions conditioned on a comparison of the plural component values of the input color to determine interpolating weights, the block of code using therein the component distances to calculate the index to the look-up table of weights; and
an applying step to apply weights accessed at the indexed location of the temporary look-up table to color output values of the color look-up table, the weights being applied to the color output values at vertices of a tetrahedron identified by the index so as to obtain an interpolated output color corresponding to the input color.

26. A computer-readable medium according to claim 25, wherein the block of code also calculates the plural weights by arithmetic operations.

27. A computer-readable medium according to claim 26, wherein the arithmetic operations include subtraction commands that set a condition code.

28. A computer-readable medium according to claim 27, wherein the block of code uses the condition code to build the index.

29. A computer-readable medium according to claim 28, wherein the plural weights and the index are calculated coextensively.

30. A computer-readable medium according to claim 25, wherein the block of code calculates the index using bit shift commands.

31. A computer-readable medium according to claim 25, wherein the block of code calculates the index using bit masking commands.

32. A computer-readable medium according to claim 25, wherein the executable-process steps of determining a distance, calculating the plural weights, storing the calculated weights, executing the block of code, and applying the weights are repeated for each pixel of an input image.