[argyllcms] Re: inter-instrument matching tables

  • From: Alexey Gribunin <Gribunin@xxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Tue, 15 Nov 2011 21:28:24 +0400

Hello Gerhard!

Please can you describe a little bit more the calculation process of this matrix. Did you use MathCad?

Best regards,
Alexey Gribunin.

Gerhard Fuernkranz wrote:

Hi Graeme,

I tried to map artificially corrupted spectral readings to the original ones, using a simple linear principal component regression in spectral space, and IMO the results seem quite promising (for one particular "medium" of course, i.e. for one paper/ink/printer/dpi/halftoning/etc. combination).

"Artificially corrupted" means 1) Argyll FWA applied + 2) convolution with a low-pass filter kernel in order to simulate a different bandwith of the other instrument + 3) non-linear distortion along the wavelength axis in order to simulate a bad wavelength calibration of the other instrument. Eventuelly the "corrupted" readings differed from the original ones by 11dE avg, 56dE max.

Still a linear PCR in spectral space, using 10...20 principal components, like

    % compute correction matrix M

    % training set, measured with 2nd instrument
    spectral_readings = [
      ...
    ];
    % same chart measured with 1st (reference) instrument
    reference_readings = [
      ...
    ];
    % number of principal components
    num_pc = 15;
    [u,s,v] = svd(spectral_readings);
    basis = v(:,1:num_pc);
    M = basis * ((spectral_readings * basis) \ reference_readings);


    % apply correction to spectral readings measured with 2nd instrument

    estimated_reference_readings = readings * M;

was able to obtain corrected residual errors of less than 0.05dE avg (and spectral reflectance residuals of 0.0005% RMS).


Other related posts: