[argyllcms] Re: Custom Illuminant

  • From: Roger Breton <graxx@xxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Fri, 04 Jul 2014 13:27:14 -0400


In all honesty, it's been a while since I took a look at the specs

The computational structure of the B2A1 is extensive and allows for many
possibilities which are not all used in practice.

Step 1 indeed allows for a pre-linearization stage in Lab, before moving the
data forward. 
Step 2 is an optional chromatic adaptation stage that takes place in XYZ (to
my knowledge, as the chad matrices are defined in XYZ)
Step 3 is another optional pre-linearization stage (they really wanted to
allow for all kinds of zany color processing...)
Step 4 is the CLUT conversion
Step 5 is another optional post-conversion linearization stage, this time in
device units.

The gamut tag is rarely used if at all. It was supposed to represent the
gamut size of the device and be used for testing in-gamut colors.
To my knowledge, it is completely optional. Last I remember, different
profilers were using this tag in different ways. So, it was not reliable.
All the gamut mapping takes place within the CLUT. That's where all
profilers "make their money".

Now, chromatic adaptation. To my humble knowledge, this is only used for
display profiling, say between D65 and D50. 
I have yet to see it implement on an Output Device although it would makes
perfect sense to do so?

Now, I would have to dig further into Argyll (and pick Graeme's brain) about
the use of the non-standard illuminant, such as the Solux lamp.
What does the specs says about this, I am not sure? But I do remember that,
a few years ago, only ProfileMakerPro allowed the use of a non-standard
illuminant in profile calculations. I'm not sure what kind of normalization
goes on in this scenario...

Sorry / Roger

-----Original Message-----
From: argyllcms-bounce@xxxxxxxxxxxxx [mailto:argyllcms-bounce@xxxxxxxxxxxxx]
On Behalf Of robert@xxxxxxxxxxxxxxxxxx
Sent: 4 juillet 2014 09:42
To: argyllcms@xxxxxxxxxxxxx
Subject: [argyllcms] Re: Custom Illuminant


Before I ask you any more questions about Custom Illuminants, I wonder if
you would be kind enough to answer another (rather long) question for me?
I'm trying to get a better understanding of how an ICC profile achieves its
objective because if I did I think it might answer quite a number of my

Perhaps I could explain what my current understanding of, say, a BtoA1
mapping does.

1. The individual L*a*b* (or XYZ if the PCS is in XYZ)) values are fed into
B-curves, one for each channel, which corrects something (I don't know
2. The Lab output of the B-curves may be fed into a chromatic adaptation
matrix (the chad tag) to make corrections from D50 to, say, a Solux lamp as
illuminant. I assume (probably incorrectly) that what this does is to bump
up the blues and maybe the greens (in the case of the Solux lamp) and dampen
down the reds, so that the general color balance of the print under the
Solux lamp will be close to the color balance under a D50 illuminant.
3. The Lab output of the chromatic adaptation matrix, if it exists, is (may
be?) fed into M-curves which corrects something (I don't know what). 
5. The outputs of the B-curves or the M-curves (if they exist) are fed into
the color LUT. This maps the Lab values to RGB values (and does the gamut
mapping? or is the gamut mapping done using the gamt tag data?).
4. The RGB values are fed into A-curves which correct for the non-linearity
of the printer.
5. The corrected RGB values are sent to the printer. 

Is this correct? If not, perhaps you would be kind enough tell me where I've
gone wrong? Also, what do the B-curves and M-curves do?

There is also a gamt tag in the profile.  Is this used for gamut-mapping? If
it is used for gamut mapping, which would make sense, then would I be right
in assuming that the single output value indicates in-gamut if it's 0; 65535
indicates so far out of gamut that it can only be clipped; values in between
indicate the distance of the color from the white point, so it can be used
to compute (by iteration?) the nearest point on the gamut envelope. Or
something along those lines?
And, lastly, in the Argyll profiles I don't see a 'chad' tag even though the
profile's for a non-D50 illuminant.  Does that mean that there is no
chromatic adaptation being done?  The profile was created using -i and a .sp

Roger ... if you don't have the time or interest to reply, please don't!  I
really won't be offended!


-----Original Message-----
From: argyllcms-bounce@xxxxxxxxxxxxx [mailto:argyllcms-bounce@xxxxxxxxxxxxx]
On Behalf Of Roger Breton
Sent: 03 July 2014 20:55
To: argyllcms@xxxxxxxxxxxxx
Subject: [argyllcms] Re: Custom Illuminant

I meant "XYZ (linear) normalization to the raw XYZ measurements of the
"substrate* is applied so that Lab becomes L100 a0 b0 for the paper color."

-----Original Message-----
From: argyllcms-bounce@xxxxxxxxxxxxx [mailto:argyllcms-bounce@xxxxxxxxxxxxx]
On Behalf Of Roger Breton
Sent: 3 juillet 2014 13:50
To: argyllcms@xxxxxxxxxxxxx
Subject: [argyllcms] Re: Custom Illuminant


The shift will be the same throughout. 

Think of the way that the raw colorimetric measurements for an output
profile are first encoded into the PCS: there is XYZ (linear) normalization
to the raw XYZ measurements applied so that L=100 a=0 b=0 on the device
paper. That's what gets encoded into the RelCol tag (A2B0).


Other related posts: