Zasadniczo jest to pytanie uzupełniające do problemu sprzed kilku tygodni , mimo że ogólnie dotyczy algorytmu bez zastosowania do mojego rzeczywistego problemu.
Algorytm zasadniczo przeszukuje wszystkie linie na obrazie, zaczynając od jego lewego górnego rogu, aż znajdzie piksel będący ramką. W pseudo-C ++:
int start = 0;
for(int i=0; i<amount_of_pixels; ++i)
{
if(pixels[i] == border)
{
start = i;
break;
}
}
Kiedy go znajdzie, uruchamia algorytm marszowych kwadratów i znajduje kontur do dowolnego obiektu, do którego należy piksel.
Powiedzmy, że mam coś takiego:

Gdzie wszystko oprócz koloru białego jest ramką.
I znalazłem punkty konturu pierwszego obiektu blob:

Dla ogólnego algorytmu to już koniec. Znalazł kontur i wykonał swoją pracę. Jak mogę przejść do pozostałych dwóch obiektów blob, aby również znaleźć ich kontury?