Mapa de cinzas portátil (.pgm)
Padrão PadrãoPortable Graymap Format (PGM) é o formato em escala de cinza da família Netpbm, muito usado em visão computacional, robótica, inspeção óptica e algoritmos de processamento de imagens digitais.
Inspeção e metadados
Sistemas operacionais e analisadores de arquivos identificam arquivos PGM pela sequência inicial de bytes:
Assinatura do arquivo em bytes (magic bytes)
Sistemas operacionais e analisadores de arquivos identificam arquivos PGM pela sequência inicial de bytes:
ASSINATURA HEXADECIMAL (DESLOCAMENTO 0):
50 32 / 50 35REPRESENTAÇÃO ASCII: P2 / P5
Padronização: Padrão da biblioteca Netpbm
Especificações técnicas
| Estrutura do contêiner | Formato Netpbm em ASCII (P2) ou binário (P5), com largura, altura, valor máximo de cinza e fluxo de pixels |
| Compressão | Bytes binários brutos sem compactação ou números em texto ASCII legível por pessoas |
| Ordem dos bytes (endianness) | Big-endian (para amostras binárias de 16 bits no modo P5) |
| Espaços de cor | Escala de cinza linear ou escala de cinza sRGB |
| Canais e Estrutura | Um canal em escala de cinza (precisão de 8 ou 16 bits) |
| Dimensões Máximas | Praticamente ilimitadas (compatível com espaços de coordenadas arbitrários de 64 bits) |
| Transparência | Nenhuma |
| Streaming e Progressivo | Processamento sequencial em fluxo, linha por linha |
Matriz de comparação técnica: PGM e formatos concorrentes
| Atributo técnico | PGM (Atual) | PBM | PPM | PNG |
|---|---|---|---|---|
| Modo de cor | Escala de cinza (8 bits / 16 bits) | Monocromático de 1 bit | RGB em cores verdadeiras (24 bits / 48 bits) | Escala de cinza, RGB, RGBA |
| Formato da família Netpbm | PGM (Portable Graymap, mapa de tons de cinza portátil) | PBM (Portable Bitmap, bitmap portátil) | PPM (Portable Pixmap, pixmap portátil) | Padrão W3C fora da família Netpbm |
| Bytes mágicos | P2 (ASCII) / P5 (binário) | P1 (ASCII) / P4 (binário) | P3 (ASCII) / P6 (binário) | ‰PNG.... |
| Compressão | Sem compactação | Sem compactação | Sem compactação | Deflate sem perdas |
Modos comuns de corrupção e guia de recuperação com editor hexadecimal
A imagem aparece invertida ou totalmente branca, com áreas estouradas.
Causa principal: O valor maxval do cabeçalho é incompatível (por exemplo, está definido como 1 em vez de 255).
Recuperação: Corrija a linha maxval do cabeçalho ou converta o arquivo com o conversor Netpbm do File2File.app.
Análise de segurança e vetores de ataque a analisadores
Decodificadores PGM precisam validar se a quantidade de pixels corresponde às dimensões declaradas para evitar leituras ou gravações além dos limites do buffer.
Vetores de ataque conhecidos
- Estouro de inteiro ao alocar o buffer usando largura x altura x (maxval > 255 ? 2 : 1).
- Leitura além dos limites do buffer ao processar tokens numéricos ASCII malformados.
- Negação de serviço causada por alocação excessiva de memória, acionada por dimensões forjadas no cabeçalho.
Melhores práticas defensivas: Defina limites máximos para as dimensões e a alocação de memória antes de ler os dados dos pixels.
Origens históricas e marcos
Principais vantagens
- A estrutura compacta do PGM pode facilitar a implementação de leitores básicos, mas é preciso tratar com cuidado a profundidade das amostras, os cabeçalhos e as entradas malformadas.
- O suporte nativo a imagens em escala de cinza de 16 bits o torna ideal para mapas de altura, mapas de profundidade e imagens térmicas.
- O modo ASCII (P2) permite inspecionar e manipular valores brutos de pixels diretamente em editores de texto comuns.
Limitações técnicas e desvantagens
- Não usa compactação, por isso os arquivos são maiores do que em formatos compactados, como PNG.
- Não oferece metadados sobre dimensões físicas, espaços de cor ou geolocalização.
- Tem apenas um canal: não armazena cores nem transparência alfa.
Curiosidades técnicas
- OpenCV, ROS (Robot Operating System) e sistemas de visão computacional costumam usar PGM em mapas de navegação SLAM.
- Desenvolvedores de jogos costumam usar arquivos PGM de 16 bits como mapas de altura do terreno, pois os dados de elevação sem compactação são fáceis de carregar.
- O parâmetro maxval no cabeçalho define o brilho máximo (geralmente 255 para 8 bits ou 65.535 para 16 bits).
Perguntas técnicas frequentes
Para que serve o formato PGM?
O PGM é usado principalmente em visão computacional (OpenCV), robótica (arquivos de mapa ROS), imagens científicas e geração de mapas de altura para terrenos 3D.
Qual é a diferença entre arquivos PGM P2 e P5?
P2 é texto ASCII simples, em que cada pixel é escrito como um número; P5 armazena os pixels em bytes binários compactos.
Como posso converter PGM para JPG ou PNG?
Envie seu arquivo PGM ao File2File.app para convertê-lo em PNG ou JPG diretamente no navegador, com total privacidade.