Gray Curves for the Epson Advanced B&W Photo Driver

by Eric Chan

Last updated: January 18, 2008



Examples of two different gray curves for the Epson 3800's ABW driver. The left curve is for Epson Velvet Fine Art; the right curve is for Ilford Smooth Gloss. Both curves provide accurate tone reproduction throughout the entire range from shadows to highlights on their respective papers. The method used to generate these curves is described below.


  • January 18, 2008   Fixed bad links to older (and now non-existent) .acv gray curve files.
  • October 8, 2007   I have now moved on to building and using standard ICC profiles for the ABW driver. The new method retains all the benefits of the older gray curve approach described on this page, shares the same workflow as when printing color images, and can be used from all printing applications (such as Lightroom), not just Photoshop.
  • March 26, 2007   Corrected the numbers used in the example above where V = 42. The output RGB value 71 corresponds to L* = 34.98, not 36.70. (I misread the measurement table when writing the example.) Thanks to Sally S. for pointing this out!


I prefer to use the Advanced B&W Photo (ABW) mode instead of the Color mode when printing black and white images on my Epson 3800. Here's why:
  • Blacks are deeper when printing with the ABW driver compared to the RGB driver.
  • The ABW driver is more (perceptually) linear than the RGB driver (see here for details).
  • Prints made with the ABW driver have less metamerism, bronzing, and gloss differential compared to prints made with the RGB driver.
  • Prints made with the ABW driver have superior longevity. See here to learn more.
When we print color images through the RGB driver, the printing application usually converts images from the RGB working space to the output device's RGB space using paper-specific ICC color profiles. For example, when printing in Photoshop, it's common to set the Color Handling option in the Print With Preview box to Let Photoshop Determine Colors and to select the appropriate profile from the Printer Profile menu. (Then we have to remember to disable color management in the Epson driver to avoid double profiling.)

In contrast, when we print black and white images through the ABW driver, we don't use the standard ICC color profiles because those profiles are based on the RGB driver, not the ABW driver. In fact, Epson recommends setting the Color Handling option in Photoshop's Print With Preview box to No Color Management. This means that your images' RGB values are passed directly to the ABW driver unmodified. For example, if you place Photoshop's eye dropper over a pixel and find that it has RGB values (37, 37, 37), then (37, 37, 37) is exactly what Photoshop will give to the ABW driver.

Simple enough, right? Well, not so fast ...


There are a few wrinkles with this approach, and they all have to do with the fact that the output process isn't color-managed. (We'll see how to iron them out in the next section.)

  1. We can't soft proof the image, even if our display is properly calibrated and we're using a color-managed application such as Photoshop. This is because we have no profile to use for soft-proofing! The printed image might be too dark or too light. That's not good: What-You-See-Will-Probably-Not-Be-What-You-Get!
  2. The same image will print differently on different papers, because papers vary in their ink absorption characteristics. An image printed on one paper (such as Red River Paper's UltraPro Gloss) might be too dark, while the same image printed on a similar paper (such as InkJetArt's Micro Ceramic Gloss) might be too light. That's not good: even though papers do have fundamental differences (e.g., smoothness, paper whites, etc.), we still expect the printed image to have the same tonal balance no matter which paper we use!
  3. Results will depend on our choice of RGB working space, because different RGB color spaces encode RGB values using different gamma curves. For example, Adobe RGB uses a gamma of 2.2 while ProPhoto RGB uses a gamma of 1.8. The two ramps below show a simulation of what happens if we print two gray ramps that (in Photoshop) look visually identical to our eyes. The top and bottom ramps correspond to the cases where our RGB working spaces are set to Adobe RGB and ProPhoto RGB, respectively. Clearly, the ramps do not come out the same -- the bottom one is darker than the top.

    Why does this happen? Well, let's find out by examining a single gray patch: middle gray. In Photoshop, create two empty RGB images, one in Adobe RGB and the other in ProPhoto RGB. In the Color palette, use the Lab sliders to set the Lab color to (50, 0, 0) -- which is middle gray -- and fill both images with this color. Then, use the Info palette to read out the RGB values.

    The images look the same, but the numbers are different! Middle gray is 118 in Adobe RGB and 100 in ProPhoto RGB. If we printed the gray patches by sending these RGB values directly to the ABW driver, naturally the ProPhoto RGB image would print darker (because 100 is less than 118).

    The bottom line is that our choice of RGB working space will affect how light or dark the printed image appears. That's not good: we want our images to print the way we see them on the screen, regardless of which working space we're using!

