Manipulação de imagens no formato PPM

O artigo seguinte faz uma introdução sobre o formato ".ppm", que faz o armazenamento de forma simples e "bruta" de imagens. Além de como manipular o arquivo, para podermos aplicar filtros de imagem já existentes ou criar nossos próprios filtros.

[ Hits: 26.370 ]

Por: Pablo Margreff em 16/01/2015 | Blog: https://pmargreff.wordpress.com/


Introdução ao formato ppm e seus usos



O formato ppm é usado para armazenamento de imagens coloridas, que podem ser salvas tanto em arquivos com o padrão ASCII quanto arquivos com o padrão binário. É um formato pouco usado hoje em dia, devido ao fato de ser ineficiente por possuir redundância de informação no armazenamento, além de conter tons de cores que o olho humano não consegue diferenciar.

Então qual a utilidade do formato? O ponto central da questão é, ele é muito fácil na questão de acesso e manipulação, sendo uma excelente opção para entender o funcionamento de filtro em imagens, ou até mesmo a criação e teste de filtros ou efeitos próprios. A maioria dos leitores de imagens padrões do Linux suportam este tipo de imagem, o mesmo serve para Mac OS, porém testes não foram feitos para o sistema operacional Windows ou sistemas móveis.

O padrão de um arquivo ppm é o seguinte (cada número representa uma linha):
  1. Dois caracteres de identificação do tipo de arquivo.
  2. Largura e altura (necessariamente nesta ordem!), sendo ambas um número inteiro, representando pixeis e separadas por espaço.
  3. O valor máximo de cada cor, representado por um número inteiro. O mesmo deverá ser maior que 0 até 255 (inclusive).
  4. O valor para cada cor do plano RGB, sendo o menor valor possível 0 e o maior valor o número definido na linha anterior.

Características explicadas:

1. A família de imagens no formato ppm contém mais dois irmãos por assim dizer. O formato pbm e o formato pgm, qual não é a finalidade deste artigo esclarecer como funcionam, mas pode ser encontrada uma breve introdução no seguinte link:
Por esse motivo a primeira linha contém o arquivo de o tipo de imagem a ser lido. O tipo que nos interessa é o "P3". Sendo que ambos são usados para a manipulação de imagens coloridas a partir da junção de três tons, RGB (red, green, blue). Para a obtenção de uma cor final, podemos ler praticamente qualquer arquivo, já que sempre segue-se o mesmo padrão.

2. Larguras e alturas devem ser dadas na respectiva ordem, sempre representadas por inteiros. Lembrando que pelo fato de o arquivo manter redundância no formato, não fazendo como JPG e outros formatos que comprimem a imagem, quanto maior a dimensão, maior será o espaço ocupado no disco.

3. O valor máximo que cada tom poderá assumir, sendo que este valor serve igualmente para os três tons (vermelho, verde, azul), e nunca deve ser menor que 1 ou maior que 255. Sendo que o 0 (zero) representa a cor em seu tom mais forte, e o 255 representa em seu tom mais claro, ou seja, quando as três forem zero o resultado será a cor preta, quando forem 255 o resultado será a cor branca, o intermédio disso dará a cor correspondente ao tom ou tons dominantes.

4. O resto do arquivo é preenchida pela imagem em si. O arquivo lê um valor inteiro de cada vez, juntando de três em três valores para formar um pixel, por isso o arquivo pode conter tanto um pixel por linha (três inteiros), ou um tom por linha (um inteiro). Podem também ser estabelecidos outros padrões para facilitar a leitura, o único pré-requisito é o armazenamento separado de cada tom.

PS - Arquivos do tipo ppm podem também conter comentários, que se iniciam por #, e faz com que o leitor de imagem ignore a linha. Porém essa ideia será abstraída para diminuir a complexidade do código, mas não existe nenhum segredo na forma de faze-lo, tudo que precisamos é detectar o primeiro caractere de cada linha e quando o # for encontrado, ler um string.

Abaixo estão duas imagens em ppm, para que possa ver como funciona o padrão o indicado é a imagem 1, para acompanhar as próximas páginas e conseguir ver os efeitos sendo aplicados o recomendado é a imagem 2.
Fontes:
    Próxima página

Páginas do artigo
   1. Introdução ao formato ppm e seus usos
   2. Abrindo e salvando arquivo ppm
   3. Filtros
Outros artigos deste autor

Aumentando sua produtividade com o teclado padrão Dvorak

Algoritmos de compressão

Gerando Números Aleatórios

Leitura recomendada

Manipulando arquivos em C (parte 2)

Manipulação de arquivos em C++

Manipulando arquivos em C (parte 1)

Bibliotecas estáticas c/c++

Projeto Icecream (parte 1)

  
Comentários
[1] Comentário enviado por fabio em 16/01/2015 - 09:58h

Muito bom artigo, meus parabéns! Nunca havia lido nada que abordasse tal assunto.

[2] Comentário enviado por Nerdiarretado em 08/05/2019 - 11:31h

Ótimo artigo! Parabéns pela iniciativa, estou também desenvolvendo um mesmo programa e esse será uma ótima referência!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts