Codage de la couleur

Introduction

Les écrans font partie intégrante de notre vie quotidienne : ils sont présents que ce soit dans nos téléphones, ordinateurs ou télévisions. Ceux-ci sont capables de nous transmettre des images au quotidien malgré le fait qu'ils reçoivent des informations composées uniquement de zéros et de uns. Nous sommes donc en droit de nous demander par quels moyens est-ce que nos écrans arrivent à avoir la possibilité de traiter de telles données de façon à les transformer en images en couleur reconnaissables par leurs utilisateurs.

Pour découvrir le fonctionnement derrière les images colorées diffusées sur nos écrans, nous nous intéresserons aux différentes méthodes qu'utilisent les appareils du quotidien afin de représenter des couleurs.
Puis, pour mieux illustrer ces concepts, nous les appliquerons concrètement sous la forme d'un programme (dont on donnera le lien de téléchargement) capable de générer un triangle contenant les couleurs codables à partir d'un entier n.


En quoi consiste le codage RBG et CMY?

Afin d'obtenir un modèle de codage de la couleur, on a besoin de deux éléments: une base et une quantification.
Cette première est un ensemble de couleurs utilisées pour en obtenir d'autres en les combinant. Aucune couleur de la base ne doit être le résultat d’une combinaison entre d’autres couleurs, ce qui rend donc les couleurs de la base indépendantes les unes des autres.
Quant à la quantification, il s'agira des valeurs qu'on utilisera pour représenter ces couleurs.

Codage RBG

Le modèle RGB (Red, Green, Blue) a pour base le rouge, le vert et le jaune et fonctionne grâce à un système d’addition de lumière. En effet, on obtient les couleurs en superposant les teintes des couleurs de la base sur un fond noir représentant l'absence de couleur.

C'est ce qui est utilisé par tout le matériel informatique de notre quotidien, en codant chaque pixel sur trois octets représentant les trois différentes couleurs de la base, qui ont donc 256 valeurs (ou teintes) possibles chacune.
Ceci signifie que sous ce modèle, on aura 256^3 couleurs représentables, c'est à dire 16 777 216 couleurs.

L’addition des trois couleurs à leur teinte maximale donne du blanc, et du noir lorsque la teinte des couleurs est à zéro. Le mélange du bleu et du rouge donne du magenta, le rouge et le vert donne du jaune et le bleu et le vert donne du cyan.

La totalité des couleurs codables en RGB peuvent être placées à l'intérieur d'un cube ayant comme axes les couleurs primaires. La représentation en trois octets d'une couleur RGB pourra alors facilement être transformée en coordonées à l'intérieur de l'espace couleur.

Dans celui-ci on trouvera l'axe chromatique, où se situent les différentes nuances de gris et où les coordonées (x, y, z) sont de la forme x = y = z.
En plus de l'axe chromatique, on peut remarquer l'existence du triangle de Maxwell, dans lequel toutes les couleurs on une valeur de luminosité de 100% puisque leur coordonées (x, y, z) sont de la forme x + y + z = n où n est la valeur maximale de chaque axe, soit 255 pour le modèle RGB sur trois octets.

Ceci nous permettra de distinguer les différentes couleurs sans se soucier de leur luminosité, qui restera toujours neutre et constante.

Codage CMY

Le modèle CMY (Cyan, Magenta, Yellow), principalement utilisé pour l’impression mais parfois aussi pour des logiciels de design graphique, fonctionne grâce à un système de soustraction de lumière. En effet, on obtient les couleurs en superposant les couleurs de la base sur un fond blanc représentant l'absence de couleur. C'est le même principe que le passage de la lumière blanche à travers différents filtres colorés.

En théorie une base ayant ces trois couleurs devrait être suffisante, mais en pratique on se rendra compte que l'on devra utiliser un modèle quadrichrome (à quatre couleurs) dérivé de celui-ci, le CMYK, où le K ou "Key" désigne la couleur noire.
Ceci est dû au fait que le mélange des encres cyan, magenta et jaune ne produit pas un noir satisfaisant à cause des impuretés de l'encre. En plus, imprimer du noir ou des couleurs sombres gaspillerait beaucoup trop d'encre si on devait les obtenir à partir de mélanges de trois encres différentes.


Un exemple de représentation

Ce programme génére un triangle composé de toutes les couleurs codables à partir d'un entier naturel n qui sera décomposé en trois parties entières.
On aura la possibilité de choisir le n que l'on voudra en le tapant dans le champ de saisie, et grâce au bouton situé à coté de celui-ci on pourra aussi changer entre une représentation en RGB ou CMY.

Cependant, puisque ce n'est pas possible de représenter toutes les couleurs codables sous la forme d'un triangle et non un cube, on n'affichera que les couleurs appartenant au triangle de Maxwell, c'est à dire toutes les couleurs codées sous forme (x, y, z) où x + y + z = n et dont leur luminosité est donc toujours égale à 100%.

Le triangle sera d'abord modélisé sous la forme d'un tableau de triplets à deux dimensions T de taille n+1 dont la taille de chaque sous-tableau T[i] est égale à i+1, ce qui formera un triangle de hauteur n+1.
Chaque sous-tableau T[i] contient tous les triplets (x, y, z) possibles pour lequels x+y+z = n et x = n-i.
Il seront ordonnés dans chaque rangée de façon à ce que l'intensité du vert, en deuxième position du triplet, augmente plus l'indice est grand. Ainsi, le triplet ne contenant que du rouge sera situé aux coordonées T[0][0], celui ne contenant que du vert aux coordonées T[n][0] et celui ne contenant que du bleu aux coordonées T[n][n].

Dans le cas d'une représentation en RGB, ceci signifiera que lors de l'affichage le rouge sera en haut, le vert sera à droite et le bleu sera à gauche.
Plus on s'approchera ou s'éloignera d'une couleur donnée, plus l'intensité de celle-ci augmentera ou diminuera.

Les différents cercles composant notre triangle seront placés en fonction de leurs coordonnées dans le tableau, puis colorés en se servant des trois entiers formant chaque triplet en les multipliant par 255/n, ce qui nous donnera la proportion pour laquelle la somme des trois éléments du triplet sera égale à 255, c'est à dire la valeur maximale dans un octet.
Ainsi, il seront codés sous trois octets conformément au modèle RGB.

D'ailleurs, on remarquera que ceci signifie qu'on ne pourra pas coder les couleurs appartenant aux triangles de n supérieur à 255.

Que représente ce triangle?

Concrètement; notre triangle peut être défini en tant qu'un certain ensemble {r, g, b ∈ N³ | r + g + b = n} où les variables r, g et b correspondent aux quantités de rouge, vert et bleu (respectivement) qui composent la couleur représentée par le triplet.

Pour être beaucoup plus précis, on pourrait définir ce triangle en tant que tous les n-multiensembles possibles de {r, g, b} à partir desquels, grâce aux multiplicités m(x), on aura la possibilité de construire un triplet de forme (m(r), m(g), m(b)) représentant une couleur.
Puisque un n-multiensemble est forcément de taille n, la somme de toutes les multiplicités est égale à n, ce qui signifie donc qu'on respecte bien la condition r + g + b = n.
L'ensemble de triplets formés à partir de tous les n-multiensembles possibles de {r, g, b} est alors bien le même que l'ensemble de triplets de notre triangle.

Comment connaître le nombre total de couleurs codables à partir de n?

Connaître le nombre total de couleurs codables revient à connaître le nombre total de n-multiensembles de {r, g, b} possibles. Or, on peut utiliser une formule de l'analyse combinatoire afin de répondre à cette problématique.
En effet, il s'agit de P(n + k - 1, n) où P(x, y) signifie y parmi x et la valeur k est la taille d'un triplet, soit 3. Notre formule est donc:

Quelle fraction des couleurs codables en RGB peut on représenter en CMY?

Pour qu'une couleur soit codable en CMY elle doit être composée de différentes quantités de cyan, magenta et jaune. Or, on sait que le cyan s'obtient en mélangeant deux parts égales de vert et de bleu, de rouge et bleu pour le magenta, et de rouge et vert pour le jaune. Ceci signifie qu'en respectant l'égalité r + g + b = n, ces couleurs seront codées en RGB de la façon suivante:

Cyan: (0, n/2, n/2)
Magenta: (n/2, 0, n/2)
Jaune: (n/2, n/2, 0)

On remarque que chaque élément du triplet pour une couleur CMY ne peut être supérieur à n/2 et que si on veut coder une couleur avec différentes quantités de cyan, magenta et jaune cela reviendrait à sommer une combinaison spécifique de n/2 triplets de la forme (0, 1, 1), (1, 0, 1) et (1, 1, 0) afin d'obtenir un unique triplet (r, g, b) dont la somme de r, g, et b est égale à n.

Si on imagine la construction d'un triplet RGB comme l'ajout de n billes identiques dans trois boîtes différentes, on peut voir le codage d'une couleur CMY de la même façon avec la particularité qu'au lieu de choisir un emplacement pour une bille à chaque tour, on devra placer deux billes à la fois dans deux boîtes distinctes à chaque tour. Dans ce cas là, on aura n/2 choix à faire car il y aura n/2 tours.
En se servant de la formule trouvée précédemment, on peut en déduire que le nombre total de couleurs codables en CMY à partir de n est:

Limites

Il ne faut pas oublier que notre triangle n'affiche pas toutes les couleurs pouvant être obtenues à partir de n teintes différentes des couleurs primaires, il ne s'agit que d'une fraction de celle-ci, celles appartenant au triangle de Maxwell.
Ceci signifie qu'on n'aura pas la possibilité d'obtenir toutes les couleurs distinguables par l'oeil humain avec notre programme, mais ça ne veut pas dire que ceci n'est pas possible avec le modèle RGB.

En effet, l'oeil humain ne peut distinguer qu'un nombre fini de couleurs différentes, c'est à cause de cela que l'on parle de lumière visible, qui n'est qu'une infime portion du spectre éléctromagnétique.
Ceci est une bonne nouvelle en ce qui concerne le codage de la couleur, puisque cela signifie que nos écrans ont un nombre fini de couleurs à représenter.
Les opinions divergent à propos du nombre total de couleurs que nos yeux peuvent distinguer, allant d'une centaine de milliers à plusieurs millions, mais cependant, ce nombre reste toujours inférieur au nombre total de couleurs codables sous trois octets en RGB (16 777 216).

Nos écrans, grâce à au modèle RGB, sont donc bien capables d'afficher toutes les couleurs que leurs utilisateurs peuvent percevoir, voir même beaucoup plus.


Bibliographie

https://members.loria.fr/moberger/Enseignement/ENSG/representationCouleur.pdf

http://evolutiongraphique.com/choisir-le-bon-mode-couleurs-pms-cmyk-ou-rgb/

https://fr.wikipedia.org/wiki/Codage_informatique_des_couleurs

http://www.profil-couleur.com/lc/010b-triangle-maxwell.php


Groupe

Felipe Gonzalez Arenas, Anthony Dupré, Cameron Gardes

1 Cliquer pour recommander cet article