SNT Photo Profondeur

Identification

Infoforall

3 - Profondeur d'une image


Dans l'activité précédente, nous avons vu comment encoder l'information image sous forme d'une image NOIR et BLANC.

Il est temps de voir comment faire de même avec plus de nuance de couleur !

Cela vous permettra également d'estimer le nombre de photos que vous pouvez placer sur la carte mémoire de votre smartphone !

Logiciels nécéssaires : Gimp, un éditeur de texte (bloc-note, notepad...)

Documents de cours : open document ou pdf

Il faudra pouvoir voir les extensions de vos fichiers. Windows a tendance à ne pas afficher les extensions des fichiers dont il connait la nature. Pour les afficher :

  • Panneau de configuration
  • Apparence
  • Options des dossiers
  • Afficher l'extension des fichiers dont on connait la nature

1 - Image en noir et blanc

L'image la plus facile à encoder est l'image NOIR et BLANC.

On peut prendre un encodage facile, du type

  • 0 pour BLANC
  • 1 pour NOIR

On peut créer facilement ce genre d'image à l'aide d'un simple éditeur de texte comme Notepad ou autre.

Attention, on parle bien d'éditeur et pas de traitement de texte. Les traitements de texte rajoute des informations en plus du simple texte dans le fichier. Vous ne parviendriez pas nécessairement à créer votre image.

Comme nous l'avons vu dans l'activité `Télévision` il faut donner :

  • Le type d'encodage (ici P1)
  • Le nombre de pixels sur une colonne, suivi d'un espace et du nombre de lignes (ici 3 2)
  • La couleur voulue sur chaque pixel dans l'ordre 'humain' : on considère une suite de pixels correspondant à la façon dont on lit un livre : de gauche à droite et de haut en bas : 110001
    • 0 pour BLANC
    • 1 pour NOIR

01° Représenter l'image encodée avec le code ci-ddesous :

P1 3 2 110001

...CORRECTION...

02° Réaliser les actions suivantes dans l'ordre.

  1. Ouvrir un éditeur de texte (par exemple Notepad++).
  2. Copier le code ci-dessous.
  3. P1 9 7 110000011 011000110 001101100 000111000 001101100 011000110 110000011
  4. Enregistrer (dans un répertoire que vous connaissez) le fichier sous le nom image1.bpm.
  5. Ouvrir l'image avec le logiciel libre GIMP, un logiciel de traitement d'images :
    • Menu Fichier -> Ouvrir
    • Sur l'écran de sélection, cliquer sur AFFICHER TOUS LES FICHIERS, sinon vous ne verrez que les fichiers-images classiques comme PNG, JPEG...
    • Sélectionner votre fichier image1.bpm.
  6. Pour ZOOMER sur votre toute petite image, deux façons de faire :
    • Placer la souris sur l'écran, maintenir la touche CTRL du clavier et utiliser la molette de la souris.
    • Dans le menu AFFICHAGE de GIMP, sélectionner ZOOM à 1600% pour espérer voir cette petite image.

    Vous devriez alors visualiser cette image :

    Visuel provoqué par le fichier image1.bpm
    Résultat image P1
Profondeur d'une couleur

Définition  la profondeur d'une couleur correspond au nombre de bits nécessaires pour encoder la couleur d'un pixel.

L'unité de la profondeur est le bpp, bit per pixel en anglais, bit par pixel en français.

Sur une image en NOIR et BLANC, il suffit d'un seul bit pour encoder un pixel.

Résultat image P1

Ici la profondeur est donc de 1 bpp.

03° Calculer le nombre de bits nécessaires pour encoder l'image suivante encodée en noir et blanc. En déduire le nombre d'octets nécessaires.

Résultat image P1

...CORRECTION...

Nous avons 9*7 pixels, soit 63 pixels.

Puisque la profondeur est de 1 bpp, il faut 63 bits pour encoder les pixels en eux mêmes.

En divisant par 8 arrondi au supérieur, on obtient le nombre d'octets : 63/8 donne 8 octets.

Sous-unités de l'octet

Kilo-octet (ko) : représente mille octets.
On notera 1 ko = 1000 o = 1.103 o

Méga-octet (Mo) : représente un million d'octets.
On notera 1 Mo = 1 000 000 o = 1.106 o

Giga-octet (Go) : représente un milliard d'octets.
On notera 1 Go = 1 000 000 000 o = 1.109 o

Téra-octet (To) : représente mille milliards d'octets.
On notera 1 To = 1 000 000 000 000 o = 1.1012 o

