En una plataforma calibrada de visión estéreo, ¿cómo se obtienen las "matrices de cámara" necesarias para implementar un algoritmo de triangulación 3D?

Estoy tratando de implementar el método de triangulación 3D (relativamente simple) lineal homogéneo (DLT) de la "geometría de vista múltiple" de Hartley & Zisserman (sección 12.2), con el objetivo de implementar su "algoritmo óptimo" completo en el futuro. En este momento, basado enesta preguntaEstoy tratando de hacer que funcione en Matlab, y luego lo trasladaré a C ++ y OpenCV, comprobando la conformidad en el camino.

El problema es que no estoy seguro de cómo usar los datos que tengo. He calibrado mi equipo estéreo y he obtenido las dos matrices de cámara intrínsecas, dos vectores de coeficientes de distorsión, la matriz de rotación y el vector de traslación que relacionan las dos cámaras, así como las matrices esenciales y fundamentales. También tengo las coordenadas 2D de dos puntos que se supone que son correspondencias de un solo punto 3D en los sistemas de coordenadas de las dos imágenes (tomadas por la 1ra y 2da cámara respectivamente).

El algoritmo toma como entrada las coordenadas de dos puntos y dos "matrices de cámara" 4x3 "P y P '. Estas no son, obviamente, las matrices de cámara intrínsecas (M, M ') obtenidas de la calibración, porque para una son 3x3, y también porque la proyección que las utiliza solo pone un punto 3D en dos sistemas de coordenadas distintos, es decir, lo extrínseco faltan datos de rotación / traducción).

El libro de H&Z contiene información (capítulo 9) sobre la recuperación de las matrices requeridas de la matriz fundamental o esencial mediante la descomposición de la SVD, pero con problemas adicionales propios (por ejemplo, ambigüedad de escala). Siento que no necesito eso, ya que tengo la rotación y la traducción explícitamente definidas.

La pregunta entonces es: ¿sería correcto usar la primera matriz intrínseca, con una columna extra de ceros como la primera "matriz de cámara" (P = [M | 0]), y luego multiplicar la segunda matriz intrínseca por una matriz extrínseca? compuesta de la matriz de rotación y el vector de traslación como una columna adicional para obtener la segunda "matriz de cámara" requerida (P '= M' * [R | t])? ¿O debería hacerse de manera diferente?

¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta