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,
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