Entre les espaces de couleurs, la profondeur des couleurs, la température des couleurs ou encore la correction de gamma, la notion de couleurs a toujours fait débat dans le monde des passionnés de l’image. C’est avec l’arrivée du HDR (10 bits) que la notion de profondeur des couleurs commence à être exposée au grand public. Mais quel est le rapport entre une couleur et un nombre de bits ?
Les couleurs primaires au service du RGB
C’est à partir des 3 couleurs primaires (rouge, vert et bleu) que l’on est capable de “fabriquer” toutes les autres couleurs. Il suffit de “mélanger” du rouge avec du vert pour obtenir du jaune par exemple. En jouant avec le niveau de rouge et le niveau de vert “mélangés” alors le jaune obtenu aura une teinte plus ou moins différente.
Voilà pourquoi chaque pixel d’un écran ou d’une TV est en réalité composé de 3 sous-pixels : un rouge, un vert et un bleu. En jouant avec l’intensité de chaque sous-pixel il est possible de de reproduire une grande palette de couleur, c’est ce qu’on appelle le système RGB (Red,Green,Blue ou RVB en français).
Si on regarde son téléviseur ou son écran avec un microscope il est possible de voir tous les sous-pixels rouge, vert et bleu. Cela peut paraître étonnant, mais en réalité ils ne sont pas superposés, simplement côte à côte. Voici un exemple du comportement de ces sous-pixels en action.
Mais pourquoi 8 bits de profondeur de couleurs ?
Le codage des images a d’abord commencé avec 16 couleurs. Le rendu était très éloigné de la réalité voilà pourquoi une profondeur en 256 couleurs a rapidement été adopté. Même si le résultat était plus convaincant, le phénomène de “color banding” dans les zones avec des dégradés de couleurs gâchait le rendu. C’est à partir de 16 millions de couleurs (“True color”)que ce phénomène de “color banding” s’atténue vraiment et permet d’avoir de beaux dégradés et un résultat photo réaliste. Mais pourquoi “16 millions” ?
En informatique la plus petite valeur stockable est un octet. Un octet est composé de 8 bits et il peut prendre les valeurs de 0 à 255 (de 20 à 28). On peut donc imaginer un système avec 256 nuances de rouge que l’on pourrait combiner avec 256 nuances de vert mais également 256 nuances de bleu pour un total de 256 * 256 * 256 soit 16 millions de couleurs, et tout ça à partir de seulement 3 octets ! Voilà comment est né l’encodage 8 bits !
Cette profondeur des couleurs en 8 bits nécessite donc 3 octets (rouge, vert et bleu) de 8 bits chacun pour un total de 24 bits. Voilà pourquoi vous entendez souvent parler d’une profondeur des couleurs en 24 bits, qu’il faut interpréter comme une profondeur en 8 bits par couleur. Et oui ça peut vite prêter à confusion…
Tous les contenus vidéo (chaînes TV, Blu-ray, DVD etc…) utilisent en réalité uniquement 220 nuances de chaque sous-pixel (de 16 à 235) au lieu des 256 disponibles : c’est ce qu’on appelle le RGB Limited (2203 pour 10 millions de couleurs) par opposition au Full RGB (2563 pour 16 millions de couleurs) utilisé par les écrans de PC.
Et pourquoi pas 10 bits de profondeur de couleurs ?
Si maintenant on utilise un système à 10 bits par couleur, on obtient 1024 nuances de rouge, 1024 nuances de vert et 1024 nuances de bleu pour un total de 1024 * 1024 * 1024 soit 1 milliard de couleurs ! Le premier réflexe est d’en conclure que les couleurs rendues seront encore plus belles, mais est-ce vraiment le cas ?
Attention, il ne faut pas confondre espace de couleurs et profondeur des couleurs. Si vous passez d’une profondeur de couleurs 8 bits à une profondeur de couleur 10 bits dans le même espace de couleurs alors vous aurez 1 milliards de nuances à la place de 16 millions de nuances mais les couleurs maximums / extrêmes restent les mêmes ! Autrement dit, vous n’aurez pas de couleurs plus profondes, pas de rouge plus rouge, ni de vert plus vert ou de bleu plus bleu si l’espace de couleurs reste le même.
Voilà pourquoi le HDR (High Dynamic Range video) propose à la fois un encodage des couleurs sur 10 bits accompagné d’un nouvel espace de couleurs plus large : le rec. 2020 qui offre des couleurs plus profondes que l’espace de couleur standard utilisé par nos TV HD jusqu’à maintenant (le rec. 709). Dans ce contexte, cette gamme de couleur plus large nécessite un découpage en 1 milliards de couleurs (10 bits) afin d’éviter des problèmes de “color banding” qui auraient été présents avec un découpage en 16 millions de couleurs (8 bits). Le HDR offre donc bien des couleurs plus profondes grâce à son espace colorimétrique plus large et sans risque de “color banding” grâce à sa profondeur des couleurs en 10 bits.
Pourquoi pas 12 bits et même 16 bits ?
Le nombre de nuances de couleurs en 8 bits (16 millions) et en 10 bits (1 milliard) dépasse largement le nombre de couleurs que l’oeil humain est capable de différencier (10 millions). Sachant que pour un même espace de couleur, une meilleure profondeur des couleurs permettra uniquement d’avoir plus de nuances (les couleurs maximums / extrêmes resteront les mêmes), quel est l’intérêt d’augmenter ce nombre de nuances ?
Notre vue est tout simplement plus sensible à certaines nuances de couleurs que d’autres, voilà pourquoi le phénomène de “color banding” peut encore être visible même en 10 bits dans certaines situations, notamment dans les niveaux de gris. C’est donc principalement pour résoudre ce problème de “color banding”que l’idée d’encoder sur des tailles plus grandes que 8 bits est apparue.
Les professionnels de l’image, des effets spéciaux… préfèrent donc travailler en 10 bits (1 milliard), 12 bits (68 milliards) ou même 16 bits (281 tetrillion), c’est ce qu’on appelle le “Deep color”. Certain de leurs écrans gèrent même des espaces de couleurs comme le xvYCC, le Adobe RGB ou le Prophoto RGB qui sont plus étendus que ceux du grand public (sRGB). Évidemment les rendus finaux sont encodés en 8 bits (voir 10 bits pour le HDR) afin d’être compatibles avec nos TV et nos écrans.