Alles over PGM bestanden
eenvoudig formaat voor grijswaardenafbeeldingen
PGM is de grijswaardenvariant van de PBM-familie. Terwijl PBM alleen zwart en wit kent, biedt PGM tot 65.535 gradaties tussen deze twee uitersten. Elke pixel wordt beschreven door een enkele numerieke waarde: 0 is zwart, de maximale waarde is wit. PGM staat voor "Portable Gray Map" en werd eind 1988 door Jef Poskanzer ontwikkeld als uitbreiding van PBM. Zie mijn artikel over PBM voor de geschiedenis van de gehele formaatfamilie.
TLDR:
PGM is het grijswaardenformaat van de Netpbm-familie. Het werkt net als PBM, maar dan met meer dan twee "kleuren" – namelijk grijswaarden. PGM wordt nog steeds gebruikt in beeldverwerking, in het onderwijs en als tussenformaat in pijplijnen. Wie het PBM-artikel kent, kent het principe; PGM maakt het gewoon grijzer. De kleurrijke variant is tenslotte PPM.
De technische opbouw
Een PGM-afbeelding verschilt van PBM door precies één extra regel in de header: de maximale waarde (Maxval). Deze bepaalt hoeveel grijstinten de afbeelding gebruikt. Ook met PGM is het mogelijk om een afbeelding op "ruitjespapier" te tekenen. In plaats van vakjes in te kleuren, worden hier in elk vakje getallen gebruikt die een helderheid vertegenwoordigen.
| Onderdeel | Voorbeeld | Betekenis |
|---|---|---|
| Magic Number | P2 |
Plain PGM (ASCII-variant) |
| Opmerking | # mein bild |
Optioneel, ingeleid door # ingeleid |
| Breedte Hoogte | 24 7 |
Afmetingen in pixels |
| Maxval | <15 |
Maximale grijswaarde (1-65535) |
| Rastergegevens | 0 2 4 6 ... |
Grijswaarden per pixel |
Het klassieke FEEP-voorbeeld ziet er in PGM zo uit: elke letter krijgt een eigen helderheid. (Voor een betere weergave met een monospace-lettertype heb ik een Maxval van 8 gekozen)
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
De tekst FEEP is net als in het PBM-voorbeeld te herkennen, maar de letters worden van links naar rechts lichter: F is donkergrijs (2), E middengrijs (4 en 6), P wit (8).
Maxval: het doorslaggevende verschil tussen PBM en PGM
De Maxval bepaalt de kleurdiepte van de afbeelding. Met Maxval 1 gedraagt PGM zich overigens precies zoals PBM. Met Maxval 255 heb je 256 grijstinten, wat overeenkomt met een klassieke 8-bits grijswaardenafbeelding. Waarden boven 255 zijn mogelijk (tot 65535), maar worden in de praktijk zelden gebruikt.
Plain vs. Raw: P2 en P5
Net als bij PBM zijn er ook bij PGM een ASCII- en een binaire variant:
| Eigenschap | Plain PGM (P2) |
Raw PGM (P5) |
|---|---|---|
| Pixelgegevens | ASCII-decimale getallen | Binair, 1 of 2 bytes per pixel |
| Leesbaar voor mensen | Ja, volledig | Alleen de header |
| Opslagruimte per pixel | Variabel (cijfers + witruimte) | 1 byte (Maxval ≤ 255) of 2 bytes |
| Max. regellengte | 70 tekens aanbevolen | Geen limiet |
De RAW-variant (P5) is de standaard bij Netpbm-tools. Bij een Maxval boven 255 worden twee bytes per pixel gebruikt, Big-Endian.
Typische toepassingen
PGM wordt overal gebruikt waar het puur om de helderheidswaarde per pixel gaat en kleur geen rol speelt:
– Wetenschap en geneeskunde: röntgenfoto's, MRI-scans en microscopische opnames worden vaak verwerkt als grijswaardenafbeeldingen. PGM is hiervoor geschikt vanwege zijn eenvoud en verliesvrije opslag.
– Computer Vision: randdetectoren (Sobel, Canny), drempelwaardemethoden en histogramanalyses werken met grijswaarden. PGM levert deze zonder overhead.
– Hoogtekaarten en terreinmodellen: elke pixel vertegenwoordigt een hoogte – een toepassing die perfect past bij de "één waarde per pixel"-logica van PGM.
– Transparantiemaskers: In Netpbm wordt PGM ook gebruikt als transparantiemasker. Hier staat wit voor volledige dekking en zwart voor volledige transparantie.
– Onderwijs: Net als PBM is PGM uitstekend geschikt om de basisprincipes van beeldverwerking (niet beeldbewerking) bij te brengen.
Gamma en kleurruimte
Volgens de specificatie zijn de grijswaarden niet lineair, maar volgen ze de gamma-overdrachtsfunctie volgens ITU-R BT.709 (gamma 2.2). In de praktijk houden veel programma's zich hier echter niet aan en schrijven ze lineaire waarden. De Netpbm-tool pnmgamma kan tussen beide varianten converteren. Ook de inmiddels gangbaardere sRGB-overdrachtsfunctie wijkt enigszins af van BT.709 en in de praktijk gebruiken de meeste programma's gewoon sRGB en noemen ze het resultaat PGM.
Bronnen
Netpbm PGM-formaatspecificatie
PBM-artikel met geschiedenis van de formaatfamilie
.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>');
Converteren, openen en bewerken van PGM bestanden
Details over PGM bestanden
- Software voor het openen van PGM bestanden
- IrfanView
- XnView
- GIMP
- ImageMagick
- Software voor het bewerken van PGM bestanden
- GIMP
- ImageMagick
- Paint.NET
- MIME-type voor PGM
- image/x-portable-graymap
- image/x-pgm
Laatst bijgewerkt op 23 april 2026 door
Geen reacties