Spectre oklab avec dégradé noir à blanc

Cet article fait partie d’une série d’articles sur les différentes façons de représenter une couleur.

Dans les parties précédentes, on a vu les espaces de couleur cartésiennes (RGB, CMY…) et cylindriques (HSV, HSL…). L’on a aussi vu les formats basés sur le Y’UV, issues d’astuces pour transmettre et afficher des couleurs pour la télévision couleur. Ces espaces sont bien moins intuitifs, mais pour l’ordinateur cela ne change rien.

Tout ceci fonctionne, et même si les systèmes trichromatiques ont une logique similaire à l’œil, elles n’en reflètent pas la sensibilité ni la perception, ni même la psychologie.

Le système HSL est plus proche de la logique de définition d’une couleur que le RGB, mais ce n’est pas tout. L’œil est, par exemple, beaucoup plus sensible au vert qu’au bleu. À éclairement égal (en watt/m²), une lampe verte sera donc perçue plus lumineuse qu’une lampe bleue. Qui plus est, certaines couleurs que l’œil voit ne sont pas codables dans l’espace RGB (ni HSL).

Pour avoir un système de colorimétrie qui se rapproche de la vision humaine, il faut autre chose que le RGB ou les autres formats mentionnés ci-dessous.

De la réponse des cônes au LMS, puis au format XYZ

Dans les années 1930 la Commission International de l’Éclairage (CIE) décide de travailler sur un système de représentation des couleurs à des fins de standardisation.

Rappelons pour commencer que l’œil est sensible aux couleurs par l’intermédiaire de cellules photosensibles appelées cônes, dont il existe trois types sensibles à trois portions du spectre électromagnétique. Ces portions sont les bandes des longueurs d’ondes courtes (420-440 nm, dans les bleus), moyennes (530-540 nm, jaune-vert) et longues (560-580 nm rouge).
En réalité, les cônes sont sensibles à l’ensemble du spectre, et c’est seulement leur réponse maximale qui se situe dans ces bandes. La réponse d’un cône n’est donc pas une seule raie lumineuse, mais plutôt une courbe entière avec un maximum. Les travaux de la CIE porte sur la détermination de ces courbes.

La CIE lance donc une grande étude, avec un grand nombre de personnes à qui l’on demande, par exemple, de reproduire une couleur de référence en ajustant les intensités de trois couleurs primaires se situant dans les longues, moyenne et courtes longueurs d’ondes décrite ci-dessus. On parle aussi des références long, medium et short en anglais, soit L, M, S, ou LMS.

Il résulte de cette expérimentation les trois courbes suivantes, appelées fonctions colorimétriques, qui représentent la sensibilité des trois types de cônes en fonction de la longueur d’onde, pour un observateur standard :

Réponse spectrale des cônes en fonction de la longueur d’onde.
Les trois fonctions colorimétriques sous la norme CIE 1931. Les courbes sont normalisées pour avoir des aires sous la courbe identiques. (image)

On peut constater sur ces courbes qu’une partie de l’une est située dans les négatifs. Dans l’expérience cela se traduit par le devoir d’ajuster la couleur de référence faute de pouvoir ajuster les trois autres couleurs convenablement. Cette partie négative rend les calculs compliqués. La représentation « LMS » est donc ajustée pour obtenir trois courbes positives. On réalise cela en multipliant les coordonnées LMS par des coefficients, nous donnant alors un nouvel espace de couleur « XYZ » :

$$ \begin{bmatrix}X\\Y\\Z\end{bmatrix} = \begin{bmatrix} C_a & C_b & C_c \\ C_d & C_e & C_f \\ C_g & C_h & C_i \end{bmatrix} \begin{bmatrix} L\\M\\S\end{bmatrix}$$

Et donc de nouvelles fonctions colorimétriques :

Courbes du LMS ajustées pour former celles du XYZ.
L’ajustement permet d’obtenir des courbes toutes positives sur tout le spectre.

Précisons qu’autant les fonctions LMS correspondent directement à la réponse de l’œil à de vraies longueurs d’ondes, celles du XYZ sont obtenus après l’application de la matrice de conversion par le calcul. Il n’y a pas de lumière « X », « Y » ou « Z » qui donne ces courbes, cela n’a même aucun sens. Cela n’empêche pas, mathématiquement, de travailler avec, et c’est ce qui nous intéresse ici.

Autre remarque : mathématiquement, il existe une infinité de matrices de coefficients de conversion applicable sur LMS pour obtenir trois courbes positives. Il en a donc été déterminé une qui soit plus utile que les autres, à savoir celle qui fait correspondre la luminance totale directement sur l’une d’entre elles, en l’occurrence la coordonnée Y. Les trois coordonnées vont toujours correspondre (à une matrice de constantes près) à trois stimuli lumineux, mais la coordonnée Y va, en plus, correspondre à la luminance totale. C’est la magie du calcul matriciel :

$$ \begin{bmatrix}X\\Y\\Z\end{bmatrix} = \begin{bmatrix} 1.91020 & -1.11212 & 0.20191 \\ 0.37095 & 0.62905 & 0 \\ 0 & 0 & 1.00000 \end{bmatrix} \begin{bmatrix} L\\M\\S\end{bmatrix}$$

Ce Y pour la luminance donnera, dans les années 1950, le Y au Y’UV vu dans l’article précédent. Y’UV aussi note sa luminance sur un Y, et non sur un L, qui aurait pu sembler plus naturel.

L’espace XYZ donc donne :

Gamut du XYZ
Représentation des couleurs du format XYZ (image)

Ce diagramme représente toutes les teintes capables d’êtres vues par l’œil. Un tel diagramme, qui représente l’ensemble des couleurs d’un modèle colorimétrique est appelé gamut.

Le pourtour du haut, avec sa forme caractéristique de fer à cheval, s’appelle le le lieu du spectre. Il comporte les longueurs d’ondes du spectre visible. Cette courbe contient donc les couleurs que l’on peut obtenir avec une seule longueur d’onde. Toutes les autres couleurs du diagramme ont besoin de deux ou plus de longueurs d’ondes pour être produites.
Le segment du bas qui relie le les deux extrémités du spectre (le rouge et le bleu) s’appelle la droite des pourpres. On y trouve le magenta, notamment.

On constate un point blanc plus ou moins au centre du diagramme : ce point est appelé le point blanc, et il est la couleur obtenue avec une émission identique dans les 3 couleurs de référence. Ce point est très important en colorimétrie et beaucoup de calculs doivent le prendre en compte.

Le point blanc va dépendre de l’illuminant : une lumière de référence pour l’éclairage de la surface dont on veut évaluer la couleur. Rappelons que le CIE veut rendre compte des couleurs perçues par l’œil humain, or notre perception des couleurs dépend de l’éclairage ambiant. Pour caractériser la couleur d’un objet, il faut donc également spécifier comment on l’éclaire. La normalisation est quelque chose de compliqué, oui, mais ce sont là des choses qui servent dans le domaine de la photographie et du cinéma, mais aussi la création de peintures, de teintes, de pigments, et évidemment donc dans tous les secteurs qui y recourent.

Il existe plusieurs illuminants : le plus employé correspond à la lumière du Soleil en plein jour, qui est la lumière émise par rayonnement d’un corps à 6 500 kelvins filtré par notre atmosphère. On l’appelle « D65 », pour Daylight 6 500 K. Il en existe un paquet d’autres, qui vont représenter le spectre émis par un émetteur uniforme (E), une LED (LED-B1, LED-LH1…), la lumière du ciel de l’hémisphère nord (C), un filament de tungstène (A)…

L’observateur devra de plus se trouver dans un angle précis par rapport à la surface et l’éclairage. Généralement on parle de 2°, parfois aussi 10°. En colorimétrie, il ne sera donc pas rare que l’on considère un éclairage de type « D65 10° » par exemple. Pour vérifier qu’une peinture produit bien la couleur demandée, on l’éclaire donc avec un illuminant D65 sous 10° et on compare avec la teinte demandée.

Le sRGB

