Portable Graymap (.pgm)
Netpbm StandardPortable Graymap Format (PGM) är gråskalebildspecifikationen i Netpbm-familjen, som används flitigt inom datorseende, robotik, optisk inspektion och digitala bildbehandlingsalgoritmer.
Granska och metadata
Operativsystem och filanalysverktyg identifierar PGM-filer genom att granska den inledande sekvensen av binära byte:
Signatur i filhuvudet på bytenivå (magiska byte)
Operativsystem och filanalysverktyg identifierar PGM-filer genom att granska den inledande sekvensen av binära byte:
HEX-SIGNATUR (OFFSET 0):
50 32 / 50 35ASCII-REPRESENTATION: P2 / P5
Standardisering: Netpbm Library Standard
Tekniska specifikationer
| Containerarkitektur | Netpbm-format i ASCII (P2) eller binärt (P5), med bredd, höjd, maximalt gråvärde och pixelström |
| Komprimering | Okomprimerade råa binära byte eller människoläsbara ASCII-tal |
| Byteordning | Big-endian (för 16-bitars binära sampel i P5-läge) |
| Färgrymder | Linjär gråskala eller sRGB-gråskala |
| Kanaler och struktur | 1 kanal i gråskala (8 eller 16 bitars precision) |
| Maximala dimensioner | I praktiken obegränsat (stöder godtyckliga koordinatvärden på 64 bitar) |
| Transparens | Ingen |
| Strömning och progressiv visning | Sekventiell strömmande uppspelning rad för rad |
Teknisk jämförelsematris: PGM jämfört med konkurrenter
| Tekniskt attribut | PGM (Aktuell) | PBM | PPM | PNG |
|---|---|---|---|---|
| Färgläge | Gråskala (8-bitars / 16-bitars) | 1-bitars monokrom | RGB Truecolor (24-bitars / 48-bitars) | Gråskala, RGB, RGBA |
| Netpbm-syskon | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | Icke-Netpbm W3C-standard |
| Magiska byte | P2 (ASCII) / P5 (binärt) | P1 (ASCII) / P4 (binärt) | P3 (ASCII) / P6 (binärt) | ‰PNG.... |
| Komprimering | Okomprimerad | Okomprimerad | Okomprimerad | Oförstörande Deflate |
Vanliga skadeorsaker och hex-återställningsguide
Bilden visas inverterad eller helt utfrätt vit.
Grundorsak: Felaktigt värde för 'maxval' i huvudet (t.ex. att maxval anges som 1 i stället för 255).
Återställning: Korrigera maxval-huvudraden eller transkoda med File2File.app Netpbm Converter.
Säkerhetsanalys och attackvektorer för tolkar
PGM-avkodare måste noggrant validera att tolkade pixelantal matchar deklarerade dimensioner för att förhindra buffertöverskridning.
Kända attackvektorer
- Heltalsspill vid allokering av buffert för bredd * höjd * (maxval > 255 ? 2 : 1).
- Buffertläsning utanför gränserna vid läsning av felaktiga ASCII-nummertoken.
- Tjänsteavbrott (DoS) genom enorm minnesallokering som utlöses av påhittade mått i filhuvudet.
Rekommenderade skyddsåtgärder: Begränsa maximala dimensioner och minnesallokering innan pixelströmmar läses.
Historiskt ursprung och milstolpar
Viktiga fördelar
- Den kompakta PGM-strukturen gör det enkelt att implementera grundläggande läsare, men man måste fortfarande hantera samplingsdjup, huvuden och felaktiga indata.
- Inbyggt 16-bitars gråskalestöd gör det idealiskt för höjdkartor, djupkartor och termisk bildbehandling.
- ASCII-läget (P2) tillåter direkt inspektion och manipulering av råa pixelvärden i standardtextredigerare.
Tekniska begränsningar
- Ingen komprimering: stora filstorlekar jämfört med komprimerade format som PNG.
- Saknar metadata för fysiska dimensioner, färgrymder eller geolokalisering.
- Strikt enkanals: kan inte lagra färgdata eller alfatransparens.
Intressant teknisk kuriosa
- OpenCV, ROS (Robot Operating System) och maskinseendesystem använder ofta PGM för SLAM-navigationskartor.
- Spelutvecklare använder ofta 16-bitars PGM-filer som terränghöjdkartor eftersom rådata för höjder är okomprimerade och enkla att läsa in.
- Parametern 'maxval' i huvudet definierar det maximala ljusstyrkevärdet (vanligtvis 255 för 8-bitars eller 65535 för 16-bitars).
Vanliga tekniska frågor
Vad används PGM-formatet till?
PGM används främst inom datorseende (OpenCV), robotteknik (ROS-kartfiler), vetenskaplig bildbehandling och generering av höjdkartor för 3D-terräng.
Vad är skillnaden mellan P2- och P5 PGM-filer?
P2 är vanlig ASCII-text där varje pixel representeras av ett tal, medan P5 lagrar pixlar som kompakta binära byte.
Hur kan jag konvertera PGM till JPG eller PNG?
PGM lagrar gråskalepixlar. Konvertera till PNG för en förlustfri bild med brett visarstöd, eller till JPEG om en mindre fotofil är viktigare; konverteraren körs i webbläsaren.