PRÁCTICA 2. 3D RECONSTRUCTION . PUNTOS DE INTERÉS Y EPIPOLAR

En esta entrada se comentará como se obtienen los puntos de interés y como se calcula la epipolar de un punto.

Puntos de interés

Para obtener los puntos de interés se ha usado un filtro Canny, es decir se han detectado los bordes. 
Con la imagen de bordes empleamos np.where para saber en que puntos de la imagen hay borde. Una vez hayamos hecho esto ya tendremos los puntos de interés.
Hay que decir que se han tomado como referencia los puntos de la imagen izquierda y los homólogos se deben buscar en la imagen derecha.


Epipolar

Para cada punto de interés será necesario calcular su epipolar. Esta epipolar se calculará de la siguiente forma:

1 - Transformamos el sistema de coordenadas al de la cámara con:

pointInOpt = self.camLeftP.graficToOptical(point_interes)

2- Retroproyectamos el punto en el espacio 3D con:

point3d=self.camLeftP.backproject(pointInOpt) 

3- Obtenemos rayo de retroproyección. Para eso hacemos el producto cruzado(np.cross) del punto 3D (point3d) y la posición de la cámara izquierda. La posición de la cámara izquierda se obtiene con:

self.camLeftP.getCameraPosition()

4- Del rayo de retroproyección de tomarán dos puntos que se proyectarán sobre la imagen derecha. Para ello usaremos:

projected = self.camRightP.project(point3d)

Este punto proyectado habrá que pasarlo a las coordenadas de la imagen con:

p_final = self.camRightP.opticalToGrafic(projected)

5- Con los dos puntos proyectados en la imagen derecha se calculará la epipolar mediante las ecuaciones de la recta.




Comentarios

Entradas populares de este blog

PRÁCTICA 2. 3D RECONSTRUCTION. MEJORA

PRÁCTICA 1. FOLLOW LINE. PRUEBA 4