Le XYZ RGB, qui sert de référence aux sRGB est une sous partie du XYZ. Il s’agit d’un triangle situé dans l’espace XYZ, avec trois sommets représentant les couleurs de références (R, G, B) :

Les points RGB sur le gamut XYZ.
(image)

Ce sRGB est celui qui sert de référence aux écrans depuis 1999. Avant, l’on utilisait le standard PAL et NTSC sur les écrans cathodiques. Le sRGB est également ce qui est utilisé dans les pages web. Ce standard, comme tous les standards, permettent une harmonisation des couleurs d’un écran à un autre, et font qu’un « orange-vif » affiché sur un PC montre la même couleur lorsqu’elle est affichée sur un projecteur, une télé ou un smartphone.

On peut faire la remarque que si le sRGB est une sous partie de XYZ — qui représente tout ce que l’œil peut voir — alors le sRGB ne contient pas toutes les couleurs visibles. Pour le dire autrement : les implémentations du sRGB sont incapables de reproduire certaines des couleurs visibles par l’œil ; ou encore que l’œil voit plus de couleurs que ce qu’un écran ne peut afficher.

Certaines couleurs de la vie courante sont donc impossibles à mettre sur un écran. En fait, le sRGB, ne couvre que 35 % environ des couleurs visibles par l’œil. On peut se dire que ce n’est pas un problème, mais l’on verra dans quelques dizaines d’années qu’un couvrant tout le gamut du visible sera une avancée aussi grande par rapport au sRGB que la télévision couleur fut par rapport à la télévision en niveaux de gris.

Une limite de praticité sur le format XYZ

On remarque qu’une très large partie de l’espace de couleur XYZ est prise par le domaine des verts. La raison est liée à la fonction colorimétrique du vert, dont le pic est assez large, ainsi qu’à la lumière du Soleil, dont le maximum du spectre se trouve dans le vert (et donc l’œil qui s’est très largement adapté à ça).

Cette grande portion de vert semble uniforme : deux points dans cette zone seront perceptuellement très similaires, là où des couleurs identiquement proches dans le reste du domaine donnent des couleurs très différentes. Cette différence de perception d’un bout à l’autre du diagramme constitue un casse-tête dans les calculs, par exemple pour trouver des couleurs complémentaires, similaires, ou de clarté comparables.

On ne peut pas prendre deux points équidistants sur le gamut XYZ et s’attendre à ce que les variations de couleurs soient identiques. Au contraire : les deux couleurs seront presque identiques dans le vert, mais très différentes ailleurs.

Les normes CIE Lab et CIE Luv ont donc été créées (bien plus tard, en 1976) pour corriger cette particularité et faciliter les travaux de colorimétrie, notamment pour l’informatique et l’affichage des couleurs alors naissant pour un usage grand public.

CIE Luv & CIE Lab

Ces deux formats sont la suite du XYZ : ils couvrent à nouveau toutes les couleurs perceptibles par l’œil humain, et font également la distinction entre la chromaticité (la couleur, la teinte) et luminance (la luminosité, la clarté).

On a vu que dans le XYZ, lorsque l’on modifie une des coordonnées, donc lorsque l’on se déplace sur le diagramme, pour un même déplacement, le changement de couleur perçue n’est pas constant. Un même déplacement n’a donc pas toujours les mêmes écarts perceptuels :

Exemples de couleurs dont le pas est identique mais la perception change grandement.
Les deux couleurs sur la ligne du haut, tout comme les deux couleurs sur la ligne du bas, ne diffèrent que de 20° en teinte. Pourtant, la différence percue entre les deux couleurs du haut n’est pas la même que la différence perçue entre les couleurs du bas (source exemple).

La CIE L*u*v*, ou Luv et la CIE L*a*b*, ou Lab, veulent corriger ça. Les diagrammes sont remodelés de façon à uniformiser la distribution des teintes de couleur. Le Luv et le Lab étirent les domaines rouges et bleu de l’espace XYZ, ce qui recentre le point blanc, qui était un peu bas dans le XYZ. Il s’agit à nouveau d’une transformation matricielle (tout comme l’on était passé du LMS au XYZ).

