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?
Você vai clicar na imagem em 1 ponto, e depois clicar em outro, fazendo ele calcular a distância?
Sua imagem tem “escala” (1cm = 1km) ou vc quer calcular a distância em cm msmo?
Seja mais específico…
Maiquelnet
pedroroxd:
Perguntas:
Você vai clicar na imagem em 1 ponto, e depois clicar em outro, fazendo ele calcular a distância?
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:
packagedata.info;importjava.awt.image.SampleModel;importjava.io.IOException;importjavax.media.jai.JAI;importjavax.media.jai.PlanarImage;importjavax.media.jai.iterator.RectIter;importjavax.media.jai.iterator.RectIterFactory;publicclassProcessPixelsUsingRectIterator{publicstaticvoidmain(String[]args)throwsIOException{if(args.length!=1){System.err.println("Usage: java data.info.ProcessPixelsUsingRectIterator image");System.exit(0);}PlanarImageimage=JAI.create("fileload",args[0]);intwidth=image.getWidth();intheight=image.getHeight();SampleModelsm=image.getSampleModel();intnbands=sm.getNumBands();if(nbands!=3){System.err.println("Desculpe, esta aplicação só trabalha com imagens RGB.");System.exit(1);}longstartTime=System.currentTimeMillis();int[]pixel=newint[nbands];RectIteriterator=RectIterFactory.create(image,null);intcounter=0;for(inth=0;h<height;h++)for(intw=0;w<width;w++){iterator.getPixel(pixel);iterator.nextPixel();if(isWhite(pixel[0],pixel[1],pixel[2]))counter++;}longendTime=System.currentTimeMillis();System.out.println("Existem "+counter+" pixels broncos na imagem.");System.out.println("Foi processada em: "+((endTime-startTime)/1000.)+" segundos.");}privatestaticbooleanisWhite(intr,intg,intb){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???