2017-06-26 1 views
0

Lassen Sie uns saßen Ich habe Punktwolkendaten, dass ich die Sensorposition nicht kenne (und nicht [0,0,0]). Gibt es eine gute Möglichkeit, die ursprüngliche Sensorposition zu schätzen?Punktwolkensensor-Positionsschätzung

Zum Beispiel aus der Punktwolke unter,
Punktwolkendaten.

Point cloud data

Fund Sicht, die Punktwolke sieht wie folgt aus (ähnlich wie depthmap) So gibt es keine (oder am wenigsten) Löcher können beobachtet werden.

Punktwolke sieht, wie dieses Bild aus Sicht, die wir finden wollen:

Point cloud looks like this picture from viewpoint that I want to find.

+0

Wenn Sie nach einem automatisierten Prozess suchen, dann glaube ich nicht, dass das möglich (oder zumindest leicht machbar) ist. Wenn Sie jedoch zwei Punktwolken (anstelle des 2D-Tiefenbildes) haben, können Sie versuchen, sie mithilfe von punktbasiertem Kleben (in meshlab) auszurichten. Bei korrekter Ausrichtung würde die Rotationsmatrix Ihnen den Ursprung der Sensorposition in der Tiefenkartenpunktwolke geben. –

+0

Danke für Ihre Antwort. Ich wollte herausfinden, ob es einen automatisierten Weg gibt. – diskhkme

Antwort

0

Typischerweise wird eine Punktwolke Rekonstruktion erfolgt durch das Objekt in verschiedenen Winkeln erfassen und Ausrichten von ihnen zusammen zu. In der Punktwolke heißt dieser Prozess Registrierung. Damit gibt es keine statische Position für den Kinect-Sensor, da in jedem Frame die Sensorposition im globalen Koordinatenraum nicht statisch ist.

Damit nehme ich an, dass Sie nicht nach einer Punktwolke fragen, die durch einen Rekonstruktionsprozess gegangen ist, also eine Punktwolke, die aus einer statischen Sensorposition generiert wurde. Wenn diese Punktwolke keine Transformationen (Rotation, Übergang) durchlaufen hat und mit rohen Tiefendaten generiert wurde, wird die Punktwolke immer im Kamerakoordinatenraum erzeugt, wobei der Ursprung die Position des Kinect-Sensors ist.

In Ihrer Frage heißt es, Sensorposition ist nicht [0,0,0], das heißt, nach der Aufnahme des Tiefenbildes wurde es in einen neuen Koordinatenraum transformiert (ich nehme an, der Ursprung des neuen Koordinatenraums ist der Mittelpunkt der gegebenen Punktwolke). Ohne diese Transformationsmatrix zu kennen, können Sie die ursprüngliche Kameraposition (relativ zur neuen Koordinate) nicht ermitteln.

Am häufigsten, wenn Sie "Position des Sensors" sagen, müssen Sie den Koordinatenraum angeben, auf den Sie sich beziehen. Position ist immer relativ zum spezifischen Koordinatenraum.

Sie können die Position der Kamera finden als @Atif Anwer sagte aber unter einer Bedingung, entweder eines der beiden Punktwolken ist Raum nicht Trog eine Transformation gegangen, so ist es in ursprünglichen Koordinaten. Dann können Sie die Transformation der zweiten Punktwolke relativ zur ersten Punktwolke finden und diese Transformationsmatrix auf [0,0,0] anwenden, um die Kameraposition der zweiten Punktwolke relativ zum anfänglichen Tiefenkamerakoordinatenraum zu finden.

+0

Danke für deine Antwort. So weit ich Ihre Antwort verstehe, gibt es keine Möglichkeit, die Position des Sensors (in der globalen Koordinate, nach der Registrierung) automatisch zu finden, unter meiner Annahme, wo es keine Informationen über die Position des Sensors für ein Punktwolkensegment gibt (irgendeinen einzelnen Scan) Ergebnis). – diskhkme