An interesting property of printed ink

In the process of calibration of an ink set for use with Quad Tone Rip (QTR) one has to print and measure a test strip containing 21 or 51 steps of gray with K values equally spaced between 0 and 100 (K is the black ink coverage). I noticed an interesting property (most likely very well known to professionals) which I have not found in any guide for or discussion about QTR: The luminance L (visual luminance, I dropped the asterisk for convenience) of an ink as a function of the amount of ink laid down on the paper is almost exactly decaying exponentially with K. I think for this to be true the ink droplet size should be constant. Therefore, I use the highest available print resolution in QTR. The same functional dependence has been found more than 150 years ago for the attenuation of the radiation intensity with depth as it penetrates into an absorbing medium. In physics this dependence is known as the Beer-Lambert law.

In printing, we do not want to have an exponential decay of the luminance as a function of the ink amount. We want to have a linear decay of L with K! However, knowing the exponentially decaying function allows to make a mathematical transformation of the luminance function such as to predict the ink amount that would be required such that the luminance of the printed target depends linearly on K. If there would be no error sources and if the dependence of the luminance as function of K could be exactly described by a mathematical formula, one could construct a quad file which would print exactly linear. Ideally, there would be no need for trial and error setting the densities and ink limits in the QTR curve creator tool and there would be no need for an additional linearization step.

In reality, things are a little bit more complicated: The dependence L(K) is not exactly exponential, but can still be fitted very accurately by some slightly modified functions. The luminance functions also depend on the paper and its surface structure. Furthermore, the luminance that is being printed by my R2880 is not always exactly reproducible and the luminance measurement device (ColorMunki Photo) has some error as well. Yet, the approach has worked nicely for me. Figure 1 shows an example for Hahnemühle FineArt Baryta and the GCVT ink set of Paul Roark using a 21 step wedge. By scaling the L(K) data for individual ink channels (fig. 1a) with the pigment concentration c_i all luminance curves can approximately be matched (fig. 1b).

Figure 1a: Measured luminance of the individual ink channels (color coded) of the CGVT ink set as functions of K (symbols) and two slightly different fits (full and dashed lines).
Figure 1b: Luminance data from fig. 1a as function of the relative pigment amount. c_i is the dilution ratio of the ink with respect to the LK channel (containing PK) for which c_i=1.

Creating quad files

The above property of the inks can be used to transform the luminance function(s) to linear function(s) and to partition the inks for printing. This can be accomplished by suitable ansatz function which are positive and normalized to 1 and which determine the ink amount. In order to have smooth functions I use ansatz function made from cubic Hermitian splines. They seem to be very close, if not identical, to the Piezography curves. An example for the ansatz functions can be seen in the left plot of of figure 2. The figure shows the graphical user interface under Windows 10 which I am currently coding to create quad files based on the above approach which can then be used in QTR for printing. An important parameter is the range of overlap of the ansatz functions. It may happen that the luminance seems to be perfectly linear when measuring the patches of a 21 step wedge. But if a bull's eye is printed one may recognize that the transitions between ink is not smooth enough. In that case an increase of the overlap between the ranges in which the individual inks print can solve the problem. Apart from the global ink overlap parameter in the GUI one can currently set the range of any ansatz function (left and right points) as well as the location of the maximum (center point) for each ink. The program then updates all ink functions (right window) such that the printed output is linear, up to errors due to the uncertainties mentioned above.

Figure 2: Preview of the GUI.

Printing glossy and matte

Currently I am using the GCVT ink set of Paul Roark. This ink set is essentially made from glossy inks based on PK ink with one channel being occupied by matte black ink (MK). This configuration allows to print on glossy as well as on matte papers. When printing on glossy paper, only inks are involved which are dilutions of the same black PK ink. As shown above the luminance functions for all dilutions can be mapped to one and the same curve by a simple scaling of K proportional to the concentration of PK black in the individual (gray ink) dilutions. This allows a global mapping of all inks to a linear luminance curve, based on the amount of pigment. I call this the pigment mapping. This mapping is the default setting in the GUI (see figure 2).

When printing on matte paper, the MK channel has to be used for the darkest tones. The PK black ink cannot achieve true blacks on matte paper. On matte paper the luminance of the PK channel saturates at K ≈ 93. Therefore, one cannot find a simple scaling of K such that all luminance curves fall on the same master curve. This would only be possible if the the gray inks for matte paper would all be dilutions of the the same MK black ink. Obviously, this is the price to pay for the flexibility to print glossy as well as matte. In this situation, one possibility is to linearize all channels individually and combine them according to the basic ink ansatz functions. The specific approach provides limitations for each ink channel, because the ink amount necessary for achieving the predefined linear luminance will diverge at some K, since the brighter inks cannot produce the darkest tones. Therefore, the use of the inks based on PK (these concern all inks except for the MK black channel) should not exceed a certain value of K which is specific for each ink. In particular, the PK channel which prints a dark gray on matte paper cannot be used down to K=100 when linearizing each channel. As a result, the darkest tones (K > 93) must be printed only using one ink, the MK ink. Theoretically this could perhaps cause a little graininess in the darkest areas of the print. But I think this will not be visible under normal view conditions. If one wants to use the PK ink down to K=100 one would have to give up the automatic linearity of the resulting luminance L(K) and find a different approach. Another remedy would be to use the Y channel (which originally also contains MK ink for printing on Arches watercolor paper) loaded with a slightly diluted MK ink. This idea is perhaps not too bad.

Toning

The CGVT ink set contains a blue channel which has been designed by Paul Roark to eliminate the the brownish tint the pure Carbon inks show, in particular on glossy paper. I have no idea for a theory which would allow to eliminate the tint in a single step similar as the mapping of the Carbon inks. Therefore, one still has to iterate to find the necessary amount of blue ink in order to arrive at an almost neutral gray throughout the full K scale. An example is visible in the right graph of fig. 1, where the blue curve shows the amount of toner ink for Hahnemühle FineArt Baryta. Currently the amount is computed by cubic spines based on 11 control points shown as circles which can be manipulated by changing the sliders below the graph.

Linearization

It may happen that the targeted linear curve is not perfectly obtained by the mapping. When using the pigment mapping a possible reason could be that the luminance curves deviate somewhat from the average fit (red line in fig. 1b) on which the mapping is based. For that reason a linearization is implemented similar as in the curve creation tool of QTR, based on a measured step wedge (the default number of steps in fig. 2 is 51). Furthermore, one can select among different smoothing options for the measured deviation from linearity (piecewise linear, 6th-order polynomial fit, moving averages). The default smoothing is a running average with a window of 25 points.

Target: Gamma correction

Since it is possible to map the exponential luminance functions to a linear function, they can also be mapped to any luminance curve one desires, provided the targeted curve is strictly monotonous (bijective). Since the linear mapping typically yields printed images with quite bright shadows, the targeted luminance function L(K) should deviate somewhat from the linear luminance curve in order to obtain a good match between the visual appearance of the print and the image seen on the screen. Let me call this correction a gamma correction, even though it is not a real gamma correction which would be more drastic and yield much too dark prints. For this purpose Paul Roark provided a Photoshop correction curve to prepare modified tif files which appear to dark in Photoshop, but print correctly using QTR. In the present method the ganna correction is automatically burned-in into the quad file. To that end I have measured a 21 step wedge printed using the Epson driver of the P900 with the standard settings. The luminance data can then be fitted by some cubic splines and implemented in the code. The GUI also allows to control the amount of the gamma correction by a weight factor between 0 and 1. It would be easy to implement just any other bijective luminance target curve to create, e.g., negatives for specific alternative processes.

June 2025