Graymap portatile (.pgm)

Netpbm Standard

Portable 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:

Seleziona o rilascia i file qui

Privato - i file non lasciano mai il tuo dispositivo

o incolla Ctrl+V
Garanzia di privacy con zero trasmissioni di rete: 0 byte caricati su server esterni. Tutta l'elaborazione è avvenuta localmente nella sandbox del tuo browser.

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 35

RAPPRESENTAZIONE ASCII: P2 / P5

Standardizzazione: Netpbm Library Standard

Specifiche tecniche

Architettura del contenitoreFormato Netpbm ASCII (P2) o binario (P5) con larghezza, altezza, valore massimo di grigio e flusso di pixel
CompressioneByte binari grezzi non compressi o numeri di testo ASCII leggibili dall'uomo
Endianness dei byteBig-endian (per campioni binari a 16 bit in modalità P5)
Spazi coloreScala di grigi lineare o scala di grigi sRGB
Canali e struttura1 canale in scala di grigi (precisione a 8 bit o 16 bit)
Dimensioni massimePraticamente illimitate (supporta uno spazio di coordinate arbitrario a 64 bit)
TrasparenzaNessuna
Streaming e progressivoRiproduzione in streaming sequenziale riga per riga

Matrice di confronto tecnico: PGM vs Concorrenti

Attributo tecnicoPGM (Attuale)PBMPPMPNG
Modalità coloreScala di grigi (8 bit / 16 bit)Monocromatico a 1 bitTruecolor RGB (24 bit / 48 bit)Scala di grigi, RGB, RGBA
Formato affine NetpbmPGM (Portable Graymap)PBM (Portable Bitmap)PPM (Portable Pixmap)Standard W3C non-Netpbm
Byte magiciP2 (ASCII) / P5 (Binario)P1 (ASCII) / P4 (Binario)P3 (ASCII) / P6 (Binario)‰PNG....
CompressioneNon compressoNon compressoNon compressoDeflate 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

2000Profondità a 16 bit (maxval fino a 65535) standardizzata in modalità binaria P5 per l'imaging scientifico.
1993Incorporato nel toolkit Netpbm come formato standard intermedio in scala di grigi.
1989Jef Poskanzer crea PGM per affiancare PBM con il pieno supporto della scala di grigi a 256 livelli.

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à.