Tengo una cámara calibrada y tengo los parámetros intrínsecos. También tengo los parámetros extrínsecos relativos a un punto (el origen mundial) en una superficie plana en el mundo real. Este punto lo he establecido como origen en las coordenadas del mundo real [0,0,0] con una normal de [0,0,1].
A partir de estos parámetros extrínsecos, puedo calcular la posición y la rotación de la cámara en las coordenadas 3D del plano mundial usando esto aquí: http://en.wikipedia.org/wiki/Camera_resectioning
Ahora tengo un segundo punto del que he extraído las coordenadas de la imagen para [x, y]. ¿Cómo obtengo ahora la posición 3D de este punto en el sistema de coordenadas mundial?
Creo que la intuición aquí es que tengo que trazar un rayo que va desde el centro óptico de la cámara (para el que ahora tengo la posición 3D como se describe anteriormente), a través del plano de imagen [x, y] de la cámara y luego a través de mi plano del mundo real que definí en la parte superior.
Ahora puedo intersecar un rayo 3d de coordenadas mundiales con un plano como sé normal y señalarlo en ese plano. Lo que no entiendo es cómo descubro la posición y dirección 3D cuando sale del plano de la imagen a través de un píxel. Es la transformación a través de diferentes sistemas de coordenadas lo que me confunde.
fuente
Respuestas:
Si tienes extrínsecos, entonces es muy fácil. Tener extrínsecos es lo mismo que tener "pose de cámara" y lo mismo que tener la homografía. Mira esta publicación en stackoverflow.
Tienes extrínsecos, también llamados pose de cámara, que se describe como una traducción y una rotación:
Puedes obtener Homografía de Pose de esta manera:
Luego, puede proyectar sus puntos 2D en los puntos 3D correspondientes multiplicando la homografía por los puntos:
fuente
Tiene dos opciones: utilizar la proyección hacia atrás o la proyección entre dos planos (homografía).
Con la proyección hacia atrás, toma una pseudo inversa de la matriz de su cámara y multiplica el resultado con su presentación homogénea del punto de imagen:P
Ahora tiene una línea 3D que recorre el centro de la cámara y el punto . Si lo desea, puede convertir esto en una presentación más fácil de tratar. Por ejemplo, con un vector de punto y dirección (recuerde normalizar las coordenadas homogéneas tal que el factor de escala antes de los cálculos reales):X V = ω [ X Y Z 1 ] T ω = 1C X V=ω[XYZ1]T ω=1
Si tiene el plano puede resolver la ecuación para .Π=[π1π2π3π4]T,π1X+π2Y+π3Z+π4=0 L(t)=Π t
Si decide utilizar la homografía, debe calcular la matriz de homografía que se define como la proyección entre el plano de la imagen y el plano del sensor de la cámara:3×3 H
Ahora, si sabe :x
Si no calculó la mientras calibraba la cámara (probablemente usando transformación lineal directa, DLT), puede usar la siguiente formulación:H
Donde es la instancia de la cámara desde el plano y . (Ma, Soatto, Kosecká, Sastry - Una invitación a la visión tridimensional de las imágenes a los modelos geométricos, p. 132)d T=−RC
fuente
No se puede conocer la posición 3d del segundo punto. Puede ser cualquiera de los puntos del rayo desde el centro de la cámara hasta el infinito.
Puedes hacer lo siguiente:
fuente