2016-03-29 14 views
0

Ich habe 2 Sätze von Punkten, die auf der 3D-Einheit Sphäre leben beschränkt sind, nennen sie {pi} und {qi} (ich nehme an, Korrespondenz ist bekannt). Das Ziel ist es, einen Satz durch Rotationen und Übersetzungen zum anderen zu registrieren. Typischerweise ich hätte eine Transformation der Form verwendet:affine Transformation auf der Kugel

P = RQ + T

wobei R eine Rotationsmatrix und T ein Translationsvektor.

Aber in diesem Fall gibt es eine zusätzliche Einschränkung, dass alle Punkte auf der Kugel leben müssen, wie kann ich diese Bedingung aufnehmen.

Antwort

1

Angenommen, die Sätze sind "starr", so dass Sie den gesamten Satz auf der Kugel verschieben und drehen können, aber die Abstände zwischen den Punkten innerhalb eines Satzes nicht ändern können, sind alle möglichen Transformationen Rotationen.

Immer wenn Sie das Set relativ zu einer Achse drehen, bewegen sich die Punkte in Ebenen senkrecht zur Achse. Alle Verschiebungen sind also Vektoren senkrecht zum Achsenvektor. Daher sollten jeweils zwei Verschiebungsvektoren ein Vektorprodukt parallel zum Achsenvektor machen.

Nun, wenn man weiß, bereits die Entsprechung zwischen P und Q Punkten, berechnet Verschiebungsvektoren di von jedem qi zu einem entsprechenden pi und einige Vektorprodukte berechnen:

di × dj = (pi - qi) × (pj - QJ)

Wenn die Richtungen nahe genug beieinander liegen, können Sie davon ausgehen, dass Sie die Rotationsachse haben.

nun für jedes Paar oder pi, qi einen Punkt ti auf einer Achse finden, so dass das Dreieck PQT zur Achse normal ist. Der Winkel am T-Eckpunkt definiert die zu gleitende Drehung qi bis pi. Wenn alle entsprechenden Winkel gleich sind, bist du fertig. Andernfalls müssen Sie eine ungefähre Lösung suchen ...

+0

Danke für die Eingabeaufforderungen, gibt es keine Möglichkeit, die Antwort als 2D-Übersetzung und Rotation zu gestalten? In Wirklichkeit leben unsere Daten immer noch in einer 2D-Mannigfaltigkeit. Das Schöne daran, eine lineare Form für die Lösung zu haben, ist, dass wir eine analytische Lösung haben (den Mittelwert entfernen und die Kovarianzmatrix verwenden) mit dem vorgeschlagenen Ansatz, würden wir diese Interpretation nicht verlieren? – ASA

+0

Gibt es auch einen Vorteil für die Verwendung von Quaternionen, um die benötigten Rotationen zu finden? Wie würde der tatsächliche Algorithmus aussehen, wenn er für die Rotationsmatrizen optimiert wird? – ASA

+0

Gibt es einen modifizierten [Kabsch Algorithmus] (https://en.wikipedia.org/wiki/Kabsch_algorithmus), für Punkte auf der Kugel? – ASA