Mapa de grises portátil (.pgm)
Netpbm EstándarPortable Graymap Format (PGM) es la especificación de imágenes en escala de grises de la familia Netpbm, ampliamente utilizada en visión artificial, robótica, inspección óptica y algoritmos de procesamiento de imágenes digitales.
Inspeccionar y metadatos
Los sistemas operativos y analizadores de archivos identifican los archivos de PGM inspeccionando la secuencia de bytes binarios inicial:
Firma de cabecera a nivel de bytes (Bytes mágicos)
Los sistemas operativos y analizadores de archivos identifican los archivos de PGM inspeccionando la secuencia de bytes binarios inicial:
FIRMA HEXADECIMAL (DESPLAZAMIENTO 0):
50 32 / 50 35REPRESENTACIÓN ASCII: P2 / P5
Estandarización: Netpbm Library Standard
Especificaciones técnicas
| Arquitectura del contenedor | Formato Netpbm en ASCII (P2) o binario (P5) con ancho, alto, valor máximo de gris y flujo de píxeles |
| Compresión | Bytes binarios en crudo sin comprimir o números de texto ASCII legibles por humanos |
| Orden de bytes (Endianness) | Big-Endian (para muestras binarias de 16 bits en modo P5) |
| Espacios de color | Escala de grises lineal o escala de grises sRGB |
| Canales y estructura | 1 canal en escala de grises (precisión de 8 o 16 bits) |
| Dimensiones máximas | Prácticamente ilimitadas (admite un espacio de coordenadas arbitrario de 64 bits) |
| Transparencia | Ninguna |
| Streaming y progresivo | Reproducción en streaming secuencial fila por fila |
Matriz de comparación técnica: PGM frente a la competencia
| Atributo técnico | PGM (Actual) | PBM | PPM | PNG |
|---|---|---|---|---|
| Modo de color | Escala de grises (8 bits / 16 bits) | Monocromo de 1 bit | Truecolor RGB (24 bits / 48 bits) | Escala de grises, RGB, RGBA |
| Formato hermano en Netpbm | PGM (Mapa de grises portátil) | PBM (Mapa de bits portátil) | PPM (Mapa de píxeles portátil) | Estándar W3C ajeno a Netpbm |
| Bytes mágicos | P2 (ASCII) / P5 (Binario) | P1 (ASCII) / P4 (Binario) | P3 (ASCII) / P6 (Binario) | ‰PNG.... |
| Compresión | Sin comprimir | Sin comprimir | Sin comprimir | Deflate sin pérdidas |
Modos de corrupción comunes y guía de recuperación hexadecimal
La imagen se muestra invertida o completamente quemada en blanco.
Causa raíz: Parámetro 'maxval' desajustado en la cabecera (ej. maxval declarado como 1 en lugar de 255).
Recuperación: Corrija la línea de cabecera maxval o convierta utilizando el conversor Netpbm de File2File.
Análisis de seguridad y vectores de ataque al analizador
Los decodificadores de PGM deben validar cuidadosamente que los recuentos de píxeles analizados coincidan con las dimensiones declaradas para evitar el desbordamiento del búfer.
Vectores de ataque conocidos
- Desbordamiento de enteros durante la asignación del búfer ancho * alto * (maxval > 255 ? 2 : 1).
- Lectura excesiva del búfer al leer tokens numéricos ASCII malformados.
- Denegación de servicio a través de una asignación masiva de memoria provocada por dimensiones de cabecera fabricadas.
Mejores prácticas defensivas: Limite las dimensiones máximas permitidas y los límites de asignación de memoria antes de leer los flujos de píxeles.
Orígenes históricos e hitos
Ventajas clave y pros
- Cero complejidad: extremadamente sencillo de analizar y escribir en C, Python o WebAssembly sin bibliotecas externas.
- La compatibilidad nativa con escala de grises de 16 bits lo hace ideal para mapas de alturas, mapas de profundidad e imágenes térmicas.
- El modo ASCII (P2) permite la inspección directa y la manipulación de valores de píxeles en bruto en editores de texto estándar.
Limitaciones técnicas y contras
- Sin compresión: huellas de archivo grandes en comparación con formatos comprimidos como PNG.
- Carece de metadatos para dimensiones físicas, espacios de color o geolocalización.
- Estrictamente monocanal: no puede almacenar datos de color ni transparencia alfa.
Curiosidades técnicas interesantes
- OpenCV, ROS (Robot Operating System) y los sistemas de visión artificial utilizan frecuentemente PGM para mapas de navegación SLAM.
- Los desarrolladores de juegos suelen utilizar archivos PGM de 16 bits como mapas de altura de terreno porque los datos de elevación en crudo no están comprimidos y son fáciles de cargar.
- El parámetro 'maxval' en la cabecera define el valor máximo de brillo (típicamente 255 para 8 bits o 65 535 para 16 bits).
Preguntas técnicas frecuentes
¿Para qué se utiliza el formato PGM?
PGM se utiliza principalmente en visión artificial (OpenCV), robótica (archivos de mapa ROS), imágenes científicas y generación de mapas de altura de terrenos 3D.
¿Cuál es la diferencia entre los archivos PGM P2 y P5?
P2 es texto ASCII plano donde cada píxel es un número escrito, mientras que P5 almacena los píxeles como bytes binarios compactos.
¿Cómo puedo convertir PGM a JPG o PNG?
Suba su archivo PGM a File2File.app para convertirlo a PNG o JPG directamente en su navegador con total privacidad.