Tengo una cámara (iPhone), tengo un objeto de control 3D en la imagen que conozco muy bien sus propiedades. (Mi objeto de control). También hay un objeto secundario en movimiento. El objetivo final es establecer la trayectoria 3D del objeto en movimiento durante un período de tiempo determinado. (Rastreo)
Me gusta preguntar, ¿podría averiguarlo?
Distancia del teléfono al objeto de control (en aras de la discusión, supongamos que la cámara está a cierta altura y cierta distancia que ninguno de ellos se conoce pero la cámara es perpendicular a la superficie que se conoce)
El objeto secundario donde puedo localizar el objeto en cada cuadro posterior. Mi objetivo es estimar su trayectoria 3D como he indicado anteriormente.
Pregunta extra, podemos hacer que el sistema sea de tal manera que se pueda establecer la distancia del teléfono al objeto de control (aunque no es preferible), ¿esto me ayudaría con el segundo punto?
Respuestas:
Si su objeto tiene 6 puntos conocidos (coordenadas 3D conocidas, y Z ), puede calcular la ubicación de la cámara relacionada con el sistema de coordenadas de los objetos.X,Y Z
Primero algunos conceptos básicos.
Recordamos que el producto cruzado entre dos vectores de 3 puede definirse como la multiplicación de vectores de matriz de modo que
¡Ajá! El resultado debe ser cero vector. Si ahora abrimos la ecuación obtenemos:
Pequeña pausa para que podamos reunir nuestras dificultades. Tenga en cuenta que la ecuación matricial anterior debe formarse para cada correspondencia 3D-> 2D conocida (debe haber al menos 6 de ellas).
Afortunadamente, podemos usar la descomposición de valores singulares (SVD) para forzar
(Hartley, Zisserman - Geometría de vista múltiple en visión artificial)
Y así.
fuente