[argyllcms] Strange behavior of matrix profile generation from "incorrect" device white pint

  • From: "Janos Toth F." <toth.f.janos@xxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Thu, 28 Apr 2016 13:34:46 +0200

I don't wish to rob your time by detailing the circumstances but I
accidentally ran into a strange behavior with matrix profiles ("matrix
+ forced synthetic gamma=1.0" profiles in particular).

The problem seems to stem from the fact that RY+GY+BY != WY (in other
words, white is not as bright as one would expect by looking at the
luminance of the primaries alone, which is probably caused by an
"Average Brightness Level" limiter built into the display...).

Even though I am well aware that matrix profiles can not possibly
represent a gamut like this (and no profile [matrix or LUT] should try
and counter-act things like ABL anyway) but I think the error might
should be distributed in a different manner: by respecting the primary
colors over the white point (especially the primary color x,y
saturation over the white Y luminance) with a much heavy weight (in
other words: respect the primaries and let the white point drift). I
think that would make much more sense since primary color saturations
are usually much more stable than the white point (in case of
displays, it's usually pretty stable while the white point can drift
at any time due to room/device temperature change, aging and/or
aging-compensation firmware algos, APL limiters, undefeatable/hidden
dynamic contrast firmware algos, etc...)

How to reproduce:

build a "matrix g=1" profile from these input values:
1 100.0000 100.0000 100.0000 96.42610 100.0000 112.7384
2 100.0000 0.000000 0.000000 71.76550 35.30205 0.000000
3 0.000000 100.0000 0.000000 20.14761 74.12988 6.858907
4 0.000000 0.000000 100.0000 21.28541 7.005661 122.0659

extrapolate XYZ values from the profile for the same RGB values

compare the two RGB:YXZ sets with colverify and see how the dE is
distributed among these four colors.


By the way, these are the actual measurements of an OLED panel by an
i1d3 sensor (no cssx or cmx applied).
I think this is why I had better results with colorimeter matrices
built from R,G,B test patches only (not including W or others) on
HDTVs (especially PDP and OLED). Although I know you changed the
colorimeter profile generation process after I decided to exclude
white (and other colors which were part of the old colorimeter patch
set) as my personal judgement and I did not test the new version in
the mean time (I just kept going with R,G,B , no white for years).

Other related posts: