A Concise Introduction to
Color
Management and ICC profiles
[Note that there are many other, perhaps more comprehensive
and expansive "introduction to Color Management" resources on the
web. Google is
your friend...]
Color management is a means of 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.
Successful color management allows colors to be captured,
interchanged and reproduced by different devices in a consistent
manner, and in such a way as to minimize the impact of any technical
limitation each device has in relation to color. It must also deal
with the interaction of human vision and devices, allowing for such
fundamental vision characteristics as white point adaptation and
other phenomena. Ideally it also allows some influence of the human
purposes behind the color, in dealing with the tradeoffs involved in
practical devices.
The key means of implementing color management is to have a way of
relating what we see, to the numbers that each device uses to
represent 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). 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 each other, 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 the way we see color,
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.
As mentioined above, the key to managing 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 CIE 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 Color 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 other 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 (and
possibly hardware) 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 or discretely
represented curve (Lut). The matrix step 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
(typically linear) 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 climbs
rapidly with
resolution, and typical limited resolution tables are used to
constrain
profile file size and processing time.