Portable Graymap (.pgm)
Netpbm-bibliotekets StandardPortable Graymap Format (PGM) er gråtonebildespesifikasjonen i Netpbm-familien, som er mye brukt i datasyn, robotikk, optisk inspeksjon og digitale bildebehandlingsalgoritmer.
Inspeksjon og metadata
Operativsystemer og filanalysatorer identifiserer PGM-filer ved å undersøke den innledende binære bytesekvensen:
Filsignatur på bytenivå (magiske byte)
Operativsystemer og filanalysatorer identifiserer PGM-filer ved å undersøke den innledende binære bytesekvensen:
HEX-SIGNATUR (OFFSET 0):
50 32 / 50 35ASCII-REPRESENTASJON: P2 / P5
Standardisering: Netpbm-bibliotekets standard
Tekniske spesifikasjoner
| Beholderarkitektur | Netpbm-format i ASCII (P2) eller binær form (P5), med bredde, høyde, maksimal gråtoneverdi og pikselstrøm |
| Komprimering | Ukomprimerte rå byteverdier eller lesbare ASCII-tall |
| Bytterekkefølge | Big-endian (for 16-bits binærverdier i P5-modus) |
| Fargerom | Lineære gråtoner eller sRGB-gråtoner |
| Kanaler og struktur | Énkanals gråtonebilde med 8- eller 16-bits presisjon |
| Maks. dimensjoner | I praksis ubegrenset (støtter vilkårlig 64-bits koordinatrom) |
| Gjennomsiktighet | Ingen |
| Strømming og progressiv visning | Støtter sekvensiell strømming rad for rad |
Teknisk sammenligningsmatrise: PGM sammenlignet med konkurrenter
| Teknisk attributt | PGM (Gjeldende) | PBM | PPM | PNG |
|---|---|---|---|---|
| Fargemodus | Gråtoner (8-bit / 16-bit) | Monokromatisk, 1 bit | RGB Truecolor (24-bit / 48-bit) | Gråtoner, RGB, RGBA |
| Beslektet Netpbm-format | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | W3C-standard utenfor Netpbm-familien |
| Signaturbyte | P2 (ASCII) / P5 (binær) | P1 (ASCII) / P4 (binær) | P3 (ASCII) / P6 (binær) | ‰PNG.... |
| Kompresjon | Ukomprimert | Ukomprimert | Ukomprimert | Tapsfri Deflate |
Vanlige korrupsjonsmoduser og heksadesimal gjenopprettingsveiledning
Bildet vises invertert eller helt utbrent hvitt.
Underliggende årsak: Feilaktig 'maxval'-parameter i hodet (f.eks. at maxval er erklært som 1 i stedet for 255).
Utbedring: Korriger headerlinjen for maxval eller transkod med File2File.app Netpbm Converter.
Sikkerhetsanalyse og angrepsvektorer mot parsere
PGM-dekodere må nøye validere at analyserte pikseltall samsvarer med erklærte dimensjoner for å forhindre bufferoverløp.
Kjente angrepsvektorer
- Heltallsoverflyt under buffertildeling for bredde * høyde * (maxval > 255 ? 2 : 1).
- Bufferoverlesing ved lesing av misdannede ASCII-talltoken.
- Tjenestenekt gjennom massiv minnetildeling utløst av oppdiktede dimensjoner i filhodet.
Anbefalte sikkerhetstiltak: Sett grenser for maksimalt tillatte dimensjoner og minnetildelingsgrenser før du leser pikselstrømmer.
Historisk opprinnelse og milepæler
Viktige fordeler
- Den kompakte PGM-strukturen gjør det forholdsvis enkelt å lage grunnleggende lesere, men det krever omtanke å håndtere prøvedybder, headere og feilformaterte inndata.
- Innebygd støtte for 16-biters gråtoner gjør formatet ideelt for høydekart, dybdekart og termisk avbildning.
- ASCII-modus (P2) tillater direkte inspeksjon og manipulering av rå pikselverdier i standard tekstredigeringsprogrammer.
Tekniske begrensninger og ulemper
- Ingen kompresjon: store filstørrelser sammenlignet med komprimerte formater som PNG.
- Mangler metadata for fysiske dimensjoner, fargerom eller geolokalisering.
- Strengt énkanals: kan ikke lagre fargedata eller alfatransparens.
Interessante tekniske fakta
- OpenCV, ROS (Robot Operating System) og maskinsynssystemer bruker ofte PGM for SLAM-navigasjonskart.
- Spillutviklere bruker ofte 16-bits PGM-filer som terrenghøydekart fordi de rå høydedataene er ukomprimerte og enkle å laste inn.
- Parameteren 'maxval' i hodet definerer den maksimale lysstyrkeverdien (vanligvis 255 for 8-bit eller 65535 for 16-bit).
Ofte stilte tekniske spørsmål
Hva brukes PGM-formatet til?
PGM brukes primært innen datasyn (OpenCV), robotikk (ROS-kartfiler), vitenskapelig avbildning og generering av 3D-terrenghøydekart.
Hva er forskjellen mellom P2- og P5 PGM-filer?
P2 er ren ASCII-tekst der hver piksel er et skrevet tall, mens P5 lagrer piksler som kompakte binære byte.
Hvordan kan jeg konvertere PGM til JPG eller PNG?
PGM lagrer gråtonedata. Konverter til PNG for et tapsfritt bilde med bred støtte i bildevisere, eller til JPEG hvis du trenger en mindre fil som passer for fotografier. Denne konvertereren kjører i nettleseren.