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
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:
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:
- As one example, your camera input profile describes your camera. But camera input profile color spaces tend to be huge (far too big for 8-bit editing). Also usually camera input profiles are not well-behaved and therefore not suitable for use as a working color space for image editing. So if you shoot raw, you need to convert your processed raw file from your camera input space to a well-behaved working space (usually this happens automatically and you don't need to think about it, unless you make and use a custom camera input profile).
- As a second example, if you choose to work in a larger working space such as ProPhotoRGB, eventually you'll need to convert from ProPhotoRGB to sRGB before displaying your image on the internet or sending it to many commercial digital printers.
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:
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".)
- 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.
- 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.
- 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.