Codage numérique des images matricielles

Une image (du latin imago, qui désignait autrefois les masques mortuaires, moulés à partir de cire d’abeille, sur le visage d’une personne morte afin d’en conserver les traits, comme d’un portrait) est une représentation visuelle, voire mentale, de quelque chose (objet, être vivant et/ou concept).

L’image visuelle artificielle peut être :

  • enregistrée à partir du réel : photographie, vidéo, radiographie, IRM, …
  • fabriquée à partir d’une construction ou d’une restitution du réel : dessin, peinture, image de synthèse, …

Images numériques

carte

Dans l’image ci-contre (thermographie NOAA réalisée le 30 mars 1991), le niveau de température est codé par une intensité de gris.

Un ordinateur ne manipule que des valeurs numériques (représentées sous forme binaire) ; une image numérique devra donc être codée par des nombres.

 

On distingue deux types d’image numérique :

  • les images matricielles : formées de points (des pixels)
  • les images vectorielles : formée d’éléments géométriques (segments de droite, arcs de cercles, …)

 

Image numérique matricielle

Exemple d’image matricielle :

cerveau1 cerveau2 cerveau3
Image d’une coupe sagittale de cerveau
humain obtenue en IRM anatomique
La même image avec un zoom x 4
On commence à distinguer les pixels.
Zoom x 12 : un tableau de pixels…

coccinelleOn appelle image matricielle ou « carte de points » (de l’anglais bitmap), un ensemble fini de points colorés appelés pixels (contraction de picture elements) organisés en matrice (tableau à 2 dimensions).

Cette matrice contraint l’image à des dimensions fixes : une largeur (width) et une hauteur (height), le tout exprimé en pixels.

Une troisième dimension, appelée profondeur, permet de coder la couleur de chaque pixel. La profondeur d’une image peut être de différentes tailles :

  • 1 bit : 0 ou 1 pour les couleurs « noir » ou « blanc »,
  • 1 octet : pour coder 256 niveaux de gris, ou bien une palette de 256 couleurs,
  • 3 octets : pour coder les proportions de rouge, de vert et de bleu (256 valeurs possible chacun),
  • 4 octets : pour coder en plus une information de transparence,

Activité :

icone1L’icône ci-contre (fortement zoomée) a une résolution de 18 par 18 pixels.

  • Télécharger les éléments suivants :
    • Éditeur hexadécimal : Frhed
    • Icône 18×18 : icone_18x18.pgm (faire un clic-droit puis Enregistrer la cible du lien sous … »)
  • Ouvrir l’image (au format PGM) avec l’éditeur hexadécimal.
  • Modifier la largeur de la fenêtre jusqu’à observer quelque chose de remarquable. Décrire et expliquer.
  • Sous quel format sont codés les pixels de cette image ?
  • Quelle est la profondeur de cette image (en bits).

La taille (size) d’une image (quantité de mémoire nécessaire pour stocker une image) dépend du type de mémoire :

$$\bbox[5px,border:2px solid red]{\color{maroon}{taille}=\color{maroon}{largeur}\times\color{maroon}{hauteur}\times\color{maroon}{profondeur}}$$

cocoActivité :

  • Télécharger l’image ci-contre (faire un clic-droit puis Enregistrer la cible du lien sous … ») :
  • A partir de l’explorateur de fichier, faire un clic-droit sur Coco.png, puis Propriétés.
  • Quelles sont ses dimensions (en pixels) ? Sa profondeur (en bits) ?
  • Calculer la quantité de mémoire vive nécessaire pour l’afficher.

 

Formats d’enregistrement

Il existe de nombreux formats pour enregistrer une image, avec des niveaux de complexité très variables.

Les plus courants sont :

  • PNG : Portable Network Graphics
    Il permet les fonds transparents. La compression proposée par ce format est d’une qualité 5 à 25 % meilleure que la compression GIF.
  • JPG / JPEG  : Joint Photographic Experts Group
    Un des formats les plus utilisées sur le net. Les appareils photo numériques compacts prennent également les photos au format JPG. Il contient des méta informations (des EXIF et IPTC) qui permettent de connaître des informations au sujet de la photo.
  • GIF : Graphics Interchange Format
    Format adapté aux images de basse résolution. Permet la transparence et les images animées – plusieurs images séquentielles à l’intérieur du même fichier. Il est utilisé pour des logos, des icônes, des boutons et autres éléments de pages web. Profondeur limitée à 1 octet, soit 256 couleurs dans une palette.

Métadonnées

icone1

Activité :

  • Reprendre l’icône 18×18 :  icone_18x18
  • Quelle devrait-être sa taille sur le disque dur ?
  • Comparer avec sa taille effective (« Propriétés » depuis l’explorateur). Expliquer la différence.
  • Extraire son en-tête, et l’interpréter.

 

Certains formats d’enregistrement permettent également d’ajouter dans le fichier des métadonnées qui peuvent indiquer :

  • les dimensions « réelles » de l’image, sous la forme d’une résolution (en pixels par cm par exemple, ou en pixels par pouce : ppp)
  • les conditions de la prise de vue (focale, exposition, date, …)

Ces données sont le plus souvent à la spécification EXIF.

montgolfiereActivité :

  • Télécharger l’image ci-contre (faire un clic-droit puis Enregistrer la cible du lien sous … »).
  • A partir de l’explorateur de fichiers, afficher ses Propriétés.
  • Retrouver le maximum d’informations concernant les conditions de sa prise de vue.
  • Calculer ses dimensions en cm.

 

Compression

La plupart de ces formats utilisent des algorithmes de compression, afin de réduire la taille de l’image sur les mémoires de masse (disque durs, …).

On défini alors le taux de compression par :

$$\bbox[5px,border:2px solid red]{\color{maroon}{taux~de~compression}=1- \frac{taille~du~fichier~image}{taille~de~l’image~en~mémoire}}$$

La compression peut être réalisée avec ou sans perte :

  • sans perte : l’image comprimée est parfaitement identique à l’originale
  • avec perte : l’image est plus ou moins dégradée, selon le taux de compression souhaité.

Exemple : perte de qualité lors d’une compression JPEG :

oeil_100

compression JPEG 100% : 70 860 octets

oeil_40

compression JPEG 40% : 10 431 octets

oeil_10

compression JPEG 10% : 4 294 octets

Activité :

  • Calculer les différents taux de compression de l’image précédente (dimensions 300 x 300, profondeur 24 bits) dans les 3 cas présentés.

 

Codage numérique

Le codage d’une image est intimement lié au format d’enregistrement.

Activité :

compress_a

Le système de codage RLE (Run Length Encoding ou codage par longueur des plages), est certes ancien, mais a longtemps été utilisé dans les transmissions par fax.

L’image ci-contre est codée par les nombres figurant à sa droite.

  • Expliciter le codage employé
  • Quel est le taux de compression de cette image ?
  • S’agit-il d’un système de compression avec ou sans pertes ?

 

 

code_castorActivité :

L’image multicolore ci-contre a été codée dans le but de la comprimer.

  • Retrouver le code de la troisième ligne.
  • Calculer le taux de compression.

source : concours Castor Informatique 2010

 

Manipulation

Pour manipuler des images avec Python, il faut utiliser des bibliothèques capables de réaliser des opérations complexes telles que :

  • ouvrir/enregistrer des fichiers image,
  • accéder (lecture et écriture) aux pixels,
  • modifier les dimensions et recadrage,
  • modifier les propriétés de luminosité, contraste, balance des couleurs, …,
  • filtrage,

La bibliothèque la plus couramment employée sur Python est PIL.


Dépôt de fichier réponse

  • Ajouter un(des) fichier(s) puis cliquer sur Téléverser.
  • Rafraichir la page pour vérifier que le dépôt a bien eu lieu.

 

 

source : http://eduscol.education.fr/cid60671/ressources-isn.html