kdrag0n / colorkt

Modern color science library for Kotlin Multiplatform and Java
MIT License
61 stars 8 forks source link

ZCAM results are slightly different from the paper #1

Open kdrag0n opened 3 years ago

kdrag0n commented 3 years ago

The results of our ZCAM implementation are slightly different from the official ZCAM examples in the supplementary document. For example, the paper provides the following values for Example 1 (chromatically adapted to D65 using Luxpy's implementation of CAT02, because we don't support chromatic adaptation yet):

hz = 196.3524
Qz = 321.3464
Jz = 92.2520
Mz = 10.5252
Cz = 3.0216
Sz = 19.1314
Vz = 34.7022
Kz = 25.2994
Wz = 91.6837

Our results:

hz = 196.33770439109085
Qz = 321.3462189522057
Jz = 92.25198613424337
Mz = 10.519364954372517
Cz = 3.0198964626876563
Sz = 19.12610852817541
Vz = 34.70166837393559
Kz = 25.88274309285123
Wz = 91.68426229915165

I've reached out to the authors for clarification, but I haven't gotten an answer for the discrepancies and it appears that they're not willing to provide source code for the reference implementation.

This is probably related to D65 adaptation because the example inputs are not relative to D65. As such, it's unlikely to affect our primary use case where all colors come from sRGB and thus do not need adaptation, but it's still worth investigating.

Adapted XYZ values for Example 1 (colorio, ASTM D65, CAT02, average surround, La = 264): 182.25997236, 206.57412429, 231.18612283

kdrag0n commented 3 years ago

This is the same issue as https://github.com/ksmet1977/luxpy/issues/17, but that doesn't seem to have been fixed.

kdrag0n commented 3 years ago

By adapting the sample inputs with CAT02 parameters that match the example viewing conditions and leaving the reference white unadapted, our results are now much closer to the examples, but still not exactly the same.