O que é um arquivo PGM?

Um arquivo Portable Graymap é um formato raster da família Netpbm em que cada pixel representa uma intensidade em escala de cinza. Ele usa uma estrutura textual ou binária simples, em vez de um contêiner de imagem rico em recursos.

Como funcionam os arquivos PGM

PGM começa com um identificador mágico, as dimensões da imagem e um valor máximo de amostra, seguidos por uma amostra de intensidade para cada pixel. Sua variante textual escreve valores como texto decimal, enquanto a variante bruta usa uma carga útil binária compacta; ambas descrevem a mesma grade em escala de cinza. O formato é útil em pontos de integração em que a transparência da análise importa, como dados de teste, entradas de visão computacional e inspeção entre etapas de processamento.

Informações essenciais

  1. P5 identifica a variante bruta (binária) e P2 a variante textual, que escreve cada amostra como um número decimal em ASCII. Os campos do cabeçalho são separados por espaços em branco e podem ser interrompidos por comentários que vão de # até o fim da linha. No PGM bruto, um único caractere de espaço em branco após o valor máximo separa o cabeçalho da matriz de pixels. Um arquivo bruto pode conter várias imagens consecutivas, embora a especificação observe que a maioria das ferramentas lê apenas a primeira; um arquivo textual contém exatamente uma.
  2. O valor máximo no cabeçalho, e não uma profundidade de bits fixa, define o intervalo das amostras: ele precisa ser maior que 0 e menor que 65536, com 0 representando preto e o máximo representando branco. As amostras brutas ocupam um byte quando o máximo é inferior a 256 e, caso contrário, dois bytes, com o byte mais significativo primeiro. Presumir um byte por pixel ou a ordem little-endian corrompe arquivos válidos; a libjpeg v6b, por exemplo, escrevia arquivos PGM de 16 bits em little-endian, contrariando a especificação, conforme discutido na lista de desenvolvedores do FFmpeg. Para obter a maior compatibilidade possível, a especificação recomenda um máximo de 255, porque arquivos brutos não podiam excedê-lo antes de abril de 2000.
  3. Um cabeçalho PGM não informa como os valores das amostras se relacionam com a luz. A especificação os define como intensidade codificada com a função de transferência ITU-R BT.709, cita valores lineares e a curva sRGB como variações comuns e reconhece que muitos arquivos usam a estrutura para inteiros arbitrários. Portanto, é preciso definir fora do arquivo se ele contém níveis de cinza para exibição, dados lineares de sensor, um mapa de profundidade ou uma máscara.
  4. PGM contém um canal e não inclui alfa, perfil de cor nem metadados estruturados. O Netpbm representa a transparência como um segundo PGM usado como máscara, e seu formato PAM pode conter cinza e alfa juntos em um arquivo. Nenhum tipo de mídia está registrado na IANA; image/x-portable-graymap é o rótulo convencional.

Quando os arquivos PGM são importantes

Use PGM como formato intermediário para dados de visão computacional em escala de cinza ou depuração simples. Converta-o para distribuição quando o tamanho do arquivo, os metadados, a transparência ou o amplo suporte em aplicativos forem importantes.

Como a Transloadit ajuda com arquivos PGM

A tabela de formatos de imagem da Transloadit, que abrange seus Robots baseados em ImageMagick, como /image/resize, lista PGM como um formato que esses Robots podem ler e escrever.

A tabela registra apenas o suporte à leitura e escrita do formato. Ela não informa se a saída é PGM bruto ou textual nem como valores máximos acima de 255 são tratados, então processe um arquivo representativo na sua Assembly antes de depender de dados de maior precisão.

Explore os formatos de arquivo e os recursos de compressão da Transloadit

Fontes

Transforme conhecimento sobre mídia em um pipeline funcional

Conecte uploads, processamento, IA, armazenamento e entrega por meio de uma única API declarativa, com o stack de codificação, o ajuste de escala e as constantes mudanças de formatos gerenciados para você.

Experimente a Transloadit gratuitamente