Graymap portatile (.pgm)
Standardul StandardPortable Graymap Format (PGM) este specificația pentru imagini în tonuri de gri a familiei Netpbm, utilizată pe scară largă în viziune computerizată, robotică, inspecție optică și algoritmi de procesare digitală a imaginilor.
Inspectare și metadate
Sistemele de operare și analizatoarele de fișiere identifică fișierele PGM prin inspectarea secvenței binare inițiale:
Semnătura antetului la nivel de octet (octeți magici)
Sistemele de operare și analizatoarele de fișiere identifică fișierele PGM prin inspectarea secvenței binare inițiale:
SEMNĂTURĂ HEXAZECIMALĂ (DECALAJ 0):
50 32 / 50 35REPREZENTARE ASCII: P2 / P5
Standardizare: Standardul bibliotecii Netpbm
Specificații tehnice
| Arhitectură container | Format Netpbm ASCII (P2) sau binar (P5), cu lățimea, înălțimea, valoarea maximă de gri și fluxul de pixeli |
| Compresie | Octeți binari bruti necomprimați sau valori numerice în text ASCII lizibil |
| Ordinea octeților | Big-Endian (pentru eșantioane binare pe 16 biți în modul P5) |
| Spații de culoare | Tonuri de gri liniare sau sRGB |
| Canale și structură | 1 canal în tonuri de gri (precizie de 8 sau 16 biți) |
| Dimensiuni maxime | Practic nelimitate (acceptă coordonate pe 64 de biți arbitrare) |
| Transparență | Nu există |
| Streaming și progresiv | Redare secvențială, rând cu rând |
Matrice de comparație tehnică: PGM vs. concurenți
| Atribut tehnic | PGM (Curent) | PBM | PPM | PNG |
|---|---|---|---|---|
| Mod de culoare | Tonuri de gri (8 biți / 16 biți) | Monocrom pe 1 bit | Truecolor RGB (24 biți / 48 biți) | Tonuri de gri, RGB, RGBA |
| Înrudit Netpbm | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | Standard W3C non-Netpbm |
| Octeți magici | P2 (ASCII) / P5 (Binar) | P1 (ASCII) / P4 (Binar) | P3 (ASCII) / P6 (Binar) | ‰PNG.... |
| Compresie | Necomprimat | Necomprimat | Necomprimat | Deflate fără pierderi |
Moduri comune de corupție și ghid de recuperare hexazecimală
Imaginea se afișează inversată sau complet supraexpusă, cu zone albe.
Cauză principală: Parametru „maxval" nepotrivit în antet (de ex. maxval declarat ca 1 în loc de 255).
Recuperare: Corectează linia maxval din antet sau recodifică fișierul cu File2File.app Netpbm Converter.
Analiză de securitate și vectori de atac asupra parserului
Decodoarele PGM trebuie să valideze cu atenție că numărul de pixeli analizați corespunde dimensiunilor declarate pentru a preveni depășirea memoriei tampon.
Vectori de atac cunoscuți
- Depășire de întregi în timpul alocării tamponului pentru lățime * înălțime * (maxval > 255 ? 2 : 1).
- Citire excesivă a memoriei tampon la citirea jetoanelor numerice ASCII malformate.
- Refuz de serviciu prin alocare masivă de memorie declanșată de dimensiuni fabricate în antet.
Cele mai bune practici de securitate: Limitează dimensiunile maxime admise și memoria alocată înainte de a citi fluxurile de pixeli.
Origini istorice și repere
Avantaje cheie și beneficii
- Structura compactă PGM permite implementarea simplă a cititoarelor de bază, deși trebuie tratate cu grijă adâncimile eșantioanelor, antetele și intrările malformate.
- Suportul nativ pentru tonuri de gri pe 16 biți îl face ideal pentru hărți de altitudine (heightmaps), hărți de adâncime și imagistică termică.
- Modul ASCII (P2) permite inspecția directă și manipularea valorilor brute ale pixelilor în editoare de text standard.
Limitări tehnice și dezavantaje
- Fără compresie: dimensiuni mari ale fișierelor în comparație cu formatele comprimate precum PNG.
- Nu oferă metadate despre dimensiunile fizice, spațiile de culoare sau geolocalizare.
- Are un singur canal și nu poate stoca date color sau transparență alfa.
Curiozități tehnice interesante
- OpenCV, ROS (Robot Operating System) și sistemele de viziune mașină utilizează frecvent PGM pentru hărți de navigație SLAM.
- Dezvoltatorii de jocuri folosesc adesea fișiere PGM pe 16 biți ca hărți de teren deoarece datele de relief brute sunt necomprimate și ușor de încărcat.
- Parametrul „maxval" din antet definește valoarea maximă de luminozitate (de obicei 255 pentru 8 biți sau 65535 pentru 16 biți).
Întrebări tehnice frecvente
Pentru ce este folosit formatul PGM?
PGM este utilizat în principal în viziune computerizată (OpenCV), robotică (fișiere de hartă ROS), imagistică științifică și generarea de hărți de elevație a terenului 3D.
Care este diferența dintre fișierele PGM P2 și P5?
P2 este text ASCII pur în care fiecare pixel este un număr scris, în timp ce P5 stochează pixelii ca octeți binari compacți.
Cum pot converti PGM în JPG sau PNG?
PGM stochează eșantioane în tonuri de gri. Convertește-l în PNG pentru o imagine fără pierderi, compatibilă cu multe vizualizatoare, sau în JPEG dacă vrei un fișier foto mai mic; acest convertor rulează în browserul tău.