Convertisseur XYZ vers xyY
Le convertisseur XYZ vers xyY transforme trois valeurs tristimulus CIE en deux coordonnées de chromaticité et une valeur de luminance distincte.
Lancer gratuitement
Vous pouvez ainsi comparer la couleur indépendamment de la luminosité tout en conservant la composante Y d’origine pour les travaux sensibles à la luminance. Saisissez des valeurs X, Y et Z positives ou nulles sur une même échelle : l’outil les valide, refuse la chromaticité indéfinie du noir et fournit des résultats numériques stables selon les équations CIE standard.
Comprendre la différence entre XYZ et xyY
CIE XYZ représente un stimulus par trois valeurs tristimulus, mais leur amplitude et leurs proportions y sont réunies. La représentation xyY sépare ces notions. Ses coordonnées x et y minuscules décrivent la chromaticité, c’est-à-dire, dans les grandes lignes, la couleur indépendamment de son intensité globale. Le Y majuscule conserve la composante tristimulus d’origine liée à la luminance. Cette séparation est pratique pour placer des couleurs sur un diagramme de chromaticité CIE 1931, comparer des mesures prises à plusieurs niveaux de luminosité ou enregistrer la luminance avec une paire compacte de coordonnées. La conversion n’effectue ni adaptation du point blanc, ni courbe gamma, ni matrice RGB, ni correction perceptuelle ; elle normalise seulement les valeurs XYZ fournies. L’observateur, l’illuminant, les conditions de mesure et l’échelle XYZ relèvent donc toujours du processus colorimétrique environnant. La conversion de deux triplets obtenus sous des références différentes ne rend pas ces conditions équivalentes. Utilisez des valeurs issues du même contexte colorimétrique et interprétez-y les coordonnées obtenues.
Fonctionnement du calcul déterministe
Le convertisseur vérifie d’abord que X, Y et Z sont des nombres finis, positifs ou nuls. Il calcule ensuite la somme X + Y + Z. Le x minuscule est égal à X divisé par cette somme, et le y minuscule à Y divisé par le même dénominateur. Le Y majuscule du résultat est recopié sans normalisation : il conserve donc la grandeur liée à la luminance et son échelle initiale. Puisque les deux coordonnées partagent un dénominateur, x et y sont indépendants de l’échelle. Multiplier les trois entrées XYZ par un même facteur positif ne change ni x ni y, mais multiplie Y par ce facteur. Les résultats sont arrondis à une précision significative stable afin que les exécutions répétées produisent des valeurs JSON cohérentes. Aucun accès réseau, hasard, horloge, table de correspondance ou profil colorimétrique local n’intervient. Le triplet X = 0, Y = 0, Z = 0 est refusé, car son dénominateur est nul et un stimulus parfaitement sombre n’a pas de chromaticité définie. Une somme dépassant la plage numérique finie est également rejetée.
Préparer les données et interpréter le résultat
Employez une seule échelle cohérente pour les trois entrées. XYZ est souvent exprimé avec un blanc de référence proche de Y = 100, mais des valeurs normalisées proches de Y = 1 conviennent tout autant ; le convertisseur ne privilégie aucune convention. Le Y majuscule renvoyé reste sur l’échelle saisie. Les x et y minuscules sont des rapports sans unité. Pour des entrées XYZ valides et positives ou nulles, chaque coordonnée se situe entre zéro et un, et x + y ne dépasse pas un ; la troisième coordonnée implicite vaut z = 1 - x - y si votre traitement ultérieur en a besoin. Ne confondez pas y et Y : y est une coordonnée de chromaticité normalisée, tandis que Y est la valeur tristimulus d’origine liée à la luminance. Notez aussi que xyY n’est pas perceptuellement uniforme : des distances géométriques égales dans un diagramme xy ne correspondent pas forcément à des écarts visuels égaux. Utilisez cette conversion pour les échanges normalisés, les graphiques, l’instrumentation ou les calculs intermédiaires. Pour mesurer une différence perceptuelle, poursuivez dans un espace adapté tel que CIELAB après les opérations nécessaires d’adaptation et de blanc de référence.
Cas d’usage
Tracer une couleur mesurée
Convertissez la sortie XYZ d’un spectrophotomètre en coordonnées x et y pour un diagramme CIE 1931 tout en conservant la luminance.
Comparer la chromaticité selon la luminosité
Normalisez des mesures XYZ mises à l’échelle proportionnellement afin de comparer leur chromaticité indépendamment de Y.
Préparer des données colorimétriques
Transformez des enregistrements XYZ au format xyY attendu par les logiciels d’éclairage, d’affichage, d’imagerie ou d’étalonnage.
Questions fréquentes
Quel est le prix de la conversion ?
Le tarif de l’API est de $0.002 par requête. La version exécutée dans le navigateur est gratuite.
Quelle échelle XYZ faut-il utiliser ?
Toute échelle cohérente convient. Utilisez la même pour X, Y et Z ; le Y majuscule du résultat conserve cette échelle.
Pourquoi un triplet XYZ entièrement nul est-il refusé ?
Les formules divisent par X + Y + Z. Pour un stimulus entièrement nul, cette somme vaut zéro et la chromaticité est mathématiquement indéfinie.
Ce convertisseur effectue-t-il une adaptation chromatique ?
Non. Il normalise seulement XYZ en coordonnées xy et conserve Y ; il ne modifie ni les points blancs ni les conditions d’observation.
Pourquoi y minuscule et Y majuscule diffèrent-ils ?
Le y minuscule est un rapport de chromaticité sans unité. Le Y majuscule est la composante XYZ d’origine liée à la luminance.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/color/xyz-xyy \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x_value":41.24,"y_value":21.26,"z_value":1.93}'const res = await fetch("https://api.kit.forhosting.com/color/xyz-xyy", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x_value": 41.24,
"y_value": 21.26,
"z_value": 1.93
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/xyz-xyy",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x_value": 41.24,
"y_value": 21.26,
"z_value": 1.93
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/xyz-xyy", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x_value":41.24,"y_value":21.26,"z_value":1.93}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x_value":41.24,"y_value":21.26,"z_value":1.93}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/xyz-xyy", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"x_value": 41.24,
"y_value": 21.26,
"z_value": 1.93
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.xyz_xyy",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |