Printer calibration

A digital color printer, like other color output devices, defines the relationship between the device color space CMY and a device-independent color space, such as CIELAB. The process of printing can be viewed as a CMY-to-CIELAB transformation. This can be modeled with the device-specific physical model or an empirical lookup table method. However, we need an inverse transformation, i.e. CIELAB-to-CMY, to find CMY for a given CIELAB value in the image, and thus to reproduce the whole image.

Here we implemented this inverse transformation with a lookup table model using tetrohedral interpolation, as proposed in Francis Schmitt and Jon Yngve Hardeberg's papers[1][2]. This implementation can transform any point in CIELAB space into its corresponding CMY values.

An inevitable issue in CIELAB-to-CMY transformation is gamut mapping. The color gamut of a printer is the range of colors it can reproduce. Gamut mapping is needed here because printer cannot reproduce all the colors in CIELAB color space. Gamut mapping techniques may be divided into two categories, i) continuous methods applied to all the colors of an image, such as gamut compression and white point adaption, and ii) clipping methods applied only to colors that are out of gamut.

1) Method Description

1.1) Overview

Firstly, we need to print a numerical color chart, i.e. series of sampled colors, covering the entire CMY space. Measure the CIELAB values for each sample patch using calibrated scanner or spectrophotometer, and thus obtain a lookup table from CMY to CIELAB. Using regular interpolation, we can model the CMY-to-CIELAB transformation with this lookup table. This lookup table covers only the space within the printer gamut.

The next step is to construct a partition of the CIELAB space. The partition should be complete and non-intersecting. We can do triangulation to the gamut and result in a tetrahedral partition of the space with in the gamut.

With the space triangulation above, we can do non-regular tetrahedral interpolation for any given CIELAB value, and find its corresponding CMY value to reproduce it.

Figure: The printer calibration process, providing a 3D lookup-table for the conversion from CIELAB to CMY.

1. 2) Triangulation of the color space

First of all, we divide the CIELAB space into two parts: space within and outside of the printer gamut. As described above, we then divide the space within printer gamut into complete and non-intersecting tetrahedra. For doing this, we first apply a triangulation to the cubic CMY space using the regular sample points as vertices. Then transport this structure into CIELAB space and result in a corresponding triangulation of the CIELAB space inside the printer gamut. The figure below showes how the triangulated cubic gamut in CMY space is transported into its deformed gamut in CIELAB space.

Figure: Triangulated CMY color gamut cube (left) and its corresponding geometrically deformed CIELAB color gamut (right).

1.3) CIELAB-to-CMY transformation

Using the above triangulation, we now can realize, by tetrahedral interpolation, the transformation from CIELAB to CMY values for any point belonging to the definition domain of CIELAB space.

For the given CIELAB point P, the transformation comprises two main steps: the localiztion of the tetrahedron enclosing the CIELAB point, and then the non-regular tetrahedral interpolation using vertices of this tetrahedron. A gamut mapping method will be included if P out of gamut.

Localization

We are using a so-called walking algorithm, as described below, to find the tetrahedron containing the CIELAB point P.

non-regular tetrahedral interpolation

When the inside-gamut tetrahedron with vertices that encloses the point P(or revised P if original one is out-of-gamut) is found, the resulting CMY values are calculated by weighted summation of the CMY values corresponding to the four vertices. The weights are found as follows:

P(or revised P) divided the enclosing tetrahedron into 4 sub-tetrahedrons, each having a volume determined by the following determinant:

where the indices are taken modulo 3, and finally, the weights are defined by , where is the volume of the tetrahedron .

The final output values C, M, and Y are then calculated as follows:

where , and are the CMY values corresponding to the tetrahedron vertices .

2) Matlab simulation

We create several matlab programs to simulate the calibration process described above.

Generating Samples(genesample.m)

We assume that the illumination is ideal white light and the printer inks have full-reflectance or zero-reflectance in their corresponding spectual range. To create numerial color chart, we sample the entire CMY space with interval of 0.1(C,M,Y values range from 0 to 1) and calculated the CIELAB values of the light reflected from each printed patch. The figure below showes roughly the printer gamut in CIELAB space(each red circle is a sample point in CMY space).

Construction of lookup table(structure_creation.m)

We define the triangulation using its adjacency graph whose nodes are the tetrahedra and whose edges are the pairs of adjacent tetrahedra. This graph is completed by associating to each node, which represents a tetrahedron, their 4 vertices and 4 neighboring tetrahedra.

Non-regular tetrahedral interpolation(lab2cmybytetr.m)

Using walking algorithm, we find the tetrahedron enclosing the CIELAB point, and then, using tetrahedral interpolation to calculate the CMY value.

To test our algorithm, we randomly choosed a point within the printer gamut and thus have it exact CIELAB values. This point is the color to be reproduced with printer. From its CIELAB values, we find CMY values for printers. Using our assumed printer model above, we can calculate the printed color' CIELAB value. We can see the E between the printed color and original color is very small(typically less than 0.1).

3)Discussion

The tetrahedral interpolation approach to lookup table model has certain advantages over conventional 3D interpolation where color space is partitioned into cubic sub-spaces. These advantages are in terms of accuracy, storage space. For tetrahedral interpolation, since every cubic sub-space is divided into 5 tetrahedral spaces, it can achieve more accuracy than conventional cubic interpolation with the same sample density in CMY space. In other words, to achieve certain accuracy, we need less samples for tetrahedral approach, and thus need less measuring work in the modeling process and less storage space for the adjacency graph representing the partition of the CIELAB space. Besides, this tetrahedral interpolation approach to lookup table can be also used in the forward printer model, i.e. CMY-to-CIELAB transformation, and moreover, can be used to model other color output devices.

In the method described in 1.1) overview, we should regularly sample the CMY space, print the sample colors and construct the lookup table using these sample CMY values and their corresponding measured CIELAB values. However, This involves lots of work. For example, if the sample interval is 0.1(CMY values ranges 0~1), which is not a fine sample, we have to print 11*11*11=1331 colors. So, we have to choose to test our algorithm using simulated data.


Reference:

[1] Francis Schmitt and Jon Yngve Hardeberg. Color Printer Characterization Using a Computational Geometry Approach. In Proceedings of IS&T and SID's 5th Color Imaging Conference, Pages 96-99, Scottsdale, Arizona, November 1997.

[2] Francis Schmitt and Jon Yngve Hardeberg. Color Printer Characterization by 3D Triangulation