[argyllcms] Re: interpolation reversibility

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Sat, 05 Nov 2005 07:16:44 +1100

Roberto Michelena wrote:

Let me ask this which has been floating on my mind for some time:
When you do a reverse interpolation (as in your -G option), will it be
100% coincident with it's corresponding forward one? In other words,
Lab->CMYK->L'a'b will result in perfect match between Lab and L'a'b
when both are made from the same table (A2B), using the reverse
mapping method as in "-G" option?

Generally, yes. The assumptions for this to be true are:

        The forward interpolation is using simplex (Tetrahedral in 3D).
        The point is in gamut.

Obviously for CMYK there are almost always multiple solutions, but all the
solutions will be a PCS match if it is in gamut.

One of the main limitations of all this profiling stuff is that it
is all using sampling, with the assumption that things are "well behaved"
between sample points. This assumption is more likely to be true in
the forward direction than the reverse, because the adjacent reverse solutions
can be from quite different device locations (depending on the characteristics
of the device.)

To put it in perspective (why is it important):

Take a pair of devices and their measurements, e.g. Press and Proofer.
You get two profiles, ICCPress and ICCProof with also contain the
measurements (albeit smoothed) in their A2B tables.
Make a link via standard method, abscol; ICCLink1
Make a link via -G method, abscol; ICCLink2

process a set of arbitrary CMYKpress source values through ICCLink1
and you get CMYKproof1
process the same set through ICCLink2 and you get CMYKproof2

Now process CMYKProof1 through ICCProof A2B and you get LabProof1
Do the same with CMYKProof2 and you get LabProof2

Process CMYKpress through ICCPress A2B and you get LabPress

comparing LabProof1 to LabPress, and LabProof2 to LabPress, should
yield a closer match for LabProof2, right? this would indicate the
reverse interpolation (-G) is more precise than the double
interpolation incurred when building B2A and then linking to it.
(it'd be interesting to see this numbers!)

That's what I'd expect (and what experience shows.) It's one of the reasons iterative improvement doesn't seem to buy much in Argyll.

The question is, will LabProof2 be an exact match to LabPress? in
other words, the reverse interpolation is mathematically coincident
with the forward one?

No. Because the set of arbitrary CMYKpress source values won't usually fall on the grid points used to compute the ICCLink2 reverse lookup values, so they will be interpolated, so they will be inexact.

To get an exact match, you would have to process the arbitrary CMYKpress
source values themselves using xicclu through ICCPress and ICCProof
(using xicclu -fif on the latter of course).

I mean, we are always assuming (and I believe it's a fine assumption)
that the prediction of LabPress and LabProof given by interpolation on
their respective A2B tables is the most exact tool we have. Not that
it's exact, but it is more accurate than all other tables and
interpolations we use. So if we make these match in a link, that link
would be as accurate as one can get without further printing, right?

No. See above. The accuracy is better than concatenating a forward table and reverse table though.

Graeme Gill.

Other related posts: