L'image numérique : du photosite au pixel
Jusqu'ici, nos programmes dessinaient des traits. Une photo, c'est autre chose : des millions de points de couleur. Dans ce thème, on va comprendre comment une photo est fabriquée et rangée dans la mémoire, puis on écrira des programmes qui créent et transforment des images.
Zoome sur une photo
Prends n'importe quelle photo sur un écran et zoome, encore et encore. À un moment, l'image se décompose en petits carrés de couleur unie : les pixels. Une image numérique n'est rien d'autre que ça : une grille de pixels, chacun d'une seule couleur.
Le nombre de pixels s'appelle la définition de l'image. Une image de 4000 pixels de large sur 3000 de haut contient 4000 × 3000 = 12 millions de pixels : on dit 12 mégapixels (12 Mpx).
La couleur d'un pixel : trois nombres
Comment ranger une couleur dans la mémoire d'une machine ? On a vu qu'une machine ne connaît que des valeurs : il faut donc coder la couleur par des nombres.
Un écran fabrique chaque couleur en mélangeant trois lumières : rouge, verte et bleue. C'est le codage RVB (RGB en anglais). La couleur d'un pixel, c'est trois nombres, chacun entre 0 (lumière éteinte) et 255 (lumière à fond) :
| Triplet (R, V, B) | Couleur |
|---|---|
| (255, 0, 0) | rouge |
| (0, 255, 0) | vert |
| (0, 0, 255) | bleu |
| (0, 0, 0) | noir (tout éteint) |
| (255, 255, 255) | blanc (tout à fond) |
| (255, 255, 0) | jaune (rouge + vert) |
| (128, 128, 128) | gris moyen |
Des lumières, pas de la peinture
On mélange des lumières qui s'ajoutent, pas des tubes de peinture. C'est pour ça que rouge + vert donne du jaune, et que tout à fond donne du blanc. Surprenant, mais c'est ainsi que ton écran fonctionne.
Exercice - Décoder des couleurs
Sans machine, donne la couleur de chacun de ces pixels : (0, 0, 0), (255, 0, 255), (0, 128, 0), (200, 200, 200).
Correction
Noir ; magenta (rouge + bleu, un rose violacé) ; vert sombre (lumière verte à moitié) ; gris clair (les trois lumières fortes et égales : un gris proche du blanc).
Exercice - Coder des couleurs
Écris le triplet (R, V, B) qui code : un bleu à fond ; un rouge sombre ; le cyan (vert + bleu) ; un gris très foncé.
Correction
(0, 0, 255) ; (128, 0, 0) (ou toute valeur de rouge nettement sous 255, les deux autres à 0) ; (0, 255, 255) ; (30, 30, 30) (trois valeurs égales et petites).
Une image, c'est une grille de triplets
Puisqu'un pixel est un triplet, une image entière est une grille de triplets, donnés ligne par ligne, de gauche à droite, comme on lit un texte.
Exercice - Décoder une image
Voici les 25 triplets d'une image de 5 pixels sur 5, ligne par ligne. Colorie la grille sur ton cahier et découvre l'image.
| (255,255,255) | (255,0,0) | (255,255,255) | (255,0,0) | (255,255,255) |
| (255,0,0) | (255,0,0) | (255,0,0) | (255,0,0) | (255,0,0) |
| (255,0,0) | (255,0,0) | (255,0,0) | (255,0,0) | (255,0,0) |
| (255,255,255) | (255,0,0) | (255,0,0) | (255,0,0) | (255,255,255) |
| (255,255,255) | (255,255,255) | (255,0,0) | (255,255,255) | (255,255,255) |
Correction
Un cœur rouge sur fond blanc.
Exercice - Le poids d'une photo
Chaque pixel demande 3 nombres. Combien de nombres faut-il ranger en mémoire pour une photo de 12 mégapixels ? Et pourquoi, à ton avis, les photos qu'on s'envoie sont-elles souvent « compressées » ?
Correction
12 millions de pixels × 3 = 36 millions de nombres (chacun tenant dans un octet, soit 36 Mo brut). C'est énorme pour une seule photo : d'où la compression (le format JPEG, par exemple), qui réduit la place en acceptant de perdre un peu de qualité.
Dans l'appareil : les photosites
D'où viennent ces pixels ? Au fond de l'appareil photo, la lumière tombe sur un capteur, couvert de millions de cellules minuscules : les photosites. Chaque photosite mesure la quantité de lumière d'une seule couleur (rouge, verte ou bleue), car il est recouvert d'un filtre coloré. Les filtres sont disposés en damier avec deux fois plus de vert (matrice RVVB), parce que notre œil y est plus sensible.
Un photosite n'est donc pas un pixel : il capte un seul nombre, pas un triplet. Pour fabriquer les pixels de l'image finale, l'appareil calcule : il combine chaque photosite avec ses voisins pour reconstituer les trois composantes. La résolution du capteur (en millions de photosites) et la définition de l'image produite (en mégapixels) sont deux choses différentes, et les réglages de l'appareil peuvent les faire varier.
Exercice - Photosite ou pixel ?
Un smartphone annonce un capteur de « 48 Mpx » mais enregistre par défaut des photos de 12 Mpx. Comment est-ce possible ?
Correction
Le capteur a 48 millions de photosites, mais l'appareil combine les photosites par groupes de 4 pour calculer chaque pixel (ça capte mieux la lumière). L'image finale a donc 12 millions de pixels. Photosites et pixels ne se comptent pas pareil : c'est le calcul qui fait le lien.
L'appareil photo est un ordinateur
De la lumière au fichier final, presque tout est algorithme. À la prise de vue : régler l'exposition, faire la mise au point, stabiliser. Au développement : équilibrer les couleurs (balance des blancs), renforcer le contraste et la netteté. À l'enregistrement : compresser (JPEG). Et souvent, fusionner plusieurs clichés en une seule image : photos de nuit, HDR, panoramas.
Si les photos de smartphone sont devenues si bonnes, c'est moins grâce à l'optique (minuscule) que grâce à ces algorithmes. Une photo numérique n'est pas une empreinte brute de la réalité : c'est déjà un calcul.
Quelques repères : 1826, première photographie (argentique) ; 1969, invention du capteur numérique CCD ; 1975, premier appareil photo numérique ; 2007, le smartphone met un appareil photo calculé dans toutes les poches.
Ce qu'on retient
- Une image numérique est une grille de pixels ; chaque pixel est un triplet (R, V, B) de nombres entre 0 et 255 (des lumières qui s'ajoutent).
- La définition se compte en pixels (mégapixels) ; le poids brut, c'est 3 nombres par pixel, d'où la compression.
- Le capteur est fait de photosites (un seul nombre chacun, filtre R, V ou B) ; les pixels de l'image sont calculés à partir des photosites.
- Une photo numérique est le résultat d'algorithmes (prise de vue, développement, compression, fusion), pas une empreinte brute.
Et ensuite
Une image n'est qu'une grille de triplets : un programme peut donc la fabriquer. À la prochaine séance, on crée nos premières images en Python, pixel par pixel.