skip to main content

ICC Profile Conversion Intents

This page provides a quick overview of the differences between the four different ICC color space profile conversion intents and explains why you can't 'keep all the colors' by doing a perceptual intent conversion to the sRGB matrix profile.

Written September 2013. Updated February 2015.

The ICC color space profile conversion intents

When you convert an image from one ICC color space profile to another (for example, from ProPhotoRGB to sRGB), you have to choose a color space conversion intent. There are four color conversion intents:

  1. relative colorimetric
    1. with black point compensation
    2. without black point compensation
  2. absolute colorimetric
  3. perceptual
  4. saturation

For a concise overview of the four color space conversion intents, see Color Space Conversion. Pay special attention to the excellent illustrations, and keep in mind that matrix profiles can't use the perceptual and saturation color conversion intents.

The fact that matrix profiles can only use the colorimetric intents matters a whole lot, because the RGB working spaces that we use in the digital darkroom (eg sRGB, ProPhotoRGB, etc) are in fact matrix profiles (unless you are using the LUT versions of familiar RGB working spaces; I don't use the workflow for which those profiles were designed, and you probably don't either).

Matrix profiles and lookup table profiles

There are two basic types of ICC color space profiles: matrix profiles and lookup table profiles. Matrix profiles and lookup table profiles both accomplish the same goal. That goal is to define a particular subset of all the colors that you can see, out there in the real world, in terms of a reference color space, also called the Profile Connection Space ("PCS").

An RGB matrix profile "translates", if you will, RGB values into the XYZ reference color space by using a 3x3 matrix to calculate the XYZ values that correspond to any given trio of RGB values, and vice versa. A lookup table profile (also frequently referred to as a "lut" profile) doesn't use matrix math to calculate corresponding XYZ and RGB values. Instead, a lookup table profile contains tables of corresponding RGB and XYZ values (if the PCS is XYZ) or corresponding RGB and Lab values (if the PCS is CIELAB).

When converting an image from one ICC color space profile (the source profile) to another ICC color space profile (the destination profile), the conversion intents that are actually available for you to use depend entirely on whether the destination color space profile is a matrix profile or a lookup table (lut) profile. On the one hand, lookup table profiles can (but are not required to) support all four color space conversion intents listed above. On the other hand, matrix profiles only support the colorimetric intents.

White points, black points, and matrix profile conversion intents

When doing a color conversion to a matrix profile color space, your choices are:

  1. 1a. Relative colorimetric, with black point compensation.
  2. 1b. Relative colorimetric, without black point compensation.
  3. 2. Absolute colorimetric.

When converting to a matrix profile color space, these are the ONLY three options. Whatever else your editing software seems to offer is there because the gui was not programmed to gray out the options that don't apply to matrix profiles when a matrix profile is chosen as the destination color space.

To repeat, the perceptual and saturation conversion intents cannot be used when converting to a matrix profile. Most and probably all editing software defaults to using "relative colorimetric" when you choose saturation or perceptual intent when converting to a matrix profile.

So what do these different matrix profile conversion intents mean? An ICC profile has a white point and a (specified or inferred) black point. Along the line connecting the white point and the black point are shades of gray. Very loosely speaking:

  1. 1a. "Relative colorimetric, with black point compensation" means align the white points and the black points so the gray axes line up; shorten or lengthen the distance from white to black so the white and black points match"; and clip any colors that fall outside the gamut of the destination color space.
  2. 1b. "Relative colorimetric, without black point compensation" means the same as above, except don't shorten or lengthen the distance from white to black.
  3. 2. "Absolute colorimetric" means don't align anything and clip any colors that fall outside the destination color space.
The sRGB color space and the color space defined by a representative LCD monitor profile, as seen from inside the CIELAB reference color space. sRGB is the white wire frame. The multi-colored blob is the monitor profile. The two color spaces have different white points (the peaks at the tops of the wire frame and the multi-colored blob) and different black points (the troughs near the a-b plane).

Why use black point compensation? If you choose "relative colorimetric without black point compensation" then your images will be displayed with all the darkest shadow areas crushed to solid black. The screenshot above illustrates why. The vertical axis in the middle of the wire-frame and blob is the CIELab "L" axis, which runs from 0 (solid black) to 100 (solid white). The sRGB color space and other working spaces like ClayRGB, BetaRGB, ProPhotoRGB all have a zero black point, but the monitor profile black point doesn't quite reach 0. So the sRGB white wireframe sticks out below the bottom of the monitor profile multi-colored blob. This non-zero black point is a characteristic of LCD monitor profiles, which is why the usual display (default) color conversion choice is "with black point compensation". Otherwise the darkest colors in your image would be displayed as solid black on your monitor screen.

(The "wrl" file from which the above screenshot was taken was produced using the Argyllcms iccgamut and viewgam tools and displayed with view3dscene.)

Which ICC profiles are lookup table profiles? Which are matrix profiles?

You might be wondering, are the ICC profiles in your digital darkroom matrix profiles or lookup-table profiles? The answer is, it depends, but here is a rough break-down:

  • Almost all standard working spaces, such as sRGB, BetaRGB, AdobeRGB, ClayRGB, and ProPhotoRGB, are matrix profiles.
  • Over at the ICC's website you can find lookup table versions of some of the standard working spaces. As far as I know, none of these lookup table variants have found their way into free/libre software distributions.
  • Your monitor profile might be a matrix profile, or it might be a lookup table profile, or you might even have one or more of each type.
  • Your general purpose camera profile is usually a matrix profile. A "special lighting, exact reproduction" camera profile is likely going to be a lookup table profile.
  • If you use Argyllcms to profile your professional-level printer, almost certainly, you made a lookup table profile.

But the sRGB profile says to use perceptual intent . . .

The rendering intent specified in the header of an ICC profile is the intent that is recommended to be used when converting from that profile to some other profile, not to that profile from some other profile. Furthermore, the sRGB color space profile is a matrix profile, so there's no perceptual intent table in the first place. Without a perceptual intent table in the sRGB profile, you simply can't do a perceptual intent conversion to sRGB (but see the gray box below).

Why image editing software defaults to "perceptual intent" when converting an image to the sRGB and other matrix profiles is anyone's guess. Perhaps offering all four intents and defaulting to perceptual intent is easier to program than examining the destination profile and only listing the intents that are actually supported. But regardless of the software defaults, and regardless of what conversion intent you choose, when you convert to sRGB you get relative colorimetric intent, with or without black point compensation, unless you choose the absolute colorimetric intent.

Update: in a V4 workflow (as of 2015, almost all free/libre software uses a V4 workflow, with Cinepaint and ArgyllCMS being notable exceptions), when converting between matrix ICC profiles, if you ask for absolute colorimetric intent, you get relative colorimetric intent. This was a controversial move on the part of the ICC that was designed to keep you, the user, from getting confused by unexpectedly seeing a blue (or other) color cast in the images on your screen. The negative fallout from this move is that you can't use your monitor to soft proof to your printer using absolute colorimetric intent. The next version of the ICC specs will hopefully addess this poorly thought out (in my opinion) decision on the part of the ICC (the International Color Consortium).

Regardless of which colorimetric intent you choose, any out of gamut colors are simply clipped to the surface of the very small sRGB color gamut.