En este blog se irán describiendo todos los avances realizados por Vicent Avaria Avaria en las prácticas de Visión Robótica del Máster Oficial de Visión Artificial - URJC - Móstoles

sábado, 18 de febrero de 2017

2-Práctica0 Color_filter (Fin)

Ahora con los vídeos más difíciles, drone1.mp4 y drone2.mp4, como es más complicado obtener una umbralización buena de las pelotas, es imposible eliminar completamente parte de la caja o del fondo, ya que debido a la mala calidad del vídeo se confunde con las pelotas. Por lo tanto para poder realizar una segmentación adecuada, ha sido necesario realizar un filtrado utilizando restricciones de tamaño y de relación de aspecto. Primeramente se probó con valores aleatorios y observando que no eran los adecuados se procedió a controlar cuales eran los tamaños mínimos y máximos de relación de aspecto así como su tamaño mínimo. Los mejores valores que se encontraron fueron (contornos):

-Altura y anchura mayor que 15 píxeles.
-Relación de aspecto (altura/anchura) mayor que 0.6 y menor que 1.

En la búsqueda de los mejores valores de HSV con la aplicación ColorTuner se observó que era muy complicado umbralizar las pelotas adecuadamente cuando el drone se alejaba. El problema era que las pelotas se confundían mucho con la caja y su máscara se juntaba con la caja, dejando inservible tanto la detección cuando se alejaba y cuando estaba cerca. Por esto mismo se decidió no tener en cuenta cuando el drone está lejos.

En los siguientes vídeos se pueden observar los resultados obtenidos:

 
 drone1.mp4

  
drone2.mp4

jueves, 16 de febrero de 2017

1-Práctica0 Color_filter

En esta práctica se intentará detectar donde se encuentran una pelota roja y una azul así como su segmentación, todo esto a través de funciones de la biblioteca OpenCV.

Para realizar esta práctica ha sido necesario transformar las imágenes que se tratarán al formato HSV, ya que de esta manera es más fácil encontrar los valores adecuados. Después con los valores obtenidos por la aplicación ColorTuner (ya implementada en Jderobot) se pueden encontrar los valores adecuados para umbralizar las pelotas de color.

Más tarde con la función findContours de OpenCV podemos segmentar las pelotas con tan solo quedarse con aquel contorno que tenga valores más grandes.

Se prueba primero con el vídeo pelota_roja.avi obteniendo el siguiente resultado:
Pelota_roja.avi
-------------------------------------------------------------------------------------

En el siguiente vídeo, pelotas_roja_azul.avi, es necesario realizar los mismos pasos que para detectar la pelota roja en el ejemplo anterior. Pero esta vez como se tienen ambos colores y se quiere detectar ambas a la vez, es necesario realizar la umbralización y la segmentación de ambas en paralelo para después sumar las máscaras. Finalmente se obtiene el siguiente resultado:

 
pelotas_roja_azul.avi