DYNAMIC GENERATION OF COLOR LOOK-UP TABLES
BACKGROUND OF LTHE INVENTION
Field OfThe Invention
[0001] The present invention relates to a color management system for dynamically generating, based on provided color measurement data, forward and inverse transformation look-up tables for transforming color image data between device-dependent and device-independent color spaces.
Description OfThe Related Art
[0002] Typically, color management systems rely on predetermined look-up tables for the conversion of color image data between device-dependent and device-independent color spaces. Such predetermined look-up tables are often created by the developer of a color management module for a given color device, such as a printer. Accordingly, a user is generally unable to modify them or update them if the color characteristics ofthe color device are
different from, or have changed from, the representation ofthe color device by the look-up tables.
[0003] In order to generate a forward look-up table for converting from device-dependent to device-independent color space, an IT8.7/3 target containing CMYK patches is widely used in the art. The CMYK patches consist of sampling ofthe CMYK space in a well-defined manner so that a rectangular grid (with non-uniform spacing in C, M, Y and K) is formed. Each patch is then measured with a colorimeter or spectrophotometer. The measurements, which are typically in CIEXYZ values, then form a Look-Up Table (LUT), with which an empirical model ofthe printer can be built using an interpolation method of one's choice, resulting in the forward look-up table.
[0004] However, the inversion ofthe printer model to generate an inverse look-up table for converting from device-independent to device-dependent color space presents more difficulties. Given an input color in CIELAB or more generally, a color appearance space, there is a question of whether this color is within the printer gamut. There is also the issue regarding the arrangement of points in the color appearance space. While the CMYK values can be arranged to fall on a rectangular grid, as is done in the IT8.7/3 target, the same cannot be said ofthe resulting printed colors as they are situated in the color appearance space. In general, they are scattered in the color appearance space with no particular pattern.
[0005] In this regard, there are generally two known approaches to the inversion problem regarding scattered points. One approach is to use a geometric subdivision ofthe printer gamut using elementary 3-dimensional solids, such as tetrahedra. A subdivision ofthe printer gamut in the device- independent (color appearance) space can be induced from the corresponding subdivision ofthe device-dependent (CMYK) space. This approach has the advantage of computational simplicity. In the case of a tetrahedron, only four
points are used in an interpolation. On the other hand, the result depends heavily on a just few points, which means that a measurement error will have a significant deleterious effect on the result. In addition, the interpolant also tends to be not very smooth because ofthe low number of points involved.
[0006] The second known approach does not assume any subdivision at all, but is instead based on the technique of scattered data interpolation. A classical example is the technique of Shepard interpolation, or inverse weighted method. In this method, several points surrounding the input point are chosen and each assigned a weight, usually inversely proportional to the distance, and the interpolant is taken as the weighted average ofthe neighboring points. In this approach, the choice of neighboring points is paramount to performance ofthe result. While too few neighboring points would render the interpolant inaccurate and non-smooth, too many points would impose a high computational cost, as the weights are typically non-linear functions and costly to compute, thereby rendering the second approach less feasible in a dynamic, run-time environment.
SUMMARY OF LTHE INVENTION
[0007] The present invention addresses the foregoing problems by providing a color management system which dynamically generates, based on provided color measurement data, forward and inverse transformation look-up tables for transforming color image data between device-dependent and device- independent color spaces, by using fewer interpolation points, but still resulting in a smooth interpolant.
[0008] According to one embodiment ofthe invention, a look-up table is created which converts color image data from a device-independent color space to a device-dependent color space. The look-up table is created by determining a range of lightness values corresponding to a lightness value of a
target data point in device-independent color space, searching a predetermined set of data points in device-independent color space to obtain a selected set of data points, each selected data point having a lightness value within the determined range of lightness values and having corresponding device- dependent component values within a predetermined tolerance level ofthe component values of a previously-determined device-dependent data point, performing a weighted interpolation on the device-dependent component values corresponding to the selected set of data points to calculate an interpolated data point which is in device-dependent color space, and entering the interpolated device-dependent data point into a look-up table entry corresponding to the device-independent target data point.
[0009] Preferably, the look-up table is populated in a particular order starting with a black data point at the center ofthe table, populating the rest ofthe neutral axis, populating outward along the a-axis, and then populating all data points outward along the b-axis. Also, the predetermined set of data points is preferably obtained from a list of data point pairs, each data point pair containing a device-independent data point and a corresponding device- dependent data point, where the list of data points is obtained by sampling a forward look-up table according to a predetermined schedule. Also preferably in the searching step, the tolerance level is increased until eight data points are selected.
[0010] By virtue of this arrangement, a color management system is provided which dynamically generates, based on provided color measurement data, an inverse transformation look-up table for transforming color image data from a device-independent to a device-dependent color space, by using fewer number of interpolation points while still resulting in a smooth interpolant.
[0011] According to another embodiment ofthe invention, a look-up table is created which converts color image data from a device-dependent color space
to a device-independent color space. The look-up table is created by determining an upper black component value which is a predetermined amount above a target black component value of a device-dependent target data point, and a lower black component value which is a predetermined amount below the target black component value ofthe device-dependent target data point, accessing a color measurement data table which contains device- independent component values in respective correspondence to device- dependent data points, selecting, from the color measurement data table, an upper set of device-dependent data points which are within the vicinity ofthe device-dependent target data point at the upper black component value, and a lower set of device-dependent data points which are within the vicinity ofthe device-dependent target data point at the lower black component value, creating a first new set of device-dependent data points, each of which having a black component value equal to the upper black component value and having a combination of color component values corresponding to a respective one of the selected lower set of device-dependent data points, creating a second new set of device-dependent data points, each of which having a black component value equal to the lower black component value and having a combination of color component values corresponding to a respective one ofthe selected upper set of device-dependent data points, interpolating, for each ofthe first new set of device-dependent data points, device-independent component values that correspond to immediately adjacent device-dependent data points from the selected upper set of device-dependent data points, to obtain an interpolated device-independent data point at the upper black component level, interpolating, for each ofthe second new set of device-dependent data points, between device-independent component values that correspond to immediately adjacent device-dependent data points from the selected lower set of device- dependent data points, to obtain an interpolated device-independent data point for the corresponding new device-dependent data points, and interpolating between the device-independent component values which correspond to each ofthe selected upper set of device-dependent data points, the first new set of
device-dependent data points, the selected lower set of device-dependent data points and the second new set of device-dependent data points, to obtain an interpolated device-independent data point corresponding to the device- dependent target data point.
[0012] Preferably, the color measurement data table is based on device- independent color data measured from a device-dependent colorant test target. The first and second interpolation steps are preferably performed by using a three-dimensional tetrahedral interpolation method. The third interpolation step is preferably performed by using a four-dimensional tetrahedral interpolation method.
[0013] By virtue of this arrangement, a color management system is provided which dynamically generates, based on provided color measurement data, a forward transformation look-up table for transforming color image data from a device-independent to a device-dependent color spaces by using fewer interpolation points but still resulting in a smooth interpolant.
[0014] According to yet another embodiment ofthe invention, a color management method is provided for converting color image data between a device-independent color space and a device-dependent color space. The method includes the steps of generating a forward look-up table which converts color image data from the device-dependent color space to the device-independent color space, the forward look-up table being generated based on measured device-independent component values corresponding to device-dependent color target samples, and sampling the forward look-up table for device-dependent data points according to a sampling schedule, to obtain corresponding device-independent data points, and placing the device- dependent data points and corresponding device-independent data points in a data pair Ust. The method further includes generating an inverse look-up table which converts color image data from the device-independent color space to
the device-dependent color space, by, for each one of a plurality of target data points in device-independent color space, determining a range of lightness values corresponding to a lightness value for each target data point, searching the data pair list to obtain a selected set of data points, each selected data point having a lightness value within the determined range of lightness values and having corresponding device-dependent component values within a predetermined tolerance level ofthe component values of a previously- determined device-dependent data point, performing a weighted interpolation on the device-dependent component values corresponding to the selected set of data points to calculate an interpolated data point which is in device-dependent color space, and entering the interpolated device-dependent data point into an entry in the inverse look-up table corresponding to the device-independent target data point. Lastly, the method also includes converting a device-independent target data point to the device-dependent color space by accessing the nearest device-independent data point entries in the inverse look-up table relative to the device-independent target data point, and performing a cubic interpolation on the device-dependent data points obtained from the inverse look-up table which correspond to the nearest device-independent data point entries.
[0015] Preferably, the look-up table is populated in a particular order starting with a black data point at the center ofthe table, populating the neutral axis, populating outward along the a-axis, and then populating all data points outward along the b-axis. Also, the list of data point pairs is preferably obtained by sampling a forward look-up table according to a predetermined graduated schedule. Also preferably in the searching step, the predetermined tolerance level is increased until eight data points are selected.
[0016] By virtue of this arrangement, a color management system is provided which dynamically generates, based on provided color measurement data, an inverse transformation look-up table for transforming color image data from a
device-independent to a device-dependent color space, by using fewer number of interpolation points but still resulting in a smooth interpolant.
[0017] This brief summary has been provided so that the nature of the invention may be understood quickly. A more complete understanding ofthe invention can be obtained by reference to the following detailed description of the preferred embodiment thereof in connection with the attached drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0018] Figure 1 is a representative view of a computing environment in which the present invention may be implemented.
[0019] Figure 2 is a detailed block diagram for explaining the internal architecture ofthe computer equipment shown in the computing environment of Figure 1.
[0020] Figure 3 is a block diagram for explaining the operation of a color management module according to one embodiment ofthe present invention.
[0021] Figures 4A and 4B are block diagrams for explaining the use of lookup tables which are generated by the color management module shown in Figure 3.
[0022] Figure 5 is a flowchart for providing a detailed explanation of one embodiment ofthe present invention.
[0023] Figure 6 is a flowchart for providing a detailed explanation ofthe step of generating a forward look-up table shown in Figure 5.
[0024] Figure 7 is a diagram for depicting the use of a super-grid in the generation of a forward look-up table according to one embodiment ofthe present invention.
[0025] Figure 8 is a flowchart for providing a detailed explanation ofthe step of generating a table of data points shown in Figure 5.
[0026] Figure 9 is a diagram which depicts a sampling schedule in the generation of a table of data points according to one embodiment ofthe present invention.
[0027] Figure 10 is a flowchart for providing a detailed explanation of an order of table population during the step of generating an inverse look-up table shown in Figure 5.
[0028] Figure 11 is a graph which depicts the order of table population during the step of generating an inverse look-up table shown in Figure 5.
[0029] Figure 12 is a flowchart for providing a detailed explanation of determining a device-dependent value for a populated data point during the step of generating an inverse look-up table shown in Figure 5.
[0030] Figure 13 is a block diagram for explaining the selection of neighboring data points for use in the determination of a device-dependent value for a populated data point during the step of generating an inverse lookup table shown in Figure 5.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0031] The present invention is generally directed to a color management system which dynamically generates, based on provided color measurement
data, forward and inverse transformation look-up tables for transforming color image data between device-dependent and device-independent color spaces, by using fewer number of interpolation points but still resulting in a smooth interpolant. In this manner, high-quality transformation look-up tables can be generated from measurement data when needed, without resulting in the excessive use of computational resources. The present invention may be implemented in an color management module, such as in a color management software application module for use in a general purpose computer. It can be appreciated that the present invention is not limited to the aforementioned embodiments and that the present invention may be implemented in other forms as well, such as in a programmed color management device.
[0032] Figure 1 is a view showing the external appearance of a representative computing system including computing equipment, peripherals and digital devices which may be used in connection with the practice ofthe present invention. Computing equipment 40 includes host processor 41 which comprises a personal computer (hereinafter "PC"), preferably a personal computer having a windows-based operating system, although it may be another type computer having a non- windows-based operating system. Provided with computing equipment 40 are color monitor 43 including display screen 42, keyboard 46 for entering text data and user commands, and pointing device 47. Pointing device 47 preferably comprises a mouse for pointing and for manipulating objects displayed on display screen 42.
[0033] Computing equipment 40 includes a computer-readable memory medium such as computer fixed disk 45 and/or floppy disk drive 44. Floppy disk drive 44 provides a means whereby computing equipment 40 can access information, such as image data, computer-executable process steps, application programs, etc. stored on removable memory media. A similar CD-ROM interface (not shown) may be provided for computing equipment 40
through which computing equipment 40 can access information stored on removable CD-ROM media.
[0034] Printer 50 is a printer, preferably a color bubble jet printer, which forms color images on a recording medium such as paper or transparencies or the like. The invention is usable with other printers, however, so long as the printer is capable of being interfaced to computing equipment 40. In addition, digital color scanner 70 is provided for scanning documents and images into computing equipment 40 and digital color camera 60 is provided for sending digital images to computing equipment 40. Of course, computing equipment 40 may acquire digital image data from other sources such as a digital video camera or from a local area network or the Internet via network interface bus 80.
[0035] Figure 2 is a detailed block diagram showing the internal architecture of host processor 41 of computing equipment 40. As shown in Figure 2, host processor 41 includes central processing unit (CPU) 113 which interfaces with computer bus 114. Also interfacing with computer bus 114 are fixed disk 45, network interface 109, random access memory (RAM) 116 for use as main memory, read only memory (ROM) 117, floppy disk interface 119, display interface 120 to monitor 43, keyboard interface 122 to keyboard 46, mouse interface 123 to pointing device 47, scanner interface 124 to scanner 70, printer interface 125 to printer 50, and digital camera interface 126 to digital camera 60.
[0036] Main memory 116 interfaces with computer bus 114 so as to provide RAM storage to CPU 113 during execution of software programs such as an operating system, application programs and device drivers. More specifically, CPU 113 loads computer-executable process steps from fixed disk 45, another storage device, or some other source such as a network, into a region of main memory 116. CPU 113 then executes the stored process steps from main
memory 116 in order to execute software programs such as an operating system, application programs and device drivers. Data such as color images can be stored in main memory 116, where the data can be accessed by CPU 113 during the execution of computer-executable process steps which use or alter the data.
[0037] As also shown in Figure 2, fixed disk 45 contains operating system 130, which is preferably a windows-based operating system although other types of operating systems may be used, application programs 131, such as image processing applications that include a color management module, and plural device drivers, including a digital camera driver 132, monitor driver 133, printer driver 134, scanner driver 135, and other device drivers 136. Fixed disk 45 also includes image files 137, other files 138, device color profiles 139, which are discussed in more detail below, device IT8 color data files 140, which are also discussed in more detail below, and color management module 141 in which the present invention may be implemented. The functions of color management module 141 are preferably provided in the form of computer-executable process steps. As mentioned above, the functions of color management module 141 maybe alternatively integrated in other forms, such as a preprogrammed dedicated color management device, or an application program for performing processing of color image data, such as one of application programs 131. Finally, also included on fixed disk 45 is "J" bucket table 142 which is used in the implementation ofthe invention during the generation of an inverse, device-independent to device-dependent, transformation look-up table. The details of "J" bucket table 142 are discussed in more detail below.
[0038] Figure 3 is a block diagram which depicts the implementation ofthe invention in a color management module according to one embodiment ofthe invention. As seen in Figure 3, a color management module 141 is used to generate forward (device-dependent to device-independent) look-up table 152
and inverse (device-independent to device-dependent) look-up table 158 based on color measurement data contained in device IT/8 color data file 150. In this regard, although device IT/8 color data file 150 is shown in Figure 3, color measurement data can be obtained from other sources such as one of device color profiles 139, or directly from measurement of a standardized color measurement target, such an IT8.7/3 target, corresponding to a particular color device such as a color printer.
[0039] In the example of a printer, an IT8.7/3 target typically contains a reasonably detailed sampling of all the CMYK (device-dependent) values at various levels of C, M, Y and K. Alternatively, a custom target with uniform sampling ofthe C, M, Y and K channels can be used. After the target is printed, a spectrophotometer or colorimeter can be used to measure the XYZ value of each patch, and the XYZ value can be converted to the Jab value using the CIECAM02 model. In this manner, a table of color measurement data comprised of corresponding pairs of CMYK and Jab values is created. For purposes of explanation ofthe embodiment shown in Figure 3, it is assumed that such a table of color measurement data is contained in device IT/8 color data file 150.
[0040] As seen in Figure 3, device IT/8 color data file 150 is accessed by color management module 141 and then super-grid interpolation 151 is applied to the color measurement data contained in device IT/8 color data file 150 to generate forward look-up table 152. The CMY sampling grids are generally different on each level of K in the color measurement data of device IT/8 color data file 150, and therefore a technique of super-grid sampling is used in super-grid interpolation 151 in order to obtain a more accurate and smooth transformation when using forward look-up table 152. The technique of super-grid sampling according to one embodiment ofthe present invention is discussed in more detail below.
[0041] Forward look-up table 152 is then sampled on a repeated basis using a predetermined sampling schedule in order to generate a list of CMYK-Jab data pairs with a desired spacing between sampled CMYK data points. The list of CMYK-Jab data pairs is referred to herein as "J"-bucket data table 154, and its construction and use are discussed in more detail below. The list of CMYK- Jab data pairs contained in "J"-bucket data table 154 is then sampled using determined Jab target points to create inverse look-up table 158 by using nearby point selection and interpolation 156. In this regard, nearby point selection and interpolation 156 populates inverse look-up table 158 in a specific predetermined order and, for each table entry to be populated, determines an appropriate interpolated device-dependent (CMYK) value to correspond to the device-independent (Jab) target value ofthe table entry. This determination is made according to the present invention by using a scattered data approach in which a predetermined number of neighboring interpolation points are selected from "J" bucket table 142 based on the target device-independent data point and then a particular form of weighted interpolation is utilized on the selected neighboring interpolation points. In this manner, the present invention has the advantage of smooth blending of points on the one hand, and on the other hand of retaining a reasonably small number of neighboring interpolation points so that dynamic run-time computation does not become overly expensive. Accordingly, the present invention generates a more accurate forward look-up table 152 and inverse look-up table 158 from color measurement data in a dynamic run-time environment without excessive use of computational resources. The foregoing techniques of selecting neighboring interpolation points and of performing a weighted interpolation on such selected points are discussed in more detail below.
[0042] Figures 4A and 4B are block diagrams which depict the use of forward look-up table 152 and inverse look-up table 158 which were generated by color management module 141 as shown in Figure 3. In Figure 4 A, it is seen
that forward look-up table 152 is used to convert device-dependent image data 160 (in CMYK), such as data corresponding to an image that is in the color space of a color printer, to device-independent image data 162 (in Jab), such as image data in a standardized device-independent color space.
[0043] Similarly, Figure 4B depicts the use of inverse look-up table 158 to convert device-independent image data 164 (in Jab), such as data corresponding to an image that is in a standardized device-independent color space, to device-dependent image data 166 (in CMYK), such as image data in the color space of a color printer. In this manner, the look-up tables that are created in on a dynamic, as-needed basis by color management module 141 can be immediately used by color management module 141 to perform color processing on color image data, such as to prepare the image data for printing on a color printer corresponding to the look-up tables.
[0044] Figure 5 is a flowchart for explaining an overall example ofthe implementation ofthe present invention to dynamically generate look-up tables based on color measurement data for a color printer, and then to use the generated inverse look-up table to transform image data to device-dependent image data for printing on the color printer.
[0045] Turning to Figure 5, color measurement data is obtained in step S501, the color measurement data corresponding in this example to a color printer. As discussed above with respect to Figure 3, the color measurement data can be obtained from device IT/8 color data file 150, or from another source. Next, in step S502, a forward look-up table is generated by using a super-grid interpolation on the color measurement data. The details of step S502 are explained in more detail below with respect to Figures 6 and 7. A "J" bucket data table is then generated in step S503 by applying a predetermined sampling schedule to repeatedly sample the generated forward look-up table. The details of step S503 are explained in more detail below with respect to
Figures 8 and 9. An inverse look-up table is then generated by using a scattered-data interpolation in which a predetermined number of neighboring data points are selected for each target device-independent data point according to certain criteria, and then the selected neighboring data points are weight interpolated to obtain the corresponding target device-dependent data point value. The details of step S504 are explained in more detail below with respect to Figures 10 through 13.
[0046] In step S505, the generated inverse look-up table is used to transform image data into device-dependent image data by applying a modified cubic interpolation for neighboring values obtained from the inverse look-up table. The modified technique is used because ofthe fact that the spacing ofthe a and b components in the inverse look-up table depends on the given value of J. In particular, if the input Jab has the J value lying between I and 1+1 level of the LUT, a value lying between j
o and j
0 + 1 on ith J-level, between
and
' j + 1 on the (i+l)st J-level (bearing in mind that the spacing of a and b in the LUT depends on the value of i), and b value lying between k
0 and k
0 + 1 on the ith J-level, k
λ and k + 1 on the (i+l)st J-level, then we define weights according to Equation 1 set forth below, where J(i) denotes the J value ofthe ith grid point on the J-axis, a(ij) denotes the a value of the jth grid point on the a-axis at the ith J-level, and similarly b(i j) denotes the b value of the jth grid point on the b-axis at the ith J-level. wj = J - J(i) wa
0 = a - a(i
0)
wb
0 = b - b{i,k
0) wb
λ = b - b(i + \,k
x )
Equation 1
[0047] Then the interpolant device-dependent value is defined by the formula shown below in Equation 2, where the equation should be interpreted as a vector equation, because there are 4 components, C, M, Y, K. The process then ends at step S506.
CMYK = (1 - wj) * (1 - wa 0) *(1 - wb 0) * LUT(i,j0 ,k0 ) + (1- wj)*(l- wa0)*wb0*LUT(i,j0,ko + 1) + (1- wj)*wa0 *(1- wb0)*LUT(i,j0 + l,k0) + (1 - wj) * wa0 * wb0 * LUT(i,j0 + U0 + 1) + wj*(l-wa)*(l-wbx)*LUT(i+l,jx,kx) + wj*{\- wal)*wbϊ *LUT(i+\,jx,k + 1) + wj * waλ * (1 - wbx ) * LUT{i + l,y, + 1, kx )
+ wj * waλ * wbx * LUT(i + \,jx + \,kx + 1)
Equation 2
[0048] The generation ofthe forward look-up table depicted in step S502 is explained in more detail in the flowchart of Figure 6. As seen in Figure 6, the super-grid interpolation ofthe color measurement data table (contained, for example, in device IT/8 color data file 150) starts by choosing a target device- dependent data point corresponding to an entry ofthe forward look-up table, and then determining an upper black component value (K) and a lower black component value (K) based on a predetermined spacing with respect to the black component value ofthe target device-dependent data point (step S601). The upper black component value corresponds to the nearest, higher K-level of data points in the color measurement data table which are immediately above the black component value ofthe target device-dependent data point.
Similarly, the lower black component value corresponds to the nearest, lower K-level of data points in the color measurement data which are immediately below the black component value ofthe target device-dependent data point.
[0049] Next, in step S602, the color measurement data table is accessed in order to obtain an appropriate selection of data points at the K-levels corresponding to the upper and lower black component values. An illustration ofthe aforementioned K-levels in the color measurement data table is provided in Figure 7. As seen in Figure 7, upper black component value 180 and lower black component value 170 are shown within the color measurement data table of device IT/8 color data file 150. It can be seen that the spacing ofthe CMY data points at these different K-levels are different because the CMY sampling grids ofthe color target used to create the color measurement data table are generally different on each level of K. Device- dependent data target point 200 is shown to be spaced between the K-levels, and CMY data points 201 and 202 are shown to reside at upper black component value 180, while CMY data points 203, 204, 205 are shown to reside at lower black component value 180, within the color measurement data table. In addition, end points are also shown at each ofthe K-levels.
[0050] Returning to Figure 6, an upper set of neighboring device-dependent data points (201, 202, 203) are selected from the color measurement data table which are within the vicinity of device-dependent target data point 200 at upper black component value 180, and a lower set of device-dependent data points (204, 205) are selected which are within the vicinity of device- dependent target data point 200 at lower black component value 170 (step S603). The number of data points selected within the vicinity of device- dependent target data point 200 can be determined by a preset number of nearest data points, by a restricted range within CMY space from which the data points are selected, or in some other manner.
[0051] Next, a super-grid is created by making a super-set of all selected data points at both the upper and lower K-levels. In particular, in step S604, a first new set of device-dependent data points is created at the K-level for upper black component value 180, each new data point having a black component value equal to upper black component value 180 and having a combination of color component values corresponding to a respective one ofthe selected lower set of device-dependent data points. In the example depicted in Figure 7, the new upper data points correspond to lower device-dependent data points 204, 205. In a similar manner, in step S605, a second new set of device- dependent data points is created at the K-level for lower black component value 170, each new data point having a black component value equal to lower black component value 170 and having a combination of color component values corresponding to a respective one ofthe selected upper set of device- dependent data points. In the example depicted in Figure 7, the new lower data points correspond to upper device-dependent data points 201, 202, 203. Accordingly, in the example of Figure 7, a super-set of seven device- dependent data points (including the end points) will be used at each K-level to determine an interpolated device-independent (Jab) value for the device- dependent target data point 200. Of course, only the originals ofthe selected upper and lower sets of device-dependent data points have corresponding device-independent (Jab) values in the color measurement data table. Of course, the number of "super-set" data points shown in Figure 7 is for illustrative purposes, and it should be appreciated that a different number (other than seven) of data points can be used as a super-set at each K-level.
[0052] In this regard, for each ofthe first new set of device-dependent data points at upper black component level 180, an interpolation is performed between the device-independent (Jab) component values corresponding to the existing selected upper set of device-dependent data points, in order to obtain an interpolated device-independent data point for the new device-dependent data point at upper black component level 180 (step S606). Similarly, for each
of the second new set of device-dependent data points at lower black component level 170, an interpolation is performed between the device- independent (Jab) component values corresponding to the existing selected lower set of device-dependent data points, in order to obtain an interpolated device-independent data point for the new device-dependent data point at lower black component level 170 (step S607). Preferably, the interpolation method performed in steps S606 and S607 is a three-dimensional tetrahedral interpolation.
[0053] In this manner, a super-set of CMYK- Jab data point pairs are now available at the K-level immediately above device-dependent target data point 200, and a super-set of CMYK- Jab data point pairs are now available at the K- level immediately below device-dependent target data point 200, wherein each set of seven data point pairs are aligned with respect to each other in CMY space, thereby accounting for the differences in the spacing ofthe CMY sampling grids at each K-level inherent in the color measurement data from the color measurement target.
[0054] Next, an interpolated device-independent data point is calculated for device-dependent target data point 200 by performing an interpolation between the super-set of CMYK- Jab data point pairs at the upper K-level and the superset of CMYK-Jab data point pairs at the lower K-level (step S608). Preferably, the interpolation method performed in step S608 is a four- dimensional tetrahedral interpolation. The process then ends in step S609. By virtue ofthe foregoing steps, a more accurate interpolated device-independent data point is obtained for each device-dependent target data point entry in the forward look-up table, thereby ensuring a more appropriate mapping from device-dependent color space (CMYK) to device-independent color space (Jab) when subsequently using the forward look-up table during color processing of image data.
[0055] Figure 8 is a flowchart which explains in more detail step S503 of Figure 5 in which the "J" bucket data table is generated. In step S801, a predetermined sampling schedule is applied to repeatedly sample the forward look-up table generated in step S502, thereby obtaining a device-independent (Jab) data point corresponding to each sampled device-dependent data point according to the sampling schedule. In this regard, Figure 9 depicts an example of a scheduling sample that may be used according to one embodiment ofthe invention during the generation ofthe "J" bucket data table. As seen in Figure 9, column 210 represents the lightness component (K) ofthe device-dependent (CMYK) data points, column 211 represents the color components ofthe device-dependent (CMYK) data points, and column 212 represents the desired sampling step according to the ranges provided under columns 210 and 211. In this manner, the spacing ofthe sample points is varied depending on a given location in the lightness range (K) and the chroma range (CMY). It can be seen in Figure 9 that sampling in the first 20% ofthe lightness range is more frequent than in the last 55% ofthe lightness range. For example, the sampling step frequency is every 1% for data points having a K value in the first 20% ofthe lightness range and CMY values in the first 10% ofthe chroma range. In contrast, the sampling step frequency is every 10% for data points having a K value beyond 45% ofthe lightness range, regardless ofthe CMY values.
[0056] In step S802, the forward look-up table generated in step S502 is further repeatedly sampled to obtain a device-independent (Jab) data point corresponding to each sampled device-dependent data point along the primary color (CMY) and secondary color (RGB) ranges. Preferably the sampling step for this sampling of primary and secondary colors is every 1% from 0% to 100%. Next, each pair of sampled device-dependent data point and corresponding device-independent data point obtained in steps S801 and S802 are placed into the "J" bucket data table (step S803). Thus, the "J" bucket data table is comprised of CMYK- Jab data pairs obtained from the generated
forward look-up table by using desired sampling steps within the forward look-up table. The "J" bucket data table can then be used in an efficient manner during generation ofthe inverse look-up table.
[0057] In addition to the sampled data point pairs mentioned above, the maximum and minimum device-independent chroma values (a and b) of all sampled device-independent data points is stored for each level of lightness (J). According to one embodiment ofthe invention, the stored chroma values are stored in a 2-dimensional array ab_bounds[101][4], so that for each 0<J<100:
ab_bounds[J][0] = the point in the J-bucket with maximum a on this J level ab_bounds[J][l] = the point in the J-bucket with minimum a on this J level ab_bounds[J][2] = the point in the J-bucket with maximum b on this J level ab_bounds[J][3] = the point in the J-bucket with minimum b on this J level.
[0058] These stored chroma values represent the chroma range at each level of lightness for the corresponding color device, and are subsequently used during the generation ofthe inverse look-up table. The process then ends at step S805.
[0059] Figure 1 is a flowchart for providing a detailed explanation of an order of table population which is used during step S504 of generating an inverse look-up table as shown in Figure 5. The calculation ofthe device- dependent data point values entered into the populated table entries is explained in detail with respect to Figures 12 and 13. Figure 11 generally depicts a "path" ofthe order of population ofthe inverse look-up table. As seen in Figure 11, data points are populated from the center, then up the J-axis, then outward along the a-axis, and finally outward along the b-axis. So, for example, the populated data point 217 depicted in Figure 11 illustrates that all
data points having a J-value less than point 215, an a-value less than point 216, and a k-value less than point 217 have already been populated.
[0060] Turning to Figure 10, in step SI 001 the center ofthe inverse look-up table is populated with a corresponding device-dependent value. In particular, the example of an inverse look-up table described herein has 17 entry points for each color component. In such an example, the (0, 8, 8) entry ofthe inverse look-up table is populated with the CMYK value ofthe black point, which represents J=a=b=0 in the Euclidean distance ofthe Jab space. Of course, it should be appreciated that different-sized look-up tables are also supported by the present invention. For example, for a look-up table having 32 entry points for each color component, then the table entry (0,16,16) corresponds to J=a=b=0 in Jab space. Next, all table entries corresponding to device-independent data points along the neutral axis (a,b = 0) are populated (step SI 002). In particular, the (i, 8, 8) entry points are populated, where 1 <i≤ 16, in the order of increasing i-values. In step S1003, all table entries corresponding to device-independent data points along the negative-a axis are populated. In particular, for each O≤i≤ 16, populate the negative a-axis ofthe inverse look-up table (i, j, 8) where 0≤j≤7, in the order of decreasing j. In step SI 004, all table entries corresponding to device-independent data points along the positive-a axis are populated. In particular, for each O≤i≤ 16, populate the positive a-axis ofthe inverse look-up table (i, j, 8) where 9≤j≤ 16, in the order of increasing j.
[0061] Next, all table entries corresponding to device-independent data points outward along the negative-b axis are populated (step SI 005). In particular, for each O≤i≤ 16, O≤j≤ 16, populate all points having negative-b values ofthe inverse look-up table (i, j, k) where 0≤k≤7, in the order of decreasing k. Finally, all table entries corresponding to device-independent data points outward along the positive-b axis are populated (step SI 006). In particular, for each O≤i≤ 16, O≤j≤ 16, populate all points having positive-b values ofthe
inverse look-up table (i, j, k) where 9≤k≤ 16, in the order of increasing k. The process then ends in step SI 007.
[0062] Figure 12 is a flowchart for explaining the calculation ofthe device- dependent data point values entered into the populated table entries during the generation of an inverse look-up table shown in step S504 of Figure 5. In step SI 201, a device-independent data point value is determined for a target entry ofthe inverse look-up table based on the stored maximum and minimum chroma values. This is because, as mentioned above with respect to step S804 of Figure 8, the chroma range (a,b) ofthe color printer gamut varies with each lightness level (J). So, in accordance with the population order discussed above, each particular device-independent target value is determined according to the particular location ofthe table entry being populated. In particular, for a given (i j,k), where O≤i j,k≤ 16, the corresponding Jab value os given by Equation 3 set forth below.
J = ι *100/16
Equation 3
[0063] Once the target Jab point value is determined for the particular table entry point, a range of lightness (J) values is determined based on the lightness (J) value ofthe target Jab point value (step SI 202). In general, The goal is to find a predetermined number of neighboring points in the "J" bucket data table near the target Jab point in each ofthe 8 coordinate octants. In the example discussed herein, the predetermined number of neighboring points is eight, one for each octant, although other numbers can be used. Accordingly, each data
point pair in the J-bucket data table having a device-independent data point J- value within the determined range of lightness (J) values is identified (step SI 203). In the example discussed herein, the determined range is J-3 to J+3, where J is the lightness value ofthe target Jab point value. Of course, other values of determined J-range can be used, and the J-range can be either predetermined or determined "on-the-fly" in real time.
[0064] Figure 13 is a diagram spatially depicting device-independent data points (222 to 229) selected from the J-bucket data table which are within the determined range of lightness (J) values, along with their respective locations in the eight Jab coordinate octants surrounding target Jab point value 221. Preferably, one nearest data point to target Jab point value 221 in each octant is selected for use in interpolation to calculate a device-dependent data value corresponding to target Jab point value 221.
[0065] In addition, for maximum efficiency, the data point pairs from the "J" bucket data table in each of these ranges can be identified initially prior to the beginning ofthe first search, so that they are readily available for all subsequent searches. In detail, for any input Jab point, it is first checked if the range of particular J values has been constructed previously. If not, then the range is constructed by a brute force search through the whole "J" bucket data table, and the result is stored so it can be re-used later when another target Jab point with the same J value occurs.
[0066] Returning to Figure 12, ofthe data point pairs in the J-bucket data table having a device-independent data point J-value within the determined range of lightness (J) values (in step SI 203), only those data point pairs are selected which have corresponding device-dependent component (CMYK) values which are within a predetermined tolerance ofthe previously- determined CMYK value. This helps to control smoothness from point to point in the table entries ofthe inverse look-up table. In particular, the
tolerance level (TOL) is preferably 0.05 ofthe maximum device value, which is 255, in each ofthe C, M, Y, K channels, although other values for TOL can be used, and the TOL value can be dynamically determined "on-the-fly" in real time. More precisely, the following condition of Equation 4 must also be satisfied in step SI 203:
I C of last populated point - C of point in question| < TOL *255 I M of last populated point - M of point in question| ≤ TOL *255 I Y of last populated point - Y of point in question| ≤ TOL *255 I K of last populated point - K of point in question| < TOL *255/2
Equation 4
[0067] In this regard, the smaller tolerance on the K channel calls for greater smoothness in this channel. If not all eight points (one from each octant) can be found, then the selection process of step SI 203 is repeated with a higher TOL that is 0.05 higher than the previous one, but with the extra condition that if a point has already been chosen in the octant from the previous iteration, it will not be replaced (even if the current point may be closer in distance, the smaller TOL is favored). If again not all eight points can be found, the process of step S1203 is repeated with a higher TOL until TOL exceeds 0.95. At the end ofthe process, we will have possibly from 1 to eight points chosen.
[0068] Next, in step SI 204, a weighted interpolation is performed on the device-dependent component values corresponding to the selected device- independent data points from step SI 203 in order to calculate a device- dependent data value corresponding to the target Jab point value. If only less than four data points are selected, the CMYK value corresponding to the closest point from the target Jab point value is used as the device-dependent data value (CMYK) corresponding to the target Jab point value. If the number of selected data points is from four to eight points, then we obtain the device- dependent data value (CMYK) is obtained by the Shepard interpolation
method. In particular, if the ith chosen point has C, Mt YtK( as the CMYK value and P. = (J. , a ( ,bt ) as the Jab point in Jab space, and iO
corresponds to the point most distant from the input point P = (J,a,b) , then the device-dependent data value (CMYK) is obtained according to Equation 5, set forth below:
Z = || - .|| = /(J-J/.)2 + (α -α,)2 + (b -b1.)2 (Dn -D, W. = D k wκ C = ∑,. /CI.
Equation 5
[0069] The calculated device-dependent data value (CMYK) is then entered into the target entry ofthe inverse look-up table in correspondence with the target Jab point value (step SI 205). The process then ends at step SI 206. In this manner, all table entries ofthe inverse look-up table are populated in a predetermined order with device-dependent (CMYK) values. In particular, by judiciously choosing an optimal number of points from the eight neighboring octants, the invention provides a way to benefit from: (1) the advantages of scattered data interpolation methods, which include robustness to errors of individual data points, and freedom from any assumption regarding the
geometric arrangement of points; and (2) the advantage of efficiency of computation, which involves a relatively small number of interpolation points.
[0070] The invention has been described with respect to particular illustrative embodiments. It is to be understood that the invention is not limited to the above-described embodiments and that various changes and modifications may be made by those of ordinary skill in the art without departing from the spirit and scope ofthe invention.