Par: Benoît TROUVILLIEZ

Onyme Labs, c’est le site web d’Onyme où vous pouvez trouver des applications intéressantes et très utiles ayant un attrait avec le Traitement Automatique des Langues (TAL) comme par exemple une application permettant de visualiser le WOrdnet Libre du Français (WOLF).

L’application d’aujourd’hui nous plonge dans l’univers passionnant des couleurs avec une histoire qui vous rappellera surement quelque chose…

Dessine moi un canapé chocolat

Un petit prince est venu me demander de lui dessiner un canapé chocolat. Si dessiner un canapé est a priori facile réalisable, je ne dispose malheureusement pas d’un crayon de couleur chocolat sur moi… Comment faire? Renoncer et laisser le petit prince à son désarroi?

Décrit moi ta couleur chocolat

Afin de dessiner un canapé chocolat pour le petit prince (sans crayon chocolat), j’ai tout d’abord cherché à savoir ce qu’il voulait dire par “chocolat”.

ˮEt bien chocolat, comme une tablette de chocolat!!!ˮ

Mais oui bien sûr! Le petit prince a raison : nous nous accorderons assez facilement sur le fait que la couleur fait référence à l’objet physique qu’est le chocolat et surtout à la perception visuelle que l’on a de cet objet. Mais comment percevons-nous cette couleur? Nous la voyons comme une association de trois couleurs que sont le rouge, le vert et le bleu. Nous pouvons ainsi approximativement la décrire comme une couleur associant du rouge à 35%, du vert à 23% et du bleu à 13% (si si, je vous le jure).

Nous pouvons également exprimer cette information dans un ordinateur par un triplet de nombres compris entre 0 et 1, dénoté code RVB : (0.353, 0.227, 0.133).

couleur chocolat ; RVB:(0.353, 0.227, 0.133)

D’accord mais cela ne parait quand même pas très naturel de parler d’une couleur comme une association de rouge, vert et bleu. Est-ce que l’on ne pourrait pas plutôt parler de sa luminosité, sa teinte,…? Cela est tout à fait pertinent et c’est ainsi que d’autres types de codes ont été mis au point à partir du code RVB.

  • Teinte Saturation Luminosité (TSL)
  • Teinte Chroma Luminosité (TCL)

Ces types de codes ne décrivent pas les couleurs comme une association de rouge, vert et bleu mais en fonction qu’on les perçoit comme lumineuses, saturées, teintées. Ce sont donc les mêmes couleurs qui sont décrites mais d’une manière différente.

En pratique, il est possible de passer mathématiquement d’un code RVB à un de ces 2 codes pour une couleur donnée en appliquant “simplement” quelques formules.

ˮEt cela donne quoi pour mon canapé chocolat?ˮ

Et bien cela donne :
RVB : (0.353, 0.227, 0.133)
C = max(0.353,0.227,0.133) – min(0.353,0.227,0.133) = 0.353-0.133 = 0.22
T = 60 * ((0.227-0.133)/0.22 + 6) mod6 = 25.636°
L = (0.353+0.133)/2 = 0.243
S = 0.22 / (1-|2*0.243-1|) = 0.22 / 0.486 = 0.453

TSL : (25.636, 0.453, 0.243)
TCL : (25.636, 0.22, 0.243)

ˮOula! Mais c’est compliqué ton histoire!ˮ

Ben oui mais il faut savoir si tu veux ton canapé chocolat ou pas…

Mesure moi une distance entre couleurs

Je suis à présent capable de décrire précisément la couleur chocolat voulue par le petit prince et ceci dans 3 types de codage différents. On avance!!! Enfin, cela ne nous résout pas vraiment le problème puisque je n’ai pas cette couleur dans ma trousse de crayons de couleur…

Mais au fait, qu’ai-je comme couleurs dans ma trousse? J’ai du marron et du noir (oui je sais, il y a peu de couleurs dans ma trousse). Alors comment savoir avec quelle couleur je vais dessiner mon canapé chocolat? Ce n’est vraiment pas évident surtout que vous qui êtes derrière votre écran ne pouvez pas voir mes crayons de couleur…

ˮIl faudrait pouvoir leur décrire ces 2 couleurs…ˮ

Mais oui petit prince, la solution est là : utiliser les types de codage vus précédemment pour décrire les couleurs de ma trousse.

Marron Noir
RVB (0.345, 0.161, 0) (0, 0, 0)
TSL (28, 1, 0.173) (0, 0, 0)
TCL (28, 0.345, 0.173) (0, 0, 0)
Échantillon

Parfait! Et maintenant comment pouvons-nous déterminer laquelle de ces 2 couleurs est la plus proche du chocolat? Le plus simple est de calculer une distance entre les couleurs grâce aux codes et ceci en imaginant qu’il s’agit de coordonnées dans un espace cartésien en trois dimensions. Voyons tout de suite ce que cela donne avec les codes TSL de nos 3 couleurs.

distanceTSL(marron, chocolat) = rac((1*cos(28°)-0.453*cos(25.636°))^2 + (1*sin(28°)-0.453*sin(25.636°))^2 + (0.243-0.173)^2) = rac(0.2252+0.0748+0.0049) = 0.5522
distanceTSL(noir, chocolat) = rac((0*cos(0°)-0.453*cos(25.636°))^2 + (0*sin(0°)-0.453*sin(25.636°))^2 + (0.243-0)^2) = rac(0.1668+0.0384+0.059) = 0.5140

