Finalmente, para completar la práctica se han calculado los puntos 3D del mundo a través de los píxeles centrales de las ventanas, y para ello, se han utilizado otra vez las funciones:
point2d = graficToOptical(point2d)
point3d = backproject(point2d)
point3d = getCameraPosition(self)
Estos puntos son las lineas que se proyectan desde las cámaras para visualizar el objeto. Con ellas y el script para calcular la linea más corta entre dos lineas (Extraído de esta página y adaptado a python y la biblioteca numpy). Con esta línea se calcula la mitad entre ellas para tener el centro.
Este punto es el que ya se puede dibujar en la herramienta 3D Viewer-web y extrayendo el color del pixel central de la ventana de la imagen izquierda, ya se podría añadir con la función drawPoint(point,color). Obteniendo así el siguiente resultado (Como se puede ver en el vídeo se ha movido un poco hacia la derecha el robot Kobuki para que cogiese todos los cubos con letras, que es lo que mejor reconstruye por estar más cerca):
Como se puede ver, la reconstrucción es bastante buena, (aunque se pueden ver puntos mal calculados que aparecen por el fondo) apareciendo unas tres líneas de profundidad, con las formas de los objetos. Con los colores hay más problema, ya que la iluminación con la que consta el entorno no es muy intensa.
En la reconstrucción del vídeo anterior se ha utilizado una ventana de 40x40 píxeles para tener una mejor reconstrucción y como se puede ver al final del vídeo tarda unos 68,88 segundos en realizar toda la reconstrucción, contando que está grabando el ordenador y con una sesión remota de Teamviewer, normalmente hace toda la reconstrucción con unos 53 segundos.
Como añadidos a la práctica se ha dado la posibilidad de no dibujar los puntos predichos hasta el final de todo el procesado o mientras tanto (Como en el vídeo). Se da la posibilidad de utilizar la diferencia entre ventanas en vez de la correlación, para poder ver que es peor que la correlación. También se ha añadido en la imagen filtrada derecha (imageFiltered) la visualización de por que fila se encuentra actualmente y el número de puntos predichos. En el mismo código también se da la posibilidad de visualizar las ventanas de la imagen izquierda y de la derecha que son más parecidas. (Como en la publicación anterior)
Me parece que es interesante nombrar este problema, porque aparte de aparecer en el mismo código de Academy (JdeRobot) me pasó más de una vez. Tener en cuenta el nombre de las variables y las funciones llamadas de la cámara izquierda y de la derecha, así como de sus imágenes, porque me hizo perder mucho tiempo sin saber por que salía mal.
Como se puede ver, la reconstrucción es bastante buena, (aunque se pueden ver puntos mal calculados que aparecen por el fondo) apareciendo unas tres líneas de profundidad, con las formas de los objetos. Con los colores hay más problema, ya que la iluminación con la que consta el entorno no es muy intensa.
En la reconstrucción del vídeo anterior se ha utilizado una ventana de 40x40 píxeles para tener una mejor reconstrucción y como se puede ver al final del vídeo tarda unos 68,88 segundos en realizar toda la reconstrucción, contando que está grabando el ordenador y con una sesión remota de Teamviewer, normalmente hace toda la reconstrucción con unos 53 segundos.
Como añadidos a la práctica se ha dado la posibilidad de no dibujar los puntos predichos hasta el final de todo el procesado o mientras tanto (Como en el vídeo). Se da la posibilidad de utilizar la diferencia entre ventanas en vez de la correlación, para poder ver que es peor que la correlación. También se ha añadido en la imagen filtrada derecha (imageFiltered) la visualización de por que fila se encuentra actualmente y el número de puntos predichos. En el mismo código también se da la posibilidad de visualizar las ventanas de la imagen izquierda y de la derecha que son más parecidas. (Como en la publicación anterior)
Me parece que es interesante nombrar este problema, porque aparte de aparecer en el mismo código de Academy (JdeRobot) me pasó más de una vez. Tener en cuenta el nombre de las variables y las funciones llamadas de la cámara izquierda y de la derecha, así como de sus imágenes, porque me hizo perder mucho tiempo sin saber por que salía mal.



