A Concise Introduction to Color
Management and ICC profiles
[Note that there are many other, perhaps more comprehensive
"introduction to Color Management" resources on the web. Google is
your friend...]
Color management is about dealing with the fact that color
capture and output devices such as Cameras, Scanners, Displays and
Printers etc., all have different color capabilities and different
native ways of communicating color. In the modern world each device is
typically just part of a chain of devices and applications that deal
with color, so it is essential that there be some means for each of
these links
in the chain to communicate with each other about what they mean by
color.
The human eye is known to have 3 type of receptors responsible for
color vision, the long, medium and short wavelength receptors. Because
there are 3 receptors, human color perception is a 3 dimensional
phenomena, and therefore at least 3 channels are necessary when
communicating color information. Any device capable of sensing or
reproducing color must therefore have at least 3 channels, and any
numerical representation of a full range of colors must have 3
components and hence may be interpreted as a point in a 3 dimensional
space. Such a representation is referred
to as a Color Space.
Typically
color capture and output devices expose their native color spaces in
their hardware interfaces. The native color space is usually related to
the
particular technology they employ to capture or reproduce color.
Devices that emit light often choose Red
Green and Blue (RGB) wavelengths, as these are
particularly efficient at independently stimulating the human eye's
receptors, and for capture devices R,G & B are roughly similar to
the type of spectral sensitivity the eyes receptors have. Devices that
work by taking a white background or illumination and filtering out (or
subtracting) colors often use Cyan, Magenta, and Yellow (CMY) filters or colorants to
manipulate the color, often augmented by a Black channel (CMYK)l. This is because a Cyan
filter filters out Red wavelengths, Magenta filters out Green
wavelengths, and Yellow filters out Blue wavelengths. Because it's
impossible to make filters that perfectly block C, M or Y wavelengths
without overlapping other wavelength, C+M+Y filters together tend
to let some light through, making for an imperfect black. Augmenting
with an additional Black filter allows improving Black, but the extra
channel greatly complicates the choice of values to create any
particular color.
Many color devices have mechanisms for changing the way they respond to
or reproduce color, and such features are called Adjustments, or Calibration.
Such features can be very useful in adapting the device for use in a
particular situation, or for matching different instances of the
device, or for keeping its behavior constant in the face of component
or environmental changes. Sometimes there may be internal
transformations going on in the device
so that it presents a more or less expected type of color space in its
hardware interface. [ Some sophisticated devices have built in means of
emulating the behavior of other devices, but we won't go into such
details here, as this is really just a specialized implementation of
color management. ]
To be able to communicate color between different devices and software,
a common "language" is needed, and the scientific basis for such a
language was laid down by the International Commission on Illumination
(CIE) in 1931 with the establishment of the CIE 1931 XYZ color space.
This provides a means of predicting what light spectra will match in
color for a Standard Observer, who represents the typical response of
the Human eye under given viewing conditions. Such a color space is
said to be Device Independent
since it is not related to a particular technological capture or
reproduction device. There are also closely related color-spaces which
are direct transformations of the XYZ space, such as the L* a* b* space which is a more
perceptually uniform device independent colorspace.
The primary means to manage color is to be able to relate different
color spaces so that they can be compares and transformed between. The
most practical approach to doing this is to relate all color spaces
back to one common colorspace, and the XYZ colorspace is the logical
choice for this. A description of the relationship between a devices
native color space and an XYZ based colorspace is commonly referred to
as a Profile. As a practical
issue when dealing with computers, it's important to have a common and
widely understood means to communicate such profiles, and the ICC profile format standardized by
the International Color Consortium is today's most widely
supported color profile format.
The ICC profile format refers to it's common color space as the Profile Connection Space (PCS), which is closely based on the
CIE XYZ space. ICC profile are based on a Tagged format, so they are
very flexible, and may contain a variety of ways to represent profile
information, and may also contain a lot of optional information.
There are several fundamental types of ICC profiles:
Device
These primarily provide a translation between device
space and PCS. They also typically provide a translation in the reverse
direction, from PCS to device space. They are discussed in more detail
below.
Device Link
A Device Link profile provides a transformation from
one Device space to another. It is typically the result of linking two
device profiles, ie. Device A -> PCS -> Device B, resulting in a
Device A -> Device B transformation.
Abstract
An abstract profile contains a transformation define
in PCS space, and typically represents some sort of adjustment in a
device independent manner.
Named
A Named profile is analogous to a device Profile,
but contains a list of named colors, and the equivalent PCS values.
Most of the time when people talk about "ICC profiles" they mean Device Profiles. Profiles rely on a
set of mathematical models to define a transformation from one
colorspace to another. The models represent a general framework, while
a specific profile will define the scope of the model, as well as it's
specific parameters, resulting an a concrete transformation. Profiles
are typically used by CMMs
(Color Management Modules), which is a piece of software that knows how
to read and interpret an ICC profile, and perform the transformation it
contains.
Two basic models can be used by ICC profiles, a Matrix/shaper model and a cLUT (Color Lookup Table) model.
Models often contain several optional processing elements that are
applied one after the other in order to provide an overall
transformation.
The Matrix/Shaper model consists of a set of per channel lookup curves
followed by a 3x3 matrix. The curves may be defined as a single power
value, or as a one dimensional lookup table (Lut). The matrix model can
only transform between 3 dimensional to 3 dimensional color spaces.
The cLUT model consists of an optional 3x3 matrix, a set of per channel
one dimensional LUTs, an N dimensional lookup table (cLUT) and a set of
per channel one dimensional LUTs. It can transform from any dimension
input to any dimension output.
All Lookup Tables are interpolated, so while they are defined by a
specific set of point values, in-between values are filled in using
interpolation.
For a one dimensional Lookup table, the number of points needed to
define it is equal to its resolution.
For an n-dimensional cLUT, the number of points needed to define it is
equal to it's resolution taken to the power of the number of input
channels. Because of this, the number of entries climes rapidly with
resolution, and typical limited resolution tables are used to constrain
profile file size and processing time.