Pregunta

Tengo una imagen visualizada en pantalla que no está distorsionada a través de cvInitUndistortMap y cvRemap (con calibración de la cámara hacerlo), y el usuario hace clic en una característica en la imagen. Así que tengo los (u, v) las coordenadas de píxel de la función, y también tengo la matriz intrínseca y la matriz de distorsión.

Lo que estoy buscando es la ecuación de la recta en coordenadas 3D de la cámara / del mundo real en el que la característica hizo clic el usuario debe encontrarse. Ya tengo la distancia perpendicular entre el plano de imagen de la cámara y la función, por lo que puedo combinar eso con la ecuación antes mencionada a mí dar el (X, Y, Z) de coordenadas de la característica en el espacio.

Sonidos fácil (matriz inversa intrínseca o algo?), Pero no puedo encontrar instrucciones paso a paso en cualquier lugar. C ++ o C # código preferido.

¿Fue útil?

Solución

Esta es una vieja pregunta poco, pero aún podría ser útil para alguien. Todas las líneas pasan por el punto (0,0,0), por lo que:

line.x0 = 0; line.y0 = 0; line.z0 = 0;

vector de dirección es la siguiente: line.A = (u / fx) - (CX / fx); line.B = (v / fy) - (cy / fy); line.C = 1;

cx, cy, fx, fy son parámetros de matriz de cámara. Las ecuaciones se explican en el libro "Learning OPENCV".

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