[argyllcms] Re: B2A vs Inverse A2B?

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Fri, 12 Aug 2011 08:52:29 +1000

Jason Campbell wrote:
> My goal is a CMY-only profile with absolutely no K generation which appears
> to be happening.  However I realized if I round-trip a CMY of 100/100/100
> from CMY->Lab->CMY, I was getting a clipped value (roughly 98/97/95).  If I
> test CMY 50/40/40 my round-trip is extremely close to the input values.

Hi, this is difficult with a cLUT based profile, without going to some
heroic efforts. The reason is that the reverse grid is (naturally!) discrete,
so the edge of the device gamut typically falls within a cell. The cell grid
points can only contain the device values, and to return an interpolated value 
of exactly
100%, some of the grid points would have to exceed 100%. This is forbidden by 
the
ICC device value encoding which only allows values between 0 and 100%.

By playing tricks with the per channel curves it is possible to overcome
this limitation, but extra code would be needed to compute extrapolated
values beyond the gamut boundary, such that gamut boundary points
are at 100%. I've never got around to implementing this approach, because
typically this slight gamut compression at the boundaries is not
unwelcome, and if better precision is of concern, a device link is
superior.

You can minimise this effect by ramping up the grid resolution,
but you pay a price in the resulting computation time and
profile size.

Graeme Gill.


Other related posts: