# Printer calibration

OK. So far so good. You’ve run a profile on your camera and figured out what its Zone exposure to L-Value mapping looks like. You know what the range of Zones are in your workflow. You’ve run off and purchased a monitor calibration tool and you’ve calibrated your monitor for an L* curve as part of an L-Star workflow. You’re working with a white point at 5000K and you’ve bought a Solux 5000K lamp to view your prints. You’ve downloaded a copy of the LStarRGB profile and installed it. You’re working your files in either LAB or LStarRGB. Whoopee! Now you want to print.

This brings us to printer calibration. Of course, you can send your files out to a reputable print service. You know that those folks calibrate their printers. If you follow their instructions, you should get excellent results. But let’s suppose that you want to print on your own printer, Epson, Canon, HP, whatever. Then, for best results, calibrate your printer.

In the grand scheme of things, printer calibration deals with two aspects of printer behavior: the first is its tone curve; the second is its color gamut. While what I’m about to say is not exactly true, it is almost true. Just like the LAB color space, in which luminance is encoded in the L-channel and color is encoded in the a & b channels, in an inkjet printer, luminance is encoded in the black inks and color is encoded in cyan, magenta, and yellow inks. I invite you to try out this little experiment in Photoshop. Open up the color picker and force in a 100% cyan value with M, Y, and K all at zero. Now use the slider to reduce the color intensity to 0 to get increasingly lighter shades of cyan. You should see that the amount of cyan ink will just be reduced. Now push the slider back up past 100% cyan to get the darkest possible shade of that color. You can’t get more than 100% cyan ink in a dot, so watch what happens: the other inks are added, including black. Repeat this for magenta and yellow. [Note how weird yellow really is.] In other words, there is some maximum color shade due to the ink itself. To get a darker version, other inks are added to make a deeper and increasingly neutral ink dot structure.

In this page, my aim is not to deal with color issues at all. Rather, being about a modern Zone System, I am more concerned with getting tonal values right from end to end. So, my focus is on B&W printing for now. I have already published here what I still consider to be the best approach to printer calibration for this purpose; and I am not going to repeat that work in its entirety. I suggest that you go an read that post before proceeding. You’ll find it here.

Back? OK. I am going to reproduce the screen shot that I did for that Hahnemühle Fine Art Baryta paper in that post:

Output print file from QTR-Create-ICC

OK. The first thing to notice is that the first column in the table in the text file above, “Step”, refers to steps in “GrayScale” or “K%” measure, which defines the amount of “key” ink to be laid down. To use this printing model in your workflow, you will have your image file in a GrayGamma working space at print time. If you have access to the QTR step wedge TIFFs, open one in Photoshop, and set the Info Panel to read in Grayscale. You will see that the wedge values are precise steps in that scale. [Note: do not save the file from Photoshop. You want to be using the untagged unmanaged original.] Although the steps are linear in K%, density is on a logarithmic scale, so the density steps are not of equal sizes. Likewise, there is an empirical relationship to be measured for the actual L* and density values that the printer lays down versus any specific K% value. There is a simple mathematical relationship between L and K; namely, L = 100 – K. So, L = 50 when K = 50. Hence, Value V is at the mid-point of both curves in theory. If you want to check this out, make a new file in Photoshop and select the color mode to be “Grayscale”. You can then play around with filling rectangles and check out the value correspondence between L and K to verify what I just said. If you have QRT installed, then the QTR-Lab color profile should be available. The following screen shot shows an example New file setup window:

Grayscale file setup

In practice, the L or K Value in an image file may not be equivalent to what the printer lays down when it is sent that pixel value. Look back at that table above. It is showing what the compensation has to be for what the printer really does. Any step is relative to $D_{min}$, or paper white. As I just mentioned, the sequence in that table is just the opposite of L-Value; that is, Step 0 is L=100, Step 100 is L=0, in the digital file, and so on. In the table, the actual L-Values are not this simple correspondence. They are the compensation for what the printer did to the file. The A and B channel values are small, indicating an almost neutral result. The L channel values run in a nearly straight line from a minimum of 2.83 to a maximum of 96.42. The slight bend is due to the printer’s native non-linear mapping the image file’s L-Value and the print’s L-Value. The maximum recorded L-Value of 96.42 corresponds to a luminance of 91% (that is, $Y/Y_n$.) In other words, this baryta paper has a brightness of over 91%. With my Epson 3880, it has a $D_{max}$ of around 2.5 as I measured it. There is a slight but observable bend to the L-Value curve. This is the compensation for the printer’s overall non-linearity. The middle L-Value of 50 is mapped to the file K-Value at about Step 47. In other words, this tone curve is compensating for the apparent fact that my printer would otherwise print an L-Value of 50 in my file with a print that had an L-Value of 53. This ICC profile is bringing the density up just a touch in the mid-tones. Bingo!

Let me repeat.

Bingo!

I now know how to get middle gray right (Value V) in a B&W print on Hahnemühle Fine Art Baryta paper on my Epson 3880 running K3 inks and using the Advanced Black and White (ABW) print mode. I just convert my B&W image to Grayscale and then print with this profile. Get it? The profile automagically gets the entire range from L=0 through L=50 to L=100 right for my printer, ink, and paper.

What this printing process is going to do is take pixels with an L-Value of 0 and print them at $L_{min}$, 2.83. It will take pixels with an L-Value of 100 and print them at $L_{max}$, 96.42. This means that I can use the entire range of file values from 0 to nearly 255. I might want to cut my upper values off at, say, 253, to avoid paper white. But I can print all the way down to Zone 0 without fear of blocked shadows.

I hope that this makes sense to you. Many people say don’t get file values below 7 or above 247 or some such thing. I hope you understand now that that drops an entire Zone from each end of your print. “No rich blacks for you!” says the ink Nazi. If you calibrate your printer as I have mentioned, then the mapping of Zone O and Zone I in your file will happen automagically through the print process. Those image pixel values will be lifted up as necessary to just kiss your printer’s $D_{max}$ on that paper. Likewise, pixels at 255 will just kiss paper white. If that turns out not to look quite right to you, back off to 254 or 253 at the upper end of your RGB value scale. IMHO, that’s a question of the paper and the image content. Do what looks right to you.

And now my work here has ended. Let me summarize: Calibrate. Calibrate your camera so that you know where your exposure Zones will fall on the L-Value scale. Calibrate your monitor, hopefully to an L* tone curve. Work in LAB or LStarRGB or GrayGamma 2.47. Do file conversions to other working spaces at the last possible moment before printing. Calibrate your printer. If you’re doing B&W to an Epson printer, use QuadToneRip to make your own ICC profile for ABW. Use your entire tonal range for printing: do not throw away the end values.

A final word about printing color… The essential idea of printer calibration for color is similar to what I just walked you through for B&W. There is, obviously, more complexity in color because now you don’t just want to get the tone curve for neutral values right; you also want to get the entire gamut of colors right. Doing this is made more complex as well by the simple fact that the full gamut of color combinations in a digital image file can be much larger than what a monitor can display and this is typically much larger than what any color printer can produce. Having said that, a color file and a color print still have L-Values, just like a B&W image. Hence, printer calibration is also about getting Value V right for color prints; but it also aims to get the color values right as well.

If you use a print lab, work with them to see if they can handle TIFFs tagged in LAB color, grayscale, or other color spaces (like LStarRGB). If they will only accept sRGB or AdobeRGB, do your conversion at the last possible step in your workflow. Check what they are doing by printing a grayscale wedge and measuring their work.

Now, for images delivered to the Tubes of the Internets… IF you go back and forth between printing and delivering images to the Tubes, you may want to generate two screen calibration profiles, one for print work and one for Tube work. The tube work profile should fit the Internet de facto standard of a 6500K white point, sRGB primaries and tone curve (roughly gamma 2.2). If you have your screen calibrated in this way, then the middle gray you see on your monitor will be right for Value V in this workflow. “Convert” your image file from LStarRGB or LAB or whatever to sRGB, and proceed. Use Photoshop’s “Save for Web” dialog to output JPGs, PNGs, or whatever.

Now, get out of this rabbit hole and go and photograph and edit and print.

Be well.