Hi Gerhard.

I was aware of that problem, which turns to be one of these things that makes ICC 
color management seem so complex. Sigh.

The response is: this error is due to particular Lab encoding used by ICC. Really. Oh, 
of course there are ways to get rid of it,
but none is cheap or easy to implement.

Lab encoding in ICC  v2,  is ..*ahem*,  well, a bit tricky.  Let's take L* for 
example. L*, that goes from 0...100, is encoded as
0x0000 to 0xFF00.
Unless the profile is using any sort of matrix or prelinearization in LUT, there is no 
number of gridpoints that maps L=100 exactly
on a node.

So, if you are using 17 nodes (as -c0 does), node 17 would be on 65535, node 16 would 
be on 61439.0625 and so one. Unfortunately
L=100 falls between node 16 and node 17, exactly on 65280 (0xFF00). So, the CMM must 
use interpolation when using this profile to
locate white point. And then... rounding errors makes small deviations from 0. 
Unfortunately, this means to drop some ink for pure
white. Same for a*/b*, but worst.

Solutions, well, one would be to fill the diagonal of matrix in the LUT with 
0xFF00/0xFFFF, this would solve the L* issue but not
the a*/b* one. Another solution would be to use 16 and 31 points and then use an 
offset of 8 in the prelinearization table (this one
is really tricky). But both implies a lot of understanding by icclink on the Lab 
centering problem which currently hasn't. I cannot
figure out (yet!) how to solve this problem in a general way, so if anyone has *the* 
clever idea that would fix it, please tell me!

Regards,
Marti.


----- Original Message ----- 
From: "Gerhard Fuernkranz" <[EMAIL PROTECTED]>
To: "LCMS mailing list" <[EMAIL PROTECTED]>
Sent: Sunday, August 01, 2004 10:13 PM
Subject: [Lcms-user] icclink accuracy problem



Hi Marti,

I'm having an accuracy problem with icclink.

I'm starting with a RGB -> CMYK device link, which accurately maps
R=G=B=65535 to CMYK=0,0,0,0.

    $ icctrans -w -l CHP410-1200-link-i4-kx.icm
    little cms ColorSpace conversion calculator - v1.7

    Enter values, 'q' to quit
    R (0..65535)? 65535
    G (0..65535)? 65535
    B (0..65535)? 65535

    C=0.00 M=0.00 Y=0.00 K=0.00

Now I generate an output profile from this device link:

    $ icclink -x -t0 -c2 -o out.icm \
        "*Lab" sRGB.icm CHP410-1200-link-i4-kx.icm

When I check the resulting profile, then it does not map L*a*b* =
100,0,0 to CMYK=0,0,0,0, but to 4.86,1.70,4.87,0.30.

    $ icctrans -o out.icm -i "*Lab" -w
    little cms ColorSpace conversion calculator - v1.7

    Enter values, 'q' to quit
    L*? 100
    a*? 0
    b*? 0

    C=4.86 M=1.70 Y=4.87 K=0.30

Basically I had expected that iclink would place a grid point at L*a*b*
= 100,0,0 such that at least white gets mapped very accurately, does it?

Though this inaccuracy is not extreme (approx. 1.5dE), this is a problem
for me, since the consequence is, that the printer prints a very light
shade over the complete page instead of keeping a blank page unprinted,
as one would expect.

Thanks,
Gerhard





-------------------------------------------------------
This SF.Net email is sponsored by OSTG. Have you noticed the changes on
Linux.com, ITManagersJournal and NewsForge in the past few weeks? Now,
one more big change to announce. We are now OSTG- Open Source Technology
Group. Come see the changes on the new OSTG site. www.ostg.com
_______________________________________________
Lcms-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/lcms-user



-------------------------------------------------------
This SF.Net email is sponsored by OSTG. Have you noticed the changes on
Linux.com, ITManagersJournal and NewsForge in the past few weeks? Now,
one more big change to announce. We are now OSTG- Open Source Technology
Group. Come see the changes on the new OSTG site. www.ostg.com
_______________________________________________
Lcms-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to