Tudo sobre arquivos PGM
formato simples para imagens em tons de cinza
O PGM é o representante da escala de cinzentos da família PBM. Enquanto o PBM apenas distingue preto e branco, o PGM permite até 65 535 nuances entre os dois extremos. Cada pixel é descrito por um único valor numérico: 0 é preto, o valor máximo é branco. PGM significa «Portable Gray Map» e foi desenvolvido no final de 1988 por Jef Poskanzer como uma extensão do PBM. Para conhecer a história de toda a família de formatos, consulte o meu artigo sobre o PBM.
TLDR:
O PGM é o formato de tons de cinza da família Netpbm. Funciona como o PBM, mas com mais de duas «cores» — precisamente, tons de cinza. O PGM ainda é utilizado no processamento de imagens, na educação e como formato intermediário em pipelines. Quem conhece o artigo sobre o PBM conhece o princípio; o PGM simplesmente torna tudo mais cinzento. A variante colorida é, afinal, o PPM.
A estrutura técnica
Uma imagem PGM difere do PBM por exatamente uma linha adicional no cabeçalho: o valor máximo (Maxval). Este determina quantos níveis de cinza a imagem utiliza. Também com o PGM é possível desenhar uma imagem em «papel quadriculado». Em vez de preencher quadrados, aqui são utilizados números em cada quadrado que representam um nível de luminosidade.
| Componente | Exemplo | Significado |
|---|---|---|
| Número mágico | P2 |
PGM simples (variante ASCII) |
| Comentário | # mein bild |
Opcional, iniciado com # introduzido |
| Largura Altura | 24 7 |
Dimensões em pixels |
| Maxval | <15 |
Valor de cinza máximo (1-65535) |
| Dados de raster | 0 2 4 6 ... |
Valores de cinza por pixel |
O exemplo clássico do FEEP tem este aspeto em PGM, cada letra recebe o seu próprio nível de luminosidade. (Para uma melhor visualização com a fonte monoespaçada, selecionei um Maxval de 8)
P2 # feep.pgm 24 7 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 4 4 4 4 0 0 6 6 6 6 0 0 8 8 8 8 0 0 2 0 0 0 0 0 4 0 0 0 0 0 6 0 0 0 0 0 8 0 0 8 0 0 2 2 2 0 0 0 4 4 4 0 0 0 6 6 6 0 0 0 8 8 8 8 0 0 2 0 0 0 0 0 4 0 0 0 0 0 6 0 0 0 0 0 8 0 0 0 0 0 2 0 0 0 0 0 4 4 4 4 0 0 6 6 6 6 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
O texto FEEP é reconhecível tal como no exemplo PBM, mas as letras tornam-se mais claras da esquerda para a direita: F é cinzento escuro (2), E cinzento médio (4 e 6), P branco (8).
Maxval: a diferença decisiva entre PBM e PGM
O Maxval determina a profundidade de cor da imagem. Com Maxval 1, o PGM comporta-se exatamente como o PBM. Com Maxval 255, tem-se 256 tons de cinzento, o que corresponde a uma imagem clássica de 8 bits em tons de cinzento. São possíveis valores acima de 255 (até 65535), mas na prática raramente são utilizados.
Plain vs. Raw: P2 e P5
Tal como no PBM, também no PGM existe uma variante ASCII e uma variante binária:
| Característica | PGM Plain (P2) |
Raw PGM (P5) |
|---|---|---|
| Dados de píxeis | Números decimais ASCII | Binário, 1 ou 2 bytes por pixel |
| Legível por humanos | Sim, na íntegra | Apenas o cabeçalho |
| Espaço de memória por pixel | Variável (dígitos + espaços em branco) | 1 byte (valor máximo ≤ 255) ou 2 bytes |
| Comprimento máximo da linha | Recomenda-se 70 caracteres | Sem limite |
A variante RAW (P5) é o padrão nas ferramentas Netpbm. Com um Maxval superior a 255, são utilizados dois bytes por pixel, Big-Endian.
Áreas de aplicação típicas
O PGM é utilizado em todas as situações em que o que importa é o valor de luminosidade puro por pixel e a cor não tem qualquer importância:
– Ciência e medicina: imagens de raios X, ressonâncias magnéticas e imagens de microscopia são frequentemente processadas como imagens em tons de cinza. O PGM é adequado para isso devido à sua simplicidade e armazenamento sem perdas.
– Visão computacional: Detetores de bordas (Sobel, Canny), métodos de limiar e análises de histograma funcionam com dados em tons de cinza. O PGM fornece estes dados sem sobrecarga.
– Mapas de altitude e modelos de terreno: Cada pixel representa uma altitude – um caso de aplicação que se encaixa perfeitamente na lógica de «um valor por pixel» do PGM.
– Máscaras de transparência: No Netpbm, o PGM também é utilizado como máscara de transparência. Neste contexto, o branco representa opacidade total e o preto, transparência total.
– Ensino: Tal como o PBM, o PGM é excelente para ensinar os fundamentos do processamento de imagens (não da edição de imagens).
Gama e espaço de cor
De acordo com a especificação, os valores de cinza não são lineares, mas seguem a função de transferência gama de acordo com a ITU-R BT.709 (gama 2.2). Na prática, porém, muitos programas não seguem esta norma e escrevem valores lineares. A ferramenta Netpbm pnmgamma consegue converter entre ambas as variantes. Também a função de transferência sRGB, agora mais comum, difere ligeiramente da BT.709 e, na realidade, a maioria dos programas utiliza simplesmente sRGB e denomina o resultado PGM.
Fontes
Especificação do formato PGM do Netpbm
Artigo sobre o PBM com a história da família de formatos
.b0 { color: #ccc; }
.b2 {color: #222; }
.b4 {color:#444;}
.b6 {color:#666;}
.b8 { color: #888; }
const el = document.getElementById('pgm');
el.innerHTML = el.textContent.replace(/([0-9])/g, '<span class="b$1">$1</span>');
Converta, abra e edite arquivos PGM
Detalhes sobre arquivos PGM
- Software para abrir arquivos PGM
- IrfanView
- XnView
- GIMP
- ImageMagick
- Software para editar arquivos PGM
- GIMP
- ImageMagick
- Paint.NET
- Tipos MIME para PGM
- image/x-portable-graymap
- image/x-pgm
Última atualização em 23 Abril, 2026 por
Sem comentários