Principalmente, questa è una domanda di follow-up a un problema di alcune settimane fa , anche se si tratta dell'algoritmo in generale senza applicazione al mio problema reale.
L'algoritmo cerca fondamentalmente tutte le linee dell'immagine, partendo dalla parte in alto a sinistra, fino a quando non trova un pixel che è un bordo. In pseudo-C ++:
int start = 0;
for(int i=0; i<amount_of_pixels; ++i)
{
if(pixels[i] == border)
{
start = i;
break;
}
}
Quando ne trova uno, avvia l'algoritmo dei quadrati in marcia e trova il contorno di qualsiasi oggetto a cui appartiene il pixel.
Diciamo che ho qualcosa del genere:
Dove tutto tranne il colore bianco è un bordo.
E ho trovato i punti di contorno del primo blob:
Per l'algoritmo generale è finito. Ha trovato un contorno e ha fatto il suo lavoro. Come posso passare agli altri due BLOB per trovare anche i loro contorni?