Portable Graymap Format (.pgm)
Netpbm StandaardPortable Graymap Format (PGM) is de specificatie voor grijswaardenafbeeldingen van de Netpbm-familie. Het formaat wordt veel gebruikt in computervisie, robotica, optische inspectie en algoritmen voor digitale beeldverwerking.
Inspecteren en metadata
Besturingssystemen en bestandsanalysators herkennen PGM-bestanden aan de hand van de eerste binaire bytesequentie:
Bestandshandtekening op byteniveau (magic bytes)
Besturingssystemen en bestandsanalysators herkennen PGM-bestanden aan de hand van de eerste binaire bytesequentie:
HEX-HANDTEKENING (OFFSET 0):
50 32 / 50 35ASCII-WEERGAVE: P2 / P5
Standaardisatie: Netpbm Library Standard
Technische specificaties
| Containerarchitectuur | ASCII (P2) of binair (P5) Netpbm-formaat met breedte, hoogte, maximale grijswaarde en pixelstroom |
| Compressie | Ongecomprimeerde ruwe binaire bytes of door mensen leesbare ASCII-tekstgetallen |
| Bytevolgorde (endianness) | Big-Endian (voor 16-bits binaire samples in P5-modus) |
| Kleurruimten | Lineaire grijswaarden of sRGB-grijswaarden |
| Kanalen en structuur | 1 grijswaardekanaal (precisie van 8 of 16 bits) |
| Maximale afmetingen | Praktisch onbeperkt (ondersteunt een willekeurige 64-bits coördinatenruimte) |
| Transparantie | Geen |
| Streaming en progressief | Sequentiële streaming, rij voor rij |
Technische vergelijkingsmatrix: PGM versus concurrenten
| Technisch kenmerk | PGM (Huidig) | PBM | PPM | PNG |
|---|---|---|---|---|
| Kleurmodus | Grijswaarden (8-bits / 16-bits) | 1-bits monochroom | RGB-truecolor (24-bits / 48-bits) | Grijswaarden, RGB, RGBA |
| Netpbm-tegenhanger | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | W3C-standaard buiten Netpbm |
| Bestandshandtekening (magic bytes) | P2 (ASCII) / P5 (binair) | P1 (ASCII) / P4 (binair) | P3 (ASCII) / P6 (binair) | ‰PNG.... |
| Compressie | Niet-gecomprimeerd | Niet-gecomprimeerd | Niet-gecomprimeerd | Verliesvrije Deflate |
Veelvoorkomende beschadigingen en gids voor hex-herstel
Afbeelding wordt omgekeerd of volledig overbelicht wit weergegeven.
Oorzaak: Niet-overeenkomende 'maxval'-parameter in de header (bijv. maxval gedeclareerd als 1 in plaats van 255).
Herstel: Corrigeer de maxval-headerregel of transcodeer met de Netpbm Converter van File2File.app.
Beveiligingsanalyse en aanvalsvectoren voor parsers
PGM-decoders moeten zorgvuldig controleren of de ingelezen aantallen pixels overeenkomen met de opgegeven afmetingen om bufferoverloop te voorkomen.
Bekende aanvalsvectoren
- Integeroverflow tijdens de bufferallocatie van breedte * hoogte * (maxval > 255 ? 2 : 1).
- Bufferoverread bij het lezen van misvormde ASCII-getaltokens.
- Denial of service door een enorme geheugentoewijzing die wordt veroorzaakt door verzonnen afmetingen in de header.
Aanbevolen beveiligingspraktijken: Begrens maximaal toelaatbare afmetingen en geheugenallocatielimieten voordat pixelstromen worden gelezen.
Historische oorsprong en mijlpalen
Belangrijkste voordelen
- De compacte PGM-structuur maakt basale lezers eenvoudig te implementeren, al vereist het verwerken van bitdiepten, headers en misvormde invoer nog steeds zorgvuldigheid.
- Ondersteuning voor 16-bits grijswaarden maakt het formaat ideaal voor hoogtekaarten, dieptekaarten en thermische beeldvorming.
- De ASCII-modus (P2) maakt het mogelijk om ruwe pixelwaarden rechtstreeks in standaardteksteditors te bekijken en aan te passen.
Technische beperkingen
- Geen compressie: grote bestandsomvang in vergelijking met gecomprimeerde formaten zoals PNG.
- Mist metadata voor fysieke afmetingen, kleurruimten of geolocatie.
- Strikt beperkt tot één kanaal: kan geen kleurgegevens of alfatransparantie opslaan.
Interessante technische weetjes
- OpenCV, ROS (Robot Operating System) en machinevisiesystemen gebruiken PGM regelmatig voor SLAM-navigatiekaarten.
- Gameontwikkelaars gebruiken vaak 16-bits PGM-bestanden als terreinhoogtekaarten, omdat de ruwe hoogtegegevens ongecomprimeerd zijn en gemakkelijk kunnen worden geladen.
- De parameter 'maxval' in de header definieert de maximale helderheidswaarde (meestal 255 voor 8 bits of 65535 voor 16 bits).
Veelgestelde technische vragen
Waar wordt het PGM-formaat voor gebruikt?
PGM wordt voornamelijk gebruikt in computervisie (OpenCV), robotica (ROS-kaartbestanden), wetenschappelijke beeldvorming en het genereren van 3D-terreinhoogtekaarten.
Wat is het verschil tussen P2- en P5-PGM-bestanden?
P2 is platte ASCII-tekst waarin elke pixel een uitgeschreven getal is, terwijl P5 pixels opslaat als compacte binaire bytes.
Hoe kan ik PGM naar JPG of PNG converteren?
PGM slaat grijswaarden op. Converteer het naar PNG voor een verliesvrije afbeelding die door veel beeldviewers wordt ondersteund, of naar JPEG wanneer een kleiner bestand in fotostijl belangrijk is. Deze converter werkt in uw browser.