Help required: Getting primary illuminants and white point from ICC file

Graeme Gill graeme2 at argyllcms.com
Wed Dec 2 00:19:40 UTC 2009


Richard Hughes wrote:
> Attached is the new widget I've just added to gnome-color-manager git
> master. It allows us to show the user a preview of the gamut range of
> the profile in a graphical way, much like OSX does.

Professor Hunt would be jumping up and down in the first row at this
point saying "Why are you using an XYZ chromaticity diagram ?" :-) :-)
[Those who have been to the Color Imaging Conference will understand this.]

Actually if you're wanting to plot Yxy values then it's appropriate,
but I'll note that it's also very misleading in indicating gamut,
since an xy diagram is highly visually non-uniform. A u' v' plot
is a better choice to illustrate gamut, while still being linearly
additive.

> So, the point of this email: I wanted to get the CIE x and y
> coordinates (or XYZ of course) of the three primary illuminants and
> the x and y coordinates of the white point from the device ICC
> profile.
> 
> Is there an easy way to extract these end-point values from the ICC
> file? I guess mediaWhitePointTag is the latter half of the problem,
> but I'm not sure how to deal with the LUT values. Ideas welcome.

The white point is in the white point tag (but see my final note).

For a matrix profile the D50 adapted primaries are in the
red/green/blue ColorantTags.

For a cLut based profile, you would have to (as Lars Tore Gustavsen
suggested) run the primary values through the profile (or
do the equivalent of looking up what the cLUT values are at
the primaries).

Note a complication - you probably want the absolute colorant
values, not the D50 adapted white ones. You need to undo the
chromatic adaptation applied to the colorant tags, and/or do the
lookup in absolute colorimetric intent mode.

Note also that while absolute colorimetric interpretation
of display profiles is perfectly consistent using Argyll/icclib
based tools (and is consistent with the original sRGB and current
AdobeRGB profiles), it probably will not be so for all other libaries
and tools and profiles.
This is due to a disagreement about the interpretation and intent
of the ICC specification in this regard. Some display profiles
have a white point tag of D50 even though this is not the white
point of the display, and encode the absolute<->relative
transformation in the ChromaticAdapation tag, meaning that
the absolute white point and colorant values are not obtained
using a normal absolute colorimetric lookup on these profiles.

This latter interpretation is the one that has been adopted in the
changes made for ICC V4 profiles, even though it is out of sync
with much original ICC V2 practice.

Graeme Gill.







More information about the gnome-color-manager-list mailing list