Presentación

Este blog ha sido crado para la asignatura de Visión en Robótica del máster de Visión Artificial. El objetivo principal es ir subiendo los avances que vaya haciendo en las prácticas de esta asignatura. Tenemos tres prácticas que hacer. La primera es la práctica 0 en la que hay que instalar Gazebo y los componentes GazeboServer e Introrob del software JdeRobot que serán con los que trabajemos. En la práctica 1 hay que hacer el seguimiento de una línea de color con una sóla cámara y en la práctica 2 se realizará una reconstrucción 3D mediante un sistema estereoscópico.

jueves, 23 de mayo de 2013

Práctica 2 (Pica 0, Depuración)

He depurado todo el código para que se haga más rápido todo el proceso. Lo primero que he hecho ha sido separar la parte de procesado de la imagen de la de dibujado en el mundo. Ahora el procesado se hace en el thread de ejecución y el dibujado en el de gráficos.
En la parte en la cual recorría las dos lineas de retroproyección para encontrar el punto de menor distancia entre ambas rectas, he modificado el código de forma que he eliminado un bucle for y un condicional if.
En la parte en la cual busco correspondiencias entre puntos, he decidido poner una disparidad máxima y he cambiado la función de comparación de OpenCv (matchtemplate) por una propia en la que hago la diferencia absoluta de los dos Roi pixel a pixel y sumo todas las diferencias para obtener un único valor.
Para terminar he eliminado algunas variables que tenían datos redundantes.
Ahora el cálculo de puntos se hace mucho más rápido como puede verse en el vídeo. Lo que más tarda es el dibujado, que creo que podré mejorarlo utilizando otra función de pintado de los puntos.





martes, 21 de mayo de 2013

Practica 2 (pica 0)

Para que el robot coja él solo los puntos interesantes, he hecho un filtro de canny y he cogido sólo el borde (valor 255). He tenido muchos problemas en esta parte, ya que los valores que me devolvía la función Mat.at no eran correctos. He probado con muchos tipos de datos y con ninguno parecía darme valores adecuados. Al final he tenido que usar IplImage en vez de Mat y usar un ejemplo de introrob.
Como me funciona muy lento el algoritmo, en vez de hacer dos bucles for cada vez que entra una nueva imagen para recorrerla, he hecho que con cada nueva imagen coja un punto distinto.


jueves, 16 de mayo de 2013

Practica 2 (Pica 1)

He incorporado la búsqueda de correspondencias del punto clickado en la imagen izquierda con la derecha. Para ello, voy buscando mdiante una función de distancia, el parecido entre una Roi extraída alrededor del punto clikado en la imagen izquierda con la imagen derecha.  Para que la búsqueda sea más rápida, extraigo la línea epipolar  de la imagen derecha para después hacer la búsqueda alrededor de ésta.
Además he corregido un error que tenía a la hora de sacar la línea de retroproyección. No sacaba la línea de retroproyección del punto que más se parecía, sino el de la esquina superior izquierda de la Roi a la que pertenecía.