2012-05-24 9 views
6

OpenCV contiene una gran cantidad de soporte para la reconstrucción 3D de cámaras estéreo. En mi caso tengo dos cámaras, y quiero saber las coordenadas 3D de algún punto.¿Reconstrucción de un punto 3D a partir de dos puntos 2D?

lo que tengo:

  1. coordenadas de píxeles del punto en ambas imágenes
  2. cámara intrínseca y extrínseca Conocido parámetros

Lo que yo quiero llegar: coordina este punto en 3D

Respuesta

1

No sé si opencv tiene una construcción para esto. Sin embargo, sé que puedes usar la ley de los senos para ángulos angulares para construir la distancia lineal horizontalmente paralela a las cámaras usando los ángulos interiores del punto-> cámara-> otra cámara como puntos de referencia.

Luego, una vez que obtenga la distancia, puede calcular el posicionamiento vertical usando la misma construcción: donde el ángulo se cuenta desde el punto muerto hasta qué punto está por encima o por debajo del punto en referencia a cualquiera de las cámaras, la distancia al objeto encontrado en el primer paso, y puede usar 90 grados como su ángulo entre ese punto imaginario (arriba del objeto horizontal a la cámara) y el objeto.

3

He respondido la misma pregunta en este otro post.

Si tiene parámetros extrínsecos, entonces tiene la pose de la cámara. Con la pose de la cámara y el punto 2D, puede proyectar los puntos 3D (para cada cámara debería ser el mismo resultado si sus puntos 2D y extrínsecos son correctos). Solo necesitas convertir pose a homography. Lo explico en la publicación que he vinculado.

¡Buena suerte!

+0

Su respuesta se refiere a un caso diferente a este, por lo que he entendido. – Mehdi

1

Cuando no tiene experiencia en la triangulación de puntos desde dos puntos de vista, debe consultar el libro de Hartley and Zisserman's book. En este libro se describe un método de triangulación lineal que es muy fácil de implementar teniendo las correspondencias de punto 2D, la pose de cámara y la calibración de la cámara.

El código de ejemplo de este método se da here. Se basa en el libro mencionado anteriormente.

Sin embargo, hay condiciones muy importantes que deben cumplirse. Primero, las correspondencias de los puntos medidos deben ser correctas con respecto a la restricción epipolar x*E*x' = 0. En segundo lugar, el ángulo entre los rayos debe ser superior a unos pocos grados, por ejemplo, 2 grados.

Cuestiones relacionadas