Creating ICC color profiles with Argyll CMS

Common Colors


An ICC color profile ensures that an image always looks the same - regardless of the output device. The free Argyll CMS software package lets you create color profiles in Linux.

By Frank Ickstadt

Ismael Montero, Fotolia

Linux has a number of powerful programs for graphics, image manipulation, and Desktop Publishing (DTP). You can even use free software to manipulate the raw formats produced by several high-quality digital cameras.

Photographers who are looking for color consistency need to use a Color Management System (CMS). Consistent color management means that color output on all output devices (including monitors as well as printers) accurately reflects the image captured by the input device (typically a digital camera or scanner). To put this simply: If you hold the hard copy next to the monitor, you should not be able to see any difference between the two images [1].

To achieve this kind of consistency, device profiles are deployed for each input or output device to correct color deviations. The profile files typically use the standards defined by the International Color Consortium (ICC), a vendor association. A color management system has the task of integrating the individual ICC profiles within a device-independent color space and converting between the profiles. To allow this to happen, the Little cms [2] library was created in 1998.

Little cms is used by most open source applications that support ICC color profiles (Table 1). Incidentally, Gimp, the powerful image editing software, does not offer full support for ICC. Although the Gimp 2.3 developer branch does support color management, this is currently restricted to the .png and .jpeg formats.

Up to now, there has not been a free color-management program suite capable of supporting the hardware device known as a colorimeter, which is needed to create consistent profiles. The latest beta of the free Argyll CMS [3] program by Australian Graeme Gill now supports affordable colorimeters (Figure 1). The Eye-One Display 2 by Gretag-Macbeth, for example, costs around US$ 250. For this article, I used the predecessor, Display 1, which some wholesalers occasionally have on offer for less than US$ 100. Hardware support for this version is not available in the stable version, Argyll CMS 0.60, but is in the developer version 0.70 Beta 4.

Figure 1: The colorimeter in the green area of the screen. The measurement can take up to half an hour.

If you intend to set up your CMS with a device by X-Rite or Gretag-Macbeth, you will need to download the latest code [4] and build the binaries yourself. The docx directory in the source code archive has comprehensive documentation, with a list of supported hardware in the doc/instruments.html file.

Do-It-Yourself Beta

Argyll CMS does not use Make but the discontinued Jam build system; to be more precise, it needs Ftjam 2.5.2, which you can download from the FreeType project [5] site. As you are unlikely to need Ftjam again after building Argyll CMS, it makes sense to install the tool in your home directory and delete it once you have created the Argyll CMS binaries. To configure the source code, give the ./configure --prefix=/home/ickstadf/ftjam command and then use make and make install to build and install the Ftjam binaries.

The next step is to modify the build scripts from the Argyll CMS source code; you need to replace the calls to jam in the makeall.ksh, makeinstall.ksh, and makepackagebin.ksh files with the absolute path to your local Jam installation, (i.e., /home/ickstadf/ftjam/bin/jam).

Additionally, the call to Jam in the make-install.ksh script needs the -f../Jambase option; the author seems to have forgotten this in the Beta 4. The scripts are Bourne Shell compatible despite their file extensions. With the following command line, you can then move on to the build process:

./makeall.ksh; ./makeinstall.ksh; ./makepackagebin.ksh

There is no need for debug information on the binaries. To remove the debug information, change to the bin directory and enter the following:

find . -perm 711 -a -type f -exec strip \{} \;

The binaries I created for this article on SUSE Linux Enterprise 9 ran without any trouble on a machine with Ubuntu 7.04 and openSUSE 10.1 and 10.2.

Hardware Integration

Before you can start calibrating, you need to integrate your colorimeter hardware with your Linux system. The installation how-to in the doc/Installing.html file explains the steps with Udev and Hotplug.

By running lsusb, you can easily check whether Linux has found your colorimeter hardware. If you use the Eye-One Display 1, for example, you should see the following line with the correct vendor designation:

Bus 001 Device 003:
ID 0971:2003 Gretag-Macbeth AG

Several steps are required to create an ICC profile for your monitor. I use a 17-inch TFT display by Videoseven as an example for monitor profiling here. For some of the commands, you will need root privileges because they access the hardware directly.

After you enter sudo ./dispcal -yl -qh v7lcd, the program will ask you to place the measuring device on the colored region of the screen (Figure 2). Let the connecting cable with the counterweight dangle down over the back of the screen to keep things nicely balanced.

Figure 2: The Argyllcms command-line tools display a color field on which the colorimeter is placed.

Full calibration can take up to 30 minutes; Argyll CMS will show you the values while the process is in progress. Don't forget to disable your screensaver! Pressing 5 (Check all) starts the tests; pressing Esc or Q quits the program.

After completing the measurements, press 6 to create a calibration file as v7lcd.cal.

Now for the remaining steps: ./targen -v -d3 -f500 v7lcd creates the target test values; sudo ./dispread -v -yl -kv7lcd.cal v7lcd starts to measure the color values. And finally, ./profile -v -D"V7-TFT" -qh -as v7lcd creates the ICC profile. If you see error messages such as:

dispcal: Error - Configuring USB port 'usb:/bus0/dev0 (GretagMacbeth i1 Display)' to 1 failed with -1

then you have probably forgotten to enter sudo for a command that accesses your hardware.

The results of these steps is a profile named v7lcd.icc, which describes your monitor. This profile is suitable for Windows, Mac, and Linux systems; in other words, it is not platform-specific. Any manual change of the brightness, color, and contrast settings on your monitor means recalibrating, however.

Unfortunately, Linux does not (yet) have a standard path for storing ICC files. User-specific files should be stored in ~/.color/icc and global files in /usr/share/color/icc. People often refer to monitor or printer profiles (which Argyll CMS can also create, assuming you have a suitable calibration device). It would be more accurate to refer to graphics adapter + monitor, or printer model + ink + paper profiles. Once you change one of these components, you will need to create a new profile.

Additionally, vendors and consortiums also describe complete color spaces in the ICC format. The best known of these are S-RGB and Adobe RGB, as well as CMYK and ISO Coated. Wikipedia [6] has more information.

Oyranos is another free CMS project that is still at the alpha phase, but the project Wiki [7] has a treasure trove of information on color management.

INFO
[1] Color management: http://en.wikipedia.org/wiki/Color_management
[2] Little cms: http://www.littlecms.com
[3] Argyll CMS: http://www.argyllcms.com
[4] Source code of developer version: http://www.argyllcms.com/argyll_dev_src.zip
[5] FreeType, download source for Ftjam: http://sourceforge.net/projects/freetype
[6] Gamut: http://en.wikipedia.org/wiki/Gamut
[7] Oyranos wiki: http://www.oyranos.org/wiki/index.php?title=Main_Page