Fortunately, all three of these problems can be solved using a dedicated gray profile (instead of a RGB color profile) or using gray curves that map the RGB working space values to the required output space values. Let's take a look at these options below.

Gray Profiles

You can make gray profiles by printing a gray stepwedge, measuring it with a densitometer or spectrophotometer, and feeding the measurements to Roy Harrington's QuadToneRIP software, which will generate an ICC gray profile for you. This process is described in detail by Giorgio Trucco, so I won't repeat the instructions here.

Gray Curves

I have found that I can get even better results by building custom gray curves in Photoshop. These paper-specific curves reproduce tones accurately throughout the entire range from shadows to highlights.

How are these gray curves made? I print a gray target, measure it with my Eye-One Pro, and save the results in Lab format. Next, I feed the measurements into a custom software program that I've written. The program constructs the curve that maps RGB working space values to output space values in a way that preserves tonal relationships (see here for details). For example, RGB = (0, 0, 0) in the working space is mapped to the paper's deepest black (i.e., d-max), middle gray in the working space is mapped to the paper's middle gray, etc.). The program then saves the curve as a Photoshop curve (.acv) file.

Gamma 1.8 vs. gamma 2.2 issues are handled by generating two curves, one designed for gamma 1.8 and the other designed for gamma 2.2. For instance, here's a gray curve for Epson Velvet Fine Art on an Epson 3800 when loaded into Photoshop:

The gray curve above is designed to be used with gamma 1.8 working spaces, such as ProPhoto RGB or Gray Gamma 1.8. In contrast, the gray curve below is for the same paper and printer (and is actually built from the same measurement data as the curve above), but it's designed to be used with gamma 2.2 working spaces, such as Adobe RGB or Gray Gamma 2.2.

I have converted my gray curves for my Epson 3800 to standard ICC profiles so that they may be used from any ICC-aware application, such as Photoshop, Lightroom, and QImage. These profiles are available on this page. Feel free to download them and try them. Only a few curves are available right now, but I intend to add more as I work with more papers.

Gray Curve Instructions

Important: the following information applies only to my older .acv gray curve files, which are no longer available. I now recommend using my newer standard ICC profiles instead.

Using gray curves is easy. Process your image normally in Photoshop, using what you see (on your calibrated display) as your soft proof. Then, as the final step before printing, add a curves adjustment layer and load the gray curve from the .acv file; the curve effectively performs the conversion from your working space to the printer space. That's it -- go ahead and print!

