Erkennen Sie kreisförmige Muster in Punktwolkendaten

10

Für einige Volumenrekonstruktionsalgorithmen, an denen ich arbeite, muss ich eine beliebige Anzahl von kreisförmigen Mustern in 3D-Punktdaten (die von einem LIDAR-Gerät stammen) erkennen. Die Muster können beliebig im Raum ausgerichtet sein und in dünnen 2D-Ebenen liegen (wenn auch nicht perfekt). Hier ist ein Beispiel mit zwei Kreisen in derselben Ebene (obwohl dies ein 3D-Raum ist):

Geben Sie hier die Bildbeschreibung ein

Ich habe viele Ansätze ausprobiert. Der einfachste (aber der bisher am besten funktionierende) ist das Clustering basierend auf disjunkten Mengen des nächsten Nachbargraphen. Dies funktioniert ziemlich gut, wenn die Muster weit voneinander entfernt sind, weniger jedoch bei Kreisen wie im Beispiel, die sehr nahe beieinander liegen.

Ich habe K-means ausprobiert, aber es funktioniert nicht gut: Ich vermute, dass die kreisförmige Punktanordnung möglicherweise nicht gut dafür geeignet ist. Außerdem habe ich das zusätzliche Problem, den Wert von K nicht im Voraus zu kennen.

Ich habe kompliziertere Ansätze ausprobiert, basierend auf der Erkennung von Zyklen im nächsten Nachbargraphen, aber was ich bekam, war entweder zu fragil oder rechenintensiv.

Ich habe auch über viele verwandte Themen gelesen (Hough-Transformation usw.), aber nichts scheint in diesem speziellen Kontext perfekt zuzutreffen. Jede Idee oder Inspiration wäre dankbar.

cjauvin
quelle
Eine einfachere Frage: Wie würden Sie Liniensegmente in zweidimensionalen Daten erkennen?
charles.y.zheng
"..wie die in den Beispielen"? Welche Beispiele? Können Sie einen Link hinzufügen?
Onestop
Die Hough-Transformation ist die offensichtliche Wahl. Es sollte gut funktionieren.
whuber
In der Zwischenzeit habe ich gerade genug Ruf, um das Bildbeispiel hinzuzufügen, auf das ich mich bezog.
Cjauvin
3
Dies ist kein Clustering-Problem. In der Statistik bestehen "Cluster" aus Gruppen von Objekten, die einander näher sind als andere Objekte. Nähe erfasst keine Zirkularität: Deshalb funktionieren weder K-means noch ein anderer Clustering-Algorithmus. Aus diesem Grund passt diese Frage wahrscheinlich besser in die Bildverarbeitungs- oder GIS-Sites, auf denen Sie möglicherweise Experten zu diesem Thema finden.
whuber

Antworten:

9

Eine verallgemeinerte Hough-Transformation ist genau das, was Sie wollen. Die Schwierigkeit besteht darin, dies effizient zu tun, da der Raum der Kreise in 3D sechs Dimensionen hat (drei für die Mitte, zwei für die Ausrichtung der Ebene, eine für den Radius). Dies scheint eine direkte Berechnung auszuschließen.

Eine Möglichkeit besteht darin, sich durch eine Folge einfacherer Hough-Transformationen an das Ergebnis heranzuschleichen. Sie können beispielsweise mit der (üblichen) Hough-Transformation beginnen, um planare Teilmengen zu erkennen: Diese erfordern nur ein 3D-Gitter für die Berechnung. Schneiden Sie für jede erkannte planare Teilmenge die ursprünglichen Punkte entlang dieser Ebene und führen Sie eine verallgemeinerte Hough-Transformation zur Kreiserkennung durch. Dies sollte gut funktionieren, vorausgesetzt, das Originalbild enthält nicht viele koplanare Punkte (außer den durch die Kreise gebildeten), die das von den Kreisen erzeugte Signal übertönen könnten.

Wenn die Kreisgrößen eine vorgegebene Obergrenze haben, können Sie möglicherweise viel Rechenaufwand sparen: Anstatt alle Paare oder Dreiergruppen von Punkten im Originalbild zu betrachten, können Sie sich auf Paare oder Dreifache innerhalb einer begrenzten Nachbarschaft jedes Punkts konzentrieren.

whuber
quelle
Ich würde versuchen, alle vorgeschlagenen Ansätze zu kombinieren: erster Cluster allein basierend auf der Entfernung, wie im Originalposter erläutert, wodurch Sie Cluster erhalten, die aus mehreren Kreisen bestehen können. Verwenden Sie dann Hough, um planare Teilmengen in jedem Cluster zu erkennen. Verwenden Sie dann innerhalb jeder planaren Teilmenge erneut Hough, um Kreise zu finden. Wenn dieser letzte Schritt teuer ist, können Sie möglicherweise effektiv kurzschließen: Versuchen Sie ein paar Dreifache, erraten Sie einen Kreis und prüfen Sie, ob ein wesentlicher Teil der Punkte in Ihrer Teilmenge sehr nahe an diesem Kreis liegt. Wenn ja, notieren Sie diesen Kreis und entfernen Sie alle diese Punkte. Fahren Sie dann fort.
Erik P.
3
Diese letztere Idee heißt RANSAC und könnte wahrscheinlich von selbst verwendet werden, insbesondere wenn die Anzahl der Kreise pro Bild gering ist.
SheldonCooper
Danke für die aufschlussreichen Ideen! Die mehrstufige Hough-Transformation scheint mir die leistungsstärkste und allgemeinste Lösung zu sein, aber RANSAC scheint wirklich einfacher zu implementieren zu sein und kann in meinem Kontext gerade genug sein. Ein Problem, das mir dabei schnell aufgefallen ist, ist der Fall, dass Sie Muster mit unausgeglichenen Größen haben, was die Abtastung offensichtlich auf größere Objekte ausrichtet. Irgendwelche Gedanken zu diesem Problem?
Cjauvin
Wenn Sie den größeren Kreis erkannt haben, entfernen Sie alle dazugehörigen Punkte aus der Stichprobe.
SheldonCooper
0

Wenn das Ziel darin besteht, einfach die kreisförmiger Muster zu erkennen und Sie über genügend Daten verfügen, versuchen Sie es vielleicht mit tiefen Faltungs-Neuronalen Netzen. Wahrlich, man müsste all diese Daten kennzeichnen, aber DCNs können als ergänzende Methode zu den oben vorgeschlagenen verwendet werden.number

sdgaw erzswer
quelle