2016-06-06 13 views
0

Ich habe ein Bild, das über Punkte verteilt ist. Die Punkte haben die gleiche Größe und sie sind solide (ich kann die Farbe lesen, um zu entscheiden, ob ein Punkt drin ist oder nicht). Was ist der effizienteste Algorithmus, um die genaue Anzahl der Punkte zu finden? Ich dachte an Monte Carlo, aber ich kenne nicht die ausreichende Anzahl von zufälligen Punkten, die ich verwenden sollte. Irgendein Rat? Edit: Es ist ein weißes Bild, das nur Punkte enthält.Anzahl der Punkte in einem Bild

Antwort

2

Dies ist ein guter Fall für Bildverarbeitungsalgorithmen. Zum Beispiel OpenCV-Bibliothek verwenden, können Sie den nächsten Ansatz ausnutzen:

Wenn Bildformat Farbe ist, wandelt es Skala (cvtColor)

Make Bild binär (reines Schwarz und weiß) mit Farbinvertierung bis grau (cvThreshold mit THRESH_BINARY_INV) weißen Flecken auf dem schwarzen Hintergrund

Finden angeschlossene Komponenten (findContours) zu machen - danach contours.size gibt Ihnen Anzahl von Punkten

Wenn Sie wollen keine Bibliotheken, Schlüsselpunkt verwenden ist connected components labeling

Der einfachste Weg, um CCL für kleine Punkte zu machen - unter Verwendung von Floodfill Algorithmus.

Make Flußfüllen für Hintergrundpixel, markieren Sie diese mit 0

Scan durch alle Pixel. Wenn Sie nicht markierte (an X, Y) treffen, starten Sie eine neue Flut mit dem nächsten Markerwert K (1,2 usw.).

Nach jedem Floodfill zur nächsten Koordinate (X + 1, Y) zurückkehren und weiter scannen.

Der letzte K-Wert ist die Anzahl der Punkte.

+0

Dies war hilfreich. Danke –

+0

@ D.Badawi Ich habe einen weiteren einfachen Ansatz für das Zählen hinzugefügt (eine Art der Komponentenbeschriftung, die für Punkte geeignet ist) – MBo