Tout sur les fichiers PGM
format simple pour les images en niveaux de gris
Le PGM est le représentant des niveaux de gris de la famille PBM. Alors que le PBM ne connaît que le noir et le blanc, le PGM permet jusqu'à 65 535 nuances entre ces deux extrêmes. Chaque pixel est décrit par une valeur numérique unique : 0 correspond au noir, la valeur maximale au blanc. PGM signifie « Portable Gray Map » et a été développé fin 1988 par Jef Poskanzer comme extension du format PBM. Pour l'histoire de l'ensemble de la famille de formats, voir mon article sur le PBM.
TLDR :
PGM est le format en niveaux de gris de la famille Netpbm. Il fonctionne comme le PBM, mais avec plus de deux « couleurs » : les niveaux de gris. Le PGM est encore utilisé dans le traitement d'images, dans l'enseignement et comme format intermédiaire dans les pipelines. Si vous connaissez l'article sur le PBM, vous connaissez le principe : le PGM rend simplement l'image plus grise. La variante colorée est finalement le PPM.
La structure technique
Une image PGM se distingue du PBM par une seule ligne supplémentaire dans l'en-tête : la valeur maximale (Maxval). Celle-ci détermine le nombre de niveaux de gris utilisés par l'image. Avec le PGM, il est également possible de dessiner une image sur du « papier quadrillé ». Au lieu de colorier des cases, on utilise ici dans chaque case des chiffres représentant une luminosité.
| Exemple | Exemple | Signification |
|---|---|---|
| Nombre magique | P2 |
PGM simple (variante ASCII) |
| Commentaire | # mein bild |
Facultatif, introduit par # introduit |
| Largeur Hauteur | 24 7 |
Dimensions en pixels |
| Maxval | <15 |
Valeur de gris maximale (1-65535) |
| Données raster | 0 2 4 6 ... |
Valeurs de gris par pixel |
L'exemple FEEP classique se présente ainsi en PGM : chaque lettre reçoit sa propre luminosité. (Pour une meilleure visualisation avec une police monospace, j'ai choisi une valeur Maxval de 8)
P2 # feep.pgm 24 7 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 4 4 4 4 0 0 6 6 6 6 0 0 8 8 8 8 0 0 2 0 0 0 0 0 4 0 0 0 0 0 6 0 0 0 0 0 8 0 0 8 0 0 2 2 2 0 0 0 4 4 4 0 0 0 6 6 6 0 0 0 8 8 8 8 0 0 2 0 0 0 0 0 4 0 0 0 0 0 6 0 0 0 0 0 8 0 0 0 0 0 2 0 0 0 0 0 4 4 4 4 0 0 6 6 6 6 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Le texte FEEP est reconnaissable comme dans l'exemple PBM, mais les lettres deviennent plus claires de gauche à droite : F est gris foncé (2), E gris moyen (4 et 6), P blanc (8).
Maxval : la différence décisive entre PBM et PGM
La valeur Maxval détermine la profondeur de couleur de l'image. Avec une valeur Maxval de 1, PGM se comporte d'ailleurs exactement comme PBM. Avec une valeur Maxval de 255, on dispose de 256 niveaux de gris, ce qui correspond à une image classique en niveaux de gris 8 bits. Des valeurs supérieures à 255 sont possibles (jusqu'à 65535), mais elles sont rarement utilisées dans la pratique.
Plain vs. Raw : P2 et P5
Tout comme pour le PBM, il existe également une variante ASCII et une variante binaire pour le PGM :
| Propriété | PGM Plain (P2) |
Raw PGM (P5) |
|---|---|---|
| Données de pixels | Chiffres décimaux ASCII | Binaire, 1 ou 2 octets par pixel |
| Lisible par l'homme | Oui, entièrement | Uniquement l'en-tête |
| Espace mémoire par pixel | Variable (chiffres + espaces) | 1 octet (valeur maximale ≤ 255) ou 2 octets |
| Longueur maximale de ligne | 70 caractères recommandés | Pas de limite |
La variante RAW (P5) est la norme pour les outils Netpbm. Lorsque la valeur maximale est supérieure à 255, deux octets par pixel sont utilisés, en ordre Big-Endian.
Domaines d'application typiques
Le format PGM est utilisé partout où seule la valeur de luminosité par pixel importe et où la couleur ne joue aucun rôle :
– Science et médecine : les radiographies, les IRM et les images microscopiques sont souvent traitées sous forme d'images en niveaux de gris. Le format PGM est adapté à cet usage en raison de sa simplicité et de son stockage sans perte.
– Vision par ordinateur : les détecteurs de contours (Sobel, Canny), les méthodes de seuil et les analyses d'histogrammes fonctionnent avec des données en niveaux de gris. Le format PGM fournit ces données sans surcoût.
– Cartes altimétriques et MODèles de terrain : chaque pixel représente une altitude – un cas d'utilisation qui correspond parfaitement à la logique « une valeur par pixel » du format PGM.
– Masques de transparence : dans Netpbm, le format PGM est également utilisé comme masque de transparence. Le blanc correspond à une opacité totale et le noir à une transparence totale.
– Enseignement : tout comme le format PBM, le format PGM est idéal pour enseigner les bases du traitement d'images (et non de la retouche d'images).
Gamma et espace colorimétrique
Selon la spécification, les valeurs de gris ne sont pas linéaires, mais suivent la fonction de transfert gamma selon la norme ITU-R BT.709 (gamma 2,2). Dans la pratique, cependant, de nombreux programmes ne respectent pas cette norme et écrivent des valeurs linéaires. L'outil Netpbm pnmgamma permet de convertir entre ces deux variantes. La fonction de transfert sRGB, désormais plus courante, s'écarte également légèrement de la norme BT.709 et, en réalité, la plupart des programmes utilisent simplement sRGB et appellent le résultat PGM.
Sources
Spécification du format PGM de Netpbm
Article sur PBM avec l'historique de la famille de formats
.b0 { color: #ccc; }
.b2 {color: #222; }
.b4 {color:#444;}
.b6 {color:#666;}
.b8 { color: #888; }
const el = document.getElementById('pgm');
el.innerHTML = el.textContent.replace(/([0-9])/g, '<span class="b$1">$1</span>');
Convertir, ouvrir et modifier les fichiers PGM
Détails sur les fichiers PGM
- Logiciel pour ouvrir les fichiers PGM
- IrfanView
- XnView
- GIMP
- ImageMagick
- Logiciel pour éditer les fichiers PGM
- GIMP
- ImageMagick
- Paint.NET
- Type MIME de PGM
- image/x-portable-graymap
- image/x-pgm
Dernière mise à jour le 23 avril 2026 par
Pas de commentaire