Ich habe versucht, ein paar Fotos mit genauen Quaternions für Wochen ohne Glück zu verzerren. Die unten stehende Gleichung scheint die Kameraposition nicht so gut zu drehen, wie ich es von exakten Positionen erwarten würde. Mache ich das richtig? Gibt es etwas, das mir fehlt?Umwandlung von Quaternion in Kamera-Rotationsmatrix - OpenCV
Ich verstehe, dass ein Quaternion einfach nicht reicht, um ein Foto zu sticken, aber es sollte ausreichen, um die Fotos auszurichten?
Hier ist die Formel:
double divmult = 2.0/lsq;
double xx = divmult * x * x;
double yy = divmult * y * y;
double zz = divmult * z * z;
double wx = divmult * w * x;
double wy = divmult * w * y;
double wz = divmult * w * z;
double xy = divmult * x * y;
double xz = divmult * x * z;
double yz = divmult * y * z;
cameras_global[imageCounter].R = (Mat_<float>(3, 3) << (1 - yy - zz), -(xy - wz), -(xz + wy),
(xy + wz), -(1 -xx -zz), -(yz - wx),
(xz - wy), -(yz + wx), -(1 -xx -yy) );
Korrigieren Sie mich, wenn ich falsch liege, aber der Link, auf den Sie verwiesen haben, scheint das Gegenteil von dem zu tun, was Sie sagen. Es scheint Winkelgeschwindigkeit in eine Quaternion umzuwandeln? –
Ahh, tut mir leid. Ja, ich korrigiere meine Antwort. – SpamBot
Perfekt, danke! Eine letzte Frage, (Entschuldigung im Voraus, wenn es eine noob Frage ist), aber - nachdem ich die quaternion -> rodrigues Winkel umwandelt, verwende ich die Rückkehr von rodrigues zu camera_global [0] .R? Oder was mache ich mit den Winkeln? –