Convertendo imagens para dados (bmp2txt) PDF Imprimir E-mail
Escrito por Administrator   
Sex, 05 de Setembro de 2008 13:47

Para quem trabalha com análise estatística de imagens, um dos grandes problemas é encontrar uma ferramenta gráfica que leia uma figura e retorne uma tabela ou um matriz com  as informações das cores. Esta é uma informação útil que pode ser utilizada por exemplo, para encontrar as bordas da imagem, fazer o cálculo de dimensão fractal, cálculo do expoente de rugosidade, função de autocorrelação, transformada de Fourier, etc.

 

Para trabalhar com as imagens podemos usar uma biblioteca gráfica para a linguagem de programação C++ chamada de EasyBMP .  EasyBMP é uma biblioteca livre designada para ler, escrever e modificar arquivos bitmap (BMP).

O código fonte a seguir pode ser usado para ler uma imagem BMP nas cores preto e branco e retornar um arquivo de saída com as coordenadas x e y dos pixels na cor preto.

 //www.gnuscience.org
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// Biblioteca para manipulacao de BMP
#include "EasyBMP.h"

int main(int err, char **arg)
{
  FILE *output;          // arquivo de saida
  int x, y;              // indices
  BMP figura;            // variaveis biblioteca BMP

  //VERIFICA ARGUMENTOS
  if(err != 3)
    {
      printf("sintax: %s + file_in + file_out\n",arg[0]);
      exit(1);
    }

  // Lendo a imagem BMP
  figura.ReadFromFile(arg[1]); 

  // Abrindo o arquivo texto de saida
  if((output=fopen(arg[2], "w"))==NULL)
    {
      printf("nao pode abrir arquivo de saida\n");
      exit(1);
    }

  for(x=0; x< figura.TellWidth(); x++)
    for(y=0; y< figura.TellHeight(); y++)
    {
      if ((figura(x,y)-> Red == 0)&&(figura(x,y)-> Green == 0)&&(figura(x,y)-> Blue == 0))
        {
          fprintf(output, "%d %d \n", x, y);
        }
    }
  fclose(output);
}

//end

Salve o código fonte por exemplo como o nome de bmp2txt.c e compile da seguinte forma:

g++ bmp2txt.c -o bmp2txt

 depois basta executar:

./bmp2txt   arquivo.bmp arquivo.dat

 onde arquivo.bmp é a imagem a ser trabalhada e o arquivo.dat é o arquivos de saída.

Para uma figura  como a mostrada abaixo,

 bmp2txt sample

 teríamos o seguinte resultado:

 x / y

1 1
1 3
2 2
3 2
4 4

O código fonte pode ser facilmente editado para imagens mais complexas, ou sej, com um número maior de cores.

 

keywords: EasyBMP, bmp2txt, fig2txt, png2txt, jpg2txt, linux, dimensão fractal, getpixel, saveimage, fortran, C++

 

LAST_UPDATED2
 
Banner
Copyright © 2010 GNUSCIENCE.ORG. Todos os direitos reservados.
Joomla! é um Software Livre com licença GNU/GPL v2.0.