[argyllcms] Re: inter-instrument matching tables

  • From: Gerhard Fuernkranz <nospam456@xxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Fri, 06 Jan 2012 21:57:24 +0100



Am 22.11.2011 00:57, schrieb Gerhard Fuernkranz:
Am 20.11.2011 01:42, schrieb Roberto Michelena:
Attached a file with a variety of measurements from a P2P25x target 
(idealliance) ...

Thanks, Roberto.
I'll take a look at your data - a detailed investigation make take a while, 
though...

After a first brief inspection it seems that

    * the data from the same instrument, but for different calibration standard 
can be mapped to each other with virtually no errors.

    * DTP70 readings can be estimated from DTP70_UV readings (or vice versa) 
with an estimated error of about 0.1 dE RMS

    * I1 readings can be estimated from DTP70 or TDP70_UV readings (or vice 
versa) with an estimated error of about 0.3 dE RMS


I have done some more investigations with the data in the meantime, and I have also drafted two 
programs "scmxmake" and "scmxapply" which create and apply a (media-specific) 
spectral correction matrix from/to spectral .ti3 files. They are based on the on-board methods 
available in Argyll and thus fit with the Argyll framework (which made the implementation a bit 
tedious and also more CPU-hungry, compared to simply prototyping the underlying maths in a language 
like GNU Octave). A patch to Argyll V1.3.5 is attached (I hope it compiles and runs under Windows 
as well, as I have only tested on Linux). Maybe you want to give it a try...

   Usage: scmxmake [options] input1.ti3 input2.ti3 output.scmx
     -v          Verbose mode
     -O          Use OLS instead of TLS
     -p num_pc   Choose number of principal components to use
                 for the PCR regression. If not specified or <= 0,
                 then the optimal num_pc is estimated by bootstrap
                 cross validation.
     -B samples  Choose number of bootstrap samples to to use
                 for estimating the error. More samples are better,
                 but computationally more expensive.
   <samples> must be either 0 or >= 100.
                 If samples = 0, then errors are not estimated.
     -i illum    Choose viewing illuminant:
                 A, C, D50 (def.), D65, F5, F8, F10 or file.sp
                 (Only used for calculation of error estimates)
     -o observ   Choose CIE Observer for spectral data:
                 1931_2 (def), 1964_10, S&B 1955_2, shaw, J&V 1978_2
                 (Only used for calculation of error estimates)
     input1.ti3  1st measurement file
     input2.ti3  2nd (reference) measurement file
     output.scmx Correction matrix file. The correction
                 estimates input2.ti3 from input1.ti3.

   Usage: scmxapply corr.scmx input.ti3 output.ti3
     corr.scmx   Correction matrix file
     input.ti3   Measurement file
     output.ti3  Converted measurement file


   Example usage for i1 vs. DTP70:

       * Obtain "training-chart-i1.ti3" and "training-chart-i1.ti3" by 
measuringa printed, representative test chart with both, i1 and DTP70.
       * Compute correction:
         scmxmake -v training-chart-i1.ti3 training-chart-DTP70.ti3 
corr_i1_to_DTP70
         -> creates "corr_i1_to_DTP70.scmx"

       * Now read other chart(s) (but same printer, ink, paper, etc.) with the i1, 
resulting in say "chart2-i1.ti3".
       * Apply correction in order to estimate the readings which would have 
been obtained when reading this chart with DPT70 instead of i1:
         scmxapply corr_i1_to_DTP70.scmx chart2-i1.ti3 chart2-DTP70.ti3

Regards,
Gerhard

Other related posts: