SNT Photo Pixels

Identification

Infoforall

1 - Les pixels des images numériques


La photographie numérique (et sa gestion : stockage, modifications, améliorations) est devenue aujourd'hui l'un des principaux arguments de vente des smartphones. Nous allons tenter de voir comment on parvient à acquérir une image numérique de la réalité puis comment on parvient à la restituer à l'écran.

Documents de cours : open document ou pdf

1 - Pixels

Une image visible sur un écran d'ordinateur est juste la juxtapostion de petits carrés qu'on nomme des pixels.

Voici à titre d'exemple, voici le signe du langage Python et un agrandissement 

Sans zoom et avec zoom
Logo Python Logo Python Zoom

Ou encore une image du Golden Gate :

Le pont Le zoom La grille
L'image, le zoom et la grille

Définir une image revient donc à définir la couleur qu'on veut voir s'afficher sur chacun des pixels.

Nous avons vu dans la partie Web qu'on définit cette couleur à l'aide uniquement de trois couleurs :

color : #FF8822;

  • Le rouge, red en anglais, a ici l'intensité maximale FF
  • le vert, green en anglais, a ici une intensité 88
  • le bleu, blue en anglais, a ici une intensité 22

Pourtant, si on fait un zoom sur la partie jaune du Python, on peut voir cela 

Logo Python Zoom

Une question se pose donc : comment parvenir à afficher du jaune à l'aide uniquement de rouge, de vert et de bleu ?

En réalité, chaque pixel est lui-même séparé en trois sous-pixels : un rectange ROUGE, un rectange VERT et un rectangle BLEU.

Voici un pixel vu de très très près. On a activé à fond les intensités RGB (red-green-blue) ou RVB (rouge-vert-bleu) :

En 4x4 pixels de plus loin

En 10x10 pixels de plus loin

En 30 x 30 pixels

Si on continue encore à réduire la taille affichée du pixel :

Voici donc comment on parvient à obtenir du blanc : lorsqu'on envoie du Rouge, du Vert et du Bleu à grande intensité, les 3 cônes de l'oeil sont activés et le cerveau interprète cela en BLANC.

et
et
donne l'impression de

Si on active uniquement le rouge et le vert, on obtient ceci :

En 4x4 pixels de plus loin

En 10x10 pixels de plus loin

En 30 x 30 pixels

Si on continue encore à réduire la taille affichée du pixel, on aura l'impression de voir du jaune :

Bilan :

+
+
donne

