Ein kurzer vllt etwas naiver Denkanstoß, wie ich an die Sache rangehen würde:
Ich würde alle Pixel von Links oben der Reihe nach durchgehen.
Wenn ich farbiges Pixel finde, dann würde ich zunächst die Höhe des Objektes herausfinden, indem ich Pixel nach unten gehe, bis kein farbiges Pixel mehr auftaucht. Dann würde nach folgendem "Konstrukt" suchen:
Reihe X: Anzahl der farbigen Pixel in aktueller Reihe
Reihe X+1: Anzahl der farbigen Pixel in vorheriger Reihe + Bestimmten Faktor
Reihe X+2: Anzahl der farbigen Pixel in vorheriger Reihe + Bestimmten Faktor
...
Reihe X+y: Maximale Anzahl farbiger Pixel
...
Reihe X+n-2: Anzahl der farbigen Pixel in dritter Reihe
Reihe X+n-1: Anzahl der farbigen Pixel in zweiter Reihe
Reihe X+n: Anzahl der farbigen Pixel in erster Reihe
Da man einen Kreis leicht unterschiedlich zeichen kann, sollte die Auswertung der Pixelbreite etwas flexibel bleiben. Gerade flexibel genug, um einen Kreis von einer Ellipse zu unterschieden
Wie gesagt - nur mein erster Gedanke. Vllt bringt dich das auf neue Gedanken.
Grüße
Headbucket