pessoal… estou recebendo os valores de uma imagem para uma matriz[x][y].
e verifico se nessa imagem existem pixels com vizinhos: e altero a valor deste pixel
for (int x = 1; x < imagem.getWidth(); x++) {
for (int y = 1; y < imagem.getHeight(); y++) {
if (matriz[x][y]==255) {
if ((matriz[x-1][y])==255) cont++;
if ((matriz[x+1][y])==255) cont++;
if ((matriz[x][y-1])==255) cont++;
if ((matriz[x][y+1])==255) cont++;
if ((matriz[x-1][y-1])==255) cont++;
if ((matriz[x-1][y+1])==255) cont++;
if ((matriz[x+1][y-1])==255) cont++;
if ((matriz[x+1][y+1])==255) cont++;
if ((cont>2) && (cont<5)) { //quando houver 3 ou 4 vizinhos, altera-se o valor dele, assim demarca-se um ponto de referencia
cont1++;
matriz[x][y]=110;
depois disto preciso percorrer a determinada linha de um ponto demarcado até outro ponto. Para isso imagino que devo ir verificando a vizinhança de ponto a ponto. mas não estou conseguindo fazer:
int pegador[][] = new int [1000][1000]; //matriz para armazenar as posições que encontrar os pixels de valor 255
int novamatriz[][] = new int [1000][1000]; //matriz para receber os pontos marcados
int w=0,h=0;
for (int x = 1; x < imagem.getWidth(); x++) { //laço para montar o tamanho da tabela
for (int y = 1; y < imagem.getHeight(); y++) {
if (matriz[x][y]==255) {
cont2=0;
if ((matriz[x-1][y])==255) cont2++; //verifica a quantidade de pixels vizinhos
if ((matriz[x+1][y])==255) cont2++;
if ((matriz[x][y-1])==255) cont2++;
if ((matriz[x][y+1])==255) cont2++;
if ((matriz[x-1][y-1])==255) cont2++;
if ((matriz[x-1][y+1])==255) cont2++;
if ((matriz[x+1][y-1])==255) cont2++;
if ((matriz[x+1][y+1])==255) cont2++;
if (cont2>1) { //a idéia é iniciar pelo 1° pixel (apenas 1 vizinho), mas pra isso faço uma controle, depois...
do {
w++; h++;
if ((matriz[x-1][y])==255) {
pegador[x][y]=(matriz[x][y]);
novamatriz[w][h]=(matriz[x-1][y]);
// aqui a váriavel de percorrer deveria pegar o valor do ponto na matriz, pular para o novo pixel
// para percorrer a linha...só não sei se dessa forma vai funcionar...
}
if ((matriz[x+1][y])==255) {
pegador[x][y]=(matriz[x][y]);
novamatriz[w][h]=(matriz[x+1][y]);
};
if ((matriz[x][y-1])==255){
pegador[x][y]=(matriz[x][y]);
novamatriz[w][h]=(matriz[x][y-1]);
};
if ((matriz[x][y+1])==255){
pegador[x][y]=(matriz[x][y]);
novamatriz[w][h]=(matriz[x][y+1]);
};
if ((matriz[x-1][y-1])==255){
pegador[x][y]=(matriz[x][y]);
novamatriz[w][h]=(matriz[x-1][y-1]);
};
if ((matriz[x-1][y+1])==255){
pegador[x][y]=(matriz[x][y]);
novamatriz[w][h]=(matriz[x-1][y+1]);
};
if ((matriz[x+1][y-1])==255){
pegador[x][y]=(matriz[x][y]);
novamatriz[w][h]=(matriz[x+1][y-1]);
};
if ((matriz[x+1][y+1])==255){
pegador[x][y]=(matriz[x][y]);
novamatriz[w][h]=(matriz[x+1][y+1]);
};
} while ((novamatriz[w][h]) !=255); //aqui, caso encontre o ponto de referencia, para de percorrer.
}
}
}
}
o problema esta em receber os valores e percorre-la na linha.
seria alguma coisa tipo algoritmo de vizinhança…
o que acham??