Over the
gamut and through the woods.
So you want to manage
color?
It seems that the longer you stick
with a particular hobby or profession, the more
complicated things get. In digital photography, once you
get past that initial thrill of being able to view, edit,
and print your own photos, you start to become aware of
subtleties like the fact that certain colors on your
monitor don't match what is printed. You do some research
and it seems that there is something called "color
management" or "ICC profiles" that can fix
your problem, but the whole concept seems almost like
snake oil, or worse... some foreign language only spoken
by rocket scientists. Before long, you find yourself
trying a bunch of downloaded files (profiles), messing
with rendering intents, turning on/off something called
"black point compensation", and instead of a
good color match between your monitor, scanner, printer,
and other devices, you become lost in a forest, screaming
for help just hoping someone will hear you. Is it really
possible to understand this "color management"
concept to the point where you can at least determine if
you need it and if you do, exactly what you need to make
it work? Well, we're going to try. We'll try to deal with
concepts instead of underlying math where possible so
that we don't get caught up in the "rocket science"
of it.
Red, green, blue, yellow,
magenta, and cyan
Before digging into color
management, let's take a look at how different devices
represent the colors you see in a photograph. Devices
that emit their own light (like monitors and projectors)
or collect light using sensors (like cameras and scanners)
normally use intensities of red, green, and blue to
produce different colors. Devices such as printers that
produce output that relies on reflected light normally
use a combination of yellow, magenta, and cyan to filter
light hitting the paper so that the light reflected off
the paper is the correct color.
For the majority of colors, it is
possible to reproduce the same color using either RGB (red,
green, blue) or CMY (cyan, magenta, yellow) primary
colors. While printers ultimately place some combination
of CMY inks, dyes, or toner on the paper, the print
driver normally accepts data in RGB and the driver uses
the RGB data to "convert" to CMY for the final
print. The fact that almost all device drivers operate
under the RGB scheme allows us to simplify things and
work with a single set of primaries. In a typical setup
then, your camera, scanner, monitor, and printer all work
with RGB values. The RGB values are passed to the monitor
for display and RGB values are sent to the printer for a
print. There is no need to worry about the fact that your
printer doesn't use RGB inks: the driver takes care of
that and the print driver still wants the data in RGB
form.
In a digital image, we can specify
intensities of red, green, and blue for each pixel to
identify the color of the pixel. Red and green make
yellow. Red and blue make magenta (purple). Red and half
intensity green make orange. Etc. Line up all the
millions of pixels containing RGB values in rows and
columns and you get your final image (the photo).
All colors are not created
equal
Since our camera, scanner,
monitor, and print driver work and allow us to think in
terms of RGB, we are tempted to think that sending the
same RGB values between devices will result in the same
color. As a result of cameras, scanners, monitors, and
printers all using different technology to reproduce
colors, however, they each use a slightly different shade
of red, green, and blue as their primaries. The devices
may also have slightly different "tone curves"
so that a particular change in RGB value won't
produce the same change in visible light from both
devices. These issues mean that mixing the RGB values at
the same brightness level on each device will produce a similar
color, but not an identical color since we are
starting with RGB primaries that don't exactly match and
may also have non linear response with respect to
brightness. The reason for the "mismatch" in
RGB primaries can get complicated, but we need not
understand why the differences exist, only that they do.
ICC Profiles: the language
of color
At this point, it is becoming
clear that we need a way to convert the color from one
device to another, i.e. one set of RGB values to another.
Our camera recorded red, green, and blue intensities of
200, 200, 45. What intensities do we need for our monitor
to reproduce the same color? We know it most likely isn't
going to be 200, 200, 45 like the camera. Is it 202, 189,
56? Is it 192, 205, 38?
We could probably get the
conversion pretty close with many hours of trial and
error testing just eyeballing results and we could write
software that carried out our observations to do the
conversion. The problem is, our software would only be
good for that one specific camera model and that one
specific monitor because each camera and monitor will
work differently. What we need is a language that
describes the primary colors themselves and a color
management "engine" that can look at the
language spoken by the two devices and translate from one
to the other. We could then specify the "color space"
for a device which is determined by the primary colors
used by the device, and ask our color management engine
to translate between the camera's color and the monitor's
color for example.
ICC profiles are specifications
that describe the language of color spoken by a
particular device. An ICC profile for your camera
describes the subtleties of how your camera speaks RGB.
Similarly, an ICC profile for your monitor describes the
subtleties of how your monitor reproduces RGB colors on
the screen. Once you know the language of the camera and
the language of the monitor, the color management engine
can translate from the camera's language to the monitor's
language to get accurate color on the monitor. If you
know the subtleties of the language spoken by the
printer, you can do a similar conversion from the
camera's RGB language to the printer's RGB language to
reproduce accurate color on the printer as well. The
color management engine acts as the "universal
translator", translating the color of one device to
the next. All you need are ICC profiles that describes
the "dialect" of the RGB language spoken by
each device; a profile for your camera (either a generic
profile or one for a particular light source), a separate
profile for your monitor, one for the printer, etc. The
profiles themselves describe the color of the device in a
"universal dialect" called the Profile
Connection Space (PCS) which the color management engine
can use to translate color from one profile to another,
but with that, we're getting a little more technical than
we need.
The above chart shows our input
devices (camera and scanner) on the left, our photo
editing tools where we modify our images in the middle,
and our output devices (monitor and printer) on the right.
We need a profile that describes the color space for each
of the five areas above. In the context of this article,
we can use "color space", "ICC profile",
and "profile" synonymously. The path is usually
from left to right, starting with the original image,
converting to some common work space to modify the image,
and then converting to the monitor or printer color space
when we are ready for output.
When going from one area to the
next, our color managed software simply converts from the
color space in the box where we came from to the one
where we are going. As long as our color managed software
knows the color space (profile) for each box, it can get
you from one box to the next with consistent color. Note
that the actual RGB values for the image in each box are
slightly different, but the image looks the same
because the proper mapping has been done from one set of
RGB values to the next. Also note that if we choose not
to edit our images and simply want to display or print
the originals, we can follow the dashed blue lines where
our color managed software can convert directly from the
camera or scanner profile to the monitor or printer
profile. Having a common work space (Adobe RGB being the
most popular) in the center box is not a requirement as
it is possible to edit images in their "native"
color space on the left, but Adobe RGB (or sRGB) is often
used for consistency. The emphasis here is that we need a
profile for all boxes in the above diagram. If
we have a profile for every box except the printer, we
cannot produce color managed output for the printer
because while we may know the color language spoken in
all the other boxes, not knowing how the printer speaks
RGB means that there is no way to convert to the
printer's language.
ICC Profiles: a visual
representation
We have learned that in addition
to devices having unique RGB primaries, there are
standardized "work spaces" that have their own
(carefully picked) RGB primaries as well. These work
spaces are basically ICC profiles designed to allow
editing of images in a known "color space". A
color space is the area mapped out by drawing a triangle
between the red, green, and blue primaries as shown below.
The above is an abstract
representation of two of the most popular work spaces:
sRGB and Adobe RGB. The entire/outer colored area is an
approximation of the colors visible to the human eye,
called the "gamut" of the human eye. The
triangles map out the color spaces or the gamut of colors
spanned by the sRGB and Adobe RGB color spaces. As you
can see, using different red, green, and blue primaries
allows you to cover a larger or smaller portion of the
visible gamut. Why not just pick primaries that allow you
to cover the entire gamut? Again, the answer can get
complicated, but it is partially due to the fact that it
simply isn't possible given the technical capabilities of
certain devices (like monitors, printers, cameras, and
scanners) and it isn't always practical in a mathematical
sense either.
It is obvious by looking at the
above that sRGB covers a smaller gamut than Adobe RGB.
sRGB covers a gamut similar (but not identical) to your
monitor so it is well suited for display of images. Adobe
RGB on the other hand, covers a larger gamut and is
better suited for images being reproduced on a number of
different devices that might be capable of producing
colors beyond the sRGB gamut (many printers can produce
cyan and yellow colors beyond the sRGB gamut for example).
Most consumer level point-and-shoot cameras record images
in a color space close to sRGB above, even if that is not
specified in the manual or documentation for the camera.
If you have a selection for color space on your digital
camera or raw conversion software and you choose Adobe
RGB color space, your camera will be able to record
colors beyond those in the typical sRGB gamut,
particularly in the area of saturated cyan and green.
Being able to select color spaces
like sRGB or Adobe RGB in your camera gives you an added
benefit: you'll automatically have a profile for your
camera (the profile for sRGB or Adobe RGB is included
with most color managed software). If you are using a
point-and-shoot camera and no mention is made of a
profile or color space, you'll have to assume sRGB unless
you decide to get or create a profile of your own (see
below).
Now that we know what a
profile is, where do we get them?
We know that a profile can
describe the subtle color response of a device, and that
we need a profile for each device to be able to manage
color between devices (in order to render the same or
visually-same colors on each device). Now all we need is
a profile for our monitor, one for the scanner, one for
the camera, and one for our printer/paper/ink combination.
Profiles are just files that go in your Windows color
folder which is usually \windows\system32\spool\drivers\color
or \windows\system\color. The files you are looking for
will have either an ICM or ICC extension such as
my_printer_profile.icm or my_monitor_profile.icm. Sounds
easy but this can often be the stumbling block in a color
managed workflow. Let's take a look at the options:
Options for your camera
Most of the latest dSLR cameras (the
high end pro and prosumer models) come with a user
selectable color space. Remember that "Color space"
in this context is synonymous with "ICC profile".
Most have sRGB and Adobe RGB to choose from and if you
are working with software that can handle profiles, Adobe
RGB is generally the best choice to select in the camera
setup menu. Setting the camera to Adobe RGB will ensure
that images from the camera conform to the Adobe RGB
profile. If you usually just download pictures from the
camera and put them on the web or send them in emails
without modifying them, sRGB may be the better choice
because the sRGB color space (profile) is closer to your
monitor's profile than Adobe RGB. One common mistake is
to select Adobe RGB in the camera (or raw conversion
software) and then send the image to someone via email.
When the recipient views the email, he/she will see the
wrong colors because Adobe RGB is not well suited for
viewing on a monitor (the color space "triangles"
don't closely match). The solution is to convert those
Adobe RGB images to sRGB using your color managed "ICC
aware" software before sending them in an email.
In contrast to high end cameras
that allow you to specify a color space, if you have a
consumer "point and shoot" camera, there may be
no selection for color space and generally no indication
of what should be used for a profile. In this case, it is
usually best to just use sRGB as the "assumed"
camera profile. There are some camera profiles available
online such as those on the Popular
Photography site, but in general, it is very
difficult to create profiles for JPEG and TIFF images
from a camera because cameras often respond differently
under different lighting and it can be difficult to
recreate the exact settings used/needed on the camera for
the profile to be accurate. If you shoot in raw mode and
develop your photos with a raw conversion tool, it is the
responsibility of the raw conversion tool to convert your
raw images to JPEG's or TIFF's under a user specified
color space. In other words, you should not need to look
for a profile if you convert raw files with a raw
conversion tool because the raw conversion tool should
have output options like the ability to save converted
images in either sRGB or Adobe RGB color spaces.
It is possible to create a profile
(or profiles) for your camera using a profiling tool such
as those mentioned in the scanner and printer sections
below, but developing profiles for cameras is generally
not for the novice and requires very exacting framing and
lighting.
Options for your scanner
Scanners are actually quite easy
to profile using profiling software, but you may be able
to find a generic profile online (or your scanner may
have come with some) that are accurate enough. Even the
low cost profiling tools do a good job with scanners.
Just scan an included color chart, mark the four corners
of the chart in the software, and the profiling software
will create a profile for you. Some popular low cost
scanner profiling software are: Profile Prism by my
company (Digital
Domain Inc.) at $79, WiziWYG from Praxisoft at $89,
and Monaco EZ Color from Monaco Systems at $299.
There are even some free options online such as IPhotoMinus but the
free tools are limited to scanner profiling only, do not
come with the necessary color target to scan (which
you'll have to locate and buy), and generate simpler
"matrix shaper" profiles that are not as
accurate as the tools listed above.
Options for your monitor
About the only reliable and
accurate method of obtaining a profile for your monitor
is to buy monitor profiling software that comes with a
device called a "colorimeter" that attaches to
the screen to take actual measurements and create the
profile based on measurements. You can sometimes find a
generic profile for your monitor on the monitor
manufacturer's web site but these are usually quite poor
because monitors really do change significantly with age,
requiring them to be reprofiled once a month or so for
accurate color. Two popular monitor profilers are the
Spyder by Colorvision and
MonacoOPTIX by Monaco
Systems. Expect to pay in the $200 to $300
range but with significant improvement in color accuracy
on screen.
The visual "calibration"
tools such as Adobe Gamma that comes with PhotoShop and
other similar tools can help with certain aspects of on
screen color, but don't expect a reliable or accurate
match using these devices because they are designed for
general calibration, not profiling.