[argyllcms] Re: LUT versus XYZ monitor profile

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Wed, 23 Dec 2009 14:19:58 +1100

OK, OK, I give in.

It seems that too many other CMM's go out of their way in rejecting a perfectly
good XYZ cLUT display profile because it doesn't have matrix tags (ie. Windows
Vista, although I understand it's using the very old Heidelberg CMM for V2
support, which may explain its lunacy.).

The V2 ICC spec. is contradictory on this point. It lists the matrix tags
as "required" for display profiles but then says they're not actually
required if Lab cLUT tags are included. So, many CMM's seem to reject
XYZ cLUT display profiles without matrix tags even though:

        They're not going to use the matrix tags anyway
        (and the whole point about tag file formats is
         to ignore tags you don't use!)

        They don't reject the profile if it's got
        Lab cLUT tags and no matrix tags.

        They couldn't reject an XYZ cLUT display profile with no
        matrix tags if the device has (say) 4 channels, since
        matrix tags can't be used on other than 3 channel devices.
        (And yes, there are 4 channel display devices like the DLP's
        that have RGB and White).

        The V4 spec. specifically clarifies this V2 contradiction
        by stating that matrix tags are optional for display profiles,
        so CMM's are are rejecting just ICCV2, 3 channel, XYZ cLUT display
        profile with no matrix tags that they aren't going to use anyway.

In other words, they've made a very special case out of
rejecting such profiles for absolutely no good reason!

[This mess is, like many others, probably due to the ICC
 spec. being an evolution of the original ColorSync, which
 originally only supported matrix display profiles. cLUTs
 were added in latter, and not fully merged into the existing

What I'll do for XYZ cLUT display profiles is to (by default)
add a dummy set of matrix tags that produce an obviously wrong
set of colors. This way it won't take any extra time to generate
the matrix tags, and it will be obvious if the CMM is not using
the cLUT. As an option I'll allow creating a valid set of
matrix tags (although the white and black points will be from
the cLUT, and so will not match the matrix model perfectly,
hinting at more issues with trying to include both matrix tags
and cLUT tags) for situations where a matrix fallback is needed
(ie. different capability software can make best possible use of
the profile).

Graeme Gill.

Other related posts: