WO2006081253A2 - Color conversion using barycentric projections - Google Patents
Color conversion using barycentric projections Download PDFInfo
- Publication number
- WO2006081253A2 WO2006081253A2 PCT/US2006/002507 US2006002507W WO2006081253A2 WO 2006081253 A2 WO2006081253 A2 WO 2006081253A2 US 2006002507 W US2006002507 W US 2006002507W WO 2006081253 A2 WO2006081253 A2 WO 2006081253A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- luts
- lut
- color space
- hypercube
- color
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/13—Digital output to plotter ; Cooperation and interconnection of the plotter with other functional units
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/02—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
- G09G5/06—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed using colour palettes, e.g. look-up tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/46—Colour picture communication systems
- H04N1/56—Processing of colour picture signals
- H04N1/60—Colour correction or control
- H04N1/6016—Conversion to subtractive colour signals
- H04N1/6019—Conversion to subtractive colour signals using look-up tables
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/02—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
- G09G5/04—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed using circuits for interfacing with colour displays
Definitions
- the present invention relates generally to color conversion and more particularly to color conversion in higher dimensional color spaces and using interpolation of values using look up tables.
- a conventional color printer system employs Cyan Magenta Yellow and blacK (CMYK) inks.
- CMYK Cyan Magenta Yellow and blacK
- the inks typically added are colors that CMYK inks have difficulty reproducing. Common choices are orange, green, red, blue, etc.
- inks with different tints have been used, such as light cyan, light magenta, etc. In effect, the resulting color printer has more than four channels.
- a conventional approach of implementing such color conversion efficiently is via a uniform Look-Up Table (LUT).
- LUT Look-Up Table
- the ICC specification mandates a so-called A2B1 tag that stores a uniform LUT representing a uniform sampling in the CMYKOG device space of the forward model, which goes from CMYKOG to the ICC "Profile Connection Space" (either CIELAB or CIEXYZ).
- the ICC link profile enables a direct transformation from CMYKOG device space to any color space including a device space, also in the form of a LUT sampled uniformly in CMYKOG space.
- sampling is never done with a high number of levels because of the large size of the resulting LUT, except in the case of monochrome devices (1 channel). Instead, sampling with lower levels is used, with typical choices of 9 levels, 17 levels, or 33 levels. With a lower number levels in each channel, the LUT is used in conjunction with an interpolation algorithm to produce the result if a requested level is in between two sampled levels, hi short, LUT uniformly sampled in the source color space of the transformation followed by interpolation is mandated in ICC specification and is considered the industrial standard.
- the objective is to minimize the interpolation error, not to control the total number of nodes used in the LUT. They are mainly used in conventional color spaces such as RGB, CMYK or CIELAB, which have four or less channels. In fact, the objective of minimizing the interpolation error may result in a LUT becoming bigger than it would be if uniform LUT was used.
- FIG. 1 is a block diagram illustrating use of a LUT by a color device to map from one color space to another.
- a data processing system such as computer 100, maps color values of a first color device, such as color scanner 99, to color values for a second color device, such as color printer 101.
- the data processing system may map RGB color value 102 generated by the color scanner to CMYK color value 104 used by the color printer.
- the data processing system does so using one of several LUTs, 106, 108, 110 and 112.
- the choice of the interpolation algorithm depends on the geometrical arrangement of the sampling points. If the points are totally unstructured, or what is known as a "point cloud" 106, then interpolation methods suitable for scattered data are used. Such methods are generally slow, and are employed only in situations where the sampling locations cannot be arranged.
- an adaptive rectangular grid In between the totally unstructured configuration of point cloud, and the totally structured configuration of a rectangular grid lies an "adaptive rectangular grid " 112.
- An adaptive rectangular grid still employs rectangular grids (possibly non-uniformly sampled) on subspaces, but these grids are not compatible as a whole.
- Adaptive sampling is useful to reduce the sampling rate, that is, increase the storage efficiency, in a region of the color space that is less important. For example, in the standard IT8.7/3 target for CMYK printers, sampling on each CMY "plane" for a fixed K is uniform rectangular, but the sampling rate is successively reduced as K increases, because the colors get darker and variations become smaller to make high sampling rate wasteful.
- a traditional approach to performing interpolation on an adaptive rectangular grid is to use SLI.
- an n-dimensional interpolation is reduced to two (n-l)-dimensional interpolations and a 1 -dimensional interpolation, and the same procedure can be applied to each of the (n-l)-dimensional interpolation problems, hence the name "sequential".
- SLI does not preserve all the symmetries. In fact, suppose the grid is uniformly rectangular, and SLI is applied all the way to dimension 1. This results in the same result as multilinear interpolation (usually called cubic interpolation in the case of 3 dimensions). Points on the principal diagonal are interpolated using all the corner points of the cube. This is not desirable if the principal diagonal is the gray axis (as in RGB space) because one prefers grays to be interpolated using sampling points on the gray axis only.
- the SLI step is also not necessarily compatible with the interpolation used on sandwiching planes. For instance, if tetrahedral interpolation is used on each sandwiching plane, then SLI produces a "hybrid” that is “bilinear”, linear on each sandwiching plane, and linear in the transverse direction between them. True tetrahedral interpolation in the full dimension would be linear in each subdividing tetrahedron.
- SLI handles the basic geometrical configuration with 2 sandwiching linear hyperplanes where the hyperplanes are provided by n-1 coordinates and the transverse direction to the hyperplanes provided by the remaining coordinate.
- One scenario is the "gap interpolation problem" between incompatible grids in different dimensions.
- FIG. 2 depicts a simple 2-dimensional situation in a X 1 X 2 space where the interior of the space is covered a rectangular grid, and each of the X 1 and x 2 axis is covered by different 1- D grids, and furthermore these grids are not compatible.
- To interpolate in the gap space consider the three input points P 1 , P 2 and P 3 .
- a method and apparatus for color conversion useful for color devices having a large number of input channels for example CMYK color printers having additional inks used to enhance the color printer's gamut.
- the color conversion is performed using a strata collection of look-up tables that stratify an n-dimensional color space into sets of lower dimensional subspaces.
- the associated look-up tables may be closed and have a uniform grid structure.
- an associated look-up table may be open, leaving gaps of the subspace not enclosed by the look-up table, and may have a non-uniform grid structure.
- a color management module using the strata collection for color conversion may determine if a color conversion is for a color value that falls within a gap. If so, the color management module may use a relatively complex interpolation process. If not, the color management module may use a relatively simple interpolation process.
- a unit cube in an n-dimensional color space is stratified into a set of LUTs that span the unit cube, each LUT mapping from the color space to a second color space.
- Each LUT has k inputs and at least some of the LUTs have a grid structure different from the other LUTs. Furthermore, the grid structure for higher dimension LUTs are less dense than lower dimension LUTs.
- the LUTs within the set of strata collections are then populated using color values from the second color space.
- each LUT is closed and the grid structure for each LUT is uniform.
- the grid structure for each closed LUT is uniform and the grid structure for each open LUT is nonuniform.
- nonuniform grid structures are based on an array of specified device values.
- the set of strata collections are used in a color management module.
- a color conversion process within the color management module uses a first interpolation process for closed LUTs and interior portions of open LUTs and uses a second interpolation process for spaces between an open LUT and a lower dimensional subspace.
- the second interpolation process is more computationally complex than the first interpolation process.
- a "super-grid” approach may be used to ameliorate the adverse affects of scenarios 1 and 2 from above; however, such an approach is best suited when there are rectangular grids in "codimension 1" spaces, which in that application are the CMY spaces.
- the present invention is related to the super-grid approach, although it does not use super grids.
- the present inventions handles scenario 3 from above easily. To do so, the present invention involves an interpolating step (herein termed a "barycentric projection”) so the present invention can also be “sequentialized” to produce an interpolation scheme which can be called “Sequential Tetrahedral Interpolation” (STI).
- STI Sequential Tetrahedral Interpolation
- a unit hypercube enclosing the input value is generated based on values from a look up table.
- a set of boundary conditions are then imposed on the unit hypercube.
- an initial barycentric projection is performed from a selected vertex of the unit hypercube through the input value onto a boundary of the unit hypercube. If the projection satisfies one of the boundary conditions, an interpolated value is calculated using the proj ection by back substitution.
- an intermediate value is generated from the previous projection and successive barycentric projections are performed using respectively different vertices of the unit hypercube through intermediate values onto a boundary of the unit hypercube until a projection satisfies one of the boundary conditions.
- An interpolated value is then generated by back substitution using the initial and successive projections.
- a method of determining an interpolated value for a color space includes generating a unit hypercube enclosing an input value. A set of boundary conditions is then imposed on the unit hypercube. A series of barycentric projections are performed from respectively different vertices of the unit hypercube through the input value or intermediate values onto a boundary of the unit cube until a projection satisfies one of the boundary conditions. Once a boundary condition has been satisfied, the interpolated value is generated by back substitution using the series of barycentric projections.
- the boundary conditions include a discrete boundary condition.
- the discrete boundary condition may be associated with a vertex of the unit hypercube.
- the boundary conditions include a continuous boundary condition.
- the continuous boundary condition is associated with a facet of the hypercube.
- the boundary conditions include a first continuous boundary condition associated with a first facet of the unit hypercube and a second continuous boundary condition associated with a second facet of the unit hypercube and the continuous boundary conditions agree at an intersection of the first facet and the second facet.
- a simplex enclosing the input value is determined, hi this embodiment of the invention, the simplex is enclosed by the hypercube and a barycentric projection is performed using a vertex of the simplex.
- an intermediate value used in a barycentric projection is determined from a previous barycentric projection.
- FIG. 1 is a block diagram illustrating use of a LUT by a color device to map from one color space to another.
- FIG. 2 depicts a simple 2-dimensional situation in a X 1 X 2 space where the interior of the space is covered a rectangular grid, and each of the X 1 and X 2 axis is covered by different 1-D grids, and furthermore these grids are not compatible.
- FIG. 3 illustrates transformation of color values between a higher dimensional color space and other color spaces in accordance with an exemplary embodiment of the present invention.
- FIG. 4 is a process flow diagram of a process used to determine the number of steps d for closed LUTs and also number of steps and node locations for open LUTs in accordance with the present invention.
- FIG. 5 is a process used to generate LUTs using user specified sampling locations in accordance with an exemplary embodiment of the present invention.
- FIG. 6 is a block diagram of an interpolation module in accordance with an exemplary embodiment of the present invention.
- FIG. 7 is a block diagram of a stratum selector in accordance with an exemplary embodiment of the present invention.
- FIG. 8 is a block diagram of a /c-dim stratum selector in accordance with an exemplary embodiment of the present invention.
- FIG. 9 is a process flow diagram of an interpolation process used by an interpolator in accordance with an exemplary embodiment of the present invention.
- FIG. 10 is a block diagram of a data processing system, such as a computer coupled to color devices and having a color management module, that may be used to host an interpolation module in accordance with an exemplary embodiment of the present invention.
- FIG. 11 is a process flow diagram of an interpolation process used by a color device to map input color values in one color space to output color values in another color space in accordance with an exemplary embodiment of the present invention.
- FIG. 12 illustrates an example interpolation in accordance with an exemplary embodiment of the present invention.
- FIG. 13 to FIG. 15 illustrate an example interpolation in accordance with an exemplary embodiment of the present invention.
- FIG. 16 illustrates an example of how an interpolation process in accordance with an exemplary embodiment of the present invention manages interpolation between two hyperplanes having incompatible grids.
- FIG. 17 is an illustration of an interpolation process for an input value that falls in a "gap" in accordance with an exemplary embodiment of the present invention.
- FIG. 18 is a block diagram of a data processing system, such as a color device, that may be used to host an interpolation process in accordance with an exemplary embodiment of the present invention.
- the present invention is directed to a method of interpolation using LUTs in any arbitrary n-dimensional color space.
- examples are given for 2-dimensional and 3-dimensional spaces, it being understood that the interpolation process may be performed in any n-dimensional color space. Therefore, the following terminology is used in order to identify the types of geometric objects representing the manipulations performed during the interpolation process:
- a hypercube is a generalization of a measure polytope, such as a 3-cube, to n dimensions. Hypercubes of lower dimension have specific names. For example, a 1 -hypercube is a line segment, a 2-hypercube is a square, a 3-hypercube is a cube, and a 4-hypercube is a tesseract.
- a simplex is a generalization of a tetrahedral region of space to n dimensions.
- the simplex is so-named because it represents the simplest possible polytope in any given space.
- a 2-simplex is an equilateral triangle
- a 3- simplex is a tetrahedron
- a 4-simplex is a pentatope, etc.
- FIG. 3 illustrates transformation of color values between a high fidelity color space and another color space in accordance with an exemplary embodiment of the present invention.
- the present invention may be applied to color transformations from a high fidelity color space to another high fidelity color space or a color space having fewer dimensions.
- an input color value 300 in a high fidelity color space can be transformed into a second color value 302 in a second high fidelity color space.
- the input color value can be transformed into a color value 310 in a lower dimensional color space.
- a data processing system uses an interpolation module 304.
- the interpolation module includes an interpolation process 306 that receives the first color value and uses a set of LUTs 312, herein termed a strata collection, to generate the second color value through interpolation.
- a uniformly sampled LUT maybe used instead of the strata collections during the interpolation process. While a uniformly sampled LUT results in a simple and efficient interpolation process, such an approach imposes large memory requirements as the dimensionality of the color spaces goes up, sometimes referred to as "the curse of dimensionality.” However, in reality, while a color device may have six or eight channels, these channels are rarely used simultaneously, for example, because of an ink coverage problem. Therefore, a simplifying assumption is that in. most cases, the input color value to color value transformation has only a few "active" colorants and so the transformation actually resides in a lower dimensional color space.
- the whole device color space is stratified into subspaces of various dimensions. And because lower dimensions (combinations of three or four colorants mostly) are more important, by stratifying the color space, one can also use different sampling rates (for example, different number of steps) on the different portions of the stratified color space, such as increasing sampling rates for lower dimensional portions and reducing sampling rates for higher dimensional portions.
- n is the number of channels in the source color space of the color transformation that one wants to sample. Ih addition, one can simply refer to n as the input dimension, and n ⁇ 5 unless otherwise specified.
- LUT The basic building blocks of the strata collections are LUTs of various input dimensions and sizes, instead of one uniformly sampled LUT with input dimension n.
- a "LUT”, as used herein, is a rectangular lattice imposed on a unit hypercube, that is, all the color space coordinates are normalized to the range [0, 1]. If v is the input dimension of the LUT (note that v in general does not need to be equal to n, although all v ⁇ ⁇ ), then the LUT consists of v one-dimensional sampling grids:
- the unit hypercube [0, 1]" is stratified into a collection of closed LUT's and open LUT's such that the whole collection of LUTs will cover the unit hypercube. It is conceptually simpler to organize these "LUT strata" by their dimension, so that on the top level one can write:
- ⁇ k is the " ⁇ -dimensional strata collection.” Note that the stratum dimension k starts from three instead of zero, which would correspond to points. This is because handling interpolation of three-colorant combinations is quite efficient without too much memory requirement. However, it is to be understood that lower dimensional strata collections are possible.
- ⁇ 3 consists of closed LUT's with three inputs, one from every possible combination of three colorants chosen out of the n colorants.
- ⁇ 4 consists of 1 closed LUT's for the combination CMYK (or the first four
- CMYK combination is an important combination as it is the basis of most color
- ⁇ k consists of open LUT's, one for each possible
- FIG. 4 is a process flow diagram of a process used to determine the number of steps d for closed LUTs and also the number of steps and node locations for open LUTs in accordance with the present invention.
- the process 400 there are two distinct processing modes, dependent on whether or not a user is supplying sampling points.
- the process determines (402) if the user is supplying sample points 404. If not, the process generates (406) closed LUT's as uniform LUTs with d number of steps as described in a table 408, exemplary contents of which are illustrated in Table 1 below:
- d(k) is specified in a portion of table 4OS, exemplary contents of which are illustrated in Table 2 below:
- the three modes, "proof, "normal” and “best”, are quality settings that normally exist in Color Management Module (CMM) software allowing a user to choose a quality based on the user's application.
- CCM Color Management Module
- the proof mode has the smallest memory footprint, while best mode has the largest.
- the process If it is determined that a user wants to supply sampling points, the process generates (410) LUTs using an external input in the form of a list of "important" sampling locations. This leg of the process is more adaptive than the table driven leg, and can also save more memory space.
- the external input is an array of device values supplied by the user. These device values will indicate which region of the device color space is important, that is, which region of the device color space should be sampled at a higher density or rate.
- FIG, 5 is a process used to generate LUTs using user specified sampling locations in accordance with an exemplary embodiment of the present invention.
- a colorant combination say c lt ...,c k where the c t 's are distinct integers between 1 and n. They are the channel indices corresponding to the colorants that are "active" in this stratum.
- a device value (x u X 2 , ..., X n ) is contained in the stratum if and only if and all other channels are zero.
- d telltative mm( ⁇ i(/c),max(l, UIt(TV 1 *))) where d(k) is also given by Table 2 from above.
- the process then sorts (506) the filtered samples in ascending order in the C 1 th channel.
- the process regularizes (510) the tentative grid to ensure that the grid conforms with strict monotonicity and also that the grid ends with 1.0. Because the filtered samples are already sorted in the c,th channel, the' nodes in the tentative grid are already monotonic non- decreasing. However, adjacent nodes might be identical. This can be corrected by removing identical nodes if necessary. Finally, after this procedure, if the end point is less than 1.0, it is replacedby 1.0.
- the regularizing process may result in a LUT stratum having a different number of steps in each channel, because after the regularization, the number of steps in a channel may be less than d mtative .
- the unit hypercube is stratified by a strata collection having open and closed LUT strata.
- FIG. 6 is a block diagram of an interpolation module in accordance with an exemplary embodiment of the present invention.
- An interpolation module 600 uses a strata collection to generate an output color value 602 from an input device value 604. To generate the output color value, the interpolation module receives the input device value which is given by a set of channel values, namely (X 1 J 2 ,... ⁇ ,). The interpolation module uses a stratum selector 604 to select a stratum 606 from the strata collection containing the input device value. The containing stratum and the input device value are then used by an interpolator 608 to generate the output color value.
- [0076JFIG. 7 is a block diagram of a stratum selector in accordance with an exemplary embodiment of the present invention.
- the stratum selector 604 computes (700) the number of "active" channels. This is simply the number of non-zero channels in the input device color. This determines the strata dimension k in which the stratum selector searches for the containing stratum. More precisely, the stratum selector sets (702) the strata dimension as 3 if the number of active channels is ⁇ 3, otherwise the strata dimension is the same as the number of active channels. The stratum selector then uses a ft-dim stratum selector 704 to select the individual stratum to be used in an interpolation.
- FIG. 8 is a block diagram of a &-dim stratum selector in accordance with an exemplary embodiment of the present invention.
- the Ar-dim stratum selector 704 searches within the strata collection, ⁇ k , for the stratum containing the input device value.
- a device value is contained in an open stratum if all the channels corresponding to the stratum have non-zero value, and all other channels are zero.
- a device value is contained in a closed stratum if the device value is 0 in every non-active channel for the stratum.
- the /c-dim stratum selector determines if the device value is in a first stratum, S 1 800.
- the /c-dim stratum selector tries each stratum, S 1 802, in succession until it finds a containing stratum. If no containing stratum is found, the /c-dim stratum selector aborts and reports a failure. If a containing stratum 606 is found, an interpolated output value can be generated from the input device value and the containing stratum.
- FIG. 9 is a process flow diagram of an interpolation process used by an interpolator in accordance with an exemplary embodiment of the present invention.
- An interpolator 608 (of FIG. 6) uses an interpolation process 900 to generate an output color value 602 from an input device value 604 and a containing stratum 606.
- the interpolator determines (902) if the containing stratum is closed. If so, interpolation within can be done by a conventional interpolation process that works for nodes in a hypercube. hi one embodiment of the present invention, a tetrahedral interpolator 904 is used.
- the interpolator determines (906) that the containing stratum is open, and the device value lies strictly within the stratum, that is, value of the first node in the zth channel for every index i that corresponds to an active channel of the stratum, then the same, standard, interpolation process (such as the process used by the tetrahedral interpolator) can be used.
- the device value falls into a "gap" between the stratum and the lower dimensional subspaces.
- Any process that is capable of interpolating within this gap such as a gap process used by gap interpolator 908, can be used, although a preferred gap interpolator uses a transfmite interpolation algorithm as described below.
- a process that is capable of performing such an interpolation is more complex than any of the conventional interpolation processes, such as one using a tetrahedral interpolation algorithm.
- FIG. 10 is a block diagram of a data processing system, such as a computer coupled to color devices and having a color management module, that may be used to host an interpolation module as described above in accordance with an exemplary embodiment of the present invention.
- the data processing system 1000 includes a processor 1002 coupled to a memory 1004 via system bus 1006.
- the processor is also coupled to external Input/Output (FO) devices via the system bus and an I/O bus 1008.
- a storage device 1010 having computer system readable media is coupled to the processor via a storage device controller 1012 and the I/O bus and the system bus.
- the storage device is used by the processor to store and read data 1014 and program instructions 1016 used to implement an interpolation process as described above.
- the processor may be further coupled to color output devices, such as computer display 1017 and color printer 1018, via an output device controller 1019 coupled to the I/O bus.
- the processor may also be coupled to a color input device, such as color scanner 1020, via an input device controller 1022.
- the processor loads the program instructions from the storage device into memory.
- the processor then executes the loaded program instructions to receive an input color value in a first color space, such as a color value meant for use by the color printer.
- the processor then executes the program instructions to generate an output color value in a second color space, such as a color value for use by the display, as described above.
- a basic step in using a rectangular grid as a LUT is interpolation within an enclosing cell.
- the input value's enclosing cell is easily determined.
- the output value at each of the vertices (corner points) of the enclosing cell is specified, and they are also the only boundary conditions (BCs) that an interpolant must satisfy, that is, the interpolant has to pass through all these points.
- BCs boundary conditions
- Boundary conditions may be formalized as follows.
- S is the set of discrete points that are the 2" vertices of the hypercube.
- boundary conditions can solve the issues described above, resulting in a new interpolation algorithm within the unit hypercube. Instead of allowing only discrete boundary points, boundary conditions may be imposed on a whole boundary facet of the hypercube. The precise assumptions are as follows:
- boundary condition may be imposed on the whole facet, with the compatibility condition that if two facets intersect, the boundary conditions on the facets should agree on the intersection.
- each such simplex is defined by a set of inequalities ⁇ ; O(1) ⁇ x ⁇ (2) ⁇ ... ⁇ x o(n) where ⁇ : ⁇ l,2,..,n ⁇ ,2,.. ,,n ⁇ is a permutation of "symbols" 1, 2, ..., n, i.e. it is a bijective mapping ofthe set of n symbols.
- V 0 , V 1 , ..., v ⁇ are the vertices ofthe simplex
- the present invention utilizes a generalization of tetrahedral interpolation capable of handling mixed discrete and continuous boundary conditions.
- the resultant process when applied to the case of an interpolation utilizing all discrete boundary conditions, results in a series of barycentric projections and backward substitutions that result in the same answer as that given by the conventional approach.
- FIG. 11 is a process flow diagram of an interpolation process used by a color device to map input color values in one color space to output color values in another color space in accordance with an exemplary embodiment of the present invention.
- the process 1100 uses barycentric projections for a general case of BCs on boundary facets of a unit hypercube. Initially, for a given input value (Jc 1 , ..., X n ), the interpolation process first determines (1110) which simplex the input value lies in, or equivalently, the corresponding permutation ⁇ . Then the interpoloation process performs (1120) a series of barycentric projections as follows.
- FIG. 12 illustrates an example interpolation in accordance with an exemplary embodiment of the present invention.
- FIG. 13 to FIG. 15 illustrate an example interpolation in accordance with an exemplary embodiment of the present invention
- the enclosing simplex associated with the permutation is ⁇ 3,2,1>.
- FIG. 16 illustrates an example of how an interpolation process in accordance with an exemplary embodiment of the present invention manages interpolation between two hyperplanes, 1600 and 1602, having incompatible grids, hi the example a cell enclosing a given point 1604 is shown in the figure.
- the vertices hi the "bottom" facet 1614 are not compatible with the grid in the bottom plane, so the interpolation process just treats the whole facet as having a BC with values obtained by interpolation on the grid in the bottom plane. It is then clear that this setup satisfies assumptions (a), (b) and (c) from above, and the interpolation process can be successfully performed.
- the interpolation process has reduced the dimension of the interpolation problem by 1 because the result is a linear combination of values at the vertices in the upper grid, and an interpolated value in the lower plane, which has dimension one less. If a similar sandwiching plane configuration exists inside the lower plane, the interpolation process can in turn apply the procedure in the lower plane, further reducing the dimension by one. This procedure can continue until the interpolation process reaches dimension 0. This cascade of projections and interpolations can be called "Sequential Tetrahedral Interpolation.”
- FIG. 17 is an illustration of an interpolation process for an input value that falls in a "gap" in accordance with an exemplary embodiment of the present invention.
- a grid is imposed on a hypercube 1700 sitting strictly inside the positive quadrant.
- the hypercube itself has a grid 1702 on it, and each coordinate hyperplane, 1704, 1706 and 1708, may have grids that are not necessarily compatible with the grid on the hypercube or with each other.
- the "gap" between the hypercube and the coordinate planes has a cross- section that is "L-shaped" and is not amenable to standard techniques such as SLI.
- cells enclosing an input value 1709 are introduced that easily cover this gap, such as cell 1710.
- the grids on the coordinate planes support interpolation that provides the necessary BCs for all the lower bottom facets of the cell, while the BC at the one remaining vertex 1712 is provided by the lower corner of the hypercube.
- the "unit hypercube" that is the basic setting of the interpolation process described herein is extracted from larger lattices, and the values at the vertices may require expensive calculation.
- tetrahedral interpolation requires only the values at the vertices of the simplex, which is a subset of all the vertices of the unit hypercube. It is therefore more efficient, even imperative in some situations, to implement what can be called “deferred evaluation".
- FIG. 18 is a block diagram of a data processing system, such as a color device, that may be used to host an interpolation process as described above in accordance with an exemplary embodiment of the present invention.
- the data processing system 1800 includes a processor 1802 coupled to a memory 1804 via system bus 1806.
- the processor is also coupled to external Input/Output (DO) devices via the system bus and an VO bus 1808.
- DO Input/Output
- a storage device 1810 having computer system readable media is coupled to the processor via a storage device controller 1812 and the I/O bus and the system bus.
- the storage device is used by the processor to store and read data 1814 and program instructions 1816 used to implement the interpolation process described above.
- the processor may be further coupled to an output device, such as a color output device 1817, via an output device controller 1818 coupled to the I/O bus.
- the processor loads the program instructions from the storage device into the memory.
- the processor executes the loaded program instructions to receive an input color value in a first color space.
- the processor then executes the program instructions to generate an output color value in a second color space as described above.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Facsimile Image Signal Circuits (AREA)
- Color Image Communication Systems (AREA)
- Image Processing (AREA)
- Color, Gradation (AREA)
Abstract
A color conversion for color devices having a large number of input channels is performed using a collection (Sl-Si) of look-up tables that stratify an n-dimensional color space into sets of lower dimensional subspaces. A color management module (600) using the collection for colo conversion may determine if a color conversion is for a color value that falls within a gap. In one interpolation process, a hypercube (1200) enclosing the input value is generated. An initial barycentric projection performs the interpolation from a selected vertex of the hypercube through the input value onto a boundary of the unit hypercube. If the projection satisfies one of the boundary conditions, an interpolated value is calculated. If the initial projection does not satisfy a boundary condition, an intermediate value is generated and successive barycentric projections are performed until a projection satisfies one of the boundary conditions. A final interpolated value is then generated.
Description
COLOR CONVERSION USING BARYCENTRIC PROJECTIONS
BACKGROUND
Field of the Invention
[0001] The present invention relates generally to color conversion and more particularly to color conversion in higher dimensional color spaces and using interpolation of values using look up tables.
Description of the Related Art
[0002] A conventional color printer system employs Cyan Magenta Yellow and blacK (CMYK) inks. To extend the range of colors that a color printer can produce, that is extend the gamut of colors the color printer can produce, one approach taken is to add new inks to the system. The inks typically added are colors that CMYK inks have difficulty reproducing. Common choices are orange, green, red, blue, etc. In another vein, in an attempt to increase the "apparent resolution" of the color printer, inks with different tints have been used, such as light cyan, light magenta, etc. In effect, the resulting color printer has more than four channels. After a decade's development of "high fidelity" printing, as printing using multichannel systems such as CMYK systems that have been enhanced with additional inks is known, it is now common to encounter printers with more than four channels.
[0003] Color printers are peculiar in the sense that although the color printer is often the final output device, people are also interested in color conversion from the color printer's
color space to another color device's color space. In the case of a CMYK color printer, one such transformation is from CMYK to XYZ, known as the "forward model" of the color printer. By combining the forward model with other transformations, it is possible to emulate CMYK prints on another device. For instance, a CMYK printer to Red Green Blue (RGB) monitor conversion would make it possible to proof the output of the CMYK printer on an RGB monitor. Similarly, the same applies to high fidelity printers. A CMYK Orange Green (CMYKOG) to RGB conversion would allow proofing of CMYICOG output on a RGB monitor.
[0004] A conventional approach of implementing such color conversion efficiently is via a uniform Look-Up Table (LUT). For example, in an International Color Consortium (ICC) profile for a CMYKOG printer, the ICC specification mandates a so-called A2B1 tag that stores a uniform LUT representing a uniform sampling in the CMYKOG device space of the forward model, which goes from CMYKOG to the ICC "Profile Connection Space" (either CIELAB or CIEXYZ). Also, the ICC link profile enables a direct transformation from CMYKOG device space to any color space including a device space, also in the form of a LUT sampled uniformly in CMYKOG space. Furthermore, sampling is never done with a high number of levels because of the large size of the resulting LUT, except in the case of monochrome devices (1 channel). Instead, sampling with lower levels is used, with typical choices of 9 levels, 17 levels, or 33 levels. With a lower number levels in each channel, the LUT is used in conjunction with an interpolation algorithm to produce the result if a requested level is in between two sampled levels, hi short, LUT uniformly sampled in the source color space of the transformation followed by interpolation is mandated in ICC specification and is considered the industrial standard.
[0005] Beyond the ICCs approach of uniform LUT, it is noteworthy that other transform structures have been proposed, hi the Sequential Linear Interpolation (SLI) structure, nodes of a "LUT" are not uniformly spaced but instead are placed strategically so that the resulting grid minimizes the interpolation error by following the characteristics of the underlying transformation, putting more nodes in places where the transformation varies more rapidly, less in places where the transformation varies slowly, hi another approach called Variable Rectilinear Interpolation (VRT) structure, a non-uniform grid is constructed with the same
objective as SLI, which is to minimize the interpolation error. However, the VRI node placement uses the idea of successive subdivision of rectangular cells, subdividing more times in places where the underlying transformation varies rapidly, less times in places where the transformation varies slowly.
[0006] While a uniform LUT is conceptually simple and easy to implement, and interpolation on a uniform LUT is generally very efficient, the LUT size increases exponentially with the input dimension, m fact, if d is the number of steps used in the uniform LUT, and n is the number of channels in the source color space, then the number of nodes in the LUT is d". Clearly, the number of nodes quickly becomes so computationally demanding in storage/memory that computational resources may become strained. For high fidelity devices with six or eight channels, an ICC implementation of the device profile practically necessitates using fewer steps in the LUT, sometimes even down to 5 steps in the A2B1 table to keep the profile size within megabytes instead of gigabytes. Clearly, using smaller number of steps increases interpolation error, as there are now fewer sampling steps. Moreover, because the LUT is required to be uniform, this is an across-the-board degradation of accuracy over the whole color space, even in those regions of the space where a significant color difference can be caused by small change in the device value. Also peculiar to high fidelity devices is the fact that certain subspaces of the whole device space are more important than the others. For example, in CMYKOG space, cyan and green inks are seldom used together because their hues are largely overlapping each other, and the same goes for yellow and orange inks. A uniform reduction in the number of steps can be viewed as an overall degradation in quality across the whole color space, which is something that can be tolerated for the improbable ink combinations, but not for the likely/important combinations.
[0007] In either the SLI or VRI approach, the objective is to minimize the interpolation error, not to control the total number of nodes used in the LUT. They are mainly used in conventional color spaces such as RGB, CMYK or CIELAB, which have four or less channels. In fact, the objective of minimizing the interpolation error may result in a LUT becoming bigger than it would be if uniform LUT was used.
[0008] FIG. 1 is a block diagram illustrating use of a LUT by a color device to map from one
color space to another. In this example, a data processing system, such as computer 100, maps color values of a first color device, such as color scanner 99, to color values for a second color device, such as color printer 101. For example, the data processing system may map RGB color value 102 generated by the color scanner to CMYK color value 104 used by the color printer. The data processing system does so using one of several LUTs, 106, 108, 110 and 112. The choice of the interpolation algorithm depends on the geometrical arrangement of the sampling points. If the points are totally unstructured, or what is known as a "point cloud" 106, then interpolation methods suitable for scattered data are used. Such methods are generally slow, and are employed only in situations where the sampling locations cannot be arranged.
[0009]On the other extreme of point clouds is the case where the sampling points fall on a rectangular grid 108. The simplest situation of a rectangular grid is one with uniform sampling in each channel. Given an input point, its enclosing cell can be efficiently located, then an interpolation algorithm, such as tetrahedral interpolation, can be used to perform the interpolation within this enclosing cell.
[0010]A slightly more complicated situation is a rectangular grid 110 with non-uniform sampling in each channel. In the case of non-uniformly sampled rectangular grid, the enclosing cell can still be determined quite easily, though not as efficiently as the uniform case. Once the enclosing cell is determined, interpolation within the cell is done the same way as the uniform case.
[0011]In between the totally unstructured configuration of point cloud, and the totally structured configuration of a rectangular grid lies an "adaptive rectangular grid " 112. An adaptive rectangular grid still employs rectangular grids (possibly non-uniformly sampled) on subspaces, but these grids are not compatible as a whole. Adaptive sampling is useful to reduce the sampling rate, that is, increase the storage efficiency, in a region of the color space that is less important. For example, in the standard IT8.7/3 target for CMYK printers, sampling on each CMY "plane" for a fixed K is uniform rectangular, but the sampling rate is successively reduced as K increases, because the colors get darker and variations become smaller to make high sampling rate wasteful.
[0012] A traditional approach to performing interpolation on an adaptive rectangular grid is to use SLI. In one step, an n-dimensional interpolation is reduced to two (n-l)-dimensional interpolations and a 1 -dimensional interpolation, and the same procedure can be applied to each of the (n-l)-dimensional interpolation problems, hence the name "sequential".
[0013]Several things are not desirable about SLI:
1. SLI does not preserve all the symmetries. In fact, suppose the grid is uniformly rectangular, and SLI is applied all the way to dimension 1. This results in the same result as multilinear interpolation (usually called cubic interpolation in the case of 3 dimensions). Points on the principal diagonal are interpolated using all the corner points of the cube. This is not desirable if the principal diagonal is the gray axis (as in RGB space) because one prefers grays to be interpolated using sampling points on the gray axis only.
2. The SLI step is also not necessarily compatible with the interpolation used on sandwiching planes. For instance, if tetrahedral interpolation is used on each sandwiching plane, then SLI produces a "hybrid" that is "bilinear", linear on each sandwiching plane, and linear in the transverse direction between them. True tetrahedral interpolation in the full dimension would be linear in each subdividing tetrahedron.
3. SLI handles the basic geometrical configuration with 2 sandwiching linear hyperplanes where the hyperplanes are provided by n-1 coordinates and the transverse direction to the hyperplanes provided by the remaining coordinate. There are other more complicated geometrical situations which SLI cannot handle, or can do so only awkwardly. One scenario is the "gap interpolation problem" between incompatible grids in different dimensions. FIG. 2 depicts a simple 2-dimensional situation in a X1X2 space where the interior of the space is covered a rectangular grid, and each of the X1 and x2 axis is covered by different 1- D grids, and furthermore these grids are not compatible. To interpolate in the gap space, consider the three input points P1, P2 and P3. While P1 and P2 can probably
be handled by SLI as indicated in the figure, there is no natural way to handle P3. One possibility is to try and apply SLI in the X1 direction, interpolating between A3 and B3, where B3 itself needs to be interpolated first. Another possibility is to apply SLI in the other direction, ending in an interpolation between C3 and D3. Worst of all, one may get different results from each approach. Clearly, when the sandwiching geometric objects are more complicated than linear hyperplanes, SLI is not an ideal tool.
[0014] Therefore, a need exists for a color conversion system for color printers having a large number of input channels that yields accurate color conversions that is computational manageable and yet manages geometrically complex LUTs. Various aspects of the present invention meet such a need.. Various aspects of the present invention meet such a need.
SUMMARY OF THE INVENTION
[0015] A method and apparatus for color conversion useful for color devices having a large number of input channels, for example CMYK color printers having additional inks used to enhance the color printer's gamut, are provided. The color conversion is performed using a strata collection of look-up tables that stratify an n-dimensional color space into sets of lower dimensional subspaces. For lower dimension subspaces, the associated look-up tables may be closed and have a uniform grid structure. For a higher dimension subspace, an associated look-up table may be open, leaving gaps of the subspace not enclosed by the look-up table, and may have a non-uniform grid structure. A color management module using the strata collection for color conversion may determine if a color conversion is for a color value that falls within a gap. If so, the color management module may use a relatively complex interpolation process. If not, the color management module may use a relatively simple interpolation process.
[0016] In one aspect of the invention, a unit cube in an n-dimensional color space is stratified into a set of LUTs that span the unit cube, each LUT mapping from the color space to a second color space. In the method, a set of strata collections is defined for the n-
dimensional color space, wherein, for each dimension k where k = 3 to n dimensions, a strata collection is defined having n-choose-k LUTs. Each LUT has k inputs and at least some of the LUTs have a grid structure different from the other LUTs. Furthermore, the grid structure for higher dimension LUTs are less dense than lower dimension LUTs. The LUTs within the set of strata collections are then populated using color values from the second color space.
[0017] In another aspect of the invention, for each subspace of dimension 3, each LUT is closed and the grid structure for each LUT is uniform.
[0018] In another aspect of the invention, for each subspace of dimension 4, at least one LUT is closed and all other LUTs are open.
[0019] In another aspect of the invention, the grid structure for each closed LUT is uniform and the grid structure for each open LUT is nonuniform.
[0020] In another aspect of the invention, nonuniform grid structures are based on an array of specified device values.
[0021] In another aspect of the invention, for subspaces having greater than four dimensions, all of the LUTs are open.
[0022] In another aspect of the invention, the set of strata collections are used in a color management module. A color conversion process within the color management module uses a first interpolation process for closed LUTs and interior portions of open LUTs and uses a second interpolation process for spaces between an open LUT and a lower dimensional subspace. In this embodiment of the invention, the second interpolation process is more computationally complex than the first interpolation process.
[0023]In another aspect of the invention, a "super-grid" approach may be used to ameliorate the adverse affects of scenarios 1 and 2 from above; however, such an approach is best suited when there are rectangular grids in "codimension 1" spaces, which in that application are the CMY spaces. The present invention is related to the super-grid approach, although it does not use super grids. The present inventions handles scenario 3 from above easily. To
do so, the present invention involves an interpolating step (herein termed a "barycentric projection") so the present invention can also be "sequentialized" to produce an interpolation scheme which can be called "Sequential Tetrahedral Interpolation" (STI).
[0024]In another aspect of the invention, a unit hypercube enclosing the input value is generated based on values from a look up table. A set of boundary conditions are then imposed on the unit hypercube. To perform the actual interpolation, an initial barycentric projection is performed from a selected vertex of the unit hypercube through the input value onto a boundary of the unit hypercube. If the projection satisfies one of the boundary conditions, an interpolated value is calculated using the proj ection by back substitution. If the initial projection does not satisfy a boundary condition, an intermediate value is generated from the previous projection and successive barycentric projections are performed using respectively different vertices of the unit hypercube through intermediate values onto a boundary of the unit hypercube until a projection satisfies one of the boundary conditions. An interpolated value is then generated by back substitution using the initial and successive projections.
[0025]hi another aspect of the invention, a method of determining an interpolated value for a color space is provided. The method includes generating a unit hypercube enclosing an input value. A set of boundary conditions is then imposed on the unit hypercube. A series of barycentric projections are performed from respectively different vertices of the unit hypercube through the input value or intermediate values onto a boundary of the unit cube until a projection satisfies one of the boundary conditions. Once a boundary condition has been satisfied, the interpolated value is generated by back substitution using the series of barycentric projections.
[0026]In another aspect of the invention, the boundary conditions include a discrete boundary condition. The discrete boundary condition may be associated with a vertex of the unit hypercube.
[0027]ln another aspect of the invention, the boundary conditions include a continuous boundary condition. The continuous boundary condition is associated with a facet of the hypercube.
[0028]In another aspect of the invention, the boundary conditions include a first continuous boundary condition associated with a first facet of the unit hypercube and a second continuous boundary condition associated with a second facet of the unit hypercube and the continuous boundary conditions agree at an intersection of the first facet and the second facet.
[0029]In another aspect of the invention a simplex enclosing the input value is determined, hi this embodiment of the invention, the simplex is enclosed by the hypercube and a barycentric projection is performed using a vertex of the simplex.
[003O]In another aspect of the invention, an intermediate value used in a barycentric projection is determined from a previous barycentric projection.
[0031] This brief summary has been provided so that the nature of the invention may be quickly understood. A more complete understanding of the invention may be obtained by reference to the following detailed description in connection with the attached drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0032] FIG. 1 is a block diagram illustrating use of a LUT by a color device to map from one color space to another.
[0033] FIG. 2 depicts a simple 2-dimensional situation in a X1X2 space where the interior of the space is covered a rectangular grid, and each of the X1 and X2 axis is covered by different 1-D grids, and furthermore these grids are not compatible.
[0034] FIG. 3 illustrates transformation of color values between a higher dimensional color space and other color spaces in accordance with an exemplary embodiment of the present invention.
[0035]FIG. 4 is a process flow diagram of a process used to determine the number of steps d for closed LUTs and also number of steps and node locations for open LUTs in accordance with the present invention.
[0036]FIG. 5 is a process used to generate LUTs using user specified sampling locations in
accordance with an exemplary embodiment of the present invention.
[0037JFIG. 6 is a block diagram of an interpolation module in accordance with an exemplary embodiment of the present invention.
[0038JFIG. 7 is a block diagram of a stratum selector in accordance with an exemplary embodiment of the present invention.
[0039]FIG. 8 is a block diagram of a /c-dim stratum selector in accordance with an exemplary embodiment of the present invention.
[004O]FIG. 9 is a process flow diagram of an interpolation process used by an interpolator in accordance with an exemplary embodiment of the present invention.
[004I]FIG. 10 is a block diagram of a data processing system, such as a computer coupled to color devices and having a color management module, that may be used to host an interpolation module in accordance with an exemplary embodiment of the present invention.
[0042]FIG. 11 is a process flow diagram of an interpolation process used by a color device to map input color values in one color space to output color values in another color space in accordance with an exemplary embodiment of the present invention.
[0043]FIG. 12 illustrates an example interpolation in accordance with an exemplary embodiment of the present invention.
[0044]FIG. 13 to FIG. 15 illustrate an example interpolation in accordance with an exemplary embodiment of the present invention.
[0045]FIG. 16 illustrates an example of how an interpolation process in accordance with an exemplary embodiment of the present invention manages interpolation between two hyperplanes having incompatible grids.
[0046]FIG. 17 is an illustration of an interpolation process for an input value that falls in a "gap" in accordance with an exemplary embodiment of the present invention.
[0047]FIG. 18 is a block diagram of a data processing system, such as a color device, that
may be used to host an interpolation process in accordance with an exemplary embodiment of the present invention.
DETAILED DESCRIPTION
[0048] The present invention is directed to a method of interpolation using LUTs in any arbitrary n-dimensional color space. However, throughout the detailed description, examples are given for 2-dimensional and 3-dimensional spaces, it being understood that the interpolation process may be performed in any n-dimensional color space. Therefore, the following terminology is used in order to identify the types of geometric objects representing the manipulations performed during the interpolation process:
A hypercube is a generalization of a measure polytope, such as a 3-cube, to n dimensions. Hypercubes of lower dimension have specific names. For example, a 1 -hypercube is a line segment, a 2-hypercube is a square, a 3-hypercube is a cube, and a 4-hypercube is a tesseract.
A simplex is a generalization of a tetrahedral region of space to n dimensions. The simplex is so-named because it represents the simplest possible polytope in any given space. For example, a 2-simplex is an equilateral triangle, a 3- simplex is a tetrahedron, a 4-simplex is a pentatope, etc.
[0049]Other generalizations are represented in the following table:
[0050] FIG. 3 illustrates transformation of color values between a high fidelity color space and another color space in accordance with an exemplary embodiment of the present invention. The present invention may be applied to color transformations from a high fidelity color space to another high fidelity color space or a color space having fewer dimensions. Accordingly, an input color value 300 in a high fidelity color space can be transformed into a second color value 302 in a second high fidelity color space. Alternatively, the input color value can be transformed into a color value 310 in a lower dimensional color space. To do so, a data processing system uses an interpolation module 304. The interpolation module includes an interpolation process 306 that receives the first color value and uses a set of LUTs 312, herein termed a strata collection, to generate the second color value through interpolation.
[005I]In the above-described scenario, a uniformly sampled LUT maybe used instead of the strata collections during the interpolation process. While a uniformly sampled LUT results in a simple and efficient interpolation process, such an approach imposes large memory requirements as the dimensionality of the color spaces goes up, sometimes referred to as "the curse of dimensionality." However, in reality, while a color device may have six or eight channels, these channels are rarely used simultaneously, for example, because of an ink coverage problem. Therefore, a simplifying assumption is that in. most cases, the input color value to color value transformation has only a few "active" colorants and so the transformation actually resides in a lower dimensional color space. This also means that interpolation can be done more efficiently in that lower dimensional space because interpolation is faster the lower the dimension of the color space used.
[0052] Therefore, in accordance with various embodiment of the present invention, the whole device color space is stratified into subspaces of various dimensions. And because lower dimensions (combinations of three or four colorants mostly) are more important, by stratifying the color space, one can also use different sampling rates (for example, different number of steps) on the different portions of the stratified color space, such as increasing sampling rates for lower dimensional portions and reducing sampling rates for higher dimensional portions.
[0053] In order to describe the transformations in accordance with exemplary embodiments of the present invention, the following notation is used herein, n is the number of channels in the source color space of the color transformation that one wants to sample. Ih addition, one can simply refer to n as the input dimension, and n ≥5 unless otherwise specified.
[0054] The basic building blocks of the strata collections are LUTs of various input dimensions and sizes, instead of one uniformly sampled LUT with input dimension n. To be precise, a "LUT", as used herein, is a rectangular lattice imposed on a unit hypercube, that is, all the color space coordinates are normalized to the range [0, 1]. If v is the input dimension of the LUT (note that v in general does not need to be equal to n, although all v < ή), then the LUT consists of v one-dimensional sampling grids:
where all the Jt7' s lie in the range [0, 1], are strictly increasing withy, d(ϊ) ≥ 1 is the number of steps for the zth channel sampling, andx^ is 1. On the other hand, X1 is not required to be 0.
[0055] As used herein, there are two special cases of LUTs as defined below.
[0056] A "Closed LUT" is a LUT with the additional requirement that for each Samp,., X1 = 0, and d(i) > 1. That is, the LUT is at least defined on all boundary faces of the unit hypercube. Furthermore, a uniform closed LUT is a closed LUT that has the same number of steps d(i) for each channel, and the nodes are uniformly spaced between 0 and 1.
[0057] An "Open LUT" is a LUT with the additional requirement that for each Sampi5 X1 > 0.
That is, an open LUT is not defined on the boundary faces of the unit hypercube that contain the origin. Furthermore, it is permissible to have only one step, that is, d(i) =1.
[0058] In one embodiment of the present invention, the unit hypercube [0, 1]" is stratified into a collection of closed LUT's and open LUT's such that the whole collection of LUTs will cover the unit hypercube. It is conceptually simpler to organize these "LUT strata" by their dimension, so that on the top level one can write:
where ∑,k is the "^-dimensional strata collection." Note that the stratum dimension k starts from three instead of zero, which would correspond to points. This is because handling interpolation of three-colorant combinations is quite efficient without too much memory requirement. However, it is to be understood that lower dimensional strata collections are possible.
[0059] In one embodiment of the present invention, Σ3 consists of closed LUT's with three inputs, one from every possible combination of three colorants chosen out of the n colorants. In addition, Σ4 consists of 1 closed LUT's for the combination CMYK (or the first four
because the CMYK combination is an important combination as it is the basis of most color
printers. Finally, for k=5,...,n, ∑k consists of open LUT's, one for each possible
combination of choosing k colorants from the total of n colorants.
[0060] After establishing the nature of the LUTs, it remains to specify the sizes of the LUTs. One difference between open and closed LUT's is that open LUT's don't overlap with each other, whereas closed LUT's may overlap with each other at the boundary faces. The fact that the 1-D sampling in an open LUT does not contain "0" essentially means that an open LUT is missing half of the boundary faces, hence the name "open". If two LUTs don't overlap, one is free to use different number of steps and node locations in each channel. The same is not true if two LUTs overlap. In that case, if the number of steps and/or node locations are different, a point lying in the intersection of the two LUTs will receive a different interpolation value depending on which LUT is used in the interpolation. In one embodiment of the present invention, uniform sampling is used with the same number of steps whenever two LUT's overlap.
[0061] To summarize, all closed LUT's (all 3-colorant LUT's and the CMYK LUT in the present embodiment) are uniform, and have the same number of steps, which is denoted d.
[0062] FIG. 4 is a process flow diagram of a process used to determine the number of steps d for closed LUTs and also the number of steps and node locations for open LUTs in accordance with the present invention. In the process 400, there are two distinct processing modes, dependent on whether or not a user is supplying sampling points. The process determines (402) if the user is supplying sample points 404. If not, the process generates (406) closed LUT's as uniform LUTs with d number of steps as described in a table 408, exemplary contents of which are illustrated in Table 1 below:
Table 1
All the open LUT's of dimension A: will have the same number of steps d(k) in each input channel, and the nodes are equally spaced, that is, for each i=l,2,...,k, the 1-D sampling grid is:
Sampi:l/d(k),2/d(k),...,(d(k)-iyd(k), l
In this leg of the process, d(k) is specified in a portion of table 4OS, exemplary contents of which are illustrated in Table 2 below:
Table 2
The three modes, "proof, "normal" and "best", are quality settings that normally exist in Color Management Module (CMM) software allowing a user to choose a quality based on the user's application. In the exemplary embodiment of the present invention, the proof mode has the smallest memory footprint, while best mode has the largest.
[0063] If it is determined that a user wants to supply sampling points, the process generates (410) LUTs using an external input in the form of a list of "important" sampling locations. This leg of the process is more adaptive than the table driven leg, and can also save more memory space.
[0064] The external input is an array of device values supplied by the user. These device values will indicate which region of the device color space is important, that is, which region of the device color space should be sampled at a higher density or rate.
[0065] As before, all the closed LUTs generated by this leg of the process will be uniform with d number of steps as described in Table 1 from above. However, each open LUT can have a different number of steps in each input channel, and the sampling locations do not need to be equally spaced.
[0066] FIG, 5 is a process used to generate LUTs using user specified sampling locations in
accordance with an exemplary embodiment of the present invention. For a given open LUT stratum, there is associated with it a colorant combination, say clt...,ck where the ct 's are distinct integers between 1 and n. They are the channel indices corresponding to the colorants that are "active" in this stratum.
[0067] A LUT process generation process 410 loops (500 to 512) for each stratum in each dimension k, that is, for each of the active channels indexed by i=l,2,...,k, performing the following steps.
[0068] The process filters (502) out from an input array of user specified sampling points all device values that are not contained in the stratum being processed. A device value (xu X2, ..., Xn) is contained in the stratum if and only if and all other channels are zero. If the filtered set has N entries, let dtelltative = mm(<i(/c),max(l, UIt(TV1*))) where d(k) is also given by Table 2 from above. d(k) imposes an upper bound on the size of the LUT so that, if N is large, that is, there are a lot of samples in this stratum, the size of the LUT doesn't go out of control. At the other extreme, if N= 0, a one-step LUT is used.
[0069] The process determines (504) Ifdtentalive = 1, Samp,- has only 1 point, which is set to 1.0, as it must be. If so, the process continues to the next stratum, otherwise, the process continues processing.
[0070] The process then sorts (506) the filtered samples in ascending order in the C1 th channel.
[0071] Once the filtered samples are sorted, the process defines (508) the "tentative" sampling grid for the zth active channel (c( th in the full device space) using the nodes XJ - (j-l) lOO/(dtenlative - l)percentile where j=1.2,...,rfteBωte.
[0072] The process regularizes (510) the tentative grid to ensure that the grid conforms with strict monotonicity and also that the grid ends with 1.0. Because the filtered samples are already sorted in the c,th channel, the' nodes in the tentative grid are already monotonic non- decreasing. However, adjacent nodes might be identical. This can be corrected by removing identical nodes if necessary. Finally, after this procedure, if the end point is less than 1.0, it is
replacedby 1.0.
[0073] Note that the regularizing process may result in a LUT stratum having a different number of steps in each channel, because after the regularization, the number of steps in a channel may be less than dmtative.
[0074] At the end of the stratification process, using either table values or values supplied by a user, the unit hypercube is stratified by a strata collection having open and closed LUT strata.
[0075JFIG. 6 is a block diagram of an interpolation module in accordance with an exemplary embodiment of the present invention. An interpolation module 600 uses a strata collection to generate an output color value 602 from an input device value 604. To generate the output color value, the interpolation module receives the input device value which is given by a set of channel values, namely (X1J2,...^,). The interpolation module uses a stratum selector 604 to select a stratum 606 from the strata collection containing the input device value. The containing stratum and the input device value are then used by an interpolator 608 to generate the output color value.
[0076JFIG. 7 is a block diagram of a stratum selector in accordance with an exemplary embodiment of the present invention. The stratum selector 604 computes (700) the number of "active" channels. This is simply the number of non-zero channels in the input device color. This determines the strata dimension k in which the stratum selector searches for the containing stratum. More precisely, the stratum selector sets (702) the strata dimension as 3 if the number of active channels is <3, otherwise the strata dimension is the same as the number of active channels. The stratum selector then uses a ft-dim stratum selector 704 to select the individual stratum to be used in an interpolation.
[0077] FIG. 8 is a block diagram of a &-dim stratum selector in accordance with an exemplary embodiment of the present invention. The Ar-dim stratum selector 704 searches within the strata collection, ∑k, for the stratum containing the input device value. A device value is contained in an open stratum if all the channels corresponding to the stratum have non-zero value, and all other channels are zero. A device value is contained in a closed
stratum if the device value is 0 in every non-active channel for the stratum. The /c-dim stratum selector determines if the device value is in a first stratum, S1 800. If not, the /c-dim stratum selector tries each stratum, S1 802, in succession until it finds a containing stratum. If no containing stratum is found, the /c-dim stratum selector aborts and reports a failure. If a containing stratum 606 is found, an interpolated output value can be generated from the input device value and the containing stratum.
[0078]FIG. 9 is a process flow diagram of an interpolation process used by an interpolator in accordance with an exemplary embodiment of the present invention. An interpolator 608 (of FIG. 6) uses an interpolation process 900 to generate an output color value 602 from an input device value 604 and a containing stratum 606. The interpolator determines (902) if the containing stratum is closed. If so, interpolation within can be done by a conventional interpolation process that works for nodes in a hypercube. hi one embodiment of the present invention, a tetrahedral interpolator 904 is used. If the interpolator determines (906) that the containing stratum is open, and the device value lies strictly within the stratum, that is, value of the first node in the zth channel for every index i that corresponds to an active channel of the stratum, then the same, standard, interpolation process (such as the process used by the tetrahedral interpolator) can be used.
[0079]If, on the other hand, ifx, < the value of the first node in the zth channel for some active channel index i, then the device value falls into a "gap" between the stratum and the lower dimensional subspaces. Any process that is capable of interpolating within this gap, such as a gap process used by gap interpolator 908, can be used, although a preferred gap interpolator uses a transfmite interpolation algorithm as described below. Typically, a process that is capable of performing such an interpolation is more complex than any of the conventional interpolation processes, such as one using a tetrahedral interpolation algorithm.
[0080] Use of strata collections to span a unit hypercube during a color conversion process for a high-fidelity color has several advantages as compared to use of a single uniform LUT. As explained earlier, the resultant sparse LUT structure is able to achieve reasonably dense sampling in regions of the device space that contain important combinations of colorants, while keeping in check the total size of LUT's needed. Table 3 below shows a comparison of
the number of nodes needed for the present sparse LUT implementation (using the table driven LUT generation process as described above) and the corresponding uniform LUT implementation. As can be seen from the table, use of the present sparse LUT system results in smaller, and therefore more manageable, LUT sizes.
[008I]FIG. 10 is a block diagram of a data processing system, such as a computer coupled to color devices and having a color management module, that may be used to host an interpolation module as described above in accordance with an exemplary embodiment of the present invention. The data processing system 1000 includes a processor 1002 coupled to a memory 1004 via system bus 1006. The processor is also coupled to external Input/Output (FO) devices via the system bus and an I/O bus 1008. A storage device 1010 having computer system readable media is coupled to the processor via a storage device controller 1012 and the I/O bus and the system bus. The storage device is used by the processor to store and read data 1014 and program instructions 1016 used to implement an interpolation process as described above. The processor may be further coupled to color output devices, such as computer display 1017 and color printer 1018, via an output device controller 1019 coupled to the I/O bus. The processor may also be coupled to a color input device, such as color scanner 1020, via an input device controller 1022.
[0082] In operation, the processor loads the program instructions from the storage device into memory. The processor then executes the loaded program instructions to receive an input color value in a first color space, such as a color value meant for use by the color printer. The processor then executes the program instructions to generate an output color value in a second color space, such as a color value for use by the display, as described above.
[0083] A basic step in using a rectangular grid as a LUT is interpolation within an enclosing
cell. For any input value, the input value's enclosing cell is easily determined. In the case of rectangular grid, the output value at each of the vertices (corner points) of the enclosing cell is specified, and they are also the only boundary conditions (BCs) that an interpolant must satisfy, that is, the interpolant has to pass through all these points. Note that these boundary conditions are on "discrete" points, in this case the 2" corner points of the cell, where n is the dimension of the color space.
[0084] Boundary conditions may be formalized as follows. For any subset S of the boundary of the enclosing cell, which will herein be taken as a unit hypercube in n dimensions, a boundary condition on S is a specification of a function BC: S → R", where m is the output dimension, hi other words, an interpolant, which may be denoted hiterp: [0,1 ]"-> R'", is required to satisfy: Interp(x) = BC(x) for all x in S. hi the standard scenario of interpolation on the unit hypercube, S is the set of discrete points that are the 2" vertices of the hypercube.
[0085] The following generalization of boundary conditions can solve the issues described above, resulting in a new interpolation algorithm within the unit hypercube. Instead of allowing only discrete boundary points, boundary conditions may be imposed on a whole boundary facet of the hypercube. The precise assumptions are as follows:
(a) The point Vn =(1,1,...,1) is special and only a discrete boundary condition is allowed. In other words, no continuous boundary conditions can be imposed on the n boundary facets X1 = 1 (i—l,...,«).
(b) For each of the remaining n boundary facets X1 = 0 (i=l,...,n). boundary condition may be imposed on the whole facet, with the compatibility condition that if two facets intersect, the boundary conditions on the facets should agree on the intersection.
(c) Any vertices not contained in the facets with a boundary condition will have an individual (discrete) boundary condition.
As used herein, a discrete boundary condition is termed "finite data," and a continuous boundary condition is termed "transfinite data." Therefore, the interpolation procedures
described here are inteφolations on finite and transfinite data.
[0086]The following description of tetrahedral, or simplex, interpolation helps to set the notations used for the description of the present invention. It is known that the unit hypercube [0, I]" can be subdivided into n\ simplexes, parametrized by the set of permutations on n symbols. More specifically, each such simplex is defined by a set of inequalities Λ;O(1) ≥ xσ(2) ≥ ... ≥ xo(n) where σ: {l,2,..,n}→{\,2,.. ,,n} is a permutation of "symbols" 1, 2, ..., n, i.e. it is a bijective mapping ofthe set of n symbols. For example, if n = 3 and one uses the shorthand σ = <3, 2, 1>, meaning σ(l)=3, σ(2)=2, σ(3)=l, then the corresponding simplex is defined by z ≥y≥x, where one uses the common notation x, y, z for X1, x2,Xy Also note that these simplexes are not disjoint from each other, but for the purpose of interpolation, points lying on a common facet of 2 distinct simplex will have the same interpolation value regardless of which simplex is used in the interpolation.
[0087]Conventionally, in interpolating on finite points, for a given input point (xu ..., xn), an interpolation process first determines which simplex the input point lies in, or equivalently the corresponding permutation σ, by checking the inequalities one simplex by another. Then the simplex interpolant is defined as:
Interpix) = BC(v0) + ∑ X1[BOy1) - 5C(vH)]
/ where v0 = 0, V1. = Y* eσ( .} for i=\, ..., n, and el5 ..., eπ are the standard basis vectors. Note
that V0, V1, ..., vπ are the vertices ofthe simplex, and
1 - *,(,) » *σ(i) " *σ(2) > *σ(2) " *σ(3> » • • • » *„<„) WQ ^ "barycentric coordinates" with respect to the vertices.
[0088]However, such a conventional tetrahedral interpolation process cannot handle cases where the boundary conditions are continuous rather than discrete, m contrast, the present invention utilizes a generalization of tetrahedral interpolation capable of handling mixed
discrete and continuous boundary conditions. The resultant process, when applied to the case of an interpolation utilizing all discrete boundary conditions, results in a series of barycentric projections and backward substitutions that result in the same answer as that given by the conventional approach.
[0089]FIG. 11 is a process flow diagram of an interpolation process used by a color device to map input color values in one color space to output color values in another color space in accordance with an exemplary embodiment of the present invention. The process 1100 uses barycentric projections for a general case of BCs on boundary facets of a unit hypercube. Initially, for a given input value (Jc1, ..., Xn), the interpolation process first determines (1110) which simplex the input value lies in, or equivalently, the corresponding permutation σ. Then the interpoloation process performs (1120) a series of barycentric projections as follows.
[0090] The first projection BProj (x) sends the input value to the plane xσm = 0 unless the
input value is already at a vertex, or x = vn( in which case the input value is not changed. The precise definition of the map BProj k is defined as follows:
BProjk(x) = jP* + (χ-p*) /(1-J:*«>) if X ≠ P<
k-\ with p = v - V e , ., and &= 1, 2, ..., n. hi the case x ≠ Vn, it is clear that BPrOj 1(X)
has the σ(l)th component annihilated, m other words, the projected point, or intermediate color value, is on one of boundary facets. The interpolation process next determines (1150) if the projected point is on a facet on which a BC is defined, in which case the interpolation process can stop making projections. Otherwise, the interpolation process performs (1160) another barycentric projection BProj2(x') where x' = BPrOJ1(X). If the next projected point is on a vertex or on a facet on which a BC is defined, the interpolation process can stop making projections. Otherwise the interpolation process performs yet another projection. Because every projection annihilates one component, the effective dimension decreases, so that the
interpolation process must eventually stop - in the worst case scenario the interpolation process will perform n projections down to dimension 0, i.e. vertices on the hypercube, which by assumption (c) above, will have a BC defined on them.
[0091] Assuming that ^projections have been performed, with x(/t) = Bproj k (x(/>1)), k= 1,..., K, x(0)= x, the input point, and BC is defined at xw. Then the interpolation process can unwind the projections through back substitution (1170) by defining a series of output vectors:
where y w = BC{x^K)) , and the process finally obtains the answer, Interp(x) = y (0)
[0092]FIG. 12 illustrates an example interpolation in accordance with an exemplary embodiment of the present invention. In the example, n = 3, m = 1, and there are the following BCs on the unit hypercube 1200:
(a) 4 discrete BCs on vertices
(0, 0, 1): β001
(1, 0, 1): P101
(b) a continuous BC on the facet X3=O: F(xl5 X2)
[0093]For the input value x =(0.8, 0.5, 0.2) 1210, the enclosing simplex is associated with the permutation <1,2,3>. The 1st projection, 1220, is:
P1 = (1,1,1), xα) = p, + (x - P1) /(I - 0.2) = (0.75,0.375,0)
The first projection is on the facet .X3=O, so the interpolation process can stop. Backward substitution then gives y(0) = 0.2/?m +0.8F(0.75,0.375) which is the answer.
[0094]FIG. 13 to FIG. 15 illustrate an example interpolation in accordance with an exemplary embodiment of the present invention, hi this example, the hypercube 1200 is the same as the previous sample, but the input point is x =(0.2, 0.5, 0.8) 1300. The enclosing simplex associated with the permutation is <3,2,1>.
The 1st projection 131O iSIp1 = (1,1,1), x(1) = p1 + (x -p1)/(l - 0.2) = (0,0.375,0.75)
The 2nd projection 1320 is:p2 = (0,l,l),x(2) = p2 + (x(1) - p2)/(l - 0.375) = (0,0,0.6)
The 3rd projection 1330 is :p3 (0,0,l),x(3) = p3 + (x(2) - p3)/(l - 0.6) = (0,0,0) which is on the facet X3-O 700.
[0095]Backward substitution then gives:
y(1) = 0.375/?011 + 0.625y<2) = 0.375/?011 + 0.375/?001 + 0.25F(O5O)
which is the final answer. Note that this is identical to tetrahedral interpolation on the 4 points (1,1,1), (0,1,1), (0,0,1) and (0,0,0), confirming that the interpolation process is indeed a generalization of the tetrahedral interpolation process.
[0096]FIG. 16 illustrates an example of how an interpolation process in accordance with an exemplary embodiment of the present invention manages interpolation between two hyperplanes, 1600 and 1602, having incompatible grids, hi the example a cell enclosing a given point 1604 is shown in the figure. The "top" vertices of the cell, 1606, 1608, 1610 and 1612, come directly from the grid in the top plane. The vertices hi the "bottom" facet 1614 are not compatible with the grid in the bottom plane, so the interpolation process just treats
the whole facet as having a BC with values obtained by interpolation on the grid in the bottom plane. It is then clear that this setup satisfies assumptions (a), (b) and (c) from above, and the interpolation process can be successfully performed.
[0097]It is also clear that the interpolation process has reduced the dimension of the interpolation problem by 1 because the result is a linear combination of values at the vertices in the upper grid, and an interpolated value in the lower plane, which has dimension one less. If a similar sandwiching plane configuration exists inside the lower plane, the interpolation process can in turn apply the procedure in the lower plane, further reducing the dimension by one. This procedure can continue until the interpolation process reaches dimension 0. This cascade of projections and interpolations can be called "Sequential Tetrahedral Interpolation."
[0098]FIG. 17 is an illustration of an interpolation process for an input value that falls in a "gap" in accordance with an exemplary embodiment of the present invention. In this example, a grid is imposed on a hypercube 1700 sitting strictly inside the positive quadrant. The hypercube itself has a grid 1702 on it, and each coordinate hyperplane, 1704, 1706 and 1708, may have grids that are not necessarily compatible with the grid on the hypercube or with each other. The "gap" between the hypercube and the coordinate planes has a cross- section that is "L-shaped" and is not amenable to standard techniques such as SLI. However, with the interpolation process described herein, cells enclosing an input value 1709 are introduced that easily cover this gap, such as cell 1710. The grids on the coordinate planes support interpolation that provides the necessary BCs for all the lower bottom facets of the cell, while the BC at the one remaining vertex 1712 is provided by the lower corner of the hypercube.
[0099]In actual application, the "unit hypercube" that is the basic setting of the interpolation process described herein is extracted from larger lattices, and the values at the vertices may require expensive calculation. On the other hand, it is also clear that tetrahedral interpolation requires only the values at the vertices of the simplex, which is a subset of all the vertices of the unit hypercube. It is therefore more efficient, even imperative in some situations, to implement what can be called "deferred evaluation". In detail, in a software implementation
of the interpolation process, it is typical to have a subroutine that takes the unit hypercube and values at its vertices as input. By deferred evaluation, one can instead of passing the values at the vertices, simply pass the necessary information to evaluate the values of the vertices, without actually carrying out the evaluation. Inside the subroutine, actual evaluation of these values will be carried out only for those vertices that belong to the enclosing simplex, after the enclosing simplex is determined.
[0010O]FIG. 18 is a block diagram of a data processing system, such as a color device, that may be used to host an interpolation process as described above in accordance with an exemplary embodiment of the present invention. The data processing system 1800 includes a processor 1802 coupled to a memory 1804 via system bus 1806. The processor is also coupled to external Input/Output (DO) devices via the system bus and an VO bus 1808. A storage device 1810 having computer system readable media is coupled to the processor via a storage device controller 1812 and the I/O bus and the system bus. The storage device is used by the processor to store and read data 1814 and program instructions 1816 used to implement the interpolation process described above. The processor may be further coupled to an output device, such as a color output device 1817, via an output device controller 1818 coupled to the I/O bus.
[0010I]In operation, the processor loads the program instructions from the storage device into the memory. The processor executes the loaded program instructions to receive an input color value in a first color space. The processor then executes the program instructions to generate an output color value in a second color space as described above.
[00102]The present invention has been described above with respect to particular illustrative embodiments. It is understood that the present invention is not limited to the above-described embodiments and that various changes and modifications may be made by those skilled in the relevant art without departing from the spirit and scope of the invention.
Claims
1. A method of determining an interpolated value for a color space, comprising:
generating a unit hypercube enclosing an input value;
imposing a set of boundary conditions on the unit hypercube;
performing barycentric projections from respectively different vertices of the unit hypercube through the input value onto a boundary of the unit hypercube until a projection satisfies one of the boundary conditions; and
determining the interpolated value by back substitution using the barycentric projections.
2. The method of claim 1 , wherein the boundary conditions include a discrete boundary condition.
3. The method of claim 2, wherein the discrete boundary condition is associated with a vertex of the unit hypercube.
4. The method of claim 1 , wherein the boundary conditions include a continuous boundary condition.
5. The method of claim 4, wherein the continuous boundary condition is associated with a facet of the hypercube.
6. The method of claim 1 , wherein:
the boundary conditions include a first continuous boundary condition associated with a first facet of the unit hypercube and a second continuous boundary condition associated with a second facet of the unit hypercube; and
the continuous boundary conditions agree at an intersection of the first facet and the second facet.
7. The method of claim 1, further comprising determining a simplex enclosing the input value, wherein:
the simplex is enclosed by the hypercube; and
a barycentric projection is performed using a vertex of the simplex.
8. The method of claim 1 , further comprising performing a barycentric projection from respectively different vertices of the unit hypercube through an intermediate value onto a boundary of the unit hypercube wherein the intermediate value is determined from a previous barycentric projection.
9. Computer-executable instructions stored on a computer-readable medium, the computer-executable instructions executable to determine an interpolated value for a color space, comprising:
generating a unit hypercube enclosing an input value;
imposing a set of boundary conditions on the unit hypercube;
performing barycentric projections from respectively different vertices of the unit hypercube through the input value onto a boundary of the unit hypercube until a projection satisfies one of the boundary conditions; and
determining the interpolated value by back substitution using the barycentric projections.
10. An apparatus for determining an interpolated value for a color space, the apparatus comprising:
a generating unit adapted to generate a unit hypercube enclosing an input value;
an imposing unit adapted to impose a set of boundary conditions on the unit hypercube;
a performing unit adapted to perform barycentric projections from respectively different vertices of the unit hypercube through the input value onto a boundary of the unit hypercube until a projection satisfies one of the boundary conditions; and
a determining unit adapted to determine the interpolated value by back substitution using the barycentric projections.
11. A method of generating a set of LUTs that span a unit hypercube in an n-dimensional color space, each LUT mapping from the n-dimensional color space to a second color space, the method comprising:
defining a set of strata collections for the n-dimensional color space, wherein for each dimension k where k = 3 to n dimensions, defining a strata collection of n-choose-k LUTs, each LUT having k inputs and at least some of the LUTs having a grid structure different firom other LUTs, the grid structure for higher dimension LUTs being less dense than lower dimension LUTs; and
populating the LUTs with values from the second color space.
12. The method of claim 11, wherein for k = 3, each LUT is closed.
13. The method of Claim 12, wherein the grid structure for each LUT is uniform.
14. The method of Claim 11, wherein for k = 4, at least one LUT is closed and all other LUTs are open.
15. The method of Claim 14, wherein the grid structure for each closed LUT is uniform and the grid structure for each open LUT is nonuniform.
16. The method of Claim 15, wherein the placement of nodes in the nonuniform grid structure is determined by a pre-defined table.
17. The method of Claim 15, wherein the placement of nodes in the nonuniform grid structure is determined by a user-supplied array of values in the n-dimensional color space.
18. The method of Claim 11 , wherein for k > 4, all of the LUTs are open.
19. The method of Claim 18, wherein the grid structure for each closed LUT is uniform and the grid structure for each open LUT is nonuniform.
20. The method of Claim 19, wherein the placement of nodes in the nonuniform grid structure is determined by a pre-defined table.
21. The method of Claim 19, wherein the placement of nodes in the nonuniform grid structure is determined by a user-supplied array of values in the n-dimensional color space.
22. The method of Claim 11, further comprising:
performing a color conversion using the strata collection by:
interpolating output color values for input color values within any closed LUTs and interior portions of any open LUTs using a first interpolation process; and
interpolating output color values for input color values within spaces between an open LUT and a lower dimensional subspace, using a second interpolation process that is more computationally complex than the first interpolation process.
23. Computer-executable instructions stored on a computer-readable medium, the computer-executable instructions executable to generate a set of LUTs that span a unit hypercube in an n-dimensional color space, each LUT mapping from the n-dimensional color space to a second color space, comprising:
defining a set of strata collections for the n-dimensional color space, wherein for each dimension k where k = 3 to n dimensions, defining a strata collection of n-choose-k LUTs, each LUT having k inputs and at least some of the LUTs having a grid structure different from other LUTs, the grid structure for higher dimension LUTs being less dense than lower dimension LUTs; and
populating the LUTs with values from the second color space.
24. An apparatus for generating a set of LUTs that span a unit hypercube in an n-dimensional color space, each LUT mapping from the n-dimensional color space to a second color space, comprising:
a defining unit adapted to define a set of strata collections for the n-dimensional color space, wherein for each dimension k where k = 3 to n dimensions, defining a strata collection of n-choose-k LUTs, each LUT having k inputs and at least some of the LUTs having a grid structure different from other LUTs, the grid structure for higher dimension LUTs being less dense than lower dimension LUTs; and
a populating unit adapted to populate the LUTs with values from the second color space.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06733855.8A EP1846914B1 (en) | 2005-01-26 | 2006-01-26 | Color conversion using barycentric projections |
JP2007552381A JP4477675B2 (en) | 2005-01-26 | 2006-01-26 | Color processing apparatus and method |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/042,140 US7423791B2 (en) | 2005-01-26 | 2005-01-26 | Color conversion using barycentric projections |
US11/042,140 | 2005-01-26 | ||
US11/042,106 US8120617B2 (en) | 2005-01-26 | 2005-01-26 | Color conversion with many input channels |
US11/042,106 | 2005-01-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2006081253A2 true WO2006081253A2 (en) | 2006-08-03 |
WO2006081253A3 WO2006081253A3 (en) | 2009-04-16 |
Family
ID=36741004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2006/002507 WO2006081253A2 (en) | 2005-01-26 | 2006-01-26 | Color conversion using barycentric projections |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1846914B1 (en) |
JP (1) | JP4477675B2 (en) |
WO (1) | WO2006081253A2 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009145793A1 (en) * | 2008-05-31 | 2009-12-03 | Hewlett-Packard Development Company, L.P. | A method of identifying a target simplex |
WO2015103124A1 (en) * | 2014-01-02 | 2015-07-09 | Vid Scale, Inc. | Color space conversion |
WO2016186625A1 (en) * | 2015-05-15 | 2016-11-24 | Hewlett-Packard Development Company, L.P. | Printer cartridges and memory devices containing compressed multi-dimensional color tables |
TWI568600B (en) * | 2013-07-31 | 2017-02-01 | 惠普發展公司有限責任合夥企業 | Printer cartridge and memory device containing a compressed color table |
US9955174B2 (en) | 2013-09-20 | 2018-04-24 | Vid Scale, Inc. | Systems and methods for providing 3D look-up table coding for color gamut scalability |
US9992382B2 (en) | 2016-07-08 | 2018-06-05 | Hewlett-Packard Development Company, L.P. | Color table compression |
US10306111B2 (en) | 2016-07-08 | 2019-05-28 | Hewlett-Packard Development Company, L.P. | Color table compression |
US10356285B2 (en) | 2016-07-08 | 2019-07-16 | Hewlett-Packard Development Company, L.P. | Supply component comprising corrective data |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007096895A (en) * | 2005-09-29 | 2007-04-12 | Seiko Epson Corp | Color conversion using color conversion table |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57208765A (en) * | 1981-06-18 | 1982-12-21 | Dainippon Screen Mfg Co Ltd | Signal interpolating method for memory device |
US6185325B1 (en) * | 1997-07-02 | 2001-02-06 | Fuji Photo Film Co., Ltd. | Image transforming method and apparatus |
US6373580B1 (en) * | 1998-06-23 | 2002-04-16 | Eastman Kodak Company | Method and apparatus for multi-dimensional interpolation |
US6335800B1 (en) * | 1998-12-11 | 2002-01-01 | Xerox Corporation | Method of multidimensional interpolation for color transformations |
US6411305B1 (en) * | 1999-05-07 | 2002-06-25 | Picsurf, Inc. | Image magnification and selective image sharpening system and method |
US7019868B2 (en) * | 2000-12-19 | 2006-03-28 | Sharp Laboratories Of Ameirca, Inc. | Black generation method for CMYK color printer using multiple lookup tables and interpolation |
GB0117157D0 (en) * | 2001-07-16 | 2001-09-05 | Imec Inter Uni Micro Electr | Extraction, hierarchical representation and flexible compression of surface meshes derived from 3D data |
DE10156443A1 (en) * | 2001-11-16 | 2003-05-28 | Philips Corp Intellectual Pty | Method and device for calibration of and for image generation with a magnetic field sensitive image recording device |
US7023585B1 (en) * | 2001-12-06 | 2006-04-04 | Adobe Systems Incorporated | Multi-dimensional edge interpolation |
US7365879B2 (en) * | 2004-05-13 | 2008-04-29 | Eastman Kodak Company | Determining sets of n-dimensional colorant control signals |
US7483171B2 (en) * | 2004-09-13 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Determining inverse transfer functions of output devices having limited bit depth |
-
2006
- 2006-01-26 WO PCT/US2006/002507 patent/WO2006081253A2/en active Application Filing
- 2006-01-26 EP EP06733855.8A patent/EP1846914B1/en not_active Not-in-force
- 2006-01-26 JP JP2007552381A patent/JP4477675B2/en not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
See references of EP1846914A4 * |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009145793A1 (en) * | 2008-05-31 | 2009-12-03 | Hewlett-Packard Development Company, L.P. | A method of identifying a target simplex |
GB2472754A (en) * | 2008-05-31 | 2011-02-16 | Hewlett Packard Development Co | A method of identifying a target simplex |
DE112008003890B4 (en) * | 2008-05-31 | 2012-08-02 | Hewlett-Packard Development Company, L.P. | A method of identifying a target simplex |
GB2472754B (en) * | 2008-05-31 | 2012-08-08 | Hewlett Packard Development Co | A method of identifying a target simplex |
US8630022B2 (en) | 2008-05-31 | 2014-01-14 | Hewlett-Packard Development Company, L.P. | Method of identifying a target simplex |
US10027853B2 (en) | 2013-07-31 | 2018-07-17 | Hewlett-Packard Development Company, L.P. | Printer cartridge and memory device containing a compressed color table |
US9900473B2 (en) | 2013-07-31 | 2018-02-20 | Hewlett-Packard Development Company, L.P. | Printer cartridge and memory device containing a compressed color table |
US9800764B2 (en) | 2013-07-31 | 2017-10-24 | Hewlett-Packard Development Company, L.P. | Printer cartridge and memory device containing a compressed color table |
TWI568600B (en) * | 2013-07-31 | 2017-02-01 | 惠普發展公司有限責任合夥企業 | Printer cartridge and memory device containing a compressed color table |
US9621764B2 (en) | 2013-07-31 | 2017-04-11 | Hewlett-Packard Development Company, L.P. | Printer cartridge and memory device containing a compressed color table |
US9955174B2 (en) | 2013-09-20 | 2018-04-24 | Vid Scale, Inc. | Systems and methods for providing 3D look-up table coding for color gamut scalability |
US10390029B2 (en) | 2013-09-20 | 2019-08-20 | Vid Scale, Inc. | Systems and methods for providing 3D look-up table coding for color gamut scalability |
US20160330457A1 (en) * | 2014-01-02 | 2016-11-10 | Vid Scale, Inc. | Color space conversion |
WO2015103124A1 (en) * | 2014-01-02 | 2015-07-09 | Vid Scale, Inc. | Color space conversion |
US11109044B2 (en) * | 2014-01-02 | 2021-08-31 | Interdigital Madison Patent Holdings, Sas | Color space conversion |
WO2016186625A1 (en) * | 2015-05-15 | 2016-11-24 | Hewlett-Packard Development Company, L.P. | Printer cartridges and memory devices containing compressed multi-dimensional color tables |
US9800765B2 (en) | 2015-05-15 | 2017-10-24 | Hewlett-Packard Development Company, L.P. | Printer cartridges and memory devices containing compressed multi-dimensional color tables |
RU2664334C1 (en) * | 2015-05-15 | 2018-08-16 | Хьюлетт-Паккард Дивелопмент Компани, Л.П. | Cartridge for printing device with memory device containing compressed multidimensional color tables |
US10237451B2 (en) | 2015-05-15 | 2019-03-19 | Hewlett-Packard Development Company, L.P. | Printer cartridges and memory devices containing compressed multi-dimensional color tables |
AU2018250411B2 (en) * | 2015-05-15 | 2020-02-27 | Hewlett-Packard Development Company, L.P. | Printer cartridges and memory devices containing compressed multi-dimensional color tables |
US10412269B2 (en) | 2015-05-15 | 2019-09-10 | Hewlett-Packard Development Company, L.P. | Printer cartridges and memory devices containing compressed multi-dimensional color tables |
US9992382B2 (en) | 2016-07-08 | 2018-06-05 | Hewlett-Packard Development Company, L.P. | Color table compression |
US10356285B2 (en) | 2016-07-08 | 2019-07-16 | Hewlett-Packard Development Company, L.P. | Supply component comprising corrective data |
US10341533B2 (en) | 2016-07-08 | 2019-07-02 | Hewlett-Packard Development Company, L.P. | Color table compression |
US10498931B2 (en) | 2016-07-08 | 2019-12-03 | Hewlett-Packard Development Company, L.P. | Printing device supply component |
US10574862B2 (en) | 2016-07-08 | 2020-02-25 | Hewlett-Packard Development Company, L.P. | Printing device supply component |
US10306111B2 (en) | 2016-07-08 | 2019-05-28 | Hewlett-Packard Development Company, L.P. | Color table compression |
US10602028B2 (en) | 2016-07-08 | 2020-03-24 | Hewlett-Packard Development Company, L.P. | Color table compression |
US10630868B2 (en) | 2016-07-08 | 2020-04-21 | Hewlett-Packard Development Company, L.P. | Component comprising a memory device including corrective data |
US10674043B2 (en) | 2016-07-08 | 2020-06-02 | Hewlett-Packard Development Company, L.P. | Color table compression |
US10165154B2 (en) | 2016-07-08 | 2018-12-25 | Hewlett-Packard Development Company, L.P. | Color table compression |
Also Published As
Publication number | Publication date |
---|---|
JP4477675B2 (en) | 2010-06-09 |
EP1846914A4 (en) | 2014-06-04 |
WO2006081253A3 (en) | 2009-04-16 |
JP2008533764A (en) | 2008-08-21 |
EP1846914A2 (en) | 2007-10-24 |
EP1846914B1 (en) | 2017-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1846914A2 (en) | Color conversion using barycentric projections | |
JP6768343B2 (en) | Image processing equipment, image processing methods and programs | |
CN102065204B (en) | Image processing apparatus, image processing method, and lookup table generation method | |
US7495804B2 (en) | Gamut-preserving color imaging | |
US6335800B1 (en) | Method of multidimensional interpolation for color transformations | |
US5872898A (en) | Method and apparatus for calculating color gamuts | |
US7423791B2 (en) | Color conversion using barycentric projections | |
US20090310154A1 (en) | Chromatic Component Replacement | |
IL262980A (en) | Color table compression | |
KR19980080523A (en) | SYSTEM, METHOD, AND PROGRAM FOR TRANSLATING 3-D COLORS TO HIGH DIMENSIONS | |
AU3916293A (en) | Color correction with a four-dimensional look-up table | |
US8120617B2 (en) | Color conversion with many input channels | |
EP1221812B1 (en) | Fast interpolation of large color lookup tables | |
EP1146726A1 (en) | Method for optimising the colour target for a printer model | |
JP2005176260A (en) | Color image processing method, color image processing apparatus, color image processing program, and storage medium | |
JP2003501897A (en) | Constrained multidimensional color conversion | |
US8311324B2 (en) | Performing spectral gamut mapping for reproducing an image | |
US6049400A (en) | Non-symmetric tetrahedral and non-symmetric pruned tetrahedral interpolation | |
JP2004188980A (en) | Digital image printing in which reduced amount of colorant is used while maintaining sensed color | |
US6040926A (en) | Common non-symmetric pruned radial and non-symmetric pruned tetrahedral interpolation hardware implementation | |
EP0923049A2 (en) | Apparatus for tetrahedral and pruned tetrahedral interpolation | |
US5966474A (en) | Non-symmetric radial and non-symmetric pruned radial interpolation | |
EP0923037B1 (en) | Common pruned radial and pruned tetrahedral interpolation hardware implementation | |
JP4228208B2 (en) | Color image processing method, color image processing apparatus, color image processing program, and storage medium | |
GB2332328A (en) | Pruned and non-pruned radial interpolation for colour space conversion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2007552381 Country of ref document: JP |
|
REEP | Request for entry into the european phase |
Ref document number: 2006733855 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2006733855 Country of ref document: EP |