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.
Ispezione 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 contenitore | 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 (Attuale) | 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 esadecimale
L’immagine appare invertita o completamente sovraesposta.
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.app Netpbm Converter.
Analisi di sicurezza e vettori di attacco del parser
I decoder PGM devono verificare attentamente che il numero di pixel letto corrisponda alle dimensioni dichiarate, per evitare accessi oltre i limiti 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.
- Interruzione del servizio causata da dimensioni dichiarate nell’intestazione che richiedono un’enorme quantità di memoria.
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
- La struttura compatta di PGM può semplificare l’implementazione di lettori di base, anche se la gestione della profondità dei campioni, delle intestazioni e degli input malformati richiede attenzione.
- 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
- 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?
PGM memorizza campioni in scala di grigi. Converti in PNG per ottenere un’immagine senza perdita compatibile con molti visualizzatori, oppure in JPEG se serve un file fotografico più piccolo; la conversione JPEG può ridurre la qualità.