Le Lab utilise le même domaine, mais y place les axes différemment, plutôt selon les axes rouge-vert et jaune-bleu et plaçant l’origine au milieu :

Espaces Luv et Lab.
Représentation des espaces Luv (à gauche) et Lab (à droite) (sources et source).

Le Lab et le Luv se distingue essentiellement dans la nature de leur emploi : le Luv est utilisé pour les sources lumineuses et les écrans, donc pour une logique d’émission (donc additive) de la lumière, alors que le Lab est utilisé pour les colorants, pigments et les surfaces, donc une logique d’absorption (ou soustractive) de la lumière.

En dehors de cela, le Lab et le Luv sont la même chose que le XYZ, c’est juste la façon de les représenter qui change.

Et CIE LCh ?

On rencontre également les espaces CIE L*C*h, ou LCh. Ici, le L est identique au L du Lab, mais les a et b sont remplacées par le chroma C et la teinte h.
Il s’agit ici simplement d’une représentation en coordonnées polaires de l’espace Lab.
On peut dire que le LCh est au Lab, ce que le HSL est au RGB.

On distingue la transformation LCh appliquée au Lab de celui appliqué au Luv, et on note tout ça : LChab et LChuv.

Les espaces Lab/Luv et LCh ab/uv couvrent les mêmes espaces, et seule la façon de les représenter est modifiée, et chacun ont donc des applications différentes (selon l’emploi, ou la logique de calcul recherché).

Attention : la valeur de la teinte — le h — donnée dans l’espace LCh et celui du H dans HSL sont différentes. Quant à ce qu’on appelle le « chroma » du LCh, il s’agit d’un analogue — mais pas identique — à la saturation en HSL, c’est-à-dire la quantité de couleur, par rapport à la quantité de lumière (on parle de la pureté d’excitation de la couleur pour l’œil).

OkLab et OkLCh

OkLab est une nouvelle itération évolutive sur le domaine du XYZ : « Ok » étant pour « Optimal [k]olors », sorti seulement en 2020.

Si le Lab (et le Luv) lisse les perceptions des teintes par rapport au XYZ, OkLab lisse la perception de la luminance et de la saturation.
En effet, que ce soit en HSL ou en Lab, deux couleurs avec la même luminance peuvent être perçues comme plus ou moins lumineuses ou « éclatante » malgré tout. À nouveau, il s’agit d’une particularité de l’œil et du cerveau.

Ainsi, dans le gamut du HSL, on a toutes les couleurs de 0 à 360°. On peut constater une luminosité très forte sur les jaunes, et plutôt faible sur les bleus. Avec le OkLab (ou OkLCh), toutes les couleurs voient leur luminosité uniformisée :

Échelles de teintes de HSL et OkLCh.
L’échelle de teinte dans l’espace HSL et dans OkLCh. On note une luminosité lissée dans le OkLCh, alors que dans le HSL, certaines couleurs semblent plus lumineuses que d’autres (source).

Bien-sûr, on pourra toujours obtenir des jaunes moins lumineux et des bleus clairs, mais pour ça il faudra ajuster la clarté, le « L » dans OkLab. Toutes les couleurs descendront ou monteront en même temps pour conserver l’uniformité sur un spectre complet. Pour obtenir une même luminosité en changeant la couleur, une seule coordonnée doit changer, alors qu’il fallait en modifier deux avec le HSL.

OkLab ou OkLCh sont également utiles lorsque l’on cherche à faire des dégradés : toutes les couleurs du dégradé seront de luminance égale et le dégradé sera particulièrement lisse.

Enfin, l’un des derniers points en faveur de OkLab ou OkLCh, c’est qu’ils supportent plus de couleurs que RGB (ou HSL). Ces derniers se limitent à 16,7 millions de couleurs, mais OkLab et OkLCh en proposent beaucoup plus de façon à assurer une couverture un peu plus grande du gamut XYZ dans son ensemble.

Et la norme P3 ?

Comme je l’ai dit plus haut pour le sRGB par rapport au XYZ, le premier ne couvre que 35 % du second. Or, le sRGB est ce qui est utilisé pour nos écrans. Ces derniers ne peuvent donc reproduire que 35 % de toutes les couleurs visibles par l’œil humain.

