mercredi 19 juin 2013

Creating a printer ICC profile on GNU/Linux


This little article follows the previous one about printing on GNU/Linux. My first route was to use a service to create my ICC profile. An ICC profile is very important on GNU/Linux as the default printing driver (CUPS) generate some strong brownish color casts.

This little article is about creating it's own ICC profile, difficult? No, in fact the procedure is quite simple. The hardest part was to put everything together with the proper options.

The full procedure took me 40 minutes to create a profile, let's see how...

My environment

  • GNU/Linux Debian (on unstable)
  • Printing with Eye Of GNOME (EOG in the following)
  • Printing through CUPS (v1.5.3) + gutenprint (v5.2.9)
  • Epson Stylus Pro 3880 (network connection)
  • Epson Premium Luster Photo Paper
  • ColorMunki Photo spectrometer

Let's create some environment variables for this:
  • Epson Pro 3880
$ PRINTER=Epson3880
  • Paper: Epson Premium Luster Photo Paper
$ PAPER=EPLPP

First generate a color chart to be scanned

We will create a high quality profile and for this you need to create a charts on 3 A4 paper sheet:
$ PROF=PO_${PRINTER}-${PAPER}
$ targen -v -d2 -G -e4 -g128 -f918 -R $PROF
$ printtarg -v -iCM -h -a0.84 -b -T360 -m3 -M3 -P -pA4 $PROF
This creates $PROF_01.tif, $PROF_02.tif and $PROF_03.tif

It is possible to create a single A4 paper chart but for a good number of composite gray  steps it is better to target a high quality profile.

Print the chart

Just print the $PROF_*.tif charts. Make sure that you note the printer driver parameters. The generated profile will be valid only in this specific setup, that is with the same print resolution, same quality... If possible disable any color adjustment on the printer driver.

EDIT IMPORTANT: Do not use EoG until the following bug is fixed

Connect the ColorMunki to the computer

You can check that it has been properly recognized by using:
$ lsusb
It was recognized without trouble for me.

Read the generated chart

Set ColorMunki in calibrate position.
$ chartread -v -H -B -T0.4 $PROF
When indicated, move the ColorMunki in scan position, you'll be asked to scan each strip (A through Q, or A through AY for high quality profiles) of 18 patches one by one.

It took me 30 minutes to scan the 51 strips for a high quality profile. That is, 10 minutes for each page of 17 strips. It was basically straightforward, I had just to redo the scan 5 or 6 times for a strip which was not properly detected. By the way, it is easier to scan the strips by using a sheet of paper with a small window the size of a strip.

Create the profile

This profile is created from a standard AdobeRGB one.
$ colprof -v -qm  -kp 0 .2 .8 .3 .8 -i D65 -o 1931_2 -S sRGB.icc -cmt -dpp -Tp -D$PROF $PROF
This will create a PO_$PROF.icc file ready to be used with tificc for example. See my previous article about printing on GNU/Linux.