Je dois être capable de convertir une couleur Lab en une couleur XYZ. J'ai suivi l'explication de cette page, basée sur la recommandation que j'ai trouvée sur la question de quelqu'un d'autre: http://www.brucelindbloom.com/index.html?Eqn_Lab_to_XYZ.htmlConvertir le laboratoire en XYZ
Je l'ai suivi, mais mes valeurs X et Z sont loin, mais le Y est correct (je l'ai testé contre un couple de convertisseurs en ligne (qui ne montrent pas comment ils le convertissent ...)). J'ai regardé ce laboratoire sur le site XYZ pendant un moment, essayant de trouver une erreur avec mes maths.
La couleur Lab je teste avec: Lab[41, 48, -19]
Les valeurs XYZ je reçois: XYZ[5676.0352, 0.1186, 4845.2021]
(le site dit que les résultats devraient être dans la gamme [0, 1]
Le referenceX
, referenceY
et referenceZ
sont ma référence blanche . Les valeurs de couleurs
Voici mon code (Java):
// https://www.mathworks.com/help/images/ref/whitepoint.html
// a: 1.0985, 1, 0.3556
// c: 0.9807, 1, 1.1822
// e: 1,1, 1
// d50: 0.9642, 1, 0.8251
// d55: 0.9568, 1, 0.9214
// d65: 0.9504, 1, 1.0888
// icc: 0.9642, 1, 0.8249 (what we're using)
double referenceX = 0.9642;
double referenceY = 1;
double referenceZ = 0.8249;
double fy = (this.lightness + 16)/116;
double fx = this.a/500 + fy;
double fz = fy - this.b/200;
//todo make these constants
double kappa = 216/24389.0;
double epsilon = 24389/27.0;
double fx3 = fx * fx * fx;
double fz3 = fz * fz * fz;
double xr = fx3 > epsilon ? fx3 : (116 * fx - 16)/kappa;
double yr = this.lightness > kappa * epsilon ? Math.pow((this.lightness + 16)/116, 3) : this.lightness/kappa;
double zr = fz3 > epsilon ? fz3 : (116 * fz - 16)/kappa;
double X = xr * referenceX;
double Y = yr * referenceY;
double Z = zr * referenceZ;
Donc, je suppose que ma question est bien sûr, qu'est-ce qui ne va pas avec mes maths? Ou quelqu'un peut-il trouver un autre site Web avec un moyen de faire la conversion (je n'arrive pas à en trouver)?
Merci. Si vous avez besoin d'éclaircissements ou avez des questions s'il vous plaît demander.
Vous avez échangé les valeurs de 'kappa' et' epsilon'. –