Très bien, c’est donc la couleur noire qui est la plus proche de chocolat même si cela se joue à peu. Je vais donc pouvoir dessiner un canapé noir au petit prince et lui dire que c’est un canapé chocolat…

ˮEs tu sûr que ton crayon marron n’aurait pas été plus approprié?ˮ

Ben non petit prince puisque le calcul le dit! Nous pouvons bien sûr vérifier avec les codes TCL ce que cela nous donne.

distanceTCL(marron, chocolat) = rac((0.345*cos(28°)-0.22*cos(25.636°))^2 + (0.345*sin(28°)-0.22*sin(25.636°))^2 + (0.243-0.173)^2) = rac(0.0113+0.0045+0.0049) = 0.144
distanceTCL(noir, chocolat) = rac((0*cos(0°)-0.22*cos(25.636°))^2 + (0*sin(0°)-0.22*sin(25.636°))^2 + (0.243-0)^2) = rac(0.0393+0.0091+0.059) = 0.3278

Tu vois bien que Diantre! Le résultat est différent. Cette fois c’est bien la couleur marron qui est la plus proche et de manière très nette. On dirait que tu avais raison petit prince, je ferais mieux de dessiner un canapé marron…

Mais pourquoi cela? Les codes TSL et TCL ne décrivent pas de la même manière les couleurs et selon la manière de la décrire la mesure de la distance varie et surtout… est plus ou moins en accord avec notre perception de la proximité des couleurs décrites. D’une manière générale, le code TCL permet d’obtenir une distance plus en accord avec notre perception des couleurs que le code TSL (cependant pas toujours de manière si optimale que cela mais c’est une autre histoire…).

ˮIl est très beau ton canapé chocolat. Est-ce que tu veux bien m’en dessiner d’autres : un nacarat, un paille, un pistache,…?ˮ

Oula! Cela va faire beaucoup de calculs à faire…

Et si on faisait une application?

Plutôt que de faire tous les calculs à la main, nous allons utiliser la toute nouvelle application du labs Onyme : une application servant à mesurer des distances entre couleurs et ainsi nous donner la couleur la plus proche d’une autre.

Voici son url : http://labs.onyme.com/color-manager/fr/test.xhtml

Au niveau paramétrage, l’application vous permet de travailler soit avec des couleurs anglaises, soit avec des couleurs françaises mais également de choisir entre des distances mesurées grâce aux codes Hue – Saturation – Lightness (TSL) des couleurs ou bien grâce aux codes Hue – Chroma – Lightness (TCL). De quoi donc comparer pour chaque couleur les différences de distances engendrées par les deux codes.

Note : L’application vous propose de renseigner des valeurs n et m. Cela fera l’objet d’un prochain billet. Pour le moment, vous devez mettre à la valeur 1 ces deux champs pour obtenir le résultat décrit ici.

Mais à quoi sert-elle ton application?

Hormis pour dessiner des canapés chocolat au petit prince? :) L’utilité réelle de l’application réside dans sa volonté d’identifier des couleurs “similairement acceptables” à une couleur donnée selon des critères choisis (proximité perçue entre les deux couleurs, appartenance des deux couleurs à un même champ chromatique, appartenance des deux couleurs au même type de couleur). Tout cela est calculé automatiquement par l’application en se basant uniquement sur les codes RVB des couleurs obtenus grâce à wikipédia.

Cela peut être utile dans tous les domaines où l’on a besoin d’établir une corrélation entre une couleur et un ensemble de couleurs privé de celle-ci. Pour ne citer qu’un exemple : dans le domaine de la vente, les clients peuvent exprimer un souhait sur une couleur non présente en tant que telle dans l’offre. Il est alors utile de pouvoir déterminer si une autre couleur présente dans l’offre peut répondre à la demande et avec quel degré de corrélation.

Nous aurons l’occasion de développer tout cela plus en détails dans le prochain billet.

Pour conclure

Ce billet sera suivi d’un autre billet portant sur les paramètres n et m présents dans l’application. Pour lever un peu du mystère cela est en relation avec le fait que TCL n’est pas toujours si optimal pour refléter la distance perçue entre deux couleurs.

En attendant, vous pouvez vous divertir avec l’application du labs en testant quelques couleurs de votre choix : http://labs.onyme.com/color-manager/fr/test.xhtml

Mots clefs : , , , , ,

Nous contacter

  • Euratechnologies
  • 165 avenue de Bretagne
  • 59000 Lille
  • tel : +33 3 20 42 88 32
  • Email: contact(at)onyme.com

Onyme

Onyme est un éditeur de logiciels SaaS (Software as a Service) spécialisée dans la relation client, l'analyse d'opinion et le feedback management.
Les solutions d'Onyme intègre l'expertise et la R&D Onyme dans le domaine de l'analyse sémantique et du traitement automatisé de langue (TALN). Cette technologie nous permet de proposer des solutions innovantes et à plus forte valeur ajoutée pour nos clients.