domingo, 5 de septiembre de 2010

Descripcion del proyecto

En este trabajo se presenta la implementación de un sistema clasificador de objetos, que analiza las imágenes obtenidas a través de una cámara web instalada en un robot móvil. Los objetos analizados tienen tres formas y tres colores diferentes.
Como clasificador se emplea una red neuronal de tipo backpropagation, que se entreno con un vector de características extraídas de las imágenes obtenidas en el proceso de colección de muestras, entre ellas están el color, la compactibilidad y la cantidad de tramos rectos hallados en el borde de la imagen.


El Sistema en Funcionamiento





El Problema

Clasificar objetos por forma y color y reposicionarlos según dichos parámetros de forma automatizada.


Solucion Propuesta





Descripción del sistema

El sistema implementado está constituido por un robot móvil, desarrollado para este proyecto, que esta comandado por una tarjeta con un microcontrolador, programado con el software MPLAB. Cuenta con cinco servomotores (dos de rotación continua para las llantas, uno para el brazo, uno para la pinza y uno para el sistema de descarga de la canasta). El sistema sensorial está conformado por cuatro sensores para detectar línea (CNY70) y un sensor de medición de distancia (SHARP GP2D12).

Robot Movil
Sensor de distancia, Sharp GP2D02, mide distancias entre 20 y 80 cm, salida analógica
Sensores para detectar lineas y cruces (CNY 70)
Tarjeta Interfaz Robot – PC (Matlab)

Posee una cámara web para la adquisición de imágenes y se comunica con Matlab a través de una tarjeta USB que emula un puerto serial virtual. Esta programado de tal forma que conoce la ubicación de cada una de las zonas en la pista y recibe órdenes de la red para reubicar el objeto.

El robot móvil tiene acoplada una cámara web Genius, con la cual se toman las imágenes para el desarrollo del proyecto, el tamaño de estas es de 320x240 pixeles y está conectada a través de su cable USB a un computador, donde se hace el procesamiento y análisis de las imágenes, empleando como software Matlab.  

Pista para la navegación del robot

Segmentación

La metodología empleada para la segmentación de color fue la siguiente: se creó una función en Matlab, que recibe una imagen en formato RGB, y la transforma al espacio de color HSV, donde se hizo una umbralización de los tres colores (azul, rojo y verde) con la ayuda de la función impixel, luego se recorren todos los pixeles de la imagen y se hace el conteo de los que están dentro del rango del color azul, rojo y verde respectivamente, luego de una comparación de la cantidad de pixeles, se determina el color de la imagen recibida. Esta función retorna un número entre uno y tres donde uno corresponde al color azul, dos al color rojo y tres al color verde.

Umbralización de los colores en formato HSV


Segmentación Pelota roja


Posteriormente la imagen que está en formato RGB se la paso a escala de grises y a ella se le realizo una binarización, para extraer el área del objeto a analizar, luego se le extrajo el borde al objeto, mediante funciones de Matlab y de aquí se obtuvo el perímetro.
Ejemplo de escala de grises binarización y extracción de borde.
Luego se implemento una función en Matlab llamada filtro de cadena, la cual recibe la imagen del borde del objeto y determina la cantidad de puntos que hay en los tramos rectos que tiene la misma.
Ejemplo de aplicación del filtro de cadena

Extracción de características

Con las imágenes segmentadas se realiza la medición de las características de cada uno de los objetos. Se mide el área y el perímetro y se determina la cantidad de tramos rectos y el color, luego con el área y perímetro de cada imagen se determina la compactibilidad del objeto. Para la obtención de las características para el entrenamiento de la red neuronal se emplearon un total de 36 imágenes (3 de cada objeto).  En la siguiente tabla se muestra la matriz de características obtenida para las 36 imágenes de entrenamiento, donde se puede observar, la necesidad de introducir un parámetro adicional a la red neuronal, que en este caso fue la cantidad de segmentos rectos del objeto, para que lograra una mejor inferencia en la clasificación por forma de los objetos, dado que los valores de compactibilidad en algunos casos se traslapan.
Matriz de características

Clasificación


Una vez extraídas las características para cada uno de los objetos, estas son almacenadas como elementos de una matriz de características que identifica cada objeto, esta matriz de características se le pasa a la nueva red neuronal artificial de tipo feed-forward backpropagation y al entrenamiento de la misma, una vez entrenada la red se hace la validación, donde se extraen nuevamente los cinco parámetros (vector de color, compactibilidad y cantidad de segmentos rectos) para cada una de las muestras de validación con lo cual la red neuronal arroja un numero entre uno y nueve que corresponde al color y forma del objeto como se indica a continuación:

1. Cubo Azul
2. Cubo Rojo
3. Cubo Verde
4. Cilindro Azul
5. Cilindro Rojo
6. Cilindro Verde
7. Pelota azul
8. Pelota Roja
9. Pelota Verde

La red neuronal artificial recibe también la arquitectura que para este caso se la definió con cinco neuronas en la capa de entrada, diez en la capa oculta y una en la capa de salida; las funciones de activación para cada capa son tangencial, tangencial y lineal respectivamente (tansig, tansig y purelin).

Archivos Para Descargar

En el siguiente enlace encontraran todos los codigos, tanto de MPLAB como de Matlab, que se desarrollaron para este proyecto, o pueden hacer click aqui para descargarlos.

https://sites.google.com/site/archivosbot/Firmware_Bot_Clas.rar?attredirects=0&d=1


Correos electronicos de contacto:

yhbolanos@unicauca.edu.co
yabo104@gmail.com
lpineda@unicauca.edu.co
lfernandapineda@gmail.com