Pixelhaufen in Bild finden

Carndret

Erfahrenes Mitglied
Ich suche gerade nach einer Möglichkeit einen nur leicht verstreuten Haufen von gleichfarbigen Pixeln zu definieren und dessen Mitte zu finden. Ich habe zwar schon ein paar Ideen, aber keine ist mir schnell oder sicher genug. Hätte da jemand einen kleinen Anstoß?

Im Bild unten hab ich das mal kurz dargestellt wie ich das meine:
 

Anhänge

  • pixel.gif
    pixel.gif
    1,3 KB · Aufrufe: 88
Hi,

spontan fiele mir nur folgende Methode ein:

- gehe das Bild Pixel für Pixel durch, bis Du auf einen Pixel der gewünschten Farbe stößt. Du speicherst für den gefundenen Bereich immer die Koordinaten x_links, y_oben, x_rechts und y_unten. Zusätzlich brauchst Du auch einen Threashold, wie weit die Pixel maximal von einander entfernt sein dürfen (für das Beispiel habe ich mal einen Threashold von 2px angenommen).

- gehe ausgehend von den "Kanten" deines Rechteckes Threashold Pixel nach außen (also hier: 2 Pixel). Sofern Du auf einen weiteren Pixel stößt, erweiterst Du deinen Rahmen entsprechend. Wenn keine Pixel gefunden werden, kann der Vorgang Stufenweise mit weniger Abstand als dem Threashold wiederholt werden.

- Wiederholung, bis keine Pixel mehr gefunden werden.

- Mittelpunktbestimmung durch Halbierung der Maße des Rahmens.

Nachteil: Bei größeren Pixelhaufen hast Du bei jedem Durchlauf u.U. sehr viele Pixel zu testen (nämlich: Rahmenbreite*Threashold*2 + Rahmenhöhe*Threashold*2). Bei kleineren Anhäufungen sollte es allerdings noch im Rahmen bleiben.

Die angehängte Grafik veranschaulicht den Fortschritt des "Rahmens".

Gruß
 

Anhänge

  • pixeltest.gif
    pixeltest.gif
    1,4 KB · Aufrufe: 77
Zuletzt bearbeitet:
So etwas ähnliches hatte ich mir auch schon überlegt, aber das ist sehr rechenaufwendig und somit zu langsam.
Ich habe mir aber auch schon etwas anderes einfallen lassen, mal sehen, ob das auch reicht.

Trotzdem, Danke für deine Überlegung!
 
Moin!

Ich misch mich denn (auf empfehlung von Datic) auch mal hier ein.

Ich weis nich welches Programm du verwendest, mit DDraw hättest du jetzt nen Beispieltext hier liegen, aber naja. Du gehst also mit einer Schleife den ganzen Bildschirm oder wo auch immer das Angezeigt wird durch. Findet die Schleife einen Pixel in der Farbe speichsert du die ersten Koordinaten in 2 Vars.

Die 2ten Speicherst du dann in 2 andere Vars. Diese 2 anderen Vars überschreibst du mit jedem Schritt usw, eben bis du das ganze eingekesselt hast. Das wiederholst du pro Zeile. Ist der x-Wert kleiner als der vom allerersten wird die jeweilige Variable überschrieben (die allererste). Du hast dann eben die eckkoordinaten in x und y (4 Vars).

Diese Kooridinaten ziehst du voneinander ab, errechnest die hälfte, rundest ggf und Schon haste die Mitte (wenn du diesen kleinen, errechneten Wert noch den Startwerten zufügst.

So würd ich es machen ...

Mfg
loeff
 

Neue Beiträge

Zurück