Quel format de fichiers pour stocker des images numériques ?

Pour stocker les images numériques, qu'elles soient vectorielles ou matricielles, différents formats de fichiers existent.

Ces différents formats d'images correspondent à des moyens standardisés pour organiser et stocker les informations numériques composant ces images.

les formats vectoriels

Fondamental

Une image vectorielle comporte une description de son contenu.

Le fichier d'une image vectorielle est un simple fichier texte, respectant un langage spécifique au format de cette image.

Le format historique pour les images vectorielles est le postscript ( principalement PS[1] ou EPS[2]).

Sa version moderne, le PDF[3], remplace majoritairement ses ancêtres pour la gestion des impressions : c'est le format de publication de prédilection pour les documents multi-pages ou non, vectoriels (ou non).

Le langage employé pour décrire l'image est le postscript.

Le SVG[4] est l'autre format vectoriel incontournable.

Développé pour le Web, il est à privilégier pour les illustrations en tout genre, pour internet comme pour l'impression.

Le langage employé pour décrire l'image est le XML[5].

les formats matriciels

Fondamental

Une image matricielle comporte un tableau de pixels.

Le fichier d'une image matricielle est un fichier binaire, stockant ce tableau d'une manière spécifique au format de cette image.

Il existe pléthore de formats d'images matricielles. Cela s'explique notamment par la nature même de ce type d'image, dont l'espace mémoire occupé par le tableau de pixels constitue la principale problématique que cherchent à réduire tous ces formats.

Deux formats matriciels sortent du lot aujourd'hui : le JPEG[7] et le PNG[8].

Le JPEG[7] est à privilégier pour des images qui doivent être affichées « en grand format » mais en minimisant les ressources consommées : son fort taux de compression est alors un atout (mais attention aux pertes !). Il comporte une limite de définition (la dimension la plus grande ne peut pas dépasser les 65 535 pixels !).

Le PNG[8] est à privilégier pour la conservation des images, sans perte, mais au détriment de l'espace mémoire utilisé. Il permet aussi de gérer la transparence, contrairement au JPEG[7] : il est ainsi intéressant pour les icônes d'application ou les sites Web.

comparaison des principaux formats d'images matricielles

nombre de couleurs max.

compression

transparence

licence

BMP[9]

\(2^{24}\) = 16 millions

RGB[10]

non

non

format ouvert

GIF[11]

\(2^{8}\) = 256

RGB[10] (palette)

sans perte

oui

format propriétaire

(brevet expiré en 2006)

JPEG[7]

\(2^{24}\) = 16 millions

YUV[12]

avec perte,

réglable (0-100)

non

format ouvert

JP2[13]

\(2^{32}\) = 4 milliards

YUV[12]

avec ou

sans perte

oui

format ouvert

PNG[8]

\(2^{48}\) = 280000 milliards

RGB[10]

sans perte

oui

couche alpha

format ouvert

le principe des formats matriciels

Rappel

Une image matricielle est constituée d'un ensemble de pixels[14].

Nous allons détailler le principe général des formats d'images matricielles.

Sur le principe, tous les formats matriciels sont construits selon la même logique. Ils définissent un tableau de pixels[14], et le stockent en compressant ou non les données binaires.

Le tableau de pixels[14] comporte au moins deux dimensions, pour représenter les dimensions géométriques (hauteur et largeur) de l'image.

La troisième dimension du tableau de pixels[14] dépend du profil colorimétrique de l'image :

il y aura autant de couches que de canaux.

Exemple

Une image en couleurs, selon le profil colorimétrique RGB[10], comporte 3 canaux et le tableau de pixels doit être de dimensions [hauteur, largeur, 3].

image en niveaux de gris

Chaque pixel représente un point. Les coordonnées de ce point correspondent aux indices de ce point dans le tableau de pixels[14]. La valeur stockée dans le tableau permet de définir le niveau de gris de ce pixel.

Généralement, le niveau de gris est codé sur un octet (8 bits valant 0 ou 1), ce qui permet 256 niveaux de gris (car \(2^8 = 256\)). La valeur 0 correspond au noir, la valeur 255 au blanc.

Visualisation des niveaux de gris | Fabien Baillon ~ IMT Mines Albi | Informations complémentaires...Informations
Visualisation des niveaux de grisInformations[16]
Complément

Le nombre de niveaux chromatiques est ce que l'on appelle la profondeur de l'image. Pour une image où les couleurs sont codées sur 256 niveaux, on a besoin de 8 bits par pixels. On parle alors d'image 8 bits.

Exemple

Considérons une image de 10x10 pixels, chaque pixel a une valeur comprise entre 0 et 255, correspondant au niveau de gris du point de l'image.

Visualisation des niveaux de gris d'une image matricielle | Fabien Baillon ~ IMT Mines Albi | Informations complémentaires...InformationsTableaux des niveaux de gris d'une image matricielle de 10x10 pixels.
Visualisation des niveaux de gris d'une image matricielleInformations[18]
Question / Réponse
Question

Si, de la même manière, je dispose d'une image de 1024x1024 pixels en 256 niveaux de gris, à combien peut-on estimer l'espace mémoire occupé par le tableau de pixels ?

Réponse

image en couleurs

Définition

Le modèle colorimétrique le plus courant pour les images numériques est le RGB[10] (ou RVB).

Selon ce modèle, une image couleur est définie par trois canaux R, G, et B. Chaque pixel comporte donc trois niveaux de gris pour indiquer le niveau de saturation du point pour ces trois couleurs de base (rouge, vert, bleu).

Méthode

Pour définir une image matricielle en couleurs, il suffit donc de définir 3 canaux de couleurs.

Classiquement, chaque canal sera codé sur 256 niveaux de gris. La couleur sera le résultat du mélange de ces 3 canaux.

Complément

Chaque pixel nécessite 3*8 bits pour coder la couleur du point de l'image. On parle alors d'image 24 bits.

Exempledessine-moi un mouton...
Montage présentant les 3 canaux de couleurs RGB en niveaux de gris et l'image en couleurs résultanteInformations[19]

Les 3 canaux de couleurs (RGB[10]) sont définis en 256 niveaux de gris, l'image résultat est l'assemblage de ces 3 canaux. (photographie originale : Mouton[20])

Complément

Les niveaux de gris de chaque canal de l'image en couleurs correspondent à la saturation de la couleur de chaque point.

On peut voir la luminosité globale de l'image en traçant l'histogramme, qui représente les niveaux de saturation.

On peut alors voir si une image est sous-exposée ou sur-exposée.

Histogramme de l'image du mouton | Fabien Baillon ~ IMT Mines Albi | Informations complémentaires...Informations
Histogramme de l'image du moutonInformations[22]

image avec transparence

Définitioncanal alpha

Les formats qui gèrent la transparence comporte un canal spécifique, que l'on appelle canal alpha, et qui indique le degré de transparence de chaque pixel de l'image.

Ce canal agit comme un masque : le degré de transparence 0 masque le contenu de l'image, alors que la valeur maximale (classiquement 255) correspond à une parfaite transparence.

Exemple

Cette image a été créée en définissant un dégradé de couleurs, puis en ajoutant une couche alpha composée d'un damier (noir et blanc).

Dans cet exemple, le damier définit des carrés totalement opaques ou totalement transparents, mais la transparence pourrait être partielle ou progressive.

Image avec canal alpha pour la transparenceInformations[23]
Complément

Certains formats n'utilisent pas le canal alpha, et permettent de définir une couleur qui jouera le rôle de transparence.