Pangram verdict · v3.3
We believe that this document is fully human-written
AI likelihood · overall
HumanArticle text · 1,875 words · 6 segments analyzed
Will the Real sRGB Profile Please Stand Up? I compared 15 matrix sRGB profiles and found quite a bit of variation from one sRGB profile to the next. On this page I explore the differences between the various sRGB profiles and I point out the practical digital darkroom consequences. Even though Hewlett-Packard and Microsoft proposed the sRGB color space as a way to eliminate color management in a consumer-oriented workflow, today you need color management just to manage the proliferation of sRGB profiles. This comparison is limited to variants of the original sRGB matrix profile, which should not be confused with the color.org V4 lookup table "sRGB" variants, confusion over which could have been avoided altogether if color.org had not decided to use "sRGB" as a sort of lump term to refer to several manifestly different profiles. Written June 2012. Updated February 2015. Fifteen sRGB Profiles Compared Top to bottom: Gimp, Krita, Cinepaint, and ShowFoto, all offering to assign a built-in sRGB profile to an untagged image. Will they assign the same profile? Unfortunately, no. Each software has its own version of sRGB. When you open an untagged (no embedded profile) sRGB image, do you allow your editing software to assign the software's built-in sRGB profile? I always did, until recently. However, it came to my attention that different image editing software packages use different versions of the sRGB color space. Once I started looking, I found fifteen different sRGB profiles on my computer, and with the exception of Cinepaint and RawStudio, none of them was an exact match to any of the others. Where the fifteen sRGB variants came from Some of the sRGB variants that I compared were extracted (using the ArgyllCMS tool extracticc) from an untagged image file in which I asked the imaging software to embed its built-in sRGB profile (Cinepaint, Krita, ShowFoto, and a "mystery profile"). Some were extracted from files produced by raw processing software, after saving the interpolated image in the raw processor's built-in sRGB color spaces (DarkTable, dcraw, UFRaw).
The remaining sRGB variants were either downloaded from the internet (the LCMS, color.org and Scarse variants) or were installed as sRGB ICC files as part of installing a software package (Argyll, Photivo, RawStudio, and RawTherapee). I hesitated to include the mystery profile in my survey of sRGB profiles, as it came from a software package development version and I can no longer repeat the steps I took to extract it. But it is such a peculiar and instructive version of sRGB — it was in fact the variant that prompted this comparison — that I'm including it anyway. Table Summary of the sRGB profile comparison Having collected the fifteen profiles together, I examined them using the ICC Profile Examiner and xicclu, and then created an sRGB profile comparison spreadsheet that shows each profile's white point, black point, XYZ and xy values, and Tone Response Curve. I used the ArgyllCMS sRGB profile as a baseline for profile comparison. The table below summarizes my findings: sRGB Profile Comparison RGB XYZ Group Bradford-Adapted Profile white point Tone Response Curve Profile black point Built-in or File V2 or V4 ArgylLCMS (V1.4.0) 1 Yes D65 sRGB-1024 yes - zero software file V2 Cinepaint (V1.0-0) 4 Yes D65 sRGB-1024 no built-in V2 Color.org, black point scaled 3 Yes D50 sRGB-1024 yes - non-zero downloaded file V2 Color.org, no scaling (color.org no longer supplies this profile) 3 Yes D50 custom-1024 yes - non-zero downloaded file V2 DarkTable (early 2012) 4 Yes D50 sRGB-V4 no built-in V4 Dcraw (V9.12) 2 Yes D65 gamma=1.933594 yes, zero built-in V2 Krita (V2.4.1) 4 Yes D50 sRGB-V4 no
built-in V4 LCMS 3 Yes D65 sRGB-1024 yes, zero software file V2 Photivo (2012-05-25) 3 Yes D65 sRGB-1024 yes, zero software file V2 RawStudio (V2.0) 4 Yes D65 sRGB-1024 no software file V2 RawTherapee (V4.0.9.2) 4 Yes D65 sRGB-4096 yes, zero software file V2 Scarse 2 Yes D65 gamma=2.199219 yes, zero downloaded file V2 ShowFoto (V2.5.0) 3 Yes D65 sRGB-1024 yes, zero built-in V2 UFRaw (V0.18) 4 Yes D65 sRGB-1024 no built-in V2 mystery profile 5 No D50 Custom-256 yes - zero built-in V2 As a very important aside, free/libre software changes quickly and in 2015 some of the software in the above chart is no longer using the same sRGB profile as was used in 2012. So take this chart as a snapshot in time and don't assume that Krita or Cinepaint or Darktable or etc are still using the same sRGB profile variant in 2015, as they were using back in 2012, when I did the sRGB profile comparison. For example, I know for a fact that the latest versions of Krita and darktable are no longer using the same sRGB profiles that they were using back in 2012. Profile Differences and Practical Consequences Different profile RGB XYZ values When applied to an image, an ICC matrix profile's Red, Blue, and Green XYZ values determine the resulting colors. If you examine the spreadsheet, you will see that there is considerable disagreement between one sRGB variant and another, but the RGB XYZ values fall into five reasonably distinct groups of profiles: ArgylLCMS dcraw and Scarse don't agree with each other or anyone else, but their respective RGB XYZ values fall between the first and third group.
The LCMS profile, the two color.org profiles, plus Photivo and ShowFoto exactly agree with each other on the RGB XYZ values, but they differ from ArgyllCMS values in the fifth decimal place. Cinepaint, DarkTable, Krita, RawStudio, RawTherapee, and UFRaw agree closely or exactly with one another, but they differ from ArgyllCMS values in the fourth and fifth decimal places. The mystery profile differs from all the other profiles in the second decimal place. Except for the mystery profile (see Bradford adaptation below), visually you would be hard-pressed to see any difference between one profile and the next, when applied in turn to the same sRGB image (discounting variations in tonality caused by different profile Tone Response Curves, discussed below). However, Cinepaint, Krita, and RawStudio have exactly the same RGB XYZ values and also the greatest difference from the ArgyllCMS RGB XYZ values. So I devised a procedure to see where the color differences might be greatest between the Argyllcsm sRGB profile and the Cinepaint/Krita/RawStudio sRGB profiles: I added additional saturation to an already colorful sRGB image. I applied the ArgyllCMS version of sRGB to the original image and saved under a new name. Then I applied the Cinepaint version of sRGB to the original image, saved under a new name, and then converted the image to the ArgyllCMS version for comparsion. If the two profiles were identical, the conversion would be a null transaction, except for any rounding error in the conversion routine. Then I used the "difference" blend mode in Gimp, followed by flattening and an extreme levels adjustment, to compare image color differences resulting from variations in the respective profile RGB XYZ values. On the left: An overly saturated rendition of an already colorful scene. On the right: Location of the colors in the image that are most affected by the differing ArgyllCMS and Cinepaint/Krita/RawStudio sRGB XYZ values. The red splotches correspond to saturated greens and cyans in the original image.
This image has a lot of saturated colors (even before I added additional saturation), covering not only reds, greens, yellows, and blues, but also cyan (more or less equal parts blue and green) and magenta. I gave the image additional saturation because the less saturated a color is, that is, the closer it is to being gray, the less of a difference there is when applying different icc profiles. Practically speaking, it turns out that the only colors that show any difference between the ArgyllCMS and Cinepaint sRGB profiles are the saturated cyans and greens, and you would probably never see the differences just by looking. So unless you are photographing a lot of saturated cyans and greens (in which case you shouldn't be using sRGB anyway, as the sRGB color gamut is particularly weak in cyan and green), which sRGB profile you apply won't make a perceptible difference in your sRGB image colors, as long as you avoid variants that don't use a true sRGB tone curve or haven't been Bradford-adapted to D50. Bradford adaptation (or lack thereof) All of the sRGB variants except the mystery profile agree on the RGB xy/XYZ matrix values at least in the first three decimal places. The table below gives RGB xy values to three decimal places for the mystery profile and for all the other sRGB variants (xy values are derived from XYZ values): xy values Red x Red y Green x Green y Blue x Blue y Mystery sRGB 0.640 0.330 0.300 0.600 0.150 0.060 Other Variants 0.648 0.331 0.321 0.598 0.156 0.066 If you are up on your color management you probably know exactly where the differences between the mystery profile and all the other profiles come from: unlike all the other variants, the mystery profile yx/XYZ values have not been Bradford-adapted to the standard D50 environment. From a theoretical point of view, Bradford adaptation accounts for the fact that colors look different, depending on the ambient lighting. Think about the warm glow of candle light, vs the cold, drab colors you see on a rainy day.
From a practical point of view, applying an sRGB profile variant that has not been properly Bradford-adapted to the ICC standard D50 environment changes the resulting image colors pretty drastically: Left: ArgylLCMS sRGB variant, with correctly Bradford-D50-adapted XYZ values. Right: Mystery profile, with unadapted XYZ values and hence an incorrect bluish color cast. Applying the ArgyllCMS sRGB profile, with properly Bradford-D50-adapted XYZ values, produces the (correct) image on the left. Applying the mystery profile, with its unadapted XYZ values, produces the (incorrect) image on the right. If your sRGB images have an unexpected blue cast, you might have run into an unadapted version of sRGB. Different profile white points Note: this section presumes a V2 workflow. V4 workflows don't respect the way V2 profiles were designed to work. The original sRGB color space profile proposed by Hewlett-Packard and Microsoft back in 1996 had a D65 profile white point. The two color.org profiles, DarkTable, Krita, and the mystery profile all use a D50 white point. The other variants all use the D65 white point. From a practical point of view, applying two profiles that are identical except for the profile white point doesn't make any difference. Likewise, in a V2 workflow, when converting from one profile to another, as long as color space conversions are done using the relative colorimetric intent (rather than absolute colorimetric intent), the results will be the same (disregarding color gamut and black point issues, of course), regardless of the source and destination profile white points. Left: Assign the Argyll sRGB variant (which has a D65 white point), convert to BetaRGB (which has a D50 white point) using the relative colorimetric intent (at which point the image will still look exactly the same as before the conversion), then convert back to the Argyll sRGB variant, but this time using the absolute colorimetric intent, at which point the image acquires a yellow color cast (scroll up to compare to the original, correct image).