Color management 3 – monitor calibration

For the CMS to be able to present images with correct colors on the monitor, (wich is – in my view – a must for any image manipulation) it must have a color profile for the monitor. Certain monitors ship with a factory default color profile, what is better than nothing, but you can create your own.

The easyest way is to adjust your display. A good explanation about it can be found in this article at Although i can’t really agree with every point of its theory, the solution works, and is more or less accurate. This method won’t create a profile, but merely adjust your display settings, but it is better than nothing.

A better way is software-only “calibration”. Theese methods involve evaluating with our eyes, wich are not the most accurate measuring devices in the universe. The most widely known software of this kind is Adobe Gamma. You can guess if it is avialable in linux or not ;-). But fortunately, Monica and GAMMApage do the nearly the same (I must admit that so far I have not tried any of them, and it is not clear for me if they are just altering settings of x, or creating a monitor profile. Basically, calibration is not equal to profiling and therefore they are not likely to be albe to create profiles) as well as LPROF (i will post my experinece with LPROF at a later time).

The best way is to use a hardware calibrating tool, a so called colorimeter. Unfortunately, theese devices usually don’t come with linux modules. There are two workarounds. First, LPROF, and ArgyllCMS can handle several colorimeters. Second, on dual-booting systems, a profile created on one os can be used on the other as well (more on this can be found on Nicolas Vilars’s page).

Let me explain the process of creating a display profile with a colorimeter. Colorimeters can be used to calibrate and profile your monitor. Theese two functions are to be separated.

Calibration is the act of bringing a device to a known operational state. In the case of a monitor this includes two things: setting the white point of the monitor, setting the gamma (mid-tone) of the monitor. (this is the step you can do without a colorimeter)

Profiling is a process where the colorimeter and a software are used to determine the gamut a given display. Usually a series of colored blocks are displayed on the screen and measured by the colorimeter. The software uses the difference between the measured values and the original input values to determine the ability of the monitor to reproduce a wide range of colors. This range of reproducible colors is called the display gamut, or display color space.

After that a profile is created for the display color space.

Color management 1 – basics

Let’s start with a few questions: are the colors of a display “right”? Have you seen tv-s in a supermarket, all showing the same programme? Did their colors look the same? No? Wich one was “right”?

In an ideal world, every scanner, camera, printer and display would show or percieve the colors in the same way. But in our real world, every single device renders a different shade of red for the R=128, G=0, B=0 RGB value. Getting a print that looks exactly (or at least pretty much the same) like the image on screen needs a lot of tweaking. Or applying some form of standardisation in the workflow. This is called color management.

Although i don’t want to be too scientific in this post, but there are a few definitions regarding color management wich are often cause of minor confusion and needs explanation.

Computers and digital cameras can’t percieve all the infinite number of colors we are presented with. They all store information digitally, and they need a system that describes colors by means of numbers. There are quite a few approaches to this problem, theese are known as color models. For instance, RGB. In RGB, combining pure red, green and blue together will result in white; the absence of all three primary colors results in black. RGB was designed with displays in mind, and it doesn’t work well for printers since they have to combine various inks to get what they want. On a printer, absence of any ink results in white (or the color of the paper, if it is not pure white). Printers work opposite the way monitors do to produce color and usually printer inks come in colors opposite the primary colors used by monitors. The CMYK color model consist of cyan, magenta, yellow and black inks combined to produce the various shades. A color model only determines the values that describe the colors (red, green and blue; or cyan, magenta, yellow and black, or whatever) and does not specify that to a particular combination of theese values what exact color will be the result.

Every monitor produces different range of colors. Gamut is a term to describe the range of colors a given device can produce or describe. This is the color space of the given device. It describes the specific colors the device can produce for any combination of red green and blue (in the case of an RGB device), or cyan, magenta, yellow and black (in the case of a CMYK device), or other numbers. It maps sepcific values of a color models to specific colors.

Every RGB device have its own unique color space.

Ok, but if a color space maps numeric values to specific colors, then there should be a universal color space to extract the specific colors from. And there should be a system that maps the specific colors of my printer to the universal color space (and vice-versa) and does the same with my digital camera, and monitor and scanner. This is the Color Management System (CMS). And it does its job by means of color profiles.

A color profile is a file that stores data on the relationship of a given color space (color space of a monitor for instance) and the above mentioned universal color space, wich is called profile connection space. A color profile maps the colors of the color space it represents to colors of the profile connection space.

The CMS is usually part of the operating system (afaik not in the case of linux), or is part of a software (Photoshop has its own CMS for instance), or (in the case of linux) comes as a separate engine that can be implemented by other software (like Little CMS).

One thing is important to note. Profiles only describe the color space of a device. They don’t change the device’s color reproduction capability.

to be continued…

Loading display profiles

An article is being made on color management, I’m currently gathering the sources. But until it will be published, here is one thing to start with.

Calibration of a display, and creating a profile for it on linux is not as easy as on other operating systems. There are only a few software to calibrate a display with a colorimeter (ArgyllCMS, and LPROF as far as i know).

I borrowed a display calibrator device, but none of the above mentioned softs can deal with it. But a display profile created on an other os can be loaded on linux! As far as the display and the video card is the same, the profile will be useful.

For loading the profile, I use xcalib. The de-facto standard directory of color profiles is /usr/share/color/icc, so i copied my profile there, and after compiling xcalib, i wrote a script that loads my monitor profile. Then i added it to System/Preferences/Sessions. Every time i log in, the profile is loaded.

I know that this post is floating in the middle of an empty space yet, but soon the post on color management will make it more clear .

edit on 17.10.2007.

Somehow on my new hardware (AMD X2 64) and with gutsy, i was unable to compile xcalib. It is likely to be some 64 bit issue, but anyway, i use Dispwin now, what is part of  ArgyllCMS. I downloaded the argyll precompiled executables, copied the dispwin to /usr/local/bin (i don’t know much about the file system standards, maybe it is not the best place, but it works) changed the attributes of the file, and written a script that loads my profile.