[argyllcms] Re: Perceptual intent

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Thu, 18 Dec 2014 08:57:53 +1100

robert@xxxxxxxxxxxxxxxxxx wrote:

Hi,

> I don't know how GamutVision works this out.  The input to GamutVision is
> the Source profile, the Destination profile and the intent chosen.  I assume
> that GamutVision must map fully saturated Source values to the Destination
> and then use the A2B1 table to get the Lab value.  

If you don't know what it's doing, then I don't think
anything certain can be concluded from it's reports.

> Is this the equivalent in Argyll-speak?
> 
> collink -v -ip -G BetaRGB.icc iPF6400-Canson-Baryta-310-Argyll-2584.icc
> argBetaToBaryta.icm
> xicclu -v argBetaToBaryta.icm
> xicclu -v -ff -ir iPF6400-Canson-Baryta-310-Argyll-2584.icc

That should give you the black point for a perceptual link
from BetaRGB to your printer.

> (xicclu crashes when I use this command btw, but it works with 
> xicclu iPF6400-Canson-Baryta-310-Argyll-2584.icc . same thing??)

Leave out the -v and it won't crash. (I'll fix this).

> So if I feed RGB values of 1 0 0 to xicclu -v argBetaToBaryta.icm I get RGB
> 1.0 0.005 0.017.  If I feed these values to xicclu
> iPF6400-Canson-Baryta-310-Argyll-2584.icc I get Lab values of 50 79 76 .
> which is (I guess) the max red that my printer/paper can produce, based on a
> perceptual mapping from BetaRGB.  But no doubt I have got things mixed up.

Seems about right. You can use the profile instead of a link, but you then have
to break it up into two lookups, one through BetaRGB.icc and then the L*a*b*
through the perceptual B2A of iPF6400-Canson-Baryta-310-Argyll-2584.icc
if you want to explore the overall transform.

> I don't see how the image can do anything but occupy the source gamut.

If you define the source gamut as the colorspace the images are encoded in
(which is the assumption that happens 99% of the time), then this is very easy,
since there is nothing that forces an image to occupy the full gamut of the
space it is encoded in.

> I assume you mean that the image needs to occupy the destination gamut?

It depends on the intent chosen - if the source gamut is that of the image, and
saturation intent is chosen, then the image gamut will be expanded to
fill the destination. If perceptual intent is used, then just portion of
the image gamut outside that of the destination will fill the destination -
portions of the image gamut that are within the destination will stay
within it.

> Here are some figures.  
> 
> I took an image in Beta RGB with three gray patches, in Lab the values are: 
> 0,0,0; 7,0,0; 22, 0,0  
> 
> I then converted the image to the destination profile using Relcol and got
> these values: 
> 3,0,0; 8,0,-3; 21,0,-4
>   
> I then converted the original image to the destination using Perceptual and
> got these values: 
> 2,0,1; 13,1,-2; 28,1,-3.
> 
> As you can see, the perceptual mapping is lightening the grays considerably.

Using relative colorimetric, the values are clipped by at least the black level 
of the
printer, which is about 3 dE. Using a crude offset of the black, that makes
the expected perceptual output roughly:

3, 3 + 8 = 12, 21 + 3 = 25.

which is not so far from what you get.

i.e. you expect the black to be raised, so as to not loose
shadow detail the way you are loosing it to clipping using relative 
colorimetric.

> This can be seen in photos as a loss of contrast. The VERY dark blacks seem
> OK, but otherwise dark colors are much lighter than they should be.

I'm not seeing any obvious effect in the number, nor the images.

For instance, with "printer.icm" being a medium quality
profile made from your iPF6400-Canson-Baryta-310-Argyll-2584.ti3
and BetaRGB as the source gamut:

xicclu -fb -ip printer.icm
0.000000 0.000000 0.000000 [Lab] -> Lut -> 0.000000 0.000000 0.000000 [RGB]
5.000000 0.000000 0.000000 [Lab] -> Lut -> 0.050934 0.059965 0.067195 [RGB]
10.000000 0.000000 0.000000 [Lab] -> Lut -> 0.101975 0.123802 0.132433 [RGB]
15.000000 0.000000 0.000000 [Lab] -> Lut -> 0.149734 0.182679 0.191832 [RGB]
20.000000 0.000000 0.000000 [Lab] -> Lut -> 0.193062 0.234591 0.248784 [RGB]
25.000000 0.000000 0.000000 [Lab] -> Lut -> 0.235319 0.281241 0.299251 [RGB]
50.000000 0.000000 0.000000 [Lab] -> Lut -> 0.477395 0.525078 0.563950 [RGB]

/src/argyll/test/RobertArdill3:xicclu -ff -ir printer.icm
0.000000 0.000000 0.000000 [RGB] -> Lut -> 3.072766 -0.126831 1.213371 [Lab]
0.050934 0.059965 0.067195 [RGB] -> Lut -> 7.971234 0.075278 0.827674 [Lab]
0.101975 0.123802 0.132433 [RGB] -> Lut -> 12.799777 0.246297 0.764396 [Lab]
0.149734 0.182679 0.191832 [RGB] -> Lut -> 17.340268 0.083715 0.972664 [Lab]
0.193062 0.234591 0.248784 [RGB] -> Lut -> 21.810963 0.003687 0.899673 [Lab]
0.235319 0.281241 0.299251 [RGB] -> Lut -> 26.268728 0.025456 0.691890 [Lab]
0.477395 0.525078 0.563950 [RGB] -> Lut -> 50.428897 0.011607 0.092099 [Lab]

You can see the (somewhat subtle) sigma contrast preservation effect, with
the output lower than a simple offset by the black point by about 0.3 dE.

Maybe the contrast should be preserved more than this, but typically an L* of 3
is pretty good for print, so not much emphasis should be required, and the 
overall
transform is close to a straight line. Use something with a much poorer black
point (ie. L* 10 - 15), and the contrast preservation should be more obvious.

> You can see a test image here:
> http://www.irelandupclose.com/customer/Argyll/perctest.jpg

That image doesn't seem to be available at present.

Graeme Gill.

Other related posts: