Social Icons

twitterfacebookgoogle plusemail

martes, 14 de mayo de 2013

Reporte de Proyecto

¿ De qué trata el proyecto ?

Primero daré una pequeña introducción al proyecto. Es un programa da ordenes a un drone para que se establesca dentro de la imagen de una camara, esto se puede realizar analizando la imagen tomada de la camara e identificando la posición del drone esto con el fin de identificar en que parte del area de la imagen se encuentra el drone y a partir de ahí decirle al drone que movimiento realizar para llegar al centro de la imagen la cual es nuestro caso ideal (estar en el centro de la imagen).

 ¿ Cuál es el propósito del proyecto ?

El propósito principal del proyecto es poder hacer un proyecto génerico para que se puedan realizar proyectos en donde el drone pueda realizar alguna cooperación con algún otro robot en la superficie, realizar alguna busqueda en la superficie ó seguir algún objetivo.

¿ Cuál es el diseño del software?

El software actualmente se compone de las siguientes partes:


¿ Qué librerías se utilizaron ?

Las librerías utilizadas son las siguientes:

   PIL >= versión 1.1.7
   Tkinter >= versión 8.5
   Numpy >= versión 1.7.0

Dichas librerías fueron usadas con Python versión 2.7.

Descripción de los procedimientos en el proyecto

Primero obtenemos una imagen del drone, una vez obtenida la imagen del drone (como la imagen de abajo).



Después realizamos una convolución para realizar la detección de bordes usando las máscaras de Prewitt, una vez obtenida la convolución se realiza una binarización de la imagen.


Después de realizar la binarización lo que pasaremos a hacer será la detección de objetos utilizando el BFS (Breadth First Search), se crean 3 grupos de objetos (cada color es un objeto); drone, fondo y ruido, esto se hace obteniendo el primer objeto con mayor cantidad de pixeles el cual llamaremos fondo, luego obtenemos el segundo mayor objeto con mayor cantidad de pixeles como drone y por último todos los demás pixeles que queden fuera de este grupo se denominan ruido.


Luego de obtener los 3 grupos pasaremos a clasificar el ruido a partir de que vecino se encuentre dentro del ruido, por ejemplo si una coordenada obtenida dentro del grupo de Ruido tiene más vecinos de fondo entonces dicha coordenada se clasifica como Fondo en caso contrario será clasificado como Drone.


 Ahora solamente tendremos el grupo de Fondo y Drone. En el grupo de Drone lo que buscaremos serán los ejes x y y mínimos y máximos, esto con el fin de obtener las dimensiones del Drone así como el centro de masa del Drone.


Obtenemos el centro de la imagen y obtenemos la diferencia del centro del drone y la imagen. Dicha diferencia nos ayudará a definir en que area se encuentra por las siguientes reglas:

Primero se tiene el centro de la imagen a partir del centro de la imagen se tiene una cierta tolerancia hacia el eje positivo del eje x se tienen brincos de 10 %, 30% y 50% al igual que en el eje negativo de x, esto también sucede en el eje y que tiene brincos de 15% y 45% en su eje negativo y positivo, y cada tolerancia en el eje x se tiene dividido en 5 partes y en el eje y dividido en 3 partes.

  • Usaremos el eje x para determinar si el drone debería irse hacía la izquierda ó derecha. Si la diferencia del drone y la imagen es mayor en valor absoluto a 10% en el eje negativo de x significa que el drone se encuentra en la izquierda de la imagen y debe irse hacía la derecha, en caso de que se encuentre a la derecha tendrá un valor positivo mayor al valor 10% del ancho de la imagen deberá hacerse hacia la izquierda ya que se encuentra el drone en la derecha. En caso encontrarse dentro del 10% del valor absoluto del ancho de la imagen significa que esta en el centro.
  • Usaremos el eje y para determinar si el drone debería irse hacía abajo ó arriba. Si la diferencia del drone y la imagen es mayor en valor absoluto a 15% en el eje negativo de y significa que el drone se encuentra en la parte de abajo de la imagen y deber irse hacía arriba en caso de que sea en el eje y positivo debería irse hacía abajo. En caso de encontrarse dentro del 15% del valor absoluto de la altura de la imagen significa que esta en el centro.
  • Usaremos las dimensiones del drone para determinar si se acerca o aleja, teniendo como límites que tenga un tercío de la imagen como mínimo en su tamaño normal y como máximo la mitad de la imagen como su tamaño máximo, si sale del límite máximo debería alejarse y si sale del tamaño normal debería acercarse.

Trabajo a futuro

  • Aplicación de velocidades del drone saber la velocidad de movimiento.
  • Existe cierto problema al momento que el drone se encuentra parcialmente visto dentro de la imagen, ya que este lo detecta como si se estuviera alejando y pide que se acerque el drone (como podrán ver en la imagen de abajo).

GitHub

Enlace directo al branch master del proyecto.
https://github.com/SaulG/proyectoVision/tree/master

2 comentarios:

  1. Hay que limpiar un poco el repositorio. La descripción de unir con el grupo donde más vecinos haya no coincide con lo que ocurre en el código (se pegan al grupo del primer vecino que encuentren dentro de esos dos grupos). En el reporte sería bueno agregar lo de evaluación de desempeño que viene en la presentación y quizá probar diferentes tamaños de imágenes. También lo del desempeño podría entrar en lo de trabajo a futuro.

    9 pts por la presentación.

    ResponderEliminar
  2. En el reporte faltó la evaluación de desempeño. Van 9 pts.

    En el repo hay archivos "basura". En el readme no se identifica el autor del proyecto. Los nombres de los archivos no son muy intuitivos. Algunas partes del código no tienen suficientes comentarios. 7 pts por el repo.

    ResponderEliminar