Grundsätzlich ist dies eine Folgefrage zu einem Problem von vor einigen Wochen , obwohl es sich um den Algorithmus im Allgemeinen handelt, ohne auf mein eigentliches Problem anzuwenden.
Der Algorithmus durchsucht grundsätzlich alle Zeilen im Bild, beginnend oben links, bis er ein Pixel findet, das ein Rand ist. In Pseudo-C ++:
int start = 0;
for(int i=0; i<amount_of_pixels; ++i)
{
if(pixels[i] == border)
{
start = i;
break;
}
}
Wenn es eines findet, startet es den Marschquadrat-Algorithmus und findet die Kontur zu dem Objekt, zu dem das Pixel gehört.
Nehmen wir an, ich habe so etwas:
Wo alles außer der Farbe Weiß ein Rand ist.
Und habe die Konturpunkte des ersten Blobs gefunden:
Für den allgemeinen Algorithmus ist es vorbei. Es hat eine Kontur gefunden und seine Arbeit erledigt. Wie kann ich zu den beiden anderen Blobs übergehen, um auch deren Konturen zu finden?