Péta-octet (Po) : représente un million de milliards d'octets.
On notera 1 Mo = 1 000 000 000 000 000 o = 1.1015 o

2 - Image en nuance de gris

Cette fois, on désire obtenir plus de nuances que juste noir ou blanc.

On considère ici le cas le plus courant : 256 nuances au total.

Voici quelques unes des nuances de gris / couleurs disponibles 

Valeur décimaleDonne :Visuel
0Noir (0%)
63Gris foncé(25%)
127Gris(50%)
191Gris clair(75%)
255Blanc(100%)

Pour encoder une image en 256 nuances de gris, on a donc besoin de 8 bits, soit un octet.

Nombre M =11111111
Les bits codent 1286432168421

Or M = 128+64+32+16+8+4+2+1 = 255.

Profondeur d'une couleur

Définition  la profondeur d'une couleur correspond au nombre de bits nécessaires pour encoder la couleur d'un pixel.

L'unité de la profondeur est le bpp, bit per pixel en anglais, bit par pixel en français.

Sur une image en nuance de gris (0 : NOIR, 255 : BLANC, entre les deux gris), il faut 256 nuances donc 8 bits (1 octet) par pixel.

Résultat image P2

Ici la profondeur est donc de 8 bpp : avec 8 bits, on parvient bien à encoder des valeurs comprises entre 0 et 255.

Si on veut créer une image en nuance de gris, on peut éventuellement la créer avec un éditeur de texte en utilisant un nouvel encodage. On enregistre au format .pgm.

  • Le type d'encodage (ici P2)
  • Le nombre de pixels sur une colonne, suivi d'un espace et du nombre de lignes (ici 9 7)
  • La valeur maximale, celle qui permet d'encoder le blanc (ici 255)
  • La couleur voulue sur chaque pixel dans l'ordre 'humain' : on considère une suite de pixels correspondant à la façon dont on lit un livre : de gauche à droite et de haut en bas

04° Réaliser les actions suivantes dans l'ordre.

  1. Ouvrir un éditeur de texte (par exemple Notepad++).
  2. Copier le code ci-dessous.
  3. P2 9 7 255 0 120 255 255 255 255 255 0 120 255 10 110 255 255 255 10 110 255 255 255 20 90 255 20 90 255 255 255 255 255 30 80 255 255 255 255 255 255 20 90 255 20 90 255 255 255 10 110 255 255 255 10 110 255 0 120 255 255 255 255 255 0 120
  4. Enregistrer (dans un répertoire que vous connaissez) le fichier sous le nom image2.pgm, l'extension devient donc .pgm.
  5. Ouvrir l'image avec le logiciel libre GIMP, un logiciel de traitement d'images :
    • Menu Fichier -> Ouvrir
    • Sur l'écran de sélection, cliquer sur AFFICHER TOUS LES FICHIERS, sinon vous ne verrez que les fichiers-images classiques comme PNG, JPEG...
    • Sélectionner votre fichier image2.pgm.

    Vous devriez obtenir ceci :

    Visuel provoqué par le fichier image2.bpm
    Résultat image P2

05° Puisqu'on a besoin d'un octet (valeur entre 0 et 255) pour définir la couleur d'un pixel, évaluer le nombre d'octets puis de bits nécessaires au stockage de cette image.

...CORRECTION...

Nous avons 9*7 pixels, soit 63 pixels.

On a donc besoin de 63 bits pour cette image de 256 nuances de gris.

En multipliant par 8, on obtient 504 bits.

3 - Image en couleur

Nous avons vu que la couleur était obtenue en activant les pixels RGB de différentes façons.

L'un des choix possibles est le suivant :

  • Un octet pour l'intensité du rouge (donc entre 0 et 255)
  • Un octet pour l'intensité du vert (donc entre 0 et 255)
  • Un octet pour l'intensité du bleu (donc entre 0 et 255)

Voici quelques unes des couleurs disponibles 

Valeur RGBRGBVisuel
0-0-0
63-63-0
127-127-0
0-191-127
255-255-255

Pour encoder une telle image en 256 nuances par couleur, on a donc besoin de 24 bits (3x8 bits), soit un 3 octets par PIXEL.

Profondeur d'une couleur

Définition  la profondeur d'une couleur correspond au nombre de bits nécessaires pour encoder la couleur d'un pixel.

L'unité de la profondeur est le bpp, bit per pixel en anglais, bit par pixel en français.

Sur une image possèdant 256 nuances par couleur RGB, obtient 2563 nuances, soit 16 777 216. Plus de 16 millions de possibilités.

Résultat image P3

Ici la profondeur est donc de 24 bpp : avec 24 bits, on parvient bien à encoder des valeurs comprises entre 0 et 255 pour R, V et B.

Si on veut créer une image en couleurs avec ces millions de nuances, on peut éventuellement la créer avec un éditeur de texte en utilisant un nouvel encodage. On enregistre au format .ppm.

  • Le type d'encodage (ici P3)
  • Le nombre de pixels sur une colonne, suivi d'un espace et du nombre de lignes (ici 9 7)
  • La valeur maximale sur une couleur primaire (ici 255)
  • La couleur voulue sur chaque pixel dans l'ordre 'humain' : on considère une suite de pixels correspondant à la façon dont on lit un livre : de gauche à droite et de haut en bas

06° Réaliser les actions suivantes dans l'ordre.

  1. Ouvrir un éditeur de texte (par exemple Notepad++).
  2. Copier le code ci-dessous.
  3. P3 9 7 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 160 210 0 160 0 210 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 170 220 0 170 0 220 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200
  4. Enregistrer (dans un répertoire que vous connaissez) le fichier sous le nom image3.ppm, l'extension devient donc .ppm.
  5. Ouvrir l'image avec le logiciel libre GIMP, un logiciel de traitement d'images :
    • Menu Fichier -> Ouvrir
    • Sur l'écran de sélection, cliquer sur AFFICHER TOUS LES FICHIERS, sinon vous ne verrez que les fichiers-images classiques comme PNG, JPEG...
    • Sélectionner votre fichier image2.pgm.

    Vous devriez obtenir ceci :

    Visuel provoqué par le fichier image3.ppm
    Résultat image P3

07° Quelle est la profondeur de cette image ?

...CORRECTION...

Nous avons trois intensités sur un octet chacune, on a 3 octets.

En multipliant par 8, on obtient 24 bits.

La profondeur est donc de 24 ppb.

08° En déduire approximativement le nombre d'octets puis de bits nécessaires au stockage de cette image.

...CORRECTION...

Nous avons 9*7 pixels, soit 63 pixels.

On a donc besoin de 63*24 bits. Soit 1512 bits.

En divisant par 8, on obtient 186 octets.

09° Comment limiter le poids de l'image ?

...CORRECTION...

On doit la compresser. Pour cela :

  • On peut limiter les choix de couleurs
  • On peut trouver des schémas qui se répétent pour ne pas les coder deux fois ou plus à l'identique
Compression

Comprimer une image veut dire la décrire en utilisant une méthode qui permet d'obtenir un nombre plus petit d'octets.

On peut agir sur le nombre de couleurs encodables (la profondeur) ou sur l'étude des répétitions dans l'image.

Quelques formats très courants :

Le JPEG (.jpg) : très bonne compression mais les couleurs peuvent être légerement modifiées par rapport à l'image d'origine. Format très utile sur Internet.

Le PNG (.png) : une moins bonne compression mais l'image n'est pas altérée. Très utile pour transferer des photos de bonne qualité via le réseau Internet ou pour le stockage des photos numériques.

Retenons que

  • plus une image possède de pixels plus elle pèse lourd.
  • plus une image possède d'un grand nombre de nuances de couleurs (profondeur) plus elle pèse lourd

10 - à faire valider par l'enseignant° Réaliser un dessin représentant soit un drapeau, soit un dessin en utiilsant l'encodage d'une image en couleurs vues aujourd'hui.

Bilan sur la profondeur

Le nombre de pixels d'une image se trouve en multipliant sa largeur L et sa hauteur H.

Il s'agit donc de sa résolution R = L * H.

Pour déterminer la place mémoire théorique de l'image, il suffit donc de multiplier la résolution par le nombre de bits nécessaire par pixel, grandeur qu'on nomme bpp (bit per pixel).

place = R * bpp

Attention : on obtient la place mémoire en bits, pas en octets.

Pour obtenir la place en octets, il faut encore diviser ce résultat par 8.

Si on résume :

  • Résolution R = L * H
  • Place mémoire nécessaire place = R * bpp
    • bpp = 1 si l'image est NOIR ou BLANC.
    • bpp = 8 si l'image est en nuances de GRIS.
    • bpp = 24 si l'image est en couleurs.
    • bpp = 32 si l'image est en couleurs avec un effet de transparence (coucle ALPHA).

La prochaine fois, nous verrons comment modifier une image à l'aide d'un programme Python.

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