Receber valores da matriz e percorre-la

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??