Here are more detailed, step-by-step instructions for Photoshop CS2 running on Windows XP. These instructions should also work fine under Mac OS X, but the application and driver settings may have slightly different names.

  1. Download the appropriate .acv output curve file. There are two curves for each paper, one for gamma 1.8 and one for gamma 2.2. It is very important that you choose the correct one based on the gamma of your RGB or gray working space. Use the following table to decide:

    Working Space Gamma
    Adobe RGB 2.2
    Gray Gamma 1.8 1.8
    Gray Gamma 2.2 2.2
    ProPhoto RGB 1.8
    sRGB 2.2
    Wide Gamut RGB 2.2

    For example, if you are printing an image on Epson Velvet Fine Art paper and your RGB working space is ProPhoto RGB, use the EP3800_VFA_ABW_Gamma18_OutputStd.acv curve.

    If you don't find your working space listed in the table above, check Bruce Lindbloom's more complete table of common RGB working spaces.

  2. Prepare your black and white image in Photoshop to your heart's content.

    Some recommendations:

    • Naturally, you need to have a properly calibrated display so that you can accurately preview the results. (You have calibrated your display, right?)
    • Check that your image is truly gray. If you work in RGB mode, then the R, G, and B channels should be equal to each other for every pixel in the image.
    • Include all of the normal steps at the end of your workflow (e.g., resizing the image for output, sharpening, etc.).
    • Process your images in 16-bit mode. In fact, it's best to stay in 16-bit mode all the way to the very end (including all of the following steps).

  3. Add a curves adjustment layer by pulling down the Layer menu, choosing New Adjustment Layer, and selecting Curves...
  4. In the Curves box, click the Load... button and select the appropriate curve (i.e., the curve that you downloaded in Step 1 above):


    This will add many new control points. Here's an example of what you might see:



    This is just an example, so the actual positions of the control points (and the shape of the curve) may be different in your case, depending on which curve you selected. Click the OK button.

    In most cases, you'll notice a big tonal change to the image and the results might look downright scary! Don't worry -- this is normal.

    Remember, the gray curve isn't supposed to give you a preview of what you will get when you print your image. The purpose of the gray curve is to make the necessary adjustments to your image's RGB values so that when you actually print the image, you'll get what you had on your display before you added the gray curve. Take your time and read that last sentence again slowly ... I admit it's rather counterintuitive!

  5. Go to the File menu and choose Print with Preview...
  6. In Photoshop's Print with Preview settings, set Color Handling to No Color Management, then click on the Print... button.
  7. Make sure that all of your settings in the Epson driver match the driver settings listed on this page for your paper. In particular, make sure that you have selected the correct Media Type, Print Quality, and Tone.
  8. Print and enjoy!

Tips and Tricks

Sometimes, tweaking the gray curves will give you better results than the default gray curves. Let's take a look at two examples.

Example 1: Minimizing Gloss Differential on PK Papers

Gloss differential is a phenomenon where the amount of light reflected off of the surface of the print seems to vary across the image. This gives the impression that some parts of the image are "shinier" or "glossier" than others. It is noticeable mostly in highlight regions which receive little or no ink. When the print is viewed at certain angles, it becomes clear that the parts of the paper that receive little or no ink seem to reflect light differently than the parts of the paper that receive heavier ink coverage. Gloss differential occurs only with PK papers (e.g., glossy, luster, semigloss surfaces).

One way to minimize gloss differential is to reduce the maximum gray level from 255 slightly (e.g., to 252 or 253). This is easy to do by modifying the default gray curve. For instance, here is the gray curve for Ilford Smooth Gloss, Gamma 1.8, after adjusting the top-right control point downwards slightly so that the Output value is 252 (instead of the default 255). This will reduce gloss differential at the expense of slightly compressed highlights.


Example 2: Extra Shadow Detail

The default gray curves should provide excellent shadow detail, but only if the print is properly illuminated. This won't be an issue if you stick your print in a highly-controlled viewing booth, but in typical household environments, lighting conditions may not be so friendly. For these situations, you may want to open up the shadows a bit. This is easy to do by modifying the default gray curve.

For instance, here is the gray curve for Ilford Smooth Gloss, Gamma 1.8, Move your cursor over the image to see what it looks like after the second control point from the left has been deleted. This raises the curve in the deepest shadow areas, thereby making it easier to "see" into the shadows of your image without affecting the lighter tones.



Technical Details

This section explains how to convert a working space RGB or gray value to an output device value that has the same perceived lightness.

The ABW driver is really a grayscale driver. In a nutshell, this means that if we send a color RGB image to the ABW driver, the driver will convert the color image to a grayscale image before printing it. Giorgio Trucco gives more details here.

The L* channel of the Lab color space is a perceptually linear encoding of lightness on the scale from 0 to 100. In an 8-bit RGB working space, RGB = (0, 0, 0) corresponds to L* = 0 and RGB = (255, 255, 255) corresponds to L* = 100.

