¿Es posible obtener una vista frontal-paralela de la imagen o la posición de la cámara por relación 2D-3D Puntos?
-
27-10-2019 - |
Pregunta
¿Es posible obtener una vista frontal paralela de la imagen o la posición de la cámara por relación de puntos 2D-3D usando OpenCV
?
Para esto tengo parámetros intrínsecos y extrínsecos. También tengo coordenadas 3D del conjunto de puntos de control (que se encuentra en un plano) en la imagen (relación 2D-3D).
De hecho, necesito la ubicación y la orientación de la cámara, pero no es difícil encontrarla si puedo convertir la imagen en la vista frontal-paralela.
Si no es posible hacer con OpenCV, ¿son las otras bibliotecas que pueden resolver esta tarea?
Solución
La solución se basa en las fórmulas en la documentación de OpenCV Calibración de la cámara y reconstrucción 3D
Consideremos la forma numérica sin coeficiente de distorsión (en contraste con la forma de matriz).
Tenemos u
y v
.
Es fácil de calcular x'
y y'
.
Pero x
y y
no se puede calcular porque podemos elegir ningún cero distinto de cero z
.
La línea en 3D corresponde a un punto en la imagen 2D.
Para resolver esto tomamos dos puntos por z=1
y z=2
. Luego encontramos 2 puntos en el espacio 3D que especifica la línea (x1,y1,z1)
y (x2,y2,z2)
.
Entonces podemos aplicar R
-1 a (x1,y1,z1)
y (x2,y2,z2)
que da como resultado en línea determinados por dos puntos (X1, Y1, Z1)
y (X1, Y1, Z1)
.
Dado que nuestros puntos de control se encuentran en un plano (deje que el plano es z = 0 por simplicidad) podemos encontrar correspondientes X
y Y
punto que es un punto en 3d.
Después de aplicar la normalización de mm
A los píxeles obtenemos una imagen fronto-paralela.
(Si tenemos una imagen de entrada distorsionada, debemos desintegrarla primero)