Portable Graymap Format (.pgm)

Netpbm Standaard

Portable 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:

Selecteer of sleep bestanden hierheen

Privé - bestanden verlaten uw apparaat niet

of plak Ctrl+V
Privacygarantie zonder netwerktransmissie: 0 bytes geüpload naar externe servers. Alle verwerking vond lokaal plaats in uw browser-sandbox.

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 35

ASCII-WEERGAVE: P2 / P5

Standaardisatie: Netpbm Library Standard

Technische specificaties

ContainerarchitectuurASCII (P2) of binair (P5) Netpbm-formaat met breedte, hoogte, maximale grijswaarde en pixelstroom
CompressieOngecomprimeerde ruwe binaire bytes of door mensen leesbare ASCII-tekstgetallen
Bytevolgorde (endianness)Big-Endian (voor 16-bits binaire samples in P5-modus)
KleurruimtenLineaire grijswaarden of sRGB-grijswaarden
Kanalen en structuur1 grijswaardekanaal (precisie van 8 of 16 bits)
Maximale afmetingenPraktisch onbeperkt (ondersteunt een willekeurige 64-bits coördinatenruimte)
TransparantieGeen
Streaming en progressiefSequentiële streaming, rij voor rij

Technische vergelijkingsmatrix: PGM versus concurrenten

Technisch kenmerkPGM (Huidig)PBMPPMPNG
KleurmodusGrijswaarden (8-bits / 16-bits)1-bits monochroomRGB-truecolor (24-bits / 48-bits)Grijswaarden, RGB, RGBA
Netpbm-tegenhangerPGM (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....
CompressieNiet-gecomprimeerdNiet-gecomprimeerdNiet-gecomprimeerdVerliesvrije 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

200016-bits diepte (maxval tot 65535) gestandaardiseerd in de binaire P5-modus voor wetenschappelijke beeldvorming.
1993Opgenomen in de Netpbm-toolkit als het standaard tussenformaat voor grijswaarden.
1989Jef Poskanzer maakt PGM als aanvulling op PBM, met ondersteuning voor 256 grijsniveaus.

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.