La nouvelle norme née en 2005, la DCI-P3, mise au point par des industriels du cinéma, devrait remplacer peu à peu le sRGB. La norme P3 couvre 53,6 % de la CIE XYZ, ce qui représente environ 40 % de couleurs en plus par rapport au sRGB. Un écran capable de ça affichera donc beaucoup plus de couleurs :

P3 RGB extension.
Un aperçu (simulé) des couleurs que le P3 apporte en plus par rapport au sRGB. Les verts et rouges sont largement étendus (donc aussi les jaunes et les oranges), les bleus un peu moins. (image)

Bien-sûr, afficher une de ces « nouvelles » couleurs sur un écran en sRGB ne sera pas possible : il ne sera affiché que la couleur la plus proche. Ça sera un peu comme si l’on jouait un DVD couleur sur un écran en noir-et-blanc : l’image sera tout à fait visible et s’affichera, elle sera juste bridée par les limites du système d’affichage.

Aussi, une de ces nouvelles couleurs ne pourra s’afficher avec la représentation rgb() que l’on a vu précédemment. Il faudra utiliser une nomenclature capable d’encoder plus de 16 millions de couleurs (donc plus de 24 bits).

Le Oklab (et même le Lab) ainsi que leur pendant en coordonnées polaires (OkLCh, LCh) sont capables de cela. Afficher une couleur en OkLab sur un écran compatible P3 vous montrera donc une de ces couleurs.
Certains appareils supportent déjà tout ça, en particulier le matériel Apple comme l’iPhone, ou les téléphones Pixel 3 et ultérieurs de chez Google.

En pratique, les couleurs affichées sont beaucoup plus vives, très claires et très brillantes. Toute couleur RGB, même la plus pure, paraît terne à côté. Vous pouvez tester cela ci-dessous :

À gauche, une couleur Oklab/P3. À droite une couleur sRGB. Sur un écran compatible P3, les couleurs de gauche sont plus vives. Sur tout autre écran, la couleur de gauche est rapportée à la couleur sRGB la plus proche (pas de différence visible entre la gauche et la droite ci-dessous)
Couleur Oklab/P3Couleur sRGB
oklch(100% 0.212 179)#00FFFF
oklch(96% 0.4 108)#FFF900
oklch(96% 0.4 137)#17FF00
oklch(96% 0.4 46)#FF5000
oklch(100% 0.4 0)#FF20F4

Conclusion

Les formats du CIE sont là pour approcher ce que l’œil voit. Et justement, ce que l’œil voit, a été mis en équation par des études sur des sujets humains « moyens » dans les années 1930. Le but était d’avoir une représentation mathématique et chiffrée des couleurs visibles par un être humain, et de constituer un référentiel normatif pour la notion de couleur. Les couleurs sont tout autour de nous, du rouge « coca-cola » dans les publicités, aux encres pour les imprimantes, en passant par les tubes de peintures, des papiers photos et les écrans.

Le format de base mis au point par la CIE est le XYZ. Des évolutions sont venues ensuite en 1978 puis en 2020 avec le Lab/Luv puis le OkLab afin d’apporter des corrections et des améliorations et ainsi étendre les possibilités techniques de leurs applications (écrans, pigments…).

Cet article explicatif conclut cette série d’articles sur les couleurs et la manière de les représenter, que ce soit en informatique, ou dans l’industrie en général pour toutes les applications que l’on peut imaginer.

Il existe encore plein d’autres de formats de couleur et même d’espaces de couleurs, plus ou moins utilisés, plus ou moins propriétaires (Adobe RGB, Apple P3, etc.), mais ceux présentés ici me semblaient être les plus courants et les plus intéressants à présenter.

Ressources

1 commentaire

gravatar
Κύων écrit :

Merci pour l’article.

La partie négative de la courbe rouge en LMS, on doit comprendre que ce type de récepteur dans l’œil est inhibé par les fréquence entre 450 et 540 nm ? Je ne suis pas sûr de l’interprétation.


Votre commentaire sera visible après validation par le webmaster.