[argyllcms] Re: "Development in progress" update

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Thu, 13 Jul 2006 12:26:13 +1000

Gerhard Fuernkranz wrote:

The same problem seems to happen with Adobe RGB as source color space too. And Adobe RGB is IMO not an unusual profile.

Hmm. Some people have commented to me that they think that Adobe RGB has a ridiculous green too. One story I've heard is that Adobe RGB was an accident, a cut and paste error when someone tried to create a Rec. 709 set of primaries starting with the old NTSC 1953, and forgot to edit the green. Rather than change the colorspace, Adobe just re-christened it. Hard to know if that is really what happened, although the numbers match the story.

For a device -> A2Bx -> PCS -> B2Ax -> device conversion between two profiles, the ICC spec requires clipping in the PCS if necessary (and it may be indeed necessary if the src profile has a XYZ PCS and the destination profile has a Lab PCS, because only a limited L*a*b* range can be fed into the B2Ax table of the destination profile). However this applies to a "dumb" transformation, where che CMM just applies the A2B and B2A tables. But is there necessarily a need to enforce a +/-128 range when creating a gamut mapping devce link with "icclink -G ..."? (As the mapping is established in CIECAM02 space, I guess, CIELAB is not even involved, is it? And colors which are still out of gamut after the gamut compression are clipped to the destination gamut anyway.)

I've seen the introduction of "must clip" wording in ICC V4, but I'm not convinced it's wise to do so, and I'm certainly not convinced it's wise to do this on a per component basis. I haven't set out to do such clipping, and certainly the "smart" mode of Argyll doesn't do such clipping as far as I know. If the profile represents colors in XYZ, then they will be converted to Jab, they won't be clipped through L*a*b* PCS, and in being converted through the output profile value will be clipped to the output device gamut. Icclib won't allow writing of non-representable values, but it errors rather than clips.

This particular error was to do with creating the Colorant Tag (New
in this release of Argyll). In a device profile there will be one,
and the PCS values of each colorant will be in the PCS of the profile,
which could be XYZ. For device links there are two colorant
tags, one for the source colorspace, and one for the destination.
Since a device link doesn't have a PCS to follow, the spec. says
the colorant values shall be in Lab, hence the XYZ to Lab clipping
problem.

Graeme Gill.


Other related posts: