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.
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.
nombre de couleurs max. | compression | transparence | licence | |
|---|---|---|---|---|
\(2^{24}\) = 16 millions | non | non | format ouvert | |
\(2^{8}\) = 256 | sans perte | oui | format propriétaire (brevet expiré en 2006) | |
\(2^{24}\) = 16 millions | avec perte, réglable (0-100) | non | format ouvert | |
\(2^{32}\) = 4 milliards | avec ou sans perte | oui | format ouvert | |
\(2^{48}\) = 280000 milliards | sans perte | oui couche alpha | format ouvert |
le principe des formats matriciels
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 :
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.
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.
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 ?
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.
Exemple : dessine-moi un mouton...
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.
image avec transparence
Définition : canal 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.
Complément :
Certains formats n'utilisent pas le canal alpha, et permettent de définir une couleur qui jouera le rôle de transparence.

