Erkennung von Linien in einer Punktwolke

7

Was sind die besten Lösungen, um Linien in einer Punktwolke zu erkennen? Vergleich mit und zwischen Hough Transform , Radon Transform , RANSAC (siehe Wikipedia) und Brute-Force-Suche (siehe Wikipedia).
Welches ist am robustesten gegen die Streuung von Punkten in der Punktwolke?
Hinweis:
1- Die Frage bezieht sich auf 3D-Punktwolken, nicht auf Bilder.
2- Punkte in der Punktwolke sind zufällig verteilt (völlig spärliche Stellen).
3- Es gibt keine Informationen über das zu untersuchende Objekt (Linie) in Bezug auf bevorzugte Ausrichtung, Größe usw.
4- Eine Toleranz muss um die Kandidatenlinie herum berücksichtigt werden.
Aktualisierung:
Nach meinen Experimenten: RANSAC könnte leicht einige Zeilen übersehen. Es ist gut für die schnelle Erkennung von Kanten, jedoch kann die Komplexität der Punktdispersion zu unerwünschten Ausgaben führen. Hough und Radon sind sich sehr ähnlich und ich hatte keine Chance, eine 3D-Punktwolke zu versuchen, aber sie funktionieren gut in 2D-Fällen. Es ist schwierig, Segmente gefundener Linien zu extrahieren. BFS ist für große Datenmengen einfach unpraktisch.

Entwickler
quelle
Soweit ich weiß, würden Radon und Hough mit Volumendaten arbeiten, nicht mit Punktwolken. Die Ideen können wahrscheinlich an Punktwolken angepasst werden, aber ich bin mir nicht sicher, ob sie noch denselben Namen haben würden.
Endolith
Was sind Ihre Kriterien? Brute Force würde definitiv eine Linie finden, wenn sie da ist, während RANSAC die Linie nur "wahrscheinlich" findet.
Endolith
@endolith '... volumetrisch ...': Ein guter Punkt. Ich denke, es ist jedoch möglich, die 3D-Punkte in ein 3D-Volumen (3D-Matrix) mit einer akzeptablen Toleranz zu pixelieren (abzubilden), bezogen auf die Auflösung der Matrix (dh die Anzahl der Zellen). '... Brute-Force ...' ist absolut genau, aber für große Punktmengen nicht rechnerisch praktisch. 'RANSAC', wie Sie erwähnt haben, könnte einige Kandidaten vermissen. Die Idee ist, einige Vorschläge zu diskutieren und zu finden, um diese Probleme zu lösen: Rechenaufwand und Ungenauigkeit.
Entwickler
Die Umwandlung der Punktwolke in eine volumetrische Matrix wäre wahrscheinlich ein Schritt in die falsche Richtung. :) Besser Algorithmen verwenden, die auf der Punktwolke und dem euklidischen Abstand zwischen Punkten arbeiten.
Endolith
@endolith Du könntest recht haben. Nur um zu erwähnen, dass meine persönlichen Erfahrungen mit Hough Transform in 2D-Fällen sehr zufriedenstellend waren und es wirklich sehr schnell ging! Ich denke darüber nach, von einer mehrstufigen Methode zu profitieren, um gleichzeitig Genauigkeit und Geschwindigkeit zu erreichen. Hoffe, Kommentare und Antworten in diesem Beitrag könnten einige Anweisungen geben.
Entwickler

Antworten:

1

Es kommt wirklich darauf an, wie Sie die Qualität der Lösungen messen werden. Was sind Ihre Anforderungen, Echtzeit, hohe Genauigkeit? Wie groß ist die Punktwolke?

Sie haben gültige, aber ausgefallene signalverarbeitungsbasierte Methoden erwähnt, um das Problem anzugehen.

Lassen Sie mich drei Methoden hinzufügen, die Sie nicht erwähnt haben und die klassischer und statistischer Natur sind: kleinste Quadrate, Gratregression und Lasso.

carlosdc
quelle
1
Dies sind alles Optimierungsmethoden, aber der Trick besteht darin, eine gute Funktion zur Optimierung zu finden. Welche Funktion schlagen Sie zur Optimierung vor?
Phonon
0

Wenn Sie wirklich über Erkennungslinien besorgt sind, können Sie einen vereinfachten Ansatz wählen.

Projizieren Sie Ihre Punktwolke auf mindestens zwei Oberflächen. Sagen wir, wir projizieren sie auf die XY-Ebene und die YZ-Ebene. Beginnen Sie grundsätzlich mit einer leeren Leinwand und projizieren Sie jeden Punkt anhand einiger Geometriekriterien. Jetzt haben Sie also eine endliche 2D-Leinwand, die alle leer ist, aber weiße Punkte, die vorhanden sind. Jetzt können Sie auf diese Leinwände eine Hough-Transformation anwenden.

Basierend auf hough erhalten Sie Linien und für zwei jeweilige Ebenen. Der nächste Schritt besteht darin, diese Linien zuzuordnen, um daraus eine einzelne 3D-Linie zu identifizieren.(r,θ)(r,ϕ)

In Bezug auf die Genauigkeit kann bei spärlichen Daten die Punktzahl des Houghs (dh der Stärke) geringer sein. Es funktioniert jedoch, wenn insgesamt alle Zeilen spärlich sind. Dies ist ein Problem, wenn Sie eine sehr lange Linie mit einer kurzen Linie vergleichen.

Dipan Mehta
quelle