6

He calibrado 2 cámaras con respecto a algún sistema de coordenadas mundial. Conozco la matriz de rotación y el vector de traducción para cada uno de ellos en relación con el marco mundial. A partir de estas matrices, ¿cómo calcular la matriz de rotación y el vector de traducción de una cámara con respecto a la otra?Cómo calcular los parámetros extrínsecos de una cámara en relación con la segunda cámara?

Cualquier ayuda o sugerencia, por favor. ¡Gracias!

Respuesta

0

Primero convierta su matriz de rotación en un vector de rotación. Ahora tienes 2 vectores 3d para cada cámara, llámalos A1, A2, B1, B2. Tiene todos los 4 de ellos con respecto a algún origen O. La regla que necesita es

A relative to B = (A relative to O)- (B relative to O) 

Aplicar esta regla a los 2 vectores y que tendrán su postura respecto a la otra.

Se puede encontrar alguna documentación sobre la conversión de matriz de rotación a ángulos de Euler here, así como en muchos otros lugares. Si está utilizando openCV, puede usar Rodrigues. Here es un código de matlab/octava que encontré.

+0

¡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

+0

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

+0

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

4

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:

  1. 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.
  2. 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.
  3. 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.

+0

¡Gracias por sus comentarios y una explicación detallada! – Karmar

Cuestiones relacionadas