Vous allez voir en sciences physiques qu'il existe deux synthèses de la lumière :

  • la synthèse soustractive (on éclaire des objets qui ne brillent pas d'eux même dans le noir). C'est le cas d'un mélange de gouaches par exemple.
  • la synthèse additive : un objet émet plusieurs radiations à la fois. C'est le cas ici : votre écran allumé brille bien de lui-même dans le noir.

Bien entendu, une synthèse ne peut avoir lieu que si l'oeil n'est pas en capacité de distinguer les différents pixels. Sur un écran moderne de smartphone, ils sont tellement petits que même avec une loupe vous n'avez que peu de chances de les voir !

Les 8 cas typiques de synthèse additive
      
      
      
      
      
      
      
      

Revoyons le principe des couleurs HTML fournies en code hexédacimal.

Code RGB couleur HTML en hexadécimal

On peut définir une couleur à partir des trois intensités Rouge - Vert - Bleu (RVB en français) ou Red - Green - Blue (RGB en anglais).

Exemple : color:#333333;.

#333333 veut dire qu'on a

  1. une intensité rouge de 33
  2. 33 pour le vert
  3. et 33 pour le bleu.

Votre oeil reçoit un peu de rouge, un peu de vert et un peu de bleu, il interprète cela en gris foncé.

Les valeurs sont à fournir en hexadécimal (un système de numération où les chiffres vont de 0 à F...)

00 < 11 < 22 < 33 < 44 < 55 < 66 < 77 < 88 < 99 < AA < BB < CC < DD < EE < FF

01° Quel code HTML hexadécimal fournir pour obtenir du blanc ? du noir  du gris foncé ? du gris clair ?

R :

V :

B :

+
+
=

+
+
=

Attention, les valeurs non valides sont transformées en FF.

02° Quel code HTML hexadécimal fournir pour obtenir du jaune ? du orange ? du rouge foncé ?

Concrètement, quelle est la taille des pixels sur un écran ?

Ca dépend de la qualité de l'écran. En gros, la taille (on dit le pas) d'un pixel varie de 0,31 mm à 0,21 mm.

Les sous-pixels sont donc 3 fois plus fins. Le principe est bien qu'un oeil humain ne puisse pas distinguer les sous-pixels en étant à une distance d'utilisation typique.

Vocabulaire : résolution d'un écran ou d'une image

La résolution correspond aux pixels qu'on peut trouver sur une largeur et sur une hauteur.

Type de matérielDéfinition typique
Moniteur classique -de 800 pixels de large sur 600 pixels de large : 800 x 600
Moniteur classique +2515 x 1886
Smartphone moyen960 x 640

En cliquant sur les propriétés d'une image, on peut trouver sa résolution; souvent sous la forme pixels en largeur x pixels en hauteur.

03° Que vaut la résolution de l'image ci-dessous ?

04° Que vaut la résolution de l'image ci-dessous ?

2 - Capter une photo ?

Nous avons donc vu comment générer une image sur un écran à partir de 3 informations (RGB ou RVB) par pixel.

Mais comment créer une photo numérique ?

Pour fabriquer une photo numérique, il faut d'abord disposer d'un capteur : un dispositif qui transforme une grandeur physique (ici l'éclairement lumineux) en grandeur électrique.

Cette grandeur électrique va ensuite être transformée en grandeur numérique : un simple nombre compris entre 0 (pas d'émission) à une valeur maximale (souvent 255 en décimal).

Le capteur permettant de créer une photographie numérique se nomme un photosite.

Photosites
Plusieurs photosites formant un maillage (image domaine public https://fr.wikipedia.org/wiki/Capteur_photographique#/media/Fichier:CCD_Bayer_Filter.png)

Plus la lumière arrivant sur l'un des photosites est importante, plus la grandeur numérique de sortie sera grande.

Par exemple :

  • obscurité totale : 0
  • lumière maximale saturant le photosite : 255 en décimal ou FF en hexadécimal

Mais on n'enregistre pas les couleurs, juste l'intensité : on aura simplement une image en nuance de gris.

Pour obtenir une information sur les couleurs en plus de la luminosité, on place des filtres au dessus des photofiltres :

  • Les filtres rouges laissent passer principalement les radiations rouges
  • Les filtres verts laissent passer principalement les radiations rouges
  • Les filtres bleus laissent passer principalement les radiations rouges
Les photosites et les filtres
Filtres RGB (image domaine public https://fr.wikipedia.org/wiki/Capteur_photographique#/media/Fichier:CCD_Bayer_Filter.png)

05° Du coup, combien de photosites faut-il dans le cas le plus simple pour former un pixel 

...CORRECTION...

Il en faut 4 puisqu'on a besoin d'une valeur pour le rouge, le vert et le bleu.

Par exemple, les informations pour créer l'un des pixels peuvent être récupérées à l'aide des 4 photosites et filtres suivants :

Les photosites et pixels

06° Pourquoi trouve-t-on deux fois plus de filtres verts ?

...CORRECTION...

Tout "simplement" car la lumière verte est plus facilement détectable par l'oeil humain. Le capteur de l'appareil photo se comporte ainsi plus comme un oeil humain en prenant deux fois plus de filtres verts que les deux autres.

Par information, nos yeux possèdent des cônes rouges, verts et bleus également.

3 - Pourquoi 255 ?

Une question subsiste : pourquoi mettre 255 comme valeur maximale ?

1er raison : ca suffit pour ne pas parvenir à distinguer deux cas successifs 

Nous avons vu que l’intensité des trois couleurs de base (rouge, vert, bleu) est codée par un nombre compris entre 0 et 255. Pourquoi pas 0 et 358 ou 1 et 100 ?

Tout cela est lié à la façon de stocker les chiffres dans un ordinateur.

La plus petite unité mémoire est le bit : une case qui contient 0 ou 1. C’est l’un ou l’autre. Il s'agit donc de l'informatique la plus basique possible.

CODAGE DE L’INTENSITE SUR 1 bit :

Si on codait la couleur ROUGE sous cette forme, on aurait :

Cas n°Valeur binaireDonne :Visuel
Cas 00Pas de rouge
Cas 11Rouge(100%)

Avec 1 bit pour coder le rouge : on obtient donc 2 = 21 cas possibles : de 0 à 1.

CODAGE DE L’INTENSITE SUR 2 bits :

Si on codait la couleur ROUGE sous cette forme, on aurait :

Cas n°Valeur binaireDonne :Visuel
Cas 000Pas de rouge
Cas 101Un peu(33%)
Cas 210Beaucoup(66%)
Cas 311Rouge(100%)

Avec 2 bits pour coder le rouge : on obtient donc 4 = 2 * 2 = 22 cas possibles : de 0 à 3.

On voit bien qu'on obtient plus de nuances.

CODAGE DE L’INTENSITE SUR 3 bits :

Si on codait la couleur ROUGE sous cette forme, on aurait :

Cas n°Valeur binaireDonne :Visuel
Cas 0000Pas de rouge
Cas 100114%
Cas 201029%
Cas 301143%
Cas 410057%
Cas 510171%
Cas 611086%
Cas 7111100%

Avec 3 bits pour coder le rouge : on obtient donc 8 = 2 * 2 * 2 = 23 cas possibles : de 0 à 7.

Bref, ensuite un peu plus de nuances.

07° Si on généralise, combien a-t-on de cas possibles avec 8 bits ? Sur combien de bits est codé l’intensité d’une couleur sachant que sa valeur varie de 0 à 255 ?

...CORRECTION...

Il y a 8 bits.

On calcule donc 28 et on trouve 256.

On compte jusqu'à 255 car on commence à 0, pas à 1 !

Pour vous donner une idée du nombre de nuances que cela représente, voilà les nuances de rouge pour 8 bits :

ValeurVisuelValeurVisuelValeurVisuel
085170
186171
287172
388173
489174
590175
691176
792177
893178
994179
1095180
1196181
1297182
1398183
1499184
15100185
16101186
17102187
18103188
19104189
20105190
21106191
22107192
23108193
24109194
25110195
26111196
27112197
28113198
29114199
30115200
31116201
32117202
33118203
34119204
35120205
36121206
37122207
38123208
39124209
40125210
41126211
42127212
43128213
44129214
45130215
46131216
47132217
48133218
49134219
50135220
51136221
52137222
53138223
54139224
55140225
56141226
57142227
58143228
59144229
60145230
61146231
62147232
63148233
64149234
65150235
66151236
67152237
68153238
69154239
70155240
71156241
72157242
73158243
74159244
75160245
76161246
77162247
78163248
79164249
80165250
81166251
82167252
83168253
84169254
85170255

255 représente donc sur 8 bits l'intensité maximale de rouge.

Mais comment faire le lien entre 255 et les 8 bits ?

Pour transformer un nombre binaire en nombre en base 10 (notre base naturelle puisqu’on a 10 doigts), il faut savoir que :

  • Le bit le plus à droite est nommé le bit de poids faible car il code uniquement 1.
  • Le bit juste d’à côté code 2.
  • Celui d’encore après code 4
  • ...

Voilà un exemple pour un nombre binaire de 8 bits (on appelle cela un octet), M = 1010 1011.

Nombre M =10101011
Les bits codent 1286432168421
On obtient donc12832821

D'ou la valeur de M en base 10 :

M = 128 + 32 +8 + 2 + 1 = 171.

08° Trouver l'octet le plus grand en activant tous les bits à 1 : 1111 1111.

...CORRECTION...

On calcule 128+64+32+16+8+4+2+1 et ça donne 255.

Pour finir : un exemple de convertisseur automatique d'OCTET pour la forme :

Votre nombre binaire M :

Nombre M =
Les bits codent 1286432168421
On obtient donc

D'ou la valeur de M en base 10 : M = = .

La fois prochaine, nous verrons le poids des images et des photos, ainsi que quelques pistes pour réduire le temps de transfert.

Activité publiée le 06 11 2019
Dernière modification : 06 11 2019
Auteur : ows. h.