Arquivo de imagem para planilha

1

Eu quero pegar um arquivo de imagem (por exemplo, tiff) e convertê-lo em uma planilha (csv, ou qualquer outro), de forma que cada pixel se torne uma célula com um valor numérico para esse pixel.

Eu pesquisei no Google e todo mundo está tentando me vender software de OCR, que certamente não é o que eu quero.

Eu irei editar a imagem de antemão, então posso convertê-la para qualquer formato necessário e reduzi-la para um tamanho gerenciável.

É principalmente em tons de cinza que eu estou interessado, e poderia fazer o pouco de cor que eu preciso como 3 arquivos separados (um por canal de cor).

Eu farei análises estatísticas na planilha depois. Eu provavelmente poderia bater um pouco em java para fazer isso, especialmente considerando que esta é uma prova de conceito para um (muito) projeto de programação posterior, mas isso realmente parece muito precipitado para o que deveria ser uma tarefa simples.

    
por Thingomy 04.06.2011 / 12:36

3 respostas

1

Não é muito complicado. Aqui está uma abordagem em Java. Você só precisa escrever isso para CSV ... apenas escrever em um arquivo.

for (int x = 0; x < image.getWidth(); ++x)
  for (int y = 0; y < image.getHeight(); ++y) {
    int pixel = image.getRGB(x, y);
    int r = (pixel >> 16) & 0xff;
    int g = (pixel >> 8) & 0xff;
    int b = (pixel) & 0xff;
  }
}

em que image é BufferedImage . Você pode carregar um BufferedImage com ImageIO.read(File input); . Você encontrará isso em javax.imageio.ImageIO .

    
por 04.06.2011 / 13:01
0

Eu tentaria usar o SAGA GIS de código aberto, carregar sua imagem com Module / File / Grid / Import / Image - você obterá a grade SAGA que pode exportar como arquivo XYZ que é de fato arquivo de texto contendo X e Valores Y e o valor da grade Z de cada pixel. Isso deve ser o que você nee. SAGA é grátis. :-) link

    
por 04.06.2011 / 13:51
0

Eu tive um problema semelhante. Eu recebo muitos arquivos de imagem contendo gráficos. É uma implicância minha na verdade. As pessoas não me enviam os pontos de dados reais, que é o que eu preciso fazer qualquer tipo de cálculo ou análise, em vez disso, eles me enviam uma imagem bonita, que é praticamente inútil. Se o conjunto de dados for pequeno e o gráfico for a saída de uma impressão de computador (como os mais modernos são), ao contrário da mão desenhada, pode ser bastante preciso usar a tinta MS. O que você faz é abrir o arquivo e ampliar o eixo x. Aumente o zoom até poder mover o cursor do mouse para pixéis individuais. Há um par de números no canto inferior direito que são as coordenadas x e y pixle. Encontre o xey de cada marca de escala numerada no eixo x em um ponto repetitivo, exatamente onde ele cruza a linha horizontal ou algo parecido. Se for o resultado de uma impressão ou de uma imagem salva de um programa de computador, todos eles devem ter a mesma coordenada y. Mas se for um gráfico desenhado à mão (como você encontra em artigos de periódicos antigos, então você precisa ter a coordenada y porque você precisará corrigir para toda a imagem sendo girada ou não sendo desenhada perfeitamente. Repita isso com o eixo y. Se as marcas de escala tiverem vários pixéis de largura, e você não puder encontrar um pixle bem no meio, você pode estimar o centro, por exemplo, se a marca de escala é de 4 pixles de largura, e começa no número de pixle 51 e termina em pixle 54, então o centro é 52.5 (isso pode ser um exagero se o gráfico não for atraído para essa precisão, o que é comum com fontes desenhadas à mão)

Em seguida, leia os valores do gráfico da mesma maneira, ampliando e preparando as coordenadas x e y de pixéis. Dependendo do gráfico, você poderá ver os pontos de dados como pequenos símbolos ou pode ser apenas uma linha. Você pode também ser capaz de simplificar seu processo e apenas pegar os pontos onde ele cruza uma linha ou algo assim. Nada escrito em pedra.

Agora que você tem os dados, coloque tudo no excel. Dependendo do que você está fazendo e como o gráfico é feito, existem vários truques que podem ajudar. Por exemplo, se eles usaram linhas ridiculamente grossas, às vezes pode ajudar a ajustar uma vizinhança ao redor do ponto de interesse, então escolha uma linha normal para aquela linha de ajuste e a média dos valores que caem ao longo desse ponto. Outras vezes, uma média simples de todos os pontos x que caem em um determinado ponto y funciona melhor. Às vezes você pode simplesmente pegar todos os pontos de borda e encaixá-los em uma curva e terminar.

Isso pode facilitar muito o trabalho, mas acabei de encontrá-lo ontem e não o usei ainda. Sua suposta para tirar todos os pontos em uma imagem e transformá-los em uma lista delimitada por vírgulas de valores de pixle. Então você poderia, por exemplo, escolher os pixles por cor. Formulário que você deve ser capaz de processá-los no Excel para obter o que os dados originais eram, mais ou menos. Se os dados foram feitos a partir de um gráfico excel exportado para uma imagem, por exemplo, deve ser bastante preciso.

link

    
por 01.05.2018 / 20:59