Aquí hay una solución más fácil, ya que usted ya tiene las matrices de rotación 3x3 R1 y R2, y los vectores de traducción 3x1 t1 y t2.
Expresan el movimiento desde el marco de coordenadas del mundo a cada cámara, es decir, son las matrices tales que, si p es un punto expresado en el marco de coordenadas mundiales, entonces el mismo punto expresado en, por ejemplo, R1 * p + t1.
El movimiento de la cámara 1 a 2 es simplemente la composición de (a) el movimiento DESDE la cámara 1 HASTA el marco mundial, y (b) del movimiento DESDE el marco mundial A la cámara 2. Puede calcular esto fácilmente composición como sigue:
- formar el 4x4 roto-traducción matrices QW1 = [R1 t1] y QW2 = [t2 R2], ambos con la cuarta fila igual a [0 0 0 1]. Estas matrices expresan completamente la roto-traducción DESDE el marco de coordenadas del mundo A la cámara 1 y 2 respectivamente.
- El movimiento DESDE la cámara 1 HASTA el marco mundial es simplemente Q1w = inv (Qw1). Aquí inv() es la matriz inversa algebraica, es decir, la que inv (X) * X = X * inv (X) = IdentityMatrix, para cada matriz no singular X.
- La roto-traducción de la cámara 1 a 2 es entonces Q12 = Q1w * Qw2, y viceversa, el de la cámara 2 a 1 es Q21 = Q2w * Qw1 = inv (Qw2) * Qw1.
Una vez que tiene Q12 puede extraer de ella las partes de rotación y traslación, si lo desea, respectivamente desde su submatriz superior 3x3 y la subcolumna 3x1 derecha.
¡Muchas gracias por su respuesta! ¿Podrían explicar un poco cómo convertir la matriz de rotación en 2 vectores 3D? Supongo que te refieres a la representación del ángulo del eje de la matriz de rotación. Tengo una matriz de rotación 3x3 R1 y un vector de traducción 3D T1 para la primera cámara y R2, T2 para la segunda cámara. – Karmar
Convierte la matriz de rotación en 1 vector 3d y el vector de traducción es el otro vector 3d y sí, me refiero a la representación de ángulo de eje. – Hammer
Gracias. Una pregunta más, por favor. ¿Podría dar algún enlace o código fuente en C para la matriz de rotación-> conversión de ángulo-eje? – Karmar