Graymap portatile (.pgm)
Netpbm StandardPortable Graymap Format (PGM) è la specifica per immagini in scala di grigi della famiglia Netpbm, ampiamente utilizzata nella visione artificiale, nella robotica, nell'ispezione ottica e negli algoritmi di elaborazione delle immagini digitali.
Ispeziona e metadati
I sistemi operativi e gli analizzatori di file identificano i file PGM ispezionando la sequenza di byte binari iniziale:
Firma dell'intestazione a livello di byte (Magic Bytes)
I sistemi operativi e gli analizzatori di file identificano i file PGM ispezionando la sequenza di byte binari iniziale:
FIRMA ESADECIMALE (OFFSET 0):
50 32 / 50 35RAPPRESENTAZIONE ASCII: P2 / P5
Standardizzazione: Netpbm Library Standard
Specifiche tecniche
| Architettura del container | Formato Netpbm ASCII (P2) o binario (P5) con larghezza, altezza, valore massimo di grigio e flusso di pixel |
| Compressione | Byte binari grezzi non compressi o numeri di testo ASCII leggibili dall'uomo |
| Endianness dei byte | Big-Endian (per campioni binari a 16 bit in modalità P5) |
| Spazi colore | Scala di grigi lineare o scala di grigi sRGB |
| Canali e struttura | 1 canale in scala di grigi (precisione a 8 bit o 16 bit) |
| Dimensioni massime | Praticamente illimitate (supporta uno spazio di coordinate arbitrario a 64 bit) |
| Trasparenza | Nessuna |
| Streaming e progressivo | Riproduzione in streaming sequenziale riga per riga |
Matrice di confronto tecnico: PGM vs Concorrenti
| Attributo tecnico | PGM (Corrente) | PBM | PPM | PNG |
|---|---|---|---|---|
| Modalità colore | Scala di grigi (8 bit / 16 bit) | Monocromatico a 1 bit | Truecolor RGB (24 bit / 48 bit) | Scala di grigi, RGB, RGBA |
| Formato affine Netpbm | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | Standard W3C non Netpbm |
| Byte magici | P2 (ASCII) / P5 (Binario) | P1 (ASCII) / P4 (Binario) | P3 (ASCII) / P6 (Binario) | ‰PNG.... |
| Compressione | Non compresso | Non compresso | Non compresso | Deflate senza perdita |
Modalità di corruzione comuni e guida al recupero Hex
L'immagine viene visualizzata invertita o completamente bruciata in bianco.
Causa principale: Parametro 'maxval' non corrispondente nell'intestazione (es. maxval dichiarato come 1 anziché 255).
Ripristino: Correggere la riga dell'intestazione maxval o convertire con File2File Netpbm Converter.
Analisi di sicurezza e vettori di attacco del parser
I decoder PGM devono verificare attentamente che i conteggi dei pixel analizzati corrispondano alle dimensioni dichiarate per evitare il superamento del buffer.
Vettori di attacco noti
- Overflow di interi durante l'allocazione del buffer larghezza * altezza * (maxval > 255 ? 2 : 1).
- Lettura oltre i limiti del buffer durante la lettura di token numerici ASCII malformati.
- Denial of service tramite allocazione di memoria massiccia attivata da dimensioni di intestazione fabricate.
Migliori pratiche difensive: Limitare le dimensioni massime consentite e i limiti di allocazione della memoria prima di leggere i flussi di pixel.
Origini storiche e tappe fondamentali
Vantaggi principali e pro
- Zero complessità: estremamente semplice da analizzare e scrivere in C, Python o WebAssembly senza librerie esterne.
- Il supporto nativo per la scala di grigi a 16 bit lo rende ideale per mappe di altezza, mappe di profondità e termografia.
- La modalità ASCII (P2) consente l'ispezione diretta e la manipolazione dei valori dei pixel grezzi in editor di testo standard.
Limiti tecnici e svantaggi
- Nessuna compressione: ingombri di file elevati rispetto a formati compressi come PNG.
- Privo di metadati per dimensioni fisiche, spazi colore o geolocalizzazione.
- Strettamente a canale singolo: non può memorizzare dati di colore o trasparenza alfa.
Curiosità tecniche interessanti
- OpenCV, ROS (Robot Operating System) e i sistemi di visione artificiale utilizzano frequentemente PGM per le mappe di navigazione SLAM.
- Gli sviluppatori di giochi utilizzano spesso file PGM a 16 bit come mappe di altezza del terreno perché i dati di elevazione grezzi non sono compressi e sono facili da caricare.
- Il parametro 'maxval' nell'intestazione definisce il valore di luminosità massimo (tipicamente 255 per 8 bit o 65535 per 16 bit).
Domande tecniche frequenti
A cosa serve il formato PGM?
PGM viene utilizzato principalmente nella visione artificiale (OpenCV), nella robotica (file di mappa ROS), nell'imaging scientifico e nella generazione di mappe di altezza di terreni 3D.
Qual è la differenza tra i file PGM P2 e P5?
P2 è un semplice testo ASCII in cui ogni pixel è un numero scritto, mentre P5 memorizza i pixel come byte binari compatti.
Come posso convertire PGM in JPG o PNG?
Carica il tuo file PGM su File2File.app per convertirlo in PNG o JPG direttamente nel tuo browser con la massima privacy.