[argyllcms] CLUT input profiles and extrapolation (blackpoint, ...)

  • From: Klaus Karcher <lists@xxxxxxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Tue, 19 Oct 2010 15:44:50 +0200

Hi Graeme,

Currently I make some tests with synthetic TI3 files. I use a spectral device model to calculate device values corresponding to spectral measurements of physical samples.

Here is an exampe ti3 file:
<http://digitalproof.info/argyll/virtualScanner/ppc.spd.test_765_1.ti3>

The spectral model simulates a flawless device (no linearity errors, noise, flare, ...). Gamma is 1.5 in the example file. The darkest patch in the training set is Lab 7.5247 -1.9978 -7.4019.

When I create a CLUT profile with "colprof -u -qh" I get a neutral axis like this (xicclu -fb): <http://digitalproof.info/argyll/virtualScanner/xicclu_-g_-ia_-fb_ppc.spd.test_765_1.png>

or like this (xicclu -fif):
<http://digitalproof.info/argyll/virtualScanner/xicclu_-g_-ia_-fif_ppc.spd.test_765_1.png>

i.e. I get an unexpected behavior in very dark regions.

but when I create a matrix profile with
colprof -u -qh -aG

I get a very nice neutral axis:
<http://digitalproof.info/argyll/virtualScanner/xicclu_-g_-ia_-fb_ppc.spd.test_765_1.ag.png>

... and when I add one patch with Lab 0 0 0 and RGB 0 0 0 to the ti3 file, also the neutral axis of the CLUT profile behaves well:

<http://digitalproof.info/argyll/virtualScanner/xicclu_-g_-ia_-fb_ppc.spd.test_765_2.png>

<http://digitalproof.info/argyll/virtualScanner/xicclu_-g_-ia_-fif_ppc.spd.test_765_2.png>

(Corresponding TI3 file: <http://digitalproof.info/argyll/virtualScanner/ppc.spd.test_765_2.ti3>. I added XYZ and Lab values and the "zero patch".)

I guess the reason for the poor behavior at the black end is the bad extrapolation performance of the CLUT profile. Or is there something else going wrong?

I know that when using a real device it's not as easy as adding a zero patch to the TI3 file as there are things like flare, noise, dark current and offset errors. In practice I tried two approaches therefore:

- adding synthetic patches along the gray axis obtained with icclu from a temporary matrix profile

- adding synthetic patches along the gray axis generated with either polynomials or monotone Hermite splines fitted to data from a temporary CLUT profile

Both approaches seem to work reasonably well.

I wonder if it makes sense to extend this idea also to other regions of the colorspace (extraplation beyond the gamut of the test target) and if it is worth to be implement in colprof. What do you think?

Klaus


Other related posts: