import numpy as np from colour import * from colour.difference import delta_E_CIE1976 from jakob_hanika import jakob_hanika, model_sd from test_colorchecker import plot_comparison illuminant = "D65" ill_xy = ILLUMINANTS["CIE 1931 2 Degree Standard Observer"][illuminant] ill_sd = SpectralDistribution(ILLUMINANT_SDS[illuminant]) # These numbers are taken from Jakob and Hanika's Jupyter notebook. RGB_ref = np.array([0.79264853, 0.4, 0.63703843]) # *linear* sRGB cc_ref = np.array([ 18.70184886, -13.19804478, 2.12180137]) if __name__ == "__main__": XYZ = sRGB_to_XYZ(1.055 * RGB_ref ** (1/2.4) - 0.055, ill_xy) Lab = XYZ_to_Lab(XYZ, ill_xy) print("Target: X=%g, Y=%g, Z=%g, L=%g, a=%g, b=%g" % (*XYZ, *Lab)) ccp, error = jakob_hanika(XYZ, ill_sd, ill_xy) reference_sd = model_sd(cc_ref) reference_XYZ = sd_to_XYZ(reference_sd, illuminant=ill_sd) reference_Lab = XYZ_to_Lab(reference_XYZ, ill_xy) found_sd = model_sd(ccp) found_XYZ = sd_to_XYZ(found_sd, illuminant=ill_sd) found_Lab = XYZ_to_Lab(found_XYZ, ill_xy) print("Our results differ from the reference by ΔE = %g" \ % delta_E_CIE1976(reference_Lab, found_Lab)) plot_comparison(XYZ, found_sd, "Reference", error, ill_sd)