Codage des couleurs et des octets

Denis Dréano
INFO2-03

Codage des couleurs et des octets

Objectifs cantonaux : O2.2, O2.4.

Cours complet sur la plateforme Runestone de Cédric Donner : Représentation des couleurs.

Après les nombres et le texte, voyons comment un ordinateur représente une couleur sous forme numérique — une notion utile pour comprendre plus tard la représentation des images.

Synthèse additive des couleurs

▷ Définition — Synthèse additive RGB

Un écran produit n’importe quelle couleur en mélangeant trois couleurs fondamentales : rouge, vert et bleu (RGB, Red Green Blue). Plus on ajoute de lumière colorée, plus on se rapproche du blanc — contrairement à la peinture (synthèse soustractive), où mélanger des couleurs assombrit le résultat.

Un octet par composante

▷ Rappel — Octet

Un octet est un paquet de 8 bits. Il permet de coder \(2^8 = 256\) valeurs différentes, de 0 à 255.

Chaque composante (rouge, vert, bleu) d’un pixel est codée sur 1 octet, donc avec une valeur entre 0 et 255. Il faut donc 3 octets = 24 bits pour coder la couleur complète d’un pixel.

→ Exemple 1 — nombre de couleurs possibles

Comme chaque composante varie de 0 à 255 indépendamment des deux autres, le nombre total de couleurs représentables est :

\[256^3 = 2^{24} = 16\,777\,216 \text{ couleurs}\]

Notation hexadécimale des couleurs

Comme chaque composante tient exactement sur 2 chiffres hexadécimaux (un octet = 2 chiffres hex), on note très souvent une couleur par ses trois composantes en hexadécimal, collées : #RRGGBB.

→ Exemple 2 — décomposer une couleur hexadécimale

La couleur fb34cd se décompose en trois octets :

Rouge : fb_16 = 15*16 + 11 = 251
Vert  : 34_16 =  3*16 +  4 =  52
Bleu  : cd_16 = 12*16 + 13 = 205

Beaucoup de rouge, beaucoup de bleu, peu de vert : cette couleur est un magenta qui tire vers le rouge.

◈ Syntaxe — Couleur en Python

def rgb_to_hex(red, green, blue):
    return hex(red * 256 ** 2 + green * 256 + blue)

print(rgb_to_hex(255, 0, 255))   # 0xff00ff (magenta)

Exercice 1 — nombre de couleurs sur N bits

Combien de couleurs (ou nuances de gris) différentes peut-on représenter sur 4 bits ? Sur 6 bits ? Combien de bits faut-il au minimum pour représenter 40 nuances de gris différentes ?

Exercice 2 — décoder une couleur binaire

Estimez la couleur représentée par les 3 octets suivants (indice : passez par l’hexadécimal, c’est plus rapide) :

11011011 11101100 00011001

Exercice 3 — encoder une couleur

Représentez sous forme hexadécimale la couleur (128, 192, 230) et estimez grossièrement de quelle couleur il s’agit.

Devoir donné par Cédric

Terminer les exercices de codage des couleurs (nombre de couleurs sur N bits, conversions décimal/binaire/hexadécimal d’une couleur).