Erkennung Reihe von Flächen aus Punktwolken
Habe ich eine Reihe von point-cloud, und ich möchte, um zu testen, ob es eine Ecke in einem 3D-Raum. Also ich würde gerne mein Konzept und wenn es der bessere Ansatz ist, oder nicht, in Bezug auf Geschwindigkeit, weil ich will, um es zu testen auf dem Handy.
Ich werde versuchen, hough Transform to detect lines, dann werde ich versuchen, um zu sehen, ob es gibt drei Linien, die sich überschneidenden und Sie ist ein zwei Ebene, die sich überschneidende zu.
- wie dicht ist dein Punkt cloud? ist es, ausgehend von den Tiefe-sensor?
- ja, es ist
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die point-cloud-Daten kommt aus einer Tiefe sensor, dann haben Sie eine relativ Dichte Abtastung der Wände. Eine Sache, die ich fand, dass funktioniert gut mit der Tiefe von sensoren (z.B. Kinect oder DepthSense) ist eine robuste version des RANSAC-Prozedur, @MartinBeckett vorgeschlagen.
Statt der Kommissionierung 3 Punkte an random, wählen Sie einen Punkt nach dem Zufallsprinzip, und Holen Sie sich die benachbarten Punkte in die cloud. Es gibt zwei Möglichkeiten, das zu tun:
Der nächste Schritt ist das erzeugen einer Ebene-Gleichung aus dieser Gruppe 3D-Punkte. Sie können die PCA auf Ihre 3D-Koordinaten der zwei bedeutendsten Eigenvektoren, die definieren die plane Oberfläche (der Letzte Eigenvektor sollte normal sein).
Von dort aus ist der RANSAC-Algorithmus wird wie gewohnt fortgesetzt: überprüfen Sie, wie viele andere Punkte in der Nähe von das Flugzeug, und finden Sie den Flugzeug(en) mit maximaler Unterstützung. Ich fand es besser zu finden, die die größte Unterstützung Ebene, entfernen Sie die Unterstützung von 3D-Punkten, und führen Sie den Algorithmus wieder zu finden, andere 'kleinere' Flugzeuge. Auf diese Weise können Sie in der Lage sein, um alle Wände in Ihrem Zimmer.
EDIT:
Zu klären, die oben an: die Unterstützung einer Hypothese Ebene ist die Menge aller 3D-Punkte, deren Entfernung aus dem Flugzeug ist bei den meisten eine Schwelle (z.B. 10 cm, sollte, hängt von der Tiefe-sensor ist measurement-error-Modell).
Nach jedem Lauf des RANSAC-Algorithmus, der Flieger, der die größte Unterstützung gewählt wird. Alle Punkte unterstützen das Flugzeug kann verwendet werden zum verfeinern der Flugzeug-Gleichung (diese ist stabiler, als nur mit Hilfe der benachbarten Punkte), indem Sie PCA/lineare regression auf den support stellen.
In Reihenfolge zu gehen Sie und finden Sie andere Flugzeuge, die Unterstützung der letzten iteration sollte entfernt werden aus der 3D-Punkt zu setzen, so dass die verbleibenden Punkte liegen auf anderen Ebenen. Dies kann wiederholt werden, solange es genügend Punkte und besten Flieger passen Fehler ist nicht zu groß.
In deinem Fall (Blick zur Ecke), Sie müssen mindestens 3 senkrecht zueinander stehenden Ebenen. Wenn Sie zwei Ebenen mit großer Unterstützung, die in etwa parallel, dann Sie können der Boden und einige counter, oder zwei parallele Wände. Entweder der Raum hat keine sichtbare Ecke, oder Sie brauchen, um zu halten auf der Suche nach einer senkrechten Ebene mit kleiner Unterstützung.
Normale Ansatz wäre ransac
Anderen Ansatz, wenn Sie wissen, dass die Flugzeuge befinden sich in der Nähe von senkrechten oder nahezu horizontal.
Möchte ich zunächst darauf hinweisen,
Obwohl dies ist eine alte post, möchte ich einen ergänzenden Ansatz, ähnlich wie Hough-Voting finden Sie alle ecklagen, die aus dem Flugzeug Kreuzungen, gemeinsam:
Beachten Sie, dass die Abstimmung, der Raum ist quantisiert 3D-Raum und die Ecke Lage sein wird, eine grobe Schätzung der tatsächlichen. Wenn gewünscht, könnte man ein store-die Flugzeuge, die Kreuzung an diesem Ort und verfeinern (mit iterativen Optimierung ähnlich wie ICP oder etc), um eine sehr feine Ecke Position.
Dieser Ansatz wird Recht schnell und vermutlich sehr präzise, da könnten Sie verfeinern die Lage. Ich glaube, es ist der beste Algorithmus vorgestellt, so weit. Natürlich setzt dies Voraus, dass wir könnten berechnen Sie die normalen der Punkt-Wolken (wir können immer tun, dass Beispiele für Orte mit Hilfe der Eigenvektoren der Kovarianz-matrix).
Bitte sehen Sie auch hier, wo ich eine Liste der Flugzeug-Armatur Fragen bei stackoverflow:
3D-Flugzeug-fitting-algorithmen