Graeme,Thank you for this explanation. I guess the only remaining question for the benefit of my understanding is "what is more accurate" in terms of Argyll -- the B2A lookup (standard CMM method from PCS->Device) or this "Inverse A2B" lookup? From the charts I mentioned, it looks extremely similar given I have suppressed the K generation, etc so the values should essentially be identical with the exception of the compression/interpolation you explained below? It does not appear I can use the inverse lookup in anything other than Argyll, just the traditional B2A side of the profile. Thanks again for the assistance.
At 8:52 AM +1000 8/12/11, Graeme Gill wrote:
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 gridpoints 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 theICC 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.
--