Pregunta

Estoy intentando calcular las coordenadas 3D desde varios pares de dos puntos de vista.
Primero, utilicé la función matlab. estimateFundamentalMatrix() para obtener el F de los puntos igualados (Número > 8) que es:

F1 =[-0.000000221102386   0.000000127212463  -0.003908602702784
     -0.000000703461004  -0.000000008125894  -0.010618266198273
      0.003811584026121   0.012887141181108   0.999845683961494]

Y mi cámara, tomada estas dos fotografías, fue precalibrada con la matriz intrínseca:

K = [12636.6659110566, 0, 2541.60550098958
     0, 12643.3249022486, 1952.06628069233
     0, 0, 1]

A partir de esta información, calculé la matriz esencial usando:

E = K'*F*K

Con el método de SVD, finalmente obtuve las matrices de transformación proyectiva:

P1 = K*[ I | 0 ] 

y

P2 = K*[ R | t ]

Dónde R y t son:

R = [ 0.657061402787646 -0.419110137500056  -0.626591577992727
     -0.352566614260743 -0.905543541110692   0.235982367268031
     -0.666308558758964  0.0658603659069099 -0.742761951588233]

t = [-0.940150699101422
      0.320030970080146
      0.117033504470591]

Sé que debería haber 4 soluciones posibles, sin embargo, mis coordenadas 3D calculadas parecían no ser correctas.
Utilicé la cámara para tomar fotografías de un objeto PLANO con puntos marcados.Hice coincidir los puntos a mano (lo que significa que no debería haber ningún error obvio sobre la materia prima).Pero el resultado resultó ser una superficie con un poco de bandas.
Supongo que esto podría deberse a la razón por la que las imágenes no se procesaron con distorsiones (pero en realidad recuerdo que sí).

Solo quiero saber si este método resuelve el problema de la reconstrucción 3D, ¿verdad?Especialmente cuando ya conocemos la matriz intrínseca de la cámara.

Editado por JCraft el 4 de agosto:Rehice el proceso y obtuve algunas imágenes que muestran el problema. Escribiré otra pregunta detallada y luego publicaré el enlace.

Editado por JCraft el 4 de agosto:He publicado una nueva pregunta: La cámara calibrada obtiene puntos coincidentes para la reconstrucción 3D, la prueba ideal falló.Y @Schorsch realmente agradece su ayuda para formatear mi pregunta.Intentaré aprender a hacer entradas en SO y también intentaré mejorar mi gramática.¡Gracias!

¿Fue útil?

Solución

Si solo tiene la matriz fundamental y los intrínsecos, solo puede obtener una reconstrucción a escala. Esa es tu traducción Vector T está en algunas unidades desconocidas. Puede obtener los puntos 3D en unidades reales de varias maneras:

  • Necesitas tener algunos puntos de referencia en el mundo con distancias conocidas entre ellos. De esta manera, puede calcular sus coordenadas en sus unidades desconocidas y calcular el factor de escala para convertir sus unidades desconocidas en unidades reales.
  • Necesitas conocer los extrínsecos de cada cámara en relación con un sistema de coordenadas comunes. Por ejemplo, puede tener un patrón de calibración de tablero de ajedrez en algún lugar de su escena en la que pueda detectar y calcular los extrínsecos. Consulte este ejemplo . Por cierto, si conoce los extrínsecos, puede calcular la matriz fundamental y las matrices de proyección de la cámara directamente, sin tener que coincidir con los puntos.
  • Puede realizar la calibración estéreo para estimar la R y la T entre las cámaras, que también le dará las matrices fundamentales y esenciales. Consulte este ejemplo .

Otros consejos

Los objetos planos son superficies críticas, no son posibles para lograr su objetivo de ellos.intente agregar dos (o más) puntos fuera del plano (consulte Hartley y Zisserman u otro texto en la materia si aún está interesado)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top