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…