[argyllcms] Re: FWA correction in XYZ space

  • From: Gerhard Fuernkranz <nospam456@xxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Sun, 21 Aug 2005 17:03:22 +0200

Graeme Gill schrieb:

Gerhard Fuernkranz wrote:

The following heretical thought just came into my mind: I'm actually wondering whether it might be possible to apply FWA compensation somehow in tri-chromatic space.

My ulterior motive is to measure a printer target (> 1000 patches) with a DTP51 (auto-scan, but no spectral readings), and to correct the DTP51 readings, based on a model whose parameters are estimated from a *small* number of spectral measurements taken with a hand-held spectrometer. I guess the intentions is clear - I'm too lazy to measure thousands of patches with a hand-held instrument :-)

I suspect, a 3x3 matrix + offset term is probably not sufficient as model for this purpose, is it? Is there another promising model you could imagine for converting XYZ_dtp51 to XYZ_fwa_corrected?

It sounds feasible, with some loss of accuracy of course. It depends somewhat on how much you're willing to characterize the device/illuminant response using the spectrometer.

A classic (but somewhat elaborate approach) would be to build up a model
that translates the XYZ values into estimated spectral values
for that device, and then simply apply the spectral FWA algorithm
as is. Essential to do this you would need something like
a spectral Neugenbauer model (such as what mpp supports), and
do some minimal spectral measurements to establish the colorant
spectra, and a rough device response (e.g. a rough mpp profile
using something like 50 or so spectrally measured patches.)

For each XYZ you measure, you would need to invert the Neugenbauer model
to determine the device values that produce the measured XYZ value, and then
use the spectral values out of the Neugenbauer model as the input to
the FWA. (For a CMYK device, you would make the inversion deterministic
by also aiming for a K value close to that actually used to print the test
patch.)


I'm not sure quite how one would do this purely in XYZ. Essentially it might
be something like a Bradford transform, where you want to transform
the XYZ into an alternate space, where one of the parameters in
translated through a curve, and then the inverse transform is made
back to XYZ. The transformed space would be one that most separates
the effects of FWA into an independent channel.
The translation curve would somehow have to be "calibrated" from
some of the spectral values (perhaps a yellow ramp ?) that
has been FWA corrected using the spectral approach.


Of the two ideas, the first may actually be the simplest to implement,
since the machinery for making an mpp profile already exists,
and using the multivariate minimizer to invert it should be
straightforward. If I were doing it, I'd make a separate utility
to convert a .ti3 without spectral into a spectral .ti3.

Graeme Gill.


Graeme,

I want to share my result of the evaluation of different real measurement sets.

Actually it looks like the effect of Argyll's FWA compensation can be also modelled pretty well in trichromatic space, either as XYZ_fwa_comp = f(XYZ), or as Lab_fwa_comp = f(Lab).

As function f, I have tested a linear relationsship, and 2nd order multivariate polynomials.

I was positively surprised by the good fit, both, in XYZ and CIELAB space. The errors were a bit lower in CIELAB space, thus I'm only considering the CIELAB results below.

The fact, that the CMYK results are as good as the RGB ones, though the transformation in CIELAB space cannot account for the 4th degree of freedom, gives some evidence, that the black generation has not a significant effect on FWA compensation.

Regards,
Gerhard


RESULTS: ========

RGB, chemical print, 750 patches, Spectrocam:

   Initial difference between Lab_fwa_comp and Lab values:
   mean/std/max dE94 = 0.709 0.271 1.641

   3x3 matrix + offset:
   mean/std/max dE94 = 0.044 0.027 0.151

   2nd order multivariate polynomials:
   mean/std/max dE94 = 0.021 0.015 0.110

RGB, inkjet print on glossy photo paper, 750 patches, Spectrocam:

   Initial difference between Lab_fwa_comp and Lab values:
   mean/std/max dE94 = 0.623 0.317 1.593

   3x3 matrix + offset:
   mean/std/max dE94 = 0.061 0.038 0.212

   2nd order multivariate polynomials:
   mean/std/max dE94 = 0.024 0.018 0.154

CMYK, inkjet print, 1786 patches, iCColor:

   Initial difference between Lab_fwa_comp and Lab values:
   mean/std/max dE94 = 0.375 0.198 1.043

   3x3 matrix + offset:
   mean/std/max dE94 = 0.039 0.022 0.136

   2nd order multivariate polynomials:
   mean/std/max dE94 = 0.015 0.010 0.082

  Model generated from only 100 patches, checked against all patches:

   3x3 matrix + offset:
   mean/std/max dE94 = 0.037 0.025 0.125

   2nd order multivariate polynomials:
   mean/std/max dE94 = 0.017 0.010 0.058

CMYK, inkjet print, 750 patches, Spectrocam, FWA-rich paper:

   Initial difference between Lab_fwa_comp and Lab values:
   mean/std/max dE94 = 1.600 0.452 3.158

   3x3 matrix + offset:
   mean/std/max dE94 = 0.063 0.038 0.260

   2nd order multivariate polynomials:
   mean/std/max dE94 = 0.036 0.028 0.181

  Model generated from only 100 patches, checked against all patches:

   3x3 matrix + offset:
   mean/std/max dE94 = 0.064 0.039 0.193

   2nd order multivariate polynomials:
   mean/std/max dE94 = 0.039 0.028 0.203



Other related posts: