skip to main content

The difference between "Convert" and "Assign"

In this article, an sRGB image composed of six color blocks is used to illustrate the difference between (1)converting the image to ProPhotoRGB and (2)assigning the ProPhotoRGB color space to the image. The resulting colors are also shown in the CIELAB reference color space.

Written sometime in 2010. Updated February 2015.

Create the sRGB Color Blocks image in the sRGB color space

Our starting image, the sRGB Color Blocks image, was created in the sRGB color space:
  • The image is composed of six blocks of color: very dull red, blue, green, magenta, cyan, and yellow.
  • The color blocks were created using the "RGB" numbers that you see printed at the bottom of each color block.
  • The numbers at the top of each block show the color's location in the CIELAB reference color space.
  • Just below the sRGB Color Blocks image, you can see where all six colors are located in the CIELAB reference color space.

Convert the sRGB Color Blocks image from the sRGB color space to the ProPhotoRGB color space

After converting the original sRGB Color Blocks image from sRGB to ProPhotoRGB, the colors will look the same, but the RGB numbers will change:

Left: The original sRGB Color Blocks image; Right: A new image, which I'll call sRGB Color Blocks after converting to ProPhotoRGB, was created by converting the original sRGB Color Blocks image from the sRGB color space to the ProPhotoRGB color space. As you can see:
  • Converting the image from sRGB to ProPhotoRGB "preserves colors", so the colors look the same before and after the conversion.
  • The locations of the colors in the CIELAB reference color space also didn't change.
  • After converting to ProPhotoRGB, the image RGB numbers did change. This is because RGB numbers take their meaning from the image's RGB color space. So converting an image to a new color space means the RGB values need to change.
  • As you can see, the color blocks look exactly the same before and after converting the image from sRGB to ProPhotoRGB. For example, we still have the exact same shade of green in both images. And as you would expect, the green color block CIELAB numbers are (55,-34,35) in both images.

    However, even though the colors look (and are) the same, the RGB numbers have changed. For example, in sRGB Color Blocks (above on the left), which is in the sRGB color space, the green color block's RGB numbers are (82, 147, 67). However, in sRGB Color Blocks after converting to ProPhotoRGB (above on the right), which is in the ProPhotoRGB color space, the green color block's RGB numbers are (89, 122, 64) — same shade of green, same CIELAB numbers, different RGB numbers.

    Although the point of an ICC profile color space conversion is to preserve the colors, whenever you convert an image from one color space to another, there's always a chance that not all of the original image's colors will survive the conversion unscathed. This is because different RGB color spaces have differently sized and shaped color gamuts. See What does "Clipped colors after an ICC profile conversion" really mean? for a nice example of "color clipping" upon converting a bright and saturated red flower image from ProPhotoRGB to sRGB.

    If the colors still look the same, what's the point of converting an image from one color space to another? The short answer is that different color spaces serve different purposes:

    Assign the ProPhotoRGB color space to the original (unconverted) sRGB Color Blocks image.

    After assigning the original sRGB Color Blocks image from sRGB to ProPhotoRGB, the RGB numbers will stay the same, but the colors will change:

    Left: The original sRGB Color Blocks image that was created in the sRGB color space; Right: What the image looks like after assigning the ProPhotoRGB color space to the original sRGB Color Blocks image.

    As you can see by comparing the two images:

    • After assigning ProPhotoRGB to the original sRGB Color Blocks, the colors change.
    • Assigning the ProPhotoRGB color space didn't change the RGB numbers. But it did change the meaning of the RGB numbers: all the colors got brighter and more saturated.
    • So as you would expect given that the colors changed, all the CIELAB numbers also are different. For example, in the original sRGB Color Blocks image (above on the left), the green color block CIELAB numbers are (55,-34,35). But after assigning the ProPhotoRGB color space profile (above on the right), the green color block CIELAB numbers are (62,-63,44).

    Sometimes you will see the phrase "assume a profile" instead of "assign a profile". When discussing ICC profile color management, the words "assign" and "assume" usually mean exactly the same thing.

    Whenever you assign a new color space to an image (or "assume" a new color space), the colors change more or less radically depending on the relative size, shape, white point, black point, tone reproduction curves, and etc that define the two color spaces. If you are a color management newbie, a lot of the terminology in the previous sentence will probably be unfamiliar. Most of the terms are explained in the Completely Painless Programmer's Guide to XYZ, RGB, ICC, xyY, and TRCs (despite the title of the article, it should also be pretty painless for non-programmers).

    There are many reasons why you might need to assign a new color space profile to an image:

    • For one example, not every image that you might encounter in your digital darkroom has embedded color space information. The only thing you can do in such a situation is keep assigning different color space profiles until you find the right profile ("right" being the profile that makes the colors look right to you).
    • As a second example, if your raw processing workflow requires outputting a raw color image file, then you'll have to assign a color profile before you can convert your processed raw file to a working space.
    • And as a third, more fanciful reason to assign a color space profile to an image, let's say you have an sRGB image and you want it to be instantly more saturated and you don't care about color accuracy. Assigning the ProPhotoRGB color space to your sRGB image will do the trick. (There are more reasonable variations on this scenario: you can create more and less saturated versions of a color space profile that only affect saturation, without making the colors look "wrong".)

    Notes

    1. I added noise to the Color Block images before using Cinepaint and Icc-Examin to diplay the location of the colors in CIELAB space; without the added noise, there was only six tiny dots, one for each color block, too small to easily see in an image prepared for the web.
    2. The two ProPhotoRGB images above (one converted to ProPhotoRGB, one assigned ProPhotoRGB) were both subsequently converted to sRGB for display on the web; otherwise these images would have been confusing to anyone using a non-color-managed browser.
    3. The colors you see on your monitor depend not only on the colors in the image, but also on the color gamut of your monitor profile and also on whether your monitor profile adequately describes your monitor. After assigning the ProPhotoRGB color space to the original sRGB Color Blocks image, the green and cyan squares (center) and the dark blue square (lower left) are out of gamut for the average LCD monitor. A wide-gamut monitor can accurately show the green and cyan squares, but still probably can't properly show the dark blue square. So for "ProPhotoRGB Assigned to the original 'Six sRGB Color Blocks'", for some of the colors what you see on your monitor is only an approximation of the "real" real-world colors.