Mapa de cinzas portátil (.pgm)

Padrão Padrão

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

Selecione ou solte os arquivos aqui

Privado - os arquivos nunca saem do seu dispositivo

ou colar Ctrl+V
Garantia de privacidade sem transmissão pela rede 0 bytes enviados a servidores externos. Todo o processamento ocorreu localmente no ambiente isolado do navegador.

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 35

REPRESENTAÇÃO ASCII: P2 / P5

Padronização: Padrão da biblioteca Netpbm

Especificações técnicas

Estrutura do contêinerFormato Netpbm em ASCII (P2) ou binário (P5), com largura, altura, valor máximo de cinza e fluxo de pixels
CompressãoBytes 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 corEscala de cinza linear ou escala de cinza sRGB
Canais e EstruturaUm canal em escala de cinza (precisão de 8 ou 16 bits)
Dimensões MáximasPraticamente ilimitadas (compatível com espaços de coordenadas arbitrários de 64 bits)
TransparênciaNenhuma
Streaming e ProgressivoProcessamento sequencial em fluxo, linha por linha

Matriz de comparação técnica: PGM e formatos concorrentes

Atributo técnicoPGM (Atual)PBMPPMPNG
Modo de corEscala de cinza (8 bits / 16 bits)Monocromático de 1 bitRGB em cores verdadeiras (24 bits / 48 bits)Escala de cinza, RGB, RGBA
Formato da família NetpbmPGM (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ágicosP2 (ASCII) / P5 (binário)P1 (ASCII) / P4 (binário)P3 (ASCII) / P6 (binário)‰PNG....
CompressãoSem compactaçãoSem compactaçãoSem compactaçãoDeflate 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

2000O padrão passa a aceitar profundidade de 16 bits (maxval de até 65.535) no modo binário P5 para imagens científicas.
1993O PGM é incorporado ao conjunto de ferramentas Netpbm como formato intermediário padrão em escala de cinza.
1989Jef Poskanzer cria o PGM para complementar o PBM com suporte a 256 níveis de cinza.

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.