In practice, we don't get L* values of 0 or 100 when we print an image on paper. L* can't be 0, because papers always reflect some amount of the incident light. Similarly, L* can't be 100, because papers don't reflect all of the incident light.

For example, here is a table of measurements obtained by printing a 51-patch gray target on my Epson 3800 printer on Epson Velvet Fine Art paper and then measuring the results with my spectrophotometer:

0 14.33
5 15.13
10 16.12
15 17.50
20 18.85
26 20.38
31 22.03
36 23.16
41 24.42
46 25.96
51 27.38
56 29.30
61 30.82
66 32.54
71 34.98
77 36.70
82 38.77
87 40.80
92 42.45
97 44.38
102 46.29
107 48.00
112 50.06
117 52.62
122 53.96
128 55.87
133 57.70
138 59.08
143 61.14
148 62.86
153 64.46
158 66.34
163 68.58
168 69.89
173 71.65
179 73.43
184 74.65
189 76.52
194 78.23
199 79.62
204 81.20
209 83.35
214 84.60
219 86.16
224 87.76
230 89.33
235 90.99
240 92.49
245 94.18
250 95.73
255 97.14

L* measurements of a 51-patch gray chart printed on an Epson 3800 on Epson Velvet Fine Art using the ABW driver. Each row of the table shows the 8-bit RGB value (in the range [0,255]) that was sent to the ABW driver and the resulting L* value as measured by an Eye-One Pro in MeasureTool.

As you can see from the table, the L* values range from 14.33 to 97.14. Most matte papers have L* values that range from 17 to 95 or so. (Velvet Fine Art has an unusually deep black.)

The idea when building a gray curve is to scale our working space L* values (which range from 0 to 100) to the available L* range of the paper. For example, L* = 0 and L* = 100 in our working space should map to L* = 14.33 and L* = 97.14 on Velvet Fine Art, respectively, and all other working space L* values between 0 and 100 should be linearly scaled to fit the output range [14.33, 97.14].

Here are the specific steps required to construct a gray curve:

  1. Let V be an 8-bit gamma-encoded RGB or gray value that lies in the range [0, 255], and let g be the gamma of the working space (typically either 1.8 or 2.2). Use the following formulas to convert V to L*:

  2. Let Lmin and Lmax be the minimum and maximum L* values of the paper. Scale the working space L* to the output range [Lmin, Lmax]:

  3. Use the gray target measurement table to infer the RGB value corresponding to L*dst. This is the number that should actually be sent to the printer when the working space value is V.

  4. Repeat Steps 1 to 3 for each data point that you want to add to your curve. For example, we have to perform Steps 1 to 3 sixteen times for a 16-point curve. Now you see where a computer program (or a spreadsheet) comes in handy!
For example, let's figure out how to process an 8-bit ProPhoto RGB value of 42 when printing on an Epson 3800 and Epson Velvet Fine Art. The L* measurements for this paper are given in the table above.

In this example, V = 42 and g = 1.8 (since the gamma of ProPhoto RGB is 1.8). After crunching through the math in Step 1, we find that L* = 23.3. According to the measurement table, Lmin = 14.33 and Lmax = 97.14. This gives us everything we need to perform Step 2, and we find that L*dst = 33.63. Finally, we need to figure out which output space values will produce L*dst = 33.63. According to the measurement table, 33.63 falls between RGB value 66 (which produces L* = 32.54) and RGB value 71 (which produces L* = 34.98). Linearly interpolating between these two output RGB values, we obtain 68.24.

What have we learned? In a nutshell: if we have an 8-bit ProPhoto RGB image that contains a pixel with value 42, we should actually send the value 68 to the ABW driver. (Note that this correspondence is only valid for the Epson 3800 and Epson Velvet Fine Art when using the specific driving settings listed on this page.)


Thanks to Bruce Lindbloom for sharing a wealth of color-related articles and reference material on his highly educational web site.