There are multiple ways to interpret a number as a speed: “65” in miles/hour is highway cruising speed, but “65” in knots on the highway is a speeding ticket, while “65” in kilometers/hour is only half that speed. “65” in meters/second is a category-4 hurricane, and “65” in Mach is faster than a meteor.
Clearly, when discussing speed, it's important to know not only the raw number, but also the scale in which to interpret it.
When it comes to representing color, the digital-image version of this kind of scale is its color space. A digital-image file is made up of raw numeric data — data that is not “color,” but numbers representing color. There are actually many different ways to represent color with numbers in an image file; if an application processing an image file doesn't know which scale was used in creating the image's raw numeric color data (and if it isn't able to guess correctly), it doesn't know how to properly recreate the color when printing or displaying the image. The result is an image with wrong colors, like a TV whose “tint” setting is way out of wack.
Here's an example (me and my son, neither of whom are supposed to be green!):
Color Data Properly Interpreted |
Color Data Misinterpreted |
So, a color space is a set of parameters that describe how to convert between numbers and real-world colors. Different color spaces mean different conversions: different real-world colors from the same number, or different numbers from the same real-world color. The technical details are discussed later in the article; for the moment, just consider them abstractly.
File Formats are an Unrelated Topic
To be clear, the concept of a color space is different from a file format. Many image file formats (such as JPEG, TIFF, DNG, etc.) have the ability to use different color spaces — different ways to encode the image color — for their raw numeric data. You can think of a file format as being a standard for how to arrange image data (“such-and-such metadata is allowed, the image is composed of lines of pixels arranged this-and-that way, using such-and-such compression and interleaving....”) and a color space describes how to interpret the per-pixel data into light.
Using music files as an analogy, the “sound space” would be a set of parameters such as the minimum and maximum frequency that can be encoded, the range of amplitudes (volume) that can be encoded, and the mathematical parameters for how the smooth range of encodable real-world frequencies and amplitudes are converted to discrete, raw numeric data.
The most commonly-used color space is called “sRGB,” which has one overwhelmingly important characteristic: it's the most commonly-used color space. Just about every scanner and digital camera can produce images with sRGB-encoded color. Just about every image-handling device (like printer) and color-aware application (photo editor) can handle images with sRGB-encoded color. In fact, it's the de facto default color space for image input and output of most devices and applications (at least those that understand color spaces). It's the official default color space for the World Wide Web.
The ubiquity of the sRGB color space is really quite convenient.
Because things that produce images (digital cameras, scanners, image-editing software, ....) are on the same color-space wavelength, so to speak, as many things that process or display images (printers, image-viewing software, ...), colors are generally encoded and decoded reasonably well. What you see is not only what you get, but what you're supposed to get.
So, in the face of this overwhelming ubiquity, why would anyone even bother using a different color space for a digital image? (That is, a different method to encode colors with numbers within the raw image data?)
For technical reasons discussed later in this article, the design of a color space necessarily involves tradeoffs among various aspects of image quality. For example, it might be surprising to learn that it's impossible for a color space to represent all the colors that a human eye can discern, and so some subtle shades must necessarily be omitted (if an image's true color is one of the omitted shades, the encoded color becomes one that's close — usually very, very close — to the true color). So, which shades are included and excluded is one aspect that makes a color space more or less appealing to certain users or artistic tastes.
The next page of this article offers a few more technical details about color spaces and their relative merits, but the main point of this article is merely to introduce the concept of color spaces — ways to convert colors to and from raw numeric data — and why it's important for the photographer to know about them.
When a different color space is used to encode the raw image data, the resulting data is still just a bunch of raw numbers, so how does a printer or application know that it should consider it in the light of something other than sRGB (or whatever its default color space is)? The answer is usually found in the form of an embedded color profile.
A color profile for a color space is the aforementioned set of parameters that describe the color space, arranged in a standardized way so that they can be communicated along with an image. It can be embedded within a digital image file as metadata, along the same lines as how the date and time are included with the image. This conveniently allows a printer, image-display software, or other color-aware device/application that receives the image file to know the particulars of the color space so that it can properly decode the colors. (If an image doesn't have an embedded color profile, most devices go ahead and decode the colors using the parameters of the sRGB color-space.)
Without the proper color profile associated with the color space used to create the image data, applications don't know how to decode the color data. This results in mixed up or “off” colors, like the “color data misinterpreted” image shown above. That example, by the way, is not a simulation, but an image that looks perfectly normal when interpreted using the proper color space. To ensure that you'd see the wrong colors, I manually removed the embedded color profile from the image file, knowing that your browser would then misinterpret the color data.
Color Profiles Don't Always Get The Respect They Deserve
You might be surprised to find out what happens when I do go ahead and include the proper color profile along with the image, as I do with the middle image here:
Correct |
Correct or Wrong? |
Wrong |
(For your reference, here is the color profile for the color space used for the center and right-side images.) |
Does the middle image look okay or wrong? It depends on how colormetrically-enlightened your browser is:
Middle Image Looks Okay: your browser recognizes and respects an image's embedded color profile. Congratulations!
Middle Image Looks Wrong: your browser does not recognize or respect an image's embedded color profile. How unsociable!
And herein lies the problem: many browsers are not “color managed” applications, meaning that they do not know how to recognize or understand color profiles.
We'll talk much more about color management later, but first let's look at just how wrong the colors can be in a real-world situation. When creating the sample images shown above, I purposefully used a color space wildly different from sRGB — one that I made up just for this purpose — so that the “wrongness” would be exaggerated and obviously apparent at first glance.
The next page of this article shows a variety of photos encoded with real-world color spaces (color spaces named AdobeRGB, ColorMatch, ProPhoto, WideRGB, and AppleRGB) but without an embedded profile, allowing you to see real-world effects of misinterpreted color.
Continued on the Next Page
This article continues on Page 2: Test Images.
i got to your article through a link at dpreview forum
article is very clear, thank you. greets from italy
augusto
This article is by far the best explanation of these issues I’ve seen on the web. Saves me from having to write one up myself. Thanks!
Great article Jeffrey, thanks for the clear, detailed explanation… This has actually helped me solve a display problem with a digital camera project I am working on.
Thanks for your great article. I don’t remember ever reading a better one on the subject. Your article is very informative *and* accurate! Many people write so much rubbish about color spaces, and don’t even sense their own misunderstanding of the subject!
This is an excellent read. I’m dealing with multiple browsers and platforms that are calibrated yet I couldn’t get my images to look ‘right’ in non managed applications. I think I’m starting to understand.
Well done!!!
Examples at
http://regex.info/blog/photo-tech/color-spaces-page2/
are impressive. I didn’t know color spaces are SO different.
A small comment –
“65” in kilometers/hour is only half that speed – a kilometer is a little bit bigger.
Your visitors from Europe can be disappointed.
“Suggestions for Online Image Hosting Services” – I need to ask more questions. What is the best way to do that?
Extremely informative article, well reserched and clearly presented. I for one am thankful Jeffery took the time to share his expertise. This explains many of my color space, camera and printing questions.
Thanks,
I was pointed to your article when I was venting about how I couldn’t get my pictures to look good on the web. 🙂 Very helpful!
“Without the proper color profile associated with the color space used to create the image data, applications don’t know how to decode the color data.”
I never include a color profile with files I send out for printing. I’ve been advised by the printing service NOT to embed a color profile. The results I get are excellent.
Embedding a color profile is only one way to associate the proper profile with an image. Other methods include notating the color space in the Exif metadata (digital cameras do this), or by mutual agreement as you and your printing service are apparently doing. I would suspect that you’re sending them sRGB and that they’re expecting sRGB. Try converting a copy of an image to, say, ProPhoto and have them print it, and I’m sure you’ll see a huge difference due to the color-space mismatch when you get it printed. —Jeffrey
Excellently written explanation, clarifies a lot of issues -thanks !
FYI you are referenced in this Flickr stream too (though I’m sure the G machine keeps track)
http://www.flickr.com/photos/jurvetson/2049038298
Cheerios
nycandre
It’s people like you who make small sections of the net worthwhile and informative when visiting… welcome to my bookmarks!
Excellent material — I think I’m finally beginning to understand this stuff. Some related questions:
1) I’ve noticed that Lightroom 2.0 recommends that images are edited in Photoshop with ProPhoto RGB due to its larger gamut. I have my WorkSpace set at AdobeRGB (and I convert to sRGB for saving to Flickr with your excellent plugin – thanks!), and was wondering what the relative pros/cons are about setting my WorkSpace to ProPhotoRGB?
Personally, I leave my workspace set to the native workspace of the image, to avoid color-space conversions. If I want to change it for some specific reason, understanding what happens with the conversion is part of the decision.
2) When your Lightroom 2.0 plugin exports to Flickr, I am assuming that it embeds the requested sRGB profile in the file — is that assumption correct?
and finally,
Images exported from Lightroom have the appropriate profile appended, unless you explicitly strip it with something like my Metadata Wrangler plugin.
3) I have an xRite i1 colorimeter for my LCD monitor. For a while I used to set my Adobe Creative Suite WorkSpace to the i1 generated profile. But I’m now thinking that this is incorrect. I should be setting my WorkSpace to AdobeRGB or ProPhotoRGB, and the colorimeter automatically only affects my monitor profile so that it can correctly interpret the files I am using with Photoshop, Lightroom, etc. Is that right?
That’s correct. A monitor profile is used only for a monitor. sRGB, AdobeRGB, ProPhotoRGB, etc., are device-independent profiles. —Jeffrey
Thanks so much for your excellent writing and work.
Nick
Great article. I didn’t realize it was so complicated.
wonderfull, i feel like a genius because I understand but it is because it was explained so well. Is there a reply to the question posed by NickP? i live in France.
Oops, I let his question slip by… I’ve just gone an added my thoughts. —Jeffrey
The problem is that Windows browsers are as color-clueless as they come. To my surprise even the new Internet Explore 8 does not recognize imbedded profiles. They simply throw the raw RGB numbers at the screen with no interpretation. Most monitors have a color range that is somewhere in the vicinity of sRGB. There have been several discussions in different forums regarding color management for web images. You can find some comment on http://www.ekdahl.org/kurs/colormanage.htm
Fantastic explanation, thank you. Maybe you can help me with a problem I am having. My HTML website displays sRGB images correctly on my calibrated wide gamut monitor. This I believe is because the ICC profile is embedded in the image telling Safari to display it in sRGB. But, with flash the ICC profile doesn’t seem to be attached to the image and so Safari doesn’t know what to do and tries to display it with it’s default setting ~ the monitors ICC profile. In this case on my wide gamut monitor which has a much larger colour space resulting in the image in Safari looking overly saturated in red.
Do you know a way around this?
I read saving your images in your calibrated monitors profile is a work around?
Does Flash CS5 embed ICC profile now? Would that resolve this?
Last I heard Flash has no color management. Saving images with your monitor’s profile square-pegged as a device-independent profile will work perfectly for everyone on earth that’s exactly you, but no one else. Only way I know of to get a color-managed browser to match up images in HTML and Flash are to strip all color profiles from the images, because Flash treats them that way, and so the result ends up being random, but equally random for all situations. —Jeffrey
Yes, I thought that might be the case with applying the monitors profile. And I’ve seen posts on various forums advising to strip all colour profiles.
I ask as I would like to replace my HTML site with a new Flash site. Is there is no way to get the same colour accuracy with Flash as with HTML? I just seems so crazy?
Last I paid attention (a few years ago), Flash was not colormanged, so that’s just one more in a long list of reasons why Flash is not appropriate for internet web sites. (Intranet sites, where one entity controls all content consumers, is quite a different beast). I own stock in Adobe so it’d be great for my pocketbook if everyone flocked to Flash, but as a user I despise it on Internet sites. —Jeffrey
Much appreciated Jeffrey, curiously billy-kidd.com flash website doesn’t have this colour problem? I do not believe it is an intranet site. Having gone through forums for the last two days, torture BTW, the only thing I can find is that CS5 states it can now embed IIC profiles. However, it doesn’t explain what this feature is and whether this will resolve this issue. If I find out I will let you know!
Thank you
Justin
This is brilliant. Thank you so much. I have had a huge headache over color management that is slowly abating as I read this wonderful series of articles. Bless you.
Amanda in SoCal
Answers. Flash sites can be coded to display sRGB ICC profile correctly on colour managed browsers such as safari without effecting browsers such as internet explorer which do not colour manage.
You need flash site built with actionscript 3 for flash player 10. Then add following to beginning of site and it will correct colour managed browsers, even on wide gamut monitors:
“if (stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_ON || stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_OFF) stage.colorCorrection = ColorCorrection.ON;”
Explained in more detail here:
http://www.adobe.com/devnet/flash/quickstart/color_correction_as3.html
Hope this helps!
the link to the icc color profile is broken
Yikes, not sure how that happened. Thanks for the heads up. Fixed. —Jeffrey
Hi! I just discover your blog through your “exif viewer” page and I just realise that I may have some color profile problems in my workflow… The software that I use to convert my tiff files to jpg does not keep image color profile in the final file, and the most strange is that even when I convert directly a raw file in jpg with Canon DPP (with the “include icc profile” box checked) , exif viewer tells me :
“WARNING: Embedded color profile: “Z009”
Some popular web browsers ignore embedded color profiles, meaning users of those browsers will see the wrong colors for this image.
STRANGE: The embedded color profile differs from the metadata tags (sRGB (EXIF:ColorSpace)).”
notice that sRGB is really the profile configured in my camera settings and DPP default settings…
How can I understand that?
Thanks for your very interesting blog and beautiful photos!
Oh, I didn’t saw that the ICC profile is at the bottom of the page and must be extended to be seen.
Actually on a photo directly edited in jpg by DPP, it is written that Z009 is the device model (?) and near the the bottom of the block there is “Profile Description” > sRGB v1.31 (Canon).
But at the top of this block, above the data, it is written “A profile by Canon that claims to be an sRGB color profile, but is actually slightly different.”
It is less clear to me… :-\
I don’t recall what was different about it (and silly of me for not keeping track of it), but it’s likely something not particularly important. Try comparing it with a different sRGB profile to see what’s different, I guess. —Jeffrey
Hi, would it be that we have to set our DSLR camera at sRGB and NOT Adobe
It’s best to set it to raw. —Jeffrey
Further to your response, the reason for my query is that the printer that Zenfolio use requires that anything sent to them has a set profile in order to get the very best out of the images. If I get the stuff as good as I can on a colour corrected screen, apply the profile then upload it, the printer should produce an image for my clients that matches my screen.
I know that clients looking at the image will get see a result which is not perfect, but for most it will be good enough – I have looked at the images pre and post profile and although there is a difference, it is minor, thus my thoughts
Okay, I see, it may be that my initial response was ignorant, sorry. If Zenfolio passes your original uploads directly to the printer as is (while still converting to sRGB for web display) and the printer actually pays attention to the color space, that would be exceptionally clueful. I host my images on my own blog so haven’t paid close attention to these details at Zenfolio, but if you install the color profile from the printer to your system and restart Lightroom, the profile should appear in the “File Settings” section of the export dialog. Selecting it may trigger a warning in the “Zenfolio: Upload Destination” about a non-sRGB color space, but if so just go there to override it because you clearly understand what’s going on. —Jeffrey
Thank you for this article, the beautiful photos and the helpful plug-ins.
You and/or others may also be interested in this page:
RGB-to-XYZ and XYZ-to-RGB matrices http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html#WSMatrices
http://www.brucelindbloom.com/index.html
and this article which provides a 3D visualisation as well as a method to create it:
http://www.photo-mark.com/notes/2013/mar/13/color-theory-blender/
Hi, great app.
When I add a file and I hit view image from file I get the following:
Under ICC_Profile — this block of data describes the color space used to encode pixel colors
In that information it lists the profile date time. What does that date time mean? Is it the actual time the image was taken?
Writing from Cheney Washington home of Eastern Washington University.
Thanks,
Brian
No, it’s the date/time the profile was made, which is not very useful for much. It’s like a notation in a book describing when the ink was made. —Jeffrey
Hi
Thanks for your article. I came to your page on color spaces because of a problem in my latest download of Ubuntu. I saved a screenshot of my wife’s desktop in Vista, with a cute picture of our granddaughter. When I opened this picture from my mail, it looked beautiful in Chromium and in Chrome. When I looked at it in Image Viewer, it did not look very good at all: skin tones a very green colour.
I looked up your article. I am on page 1 only. I decided to look at it in Firefox on the Ubuntu. Even the “correct” pictures look wrong.
I booted up Windows Vista and looked at it in Firefox. Looks good, probably as you intended.
On to page two: On page two, with the first image, using the embedded profile:
Ubuntu Chrome shows all the images the same, basically, orange-red leaves
Firefox shows the embedded pictures all the same, but wrong! Very green leaves.
My conclusion? I have played with the profile of Ubuntu 14.04.1 and it is wrong itself. Chrome has its own profile, where Firefox and image viewer are using the basic desktop profile.
Wow. A firm grip on colorspace theory has eluded me for so long, and now i finally see the light! Well, most of it (pun intended).
Some niche publishers i’ve dealt with require images to be cmyk encoded. Am i wrong to think that this makes as much sense as sRGB-encoding my sons crayons?
I don’t have a lot of experience with print, but it’s my understanding that with some printing techniques, CMYK is how the actual ink is laid down, so any printing via that method must, at some point, have its color data converted to CMYK. If this is the case, it makes sense that the publisher requires CMYK so that you, the artist, have the responsibility to make the conversion as you see fit. —Jeffrey
Hi!
But wouldn’t you need a CMYK profile to know the characteristics of the ink laid down?
Yes, ideally, one created for the specific printer/ink/paper combination. —Jeffrey
Hi Jeffrey!
(I am writing from Budapest, Hungary, Europe.
Thank you for this excellent introduction to digital image color spaces. I found the possibility to see the test picture with and without embedded color profiles in different color spaces very interesting, informative and amusing. 🙂
I heard about color profiles before, but did not understand the topic well. You were able to describe this topic in a way that is informative, clear and interesting at the same time.
Congratulation and thank you.
Kind regards,
Gyula
It’s a great read! I recently started working with images in Photoshop and this gives me some perspective. I have been focussed on file format so far and coloring spaces concept is an eye opener.
I am working on ARW images . I couldn’t find color filter array (CFA) pattern of ARW. I know it is in bayer’s format. But i couldn’t confirm cfa from it’s site or any where else. How can is check it’s cfa ??. All results are in black and white. I want correct cfa and exif tool not giving it also. ‘camera model – sony ILCE-7SM2’ .Your tool working for DNG images but not for ARW images . Thank you for tool and help will be appreciated .
I’m sorry, but I’m not at all familiar with that camera or format. )-: —Jeffrey
super great !