Processar imagem

3 respostas
Maiquelnet

olá… preciso de uma orientação:

carrego uma imagem binaria (preta com fundo branco) para o java. essa imagem é semelhante a um rio e seus afluentes. preciso calcular a distância de um ponto a outro. Já li algumas coisas sobre a API Raster e JAI, só que a jai só tem material em ingles.

como posso achar algum material sobre processamento de imagens voltada a esse meu objetivo?
ou algum código q me de uma orientação?

agradeço a ajuda!

3 Respostas

pedroroxd

Perguntas:

  1. Você vai clicar na imagem em 1 ponto, e depois clicar em outro, fazendo ele calcular a distância?
  2. Sua imagem tem “escala” (1cm = 1km) ou vc quer calcular a distância em cm msmo?

Seja mais específico…

Maiquelnet

pedroroxd:
Perguntas:

  1. Você vai clicar na imagem em 1 ponto, e depois clicar em outro, fazendo ele calcular a distância?
  2. Sua imagem tem “escala” (1cm = 1km) ou vc quer calcular a distância em cm msmo?

Seja mais específico…

OK.

A imagem não será clicada. Terei que identificar os pontos: Imagina uma linha traçada que em um certo ponto se divide em 2 ou mais linhas (Bifurcação). Cada bifurcação é o ponto que terei que identificar. Isso ocorrerá várias vezes, tendo várias bifurcações. A linha é de uma expessura padrão, quando essa expessura tiver mais pixels agrupados do que o normal, se enquadraria como um ponto de bifurcação! Assim eu imaginei para identificar os pontos.
A escala, terei que definir eu mesmo, vai depender de alguns fatores!!

Esse trabalho é um mapa importado (já corrigido também) pelo ArcGis, programa de processamento geográfico, onde recebo a imagem de um Rio e seus afluentes. O principio de tudo é identificar os pontos de bifurcações e definir uma distância entre eles!
Essa imagem será enquadrada em um tamanho padrão, para testar esses processos, mas a idéia é dar a resposta em km de distância.
Alguma idéia?

Maiquelnet


Alguma idéia?

achei um código q poderia ajudar:

package data.info;   
     
import java.awt.image.SampleModel;   
import java.io.IOException;   
import javax.media.jai.JAI;   
import javax.media.jai.PlanarImage;   
import javax.media.jai.iterator.RectIter;   
import javax.media.jai.iterator.RectIterFactory;   
  
public class ProcessPixelsUsingRectIterator   
   {   
   public static void main(String[] args) throws IOException   
     {   
     if (args.length != 1)   
       {   
        System.err.println("Usage: java data.info.ProcessPixelsUsingRectIterator image");   
        System.exit(0);   
        }   
  
      PlanarImage image = JAI.create("fileload", args[0]);   
      int width = image.getWidth();   
      int height = image.getHeight();   
      SampleModel sm = image.getSampleModel();   
      int nbands = sm.getNumBands();   
      if (nbands != 3)   
        {   
        System.err.println("Desculpe, esta aplicação só trabalha com imagens RGB.");   
        System.exit(1);   
        }   
  
      long startTime = System.currentTimeMillis();   
      int[] pixel = new int[nbands];   
      RectIter iterator = RectIterFactory.create(image,null);   
      int counter = 0;   
  
      for(int h=0;h<height;h++)   
        for(int w=0;w<width;w++)   
          {   
          iterator.getPixel(pixel);   
          iterator.nextPixel();   
          if (isWhite(pixel[0],pixel[1],pixel[2])) counter++;   
          }   
  
      long endTime = System.currentTimeMillis();   
      System.out.println("Existem "+counter+" pixels broncos na imagem.");   
      System.out.println("Foi processada em: "+((endTime-startTime)/1000.)+" segundos.");   
      }   
   
   private static boolean isWhite(int r,int g,int b)   
      {   
      return ((r == 255) && (g == 255) && (b == 255));   
      }   
        
    }

só q esse código soma os pixels branco de uma maneira geral…
eu preciso seguir uma linha tracejada para definir quantos pixels existem do ponto Origem ao ponto Destino…
Alguma idéia???

Criado 26 de setembro de 2009
Ultima resposta 28 de set. de 2009
Respostas 3
Participantes 2