diseÑo e implementaciÓn de un seguidor de objetos en...

100
DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN MOVIMIENTO MEDIANTE EL USO DE UNA CAMARA VICTOR HUGO GARZON SALAZAR UNIVERSIDAD AUTONOMA DE OCCIDENTE FACULTAD DE INGENIERIA DEPARTAMENTO DE AUTOMATICA Y ELECTRONICA PROGRAMA DE INGENIERIA MECATRONICA SANTIAGO DE CALI 2011

Upload: others

Post on 01-Nov-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS E N MOVIMIENTO MEDIANTE EL USO DE UNA CAMARA

VICTOR HUGO GARZON SALAZAR

UNIVERSIDAD AUTONOMA DE OCCIDENTE FACULTAD DE INGENIERIA

DEPARTAMENTO DE AUTOMATICA Y ELECTRONICA PROGRAMA DE INGENIERIA MECATRONICA

SANTIAGO DE CALI 2011

Page 2: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS E N MOVIMIENTO MEDIANTE EL USO DE UNA CAMARA

VICTOR HUGO GARZON SALAZAR

Proyecto de grado para optar al título de

Ingeniero Mecatrónico

Director

JUAN CARLOS PERAFÁN VILLOTA Ingeniero Electricista

UNIVERSIDAD AUTONOMA DE OCCIDENTE FACULTAD DE INGENIERIA

DEPARTAMENTO DE AUTOMATICA Y ELECTRONICA PROGRAMA DE INGENIERIA MECATRONICA

SANTIAGO DE CALI 2011

Page 3: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

3

Nota de aceptación:

Aprobado por el Comité de Grado en cumplimiento de los requisitos exigidos por la Universidad Autónoma de Occidente para optar al título de Ingeniero Mecatrónico.

JUAN CARLOS MENA MORENO Jurado DIEGO FERNANDO ALMARIO ÁLVAREZ Jurado

Santiago de Cali, 09 de Diciembre de 2011

Page 4: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

4

AGRADECIMIENTOS

Agradezco a mi familia por todo el apoyo que me han brindado durante cada una de las etapas de mi vida, les agradezco a mi director de tesis Juan Carlos Perafán, a los Ingenieros Roberto de Jesús Vega, Juana María Campo y Jesús Alfonso López, al igual que a la empresa Pallomaro S.A. por toda la ayuda que me brindaron durante este proceso académico. Asimismo a cada uno de mis amigos con quienes inicie y lleve a cabo todo mi recorrido en la educación Superior: Sebastián Quintana, Alexandra Álvarez, Fabián A. Suarez, William A. Mosquera, Edward S. Oliveros y Antonio J. Requejo, así mismo a Jessica L. Velasco por el apoyo que me brindo en esta última etapa de mi recorrido de pregrado, y finalmente les agradezco a todos los compañeros y docentes que tuve en el transcurso de mi carrera, quienes me compartieron parte de sus conocimientos.

Page 5: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

5

CONTENIDO

pág.

GLOSARIO 14 RESUMEN 16 INTRODUCCION 17 1. PLANTEAMIENTO DEL PROBLEMA 19 2. JUSTIFICACIÓN 20 3. OBJETIVOS 21 3.1 OBJETIVO GENERAL 21 3.2 OBJETIVOS ESPECÍFICOS 21 4. ANTECEDENTES 22 5. MARCO TEORICO 26 5.1. PROCESAMIENTO DE SEÑALES 26 5.2. PROCESAMIENTO DE VIDEO 26 5.3. ESPACIO DE COLOR 27 5.3.1. YCbCr 27 5.3.2. RGB 28 5.3.3. HSI 28 5.3.4. HSV 29

Page 6: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

6

5.4. FILTROS ESPACIALES 30 5.4.1. Filtro de Suavizado 30 5.4.2. Filtro de Diferencia 30 5.4.3. Filtro no lineal 30 5.5. ALGORITMO DE CANNY 31 6. DESARROLLO CONCEPTUAL 32 6.1 IDENTIFICACIÓN DE NECESIDADES Y RESTRICCIONES 32 6.1.1 Necesidades 32 6.1.2 Restricciones 32 6.2 JERARQUIA DE NECESIDADES 33 6.3 METRICAS 34 7. QFD (QUALIFY FUNCTION DEPLOYMENT) 36 8. GENERACION DE CONCEPTOS 37 8.1 CAJA NEGRA 37 8.2 DESCOMPOSICIÓN FUNCIONAL 37 9. DESARROLLO CONCEPTUAL 38 9.1 GENERACIÓN DE CONCEPTOS 38 9.1.1 Fuente de Alimentación 38 9.1.2 Hardware 38 9.1.3 Convertir energía en movimiento rotacional 38 9.1.4 Sensar la imagen 38

Page 7: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

7

9.1.5 Procesar señal de video 39 9.1.6 Filtrar señal de video 39 9.1.7 Detectar formas 39 9.1.8 Filtrar error de posición 39 9.1.9 Controlar 40 9.2 COMBINACIÓN DE CONCEPTOS 40 9.3 MATRIZ DE TAMIZAJE 41 9.4 MATRIZ DE EVALUACIÓN DE CONCEPTOS 42 9.5 TIPO DE ARQUITECTURA 44 9.6 INTERACCIÓN ENTRE MÓDULOS 45 9.7 PROTOTIPO 46 10. DESARROLLO 47 10.1 DISEÑO ELECTROMECANICO 47 10.1.1 Sistema mecánico 47 10.1.2 Servo-motores 49 10.2 DISEÑO ELECTRONICO 51 10.3 BEAGLEBOARD 54 10.4 PROGRAMACIÓN 56 10.4.1 Procesamiento de Imagen 56 10.4.3 Detección de formas 64 10.4.4 Filtro de Kalman 66 10.5 CONTROL 71

Page 8: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

8

10.6 COMUNICACIÓN 71 10.6.1 Comunicación entre VisualStudio y Arduino 71 10.6.2 Comunicación entre BeagleBoard y Arduino 72 11. RESULTADOS OBTENIDOS 73 11.1 PROCESAMIENTO 73 11.2 SISTEMA ELECTROMECÁNICO Y HARDWARE 75 11.3 SEGUIMIENTO 75 12. COSTOS 76 13. CONCLUSIONES 77 14. RECOMENDACIONES 78 BIBLIOGRAFIA 79 ANEXOS 80

Page 9: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

9

LISTA DE CUADROS

Pág.

Cuadro 1. Lista de necesidades y sus niveles de imp ortancia 33

Cuadro 2. Lista de métricas con sus unidades, nivel de importancia y relación que tienen con las necesidades 35

Cuadro 3. Combinación de Conceptos 40

Cuadro 4. Selección de Conceptos 41

Cuadro 5. Evaluación de conceptos 42

Cuadro 6. Especificaciones del motor Futaba S9152 4 9

Cuadro 7. Especificaciones del Arduino Mega 2560 52

Cuadro 8. Características de la BeagleBoard – xM 54

Cuadro 9. Combinación de Filtros 58

Cuadro 10. Precios de piezas que se mandaron a real izar 76

Cuadro 11. Precios del Hardware comprado 76

Cuadro 12. Precios de Materiales adicionales 76

Cuadro 13. Costo Total del Proyecto 76

Page 10: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

10

LISTA DE FIGURAS

Pág.

Figura 1. Correspondencia en tres puntos. 17 Figura 2. BeagleBoard - xM 23 Figura 3. Microcontrolador Wiring 24 Figura 4. Tarjeta Electrónica Arduino Duemilanove 2 5 Figura 5. Modelo RGB 28 Figura 6. Modelo HSI 29 Figura 7. Modelo HSV 29 Figura 8. Caja Negra del Sistema 37 Figura 9. Bloques funcionales del sistema 37 Figura 10. Arquitectura del sistema 44 Figura 11. Interacción entre elementos 45 Figura 12. Diagrama de bloques del sistema 46 Figura 13. Estructura Electromecánica 46 Figura 14. Pieza superior del sistema mecánico 47 Figura 15. Pieza intermedia del sistema electromecá nico 48 Figura 16. Sistema de rodamiento 48 Figura 17. Base del sistema electromecánico 49 Figura 18. Motor Futaba S9152 50 Figura 19. Características del Arduino 51 Figura 20. Señal de PWM generada por el Arduino 52

Page 11: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

11

Figura 21. Interfaz del programa Arduino 53 Figura 22. Especificaciones de la BeagleBoard - xM 56 Figura 23. Imagen en espacio HSV 57 Figura 24. Imagen Umbralizada 58 Figura 25. Resultados de Opciones de las Secuencias de Filtros. 59 Figura 26. Imagen Original 60 Figura 27. Filtro de Mediana 61 Figura 28. Imagen resultante de la aplicación del f iltro de mediana 61 Figura 29. Erosión y Dilatación 62 Figura 30. Imagen resultante de la aplicación de un filtro morfológico 62 Figura 31. Imagen resultante de la aplicación del a lgoritmo Canny 63 Figura 32. Imagen resultante de la aplicación del f iltro gaussiano 64 Figura 33. Identificación de círculos y color por medio de OpenCV 65 Figura 34. Identificación de rectas por medio de Op enCV 65 Figura 35. Etapa de aplicación del Filtro de Kalman sobre el sistema 66 Figura 36. Centros de masa identificados por la Tra nsformada de Hough 66 Figura 37. Predictor y Corrector 68 Figura 38. Respuesta del Filtro de Kalman al error generado en el procesamiento 70 Figura 39. Código para ingresar al puerto serial en Visual Studio 71 Figura 40. Código para lectura de datos externos en el software Arduino 72 Figura 41. Imagen resultante de la etapa de filtrac ión 74 Figura 42. Identificación de formas circulares 74

Page 12: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

12

Figura 43. Seguimiento del objeto - Ancho de pulso vs. Posición (Píxel) 75

Page 13: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

13

LISTA DE ANEXOS

Pág.

Anexo A. Código de Procesamiento en VisualStudio 80 Anexo B. Código para movimiento de motores en la pl ataforma Arduino 85 Anexo C. Código de aplicación de filtro de Kalman e n MatLab 93 Anexo D. Planos del Elemento Superior 96 Anexo E. Planos del Elemento Intermedio 97 Anexo F. Planos de la Base 98 Anexo G. Planos del Componente en U 99 Anexo H. Planos del Sistema de Rotación 100

Page 14: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

14

GLOSARIO

ALGORITMO CANNY: es un operador resultante del conjunto de otros algoritmos en forma secuencial, que realiza detección de bordes en imágenes. ARDUINO: es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos. BEAGLEBOARD: es una tarjeta embebida de baja potencia y bajo costo, de un solo ordenador. Esta fue desarrollada por Texas Instruments en asociación con Digi-Key, con el objetivo de aplicaciones de código abierto. ESPACIO ESTADO: es un modelo matemático de un sistema físico descrito mediante un conjunto de entradas, salidas y variables de estado relacionadas por ecuaciones diferenciales de primer orden que se combinan en una ecuación diferencial matricial de primer orden. FILTRO DE KALMAN: es un algoritmo de procesado de datos óptimo recursivo. Óptimo porque minimiza un criterio determinado y porque incorpora toda la información que se le suministra para determinar el filtrado. Recursivo porque no precisa mantener los datos previos, lo que facilita su implementación en sistemas de procesado en tiempo real. FILTRO DIGITAL: es un sistema que, dependiendo de las variaciones de las señales de entrada en el tiempo y amplitud, se realiza un procesamiento matemático sobre dicha señal. FUNCION GAUSSIANA: es una curva que responde a la ecuación

Page 15: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

15

La principal característica de esta curva es que es una buena representación de la distribución de variables aleatorias en poblaciones, por lo que resulta útil en cálculos estadísticos. HSV: es un modelo de color que define los colores en función de los valores de tres importantes atributos de estos matiz, saturación y brillo. OPENCV: es una biblioteca de versión libre desarrollada para el trabajo de visión artificial, originalmente desarrollada por Intel. PWM: (pulse-width modulation – modulador de ancho de pulsos) es una poderosa técnica para el control de circuitos analógicos mediante procesamiento de salidas digitales RGB: es un modelo de color aditivo que contiene luz roja, verde y azul. Juntos generan una amplia gama de colores. TARJETA EMBEBIDA: es una tarjeta de desarrollo que permite a procesar otros tipos de sistemas por medio de ella.

Page 16: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

16

RESUMEN

El proyecto que se mostrará a continuación, se desarrolló como proceso de investigación enfocado en la visión artificial, aplicando lo que es reconocimiento de patrones y seguimiento de objetos (tracking); se implementó un sistema electromecánico de dos grados de libertad, el cual permite a la cámara que adquirirá la imagen abarcar un mayor espacio de trabajo. Para poder llevar a cabo dicho proyecto se realizó una búsqueda y apropiación de los avances, aplicaciones y temáticas relacionadas con la visión artificial, permitiendo así entender muchas herramientas de procesamiento de imágenes que permitieran lograr los objetivos planteados, de la misma forma fue necesario realizar el estudio del hardware que permitió llevar a cabo la asociación de los diferentes elementos conformantes y así lograr el funcionamiento e implementación del dispositivo. Como se podrá observar, este proyecto está conformado por diferentes disciplinas que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas BeagleBoard y Arduino. La primera herramienta es una librería de programación escrita en C y C++, que fue diseñada con el fin de tener una mayor eficiencia computacional y un fuerte enfoque en las aplicaciones de tiempo real. La BeagleBoard es una tarjeta embebida que permitirá la instalación de la librería de OpenCV, y así hacer uso de esta para el desarrollo e implementación de aplicaciones de visión en tiempo real. Por otra parte, el Arduino es un microcontrolador que permitirá generar la señal de control para el manejo de la plataforma electromecánica y así permitir tener una estructura portable. Finalmente después de haber terminado la aplicación del hardware y el desarrollo del software, se mostrarán los resultados obtenidos, al igual que se presentarán los estudios financieros y de desarrollo que se llevaron a cabo. Palabras clave: procesamiento digital de imágenes, filtro digital, espacio de color, opencv, tracking, tarjeta embebida, beaglebo ard, arduino, sistema electromecánico.

Page 17: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

17

INTRODUCCION Muchos de los sistemas industriales actuales se caracterizan por la implementación de diversas tecnologías en las cuales se incluye mecánica, electrónica, control y programación, permitiendo llegar a un mejor funcionamiento y dar óptimos resultados. Esto ha impulsado a la creación de nuevas tecnologías, como nuevos tipos de sensores que han permitido mejorar la precisión en los procesos, dentro de estos se podrá encontrar algunos que usan procesamiento de imágenes y video dando como resultado lo que se llama visión artificial. La visión artificial es una herramienta muy útil que se ha ido desarrollando para establecer la relación entre el mundo tridimensional y sus vistas bidimensionales, logrando así hacer una reconstrucción del espacio y poder simular una proyección de una escena tridimensional en la posición deseada a un plano bidimensional1. Figura 1. Correspondencia en tres puntos.

Fuente: DOMINGO, Mery. Visión Artificial. Santiago de Chile: Universidad de Santiago de Chile, 2002. p. 4. Existen grandes avances sobre este tema como lo es la adquisición de imágenes estáticas. Sin embargo se ha visto la necesidad de trabajar también con imágenes dinámicas o móviles llevando estas a un proceso de adquisición mucho más

1 DOMINGO, Mery. Visión Artificial. Santiago de Chile: Universidad de Santiago de Chile, 2002 [consultado 20 de Marzo de 2011]. p. 1. Disponible en Internet: www.gnewbook.org/action/file/download?file_guid=54061

Page 18: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

18

complejo que el realizado con las imágenes estáticas. Para lograr esto, son tomados puntos de correspondencia o de identificación entre distintas imágenes de un mismo objeto, los puntos de correspondencia pueden ser punto, líneas o regiones especificados en el objeto. En la Figura 1, se pueden observar tres vistas tomadas por una cámara fija mediante la rotación del eje central de la taza y como se puede observar se tiene un punto de correspondencia (m) el cual es visualizado en las tres vistas tomadas2. Normalmente el ojo humano es capaz de distinguir aproximadamente 20 imágenes por segundo. De este modo, cuando este número es superado (30 imágenes por segundo en videos, de acuerdo a las normas National Television Standards Committee), es posible engañar al ojo creando una ilusión de una imagen en movimiento. La fluidez de un video se caracteriza por el número de imágenes por segundo (frecuencia de cuadros), expresados en FPS (Cuadros por segundo). El proceso investigativo que se ha llevado a cabo con el tema de visión artificial, ha permitido que la rama de la automatización y en especial la robótica, mejorara, pues este es un sistema sensorial que ofrece mayor cantidad de información que el que se puede obtener con otro tipo de sensores tales como: ultrasonido, laser, GPS.

2 Ibíd., p. 3.

Page 19: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

19

1. PLANTEAMIENTO DEL PROBLEMA En robótica móvil, específicamente hablando, se ha hecho necesario el uso de sensores de tipo exteroceptivo (ultrasonido, laser, etc.) con el fin de mejorar la navegación del robot, la cual se hacía teniendo en cuenta solamente sensores propioceptivos como es el caso del encoder. Es claro que este tipo de sensores extereoceptivos han demostrado ser de gran utilidad pero no son 100% confiables, razones como tipo de información generada, ruido inherente, generan inexactitudes en las medidas enviadas al robot. Con el advenimiento de nuevas técnicas para procesamiento de señales tales como la Transformada rápida de Fourier, la Transformada Wavelet y la Transformada Chirplet, entre otras, que han demostrado su eficacia en tareas como identificación de rostros, huellas digitales, placas, materiales defectuosos; se ha vuelto la mirada al procesamiento de imágenes, las cuales tienen un tipo de sensor ya conocido: la cámara de video. Varios investigadores en el mundo ya han trabajado arduamente en procesamiento de imágenes de tipo estática, obteniendo resultados satisfactorios. Aunque las posibilidades de uso de la visión artificial son amplias, el trabajo aquí presentado se enfoca en la realización de un sistema capaz de realizar seguimiento a un objeto en movimiento. Se hace necesario recalcar que la forma de los objetos estudiados será geométricamente sencilla. La pregunta que surge es: ¿Cómo y qué sistema hardware-software se debe diseñar para llevar a cabo el procesamiento de imágenes dinámicas en tiempos de cómputos aceptables en tareas de seguimiento de objetos?

Page 20: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

20

2. JUSTIFICACIÓN El proyecto conlleva a un proceso de investigación, el cual podrá aportar grandes avances a la comunidad científica y académica colombiana en la rama de la robótica, pues temas tales como el proceso de la visión artificial serán tratados; más concretamente el reconocimiento de objetos en movimiento. Este proyecto busca ser una base en el proceso de investigación de nuevas aplicaciones en visión artificial, al tiempo que intenta beneficiar al sector productivo mediante su implementación en procesos como: identificación de piezas malformadas, conteo de piezas, entre otras. En muchas aéreas, específicamente en robótica móvil, es necesaria la precisión de los sensores trabajados para diversas aplicaciones como en el caso de navegación. A pesar del grado de precisión que proporcionaban las señales adquiridas mediante una cámara de video en cuanto al entorno, esta no había podido ser usada como sistema sensorico por la poca capacidad que tenían los procesadores, lo cual impedía trabajar las imágenes en tiempos relativamente cortos. Con el advenimiento de procesadores más potentes, se ha logrado trabajar las cámaras como eficaces sensores exteroceptivos, sobrepasando las cualidades de sensores tales como los ultrasónicos, láser, etc. Hay que recalcar que estas son más económicas y hay una gran variedad con las cuales se puede trabajar de acuerdo al requerimiento. Añadiendo al hardware mencionado, herramientas matemáticas como el filtro de Kalman, transformada de Fourier o Wavelet, tendremos máquinas efectivas en el momento de querer conocer y trabajar con el ambiente que las rodea.

Page 21: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

21

3. OBJETIVOS Para la realización del proyecto se planteó un objetivo general y otros específicos, que presentan de forma clara la finalidad de este. 3.1 OBJETIVO GENERAL Diseñar e implementar un sistema que permita el reconocimiento y seguimiento de objetos de formas geométricas simples mediante el uso de una cámara, el cual tendrá la capacidad de dar la ubicación del objeto analizado, permitiendo transmitir dichos datos a otras plataformas. 3.2 OBJETIVOS ESPECÍFICOS • Diseñar un sistema mecánico que permita el movimiento rotacional de una

cámara. • Lograr el reconocimiento de imágenes estáticas. • Reconocer diferentes colores por medio de una cámara. • Lograr el reconocimiento de imágenes dinámicas o en movimiento. • Implementar el filtro de Kalman para mejorar la ubicación del objeto detectado. • Lograr que la señal sea trabajado por un sistema hardware de alta velocidad

que permita que el procesamiento se realice de forma adecuada. • Implementar un control para el seguimiento del objeto a trabajar.

Page 22: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

22

4. ANTECEDENTES El procesamiento digital de señales se inició en la década de los 60’s con el programa de ciencia lunar el cual era trabajado por la NASA. Tras varios intentos fallidos de enviar imágenes de la luna a la Tierra fue el proyecto Ranger 7 quien logró enviarlas3. Estas imágenes, fueron convertidas de su forma analógica a digital permitiendo evaluarlas y eliminar distorsiones geométricas y de respuesta. Este proceso dio inicio al empleo de computadoras digitales, con algunos desarrollos en áreas estratégicas como navegación, exploraciones petroleras y espaciales, además de imágenes médicas. A partir de los años 80’s y 90’s el procesamiento digital de señales adquirió nuevas aplicaciones, principalmente comerciales como telefonía móvil, reproductores de disco compactos y video conferencias. El procesamiento de imágenes es una área que no se había podido desarrollar anteriormente, debido a que la manipulación y almacenamiento de imágenes involucra una gran cantidad de recursos, haciendo que el costo de este fuese alto. Aunque en los últimos años se ha podido realizar la incorporación del procesamiento de imágenes a diversos dispositivos electrónicos, sigue siendo limitada su demanda en el mercado. Actualmente se han desarrollado varias herramientas que permiten el desarrollo de procesamiento de video en tiempo real y en modo edición de fragmentos sobre imágenes. Dentro de estos podemos encontrar la librería gratuita OpenCv, la cual inició como un proyecto de investigación de Intel en el año 1999, enfocado en aplicaciones intensivas de CPU. La primera versión alfa de OpenCv fue lanzada al público en la conferencia de la IEEE sobre “Visión por Computador y Reconocimiento de patrones” en el año 2000. Durante los años 2001 y 2005 fueron publicadas 5 versiones beta, permitiendo lanzar la primera versión 1.0 en el año 2006. A mediados del 2008, OpenCv obtuvo el apoyo corporativo de Willow Garage, esta es una incubadora de empresas y un laboratorio de investigación en robótica dedicado a la creación de

3 Carcedo y Franco, Ana. Programa de segmentación de regiones en imágenes médicas en MATLAB. Mexico: Universidad de las Américas Puebla, 2004 [Consultado 20 de Marzo de 2011]. p. 5. Disponible en Internet: http://catarina.udlap.mx/u_dl_a/tales/documentos/lem/carcedo_y_a/capitulo0.pdf

Page 23: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

23

software de código abierto para aplicaciones de robots personales4, permitiendo así que OpenCv pudiera continuar con un activo desarrollo y de esta forma lograra realizar el pre-lanzamiento de la versión 1.1 en Octubre del 2008. La segunda versión de esta librería fue lanzada en Octubre del 2009. OpenCv 2.0 tuvo grandes cambios en la interfaz C++, entre estos se podían observar más tipos de patrones, nuevas funciones y una mejor implementación de los comandos ya existentes. Desde la fecha se han ido desarrollando versiones oficiales cada 6 meses, logrando en estos momentos el lanzamiento de la versión 2.35, donde se pueden encontrar una librería más completa para facilitar el procesamiento de imágenes. La implementación de la visión artificial ha impulsado al desarrollo de componentes electrónicos que permitan aplicar dichos procesamientos en cualquier sistema, generalmente robóticos. Dentro de estos componentes podemos encontrar la BeagleBoard la cual es una tarjeta de baja potencia y de bajo costo producida por Texas Instruments (TI) en asociación con Digi – Key. La BeagleBoard fue diseñada por un pequeño equipo de ingenieros de la TI con fines educativos, quienes plantearon que esta fuera una herramienta que pudiera ser usada en las universidades de todo el mundo y permitiera dar a conocer las aplicación del hardware de fuentes abiertas y el software de código fuente. Figura 2. BeagleBoard - xM

Fuente: Mapper 07. BeagleBoard – Xm. Disponible en internet: http://upload.wikimedia.org/wikipedia/commons/8/8e/BeagleBoard_xM.JPG

4 About Wollow Garage [en linea]. EE. UU: Wollow Garage , 2008-2011. [Consultado: 22 de Febrero de 2011]. Disponible en Internet: http://www.willowgarage.com/pages/about-us 5 History OpenCV [Consultado: 25 de Febrero de 2011]. Disponible en Internet: http://en.wikipedia.org/wiki/OpenCV

Page 24: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

24

La primera BeagleBoard fue desarrollada en el año 2008, este primer diseño poseía las características básicas para lograr la implementación de códigos de poco procesamiento, en el siguiente año se desarrolló una nueva versión de esta donde mejoraron la capacidad de almacenamiento y la memoria de procesamiento. El último diseño que han desarrollado es la BeagleBoard – XM, donde realizaron mejoras en los componentes que se encontraban en las anteriores versiones implementando nuevas tecnologías que facilitaran el manejo y ampliaran su gama de desarrollo6. Por otra parte está el Arduino, el cual es una plataforma de hardware libre, basada en un microcontrolador y un entorno de desarrollo. La tarjeta electrónica Arduino fue creada originalmente como una plataforma educativa para un proyecto en el Interaction Design Institute Ivrea en el 2005. Hernando Barragán, un artista y diseñador, creó el microcontrolador Wiring o Cableado en el año 2004, para ser utilizado como una herramienta que permitiera realizar análisis de datos electrónicos. Este diseño fue realizado con la intención de poder ser utilizado por personas que no tuvieran conocimientos de eléctrica o de informática. Barragán asesoró en su tesis a Casey Reas y Massimi Banzi, donde estos continuaron el trabajo de diseño que había iniciado su director7. Figura 3. Microcontrolador Wiring

Fuente: Gibb, Alicia M. New Media Art, Design, and the Arduino Microcontroller: A Malleable Tool. EE. UU: School of Art and Design Pratt Institute, 2010. p. 7. 6 BeagleBoard. [Consultado: 10 de Octubre de 2011]. Disponible en Internet: http://en.wikipedia.org/wiki/BeagleBoard 7 Gibb, Alicia M. New Media Art, Design, and the Arduino Microcontroller: A Malleable Tool. EE. UU: School of Art and Design Pratt Institute, 2010. p. 6. [Consultado: 6 de Octubre de 2011]. Disponible en Internet: http://c298394.r94.cf1.rackcdn.com/New%20Media%20Art,%20Design,%20and%20the%20Arduino%20Microcontroller.pdf

Page 25: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

25

Reas creó el procesamiento del lenguaje de programación visual con Ben Fry, y continuó con sus estudios en interacciones en el arte, trabajando con John Maeda en el MIT el desarrollo de un lenguaje de procesamiento accesible a los artistas y diseñadores. Por otra parte Banzi, estaba interesado en seguir desarrollando el microcontrolador como un arte y una herramienta de diseño. El Arduino, se desarrolló originalmente para una clase de diseño de interacción impartido por Banzi.8 El equipo Arduino, conformado por Massimo Banzi, David Cuartielles, Mellis Dave, Gianluca Martino con Nicolás Zambetti, continuó en el trabajo de simplificar aún más la plataforma de cableado de circuitos, llegando así al desarrollo del microcontrolador Arduino. Este fue desarrollado con el fin de facilitar aún más el uso y la implementación de circuitos, centrándose en simplicidad y un objetivo en la búsqueda de diseño para un público no técnico. Actualmente, el equipo Arduino está conformado por Banzi, Cuartielles, Martino, Mellis y Tom Igoe, quienes continúan en la mejora de este hardware9. Figura 4. Tarjeta Electrónica Arduino Duemilanove

Fuente: Gibb, Alicia M. New Media Art, Design, and the Arduino Microcontroller: A Malleable Tool. EE. UU: School of Art and Design Pratt Institute, 2010. p. 7.

8 Ibíd., p. 7. 9 Ibíd., p. 8.

Page 26: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

26

5. MARCO TEORICO 5.1. PROCESAMIENTO DE SEÑALES En el mundo existen diferentes tipos de señales que contienen información como lo son: las eléctricas, magnéticas, hidráulicas, neumáticas, luminosas, etc. Las señales se representan matemáticamente como funciones de una variable independiente. La variable más común es el tiempo, sin embargo algunas señales dependen de la frecuencia permitiendo observar otras características de estas. Otras señales, tales como las imágenes, dependen de 2 variables independientes, ya que contienen información de brillo o de colorido. El procesamiento de señales es un área que permite representar, transformar y manipular la información que contiene las señales trabajadas. El Procesamiento Análogo de Señales (ASP), es un procesamiento que se lleva a cabo mediante circuitos compuestos por resistores, capacitores, inductores, amplificadores operacionales, etc. El procesamiento digital de señales (DSP), es un estilo de procesamiento que se dedica al análisis y procesamiento de señales (audio, imágenes, videos) que son digitales. Por otra parte, el DSP permite aplicaciones que no podrían realizarse efectivamente con señales analógicas, permitiendo análisis más sencillos y eficaces sobre las señales haciendo uso de algunas herramientas como lo son la Transformada de Fourier Discreta (TFD), la transformada de Cosenos Discreta. 5.2. PROCESAMIENTO DE VIDEO Un video es una secuencia de imágenes (cuadros o frames) y sonidos que representan escenas que cambian con el tiempo. El efecto de video es una secuencia de imágenes cercana a 30 FPS lo cual supera el número de imágenes capaz de distinguir el ojo humano (20 FPS), creando de esta forma una ilusión de una imagen en movimiento. El procesamiento de video es el conjunto de técnicas que se aplican a los videos digitales con el objetivo de facilitar la búsqueda de información. Debido a que los videos son secuencias de imágenes, algunos de los procesos usados para videos son semejantes a los aplicados en imágenes, sin embargo se hacen necesarias

Page 27: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

27

otras series de herramientas como la transformada de Fourier con ventanas10 o la transformada de Wavelet11. 5.3. ESPACIO DE COLOR El uso del color en el procesamiento de imágenes está dirigido a simplificar la identificación de extracciones de los objetos en una escena. El ojo humano puede distinguir miles de colores, pero solo dos docenas de niveles de grises. Los colores que se pueden reconocer en una imagen son fuente de la combinación de los llamados colores primarios (Rojo, Verde y Azul). Un modelo color es la especificación de un sistema de coordenadas tridimensional y de un sub – espacio de este sistema en el que cada color queda representado por un único punto. Algunos de los espacio de color usados para el procesamiento de imágenes son: RGB, YCbCr, HSI, HSV, entre muchos otros.12 5.3.1. YCbCr. Este modelo es una codificación no lineal del espacio RGB, donde el parámetro Y indica la luminancia y los parámetros Cb y Cr indican el tono del color, Cb ubica el color en una escala entre azul y amarillo, Cr indica la ubicación del color entre el rojo y el verde. Cb y Cr es la diferencia entre los componentes azul y rojo, respectivamente, y un valor de referencia. La transformación de RGB y YCbCr puede ser ejecutada utilizando la siguiente ecuación donde R, G y B oscilan en el rango de [0, 1]. Y en el de [16, 235], y Cb y Cr en el rango de [16, 240].13

(1)

10 Grupo de Teoría do Signal. Prácticas de SSD - La Transformada de Fourier, Universidad de Vigo, 2003. Practica 4. [Consultado: 4 de Noviembre]. Disponible en Internet: http://www.gts.tsc.uvigo.es/ssd/practicas/practica4.pdf 11 COLOM. Ricardo J, GADEA. Rafael, SEBASTIÁ. Ángel, MARTÍNEZ. Marcos, HERRERO. Vicente, ARNAU. Vicente. Transformada Discreta Wavelet 2-D para procesamiento de video en tiempo real, Valencia - España, 2001. [Consultado: 27 de Febrero de 2011]. Disponible en Internet: http://www.uv.es/varnau/jor_pal_2001.pdf 12 Espacio de Color. p. 1. [Consultado 10 de Octubre de 2010] Disponible en Internet: http://bibing.us.es/proyectos/abreproy/11875/fichero/Proyecto+Fin+de+Carrera%252F3.Espacios+de+color.pdf 13 Ibíd., p. 4.

Page 28: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

28

5.3.2. RGB. En el modelo RGB cada color aparece en sus componentes espectrales primarias: rojo, verde y azul. Este, está basado en el sistema de coordenadas cartesianas. El sub – espacio de color de interés se puede representar como un tetraedro, en el cual se encuentran como principales los tres colores anteriormente mencionados que al combinar dos de estos se pueden obtener otros colores como el cian, magenta y amarillo; la combinación de los tres colores en su máxima tonalidad genera el blanco mientras que la ausencia de estos genera el color negro.14 Figura 5. Modelo RGB

Fuente: Espacio de Color. p. 2. Disponible en Internet: http://bibing.us.es/proyectos/abreproy/11875/fichero/Proyecto+Fin+de+Carrera%252F3.Espacios+de+color.pdf 5.3.3. HSI. Sus siglas corresponden a Hue, Saturation e Intensity (Tonalidad, Saturación e Intensidad). El modelo HSI es muy útil, debido a que la componente de intensidad, está desacoplada de la información cromática contenida en la imagen, por otra parte las componentes de Tonalidad y Saturación están relacionadas con la forma en que los seres humanos perciben el color. Esto permite que esta herramienta sea ideal para desarrollo de algoritmos basados en algunas de las propiedades de la percepción del color de sistema visual humano15.

14 Ibíd., p. 2. 15 Ibíd., p. 5.

Page 29: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

29

Figura 6. Modelo HSI

Fuente: Espacio de Color. p. 5. Disponible en Internet: http://bibing.us.es/proyectos/abreproy/11875/fichero/Proyecto+Fin+de+Carrera%252F3.Espacios+de+color.pdf 5.3.4. HSV. Sus siglas corresponden a Hue, Saturation y Value (Tonalidad, Saturación y Valor), también es llamado HSB (Hue, Saturation, Brightness), este define un modelo de color en términos de sus componentes. Su representación gráfica es con un cono, donde la longitud vertical de este corresponde al valor (V) y el vértice representa al color negro, el ángulo concierne al matiz o la tonalidad de la imagen y la distancia del eje al borde del cono representa la saturación. Al igual que el HSI y el HSL es una deformación no lineal del espacio de color RGB.16 Figura 7. Modelo HSV

Fuente: Modelo de color HSV, Cono de colores del espacio HSV. Disponible en Internet: http://es.wikipedia.org/wiki/Archivo:HSV_cone.jpg 16 Modelo de color HSV. [Consultado: 20 de Octubre de 2010]. Disponible en Internet: http://es.wikipedia.org/wiki/Modelo_de_color_HSV

Page 30: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

30

5.4. FILTROS ESPACIALES La implementación de máscaras espaciales para el procesamiento de las imágenes se denomina frecuentemente filtrado espacial. Dentro de estos se pueden encontrar filtros espaciales lineales y no lineales que permiten la mejora de las imágenes. 5.4.1. Filtro de Suavizado. Los filtros de suavizado están entre los llamados filtros lineales, estos trabajan de forma similar a un filtro basa bajo que actúan o eliminan las componentes de alta frecuencia a la vez que dejan inalteradas las bajas frecuencias, se caracterizan porque las máscaras espaciales contienen solo valores positivos, permitiendo de esta forma difuminar la imagen en forma gradual con los píxeles vecinos al que se esté trabajando17. 5.4.2. Filtro de Diferencia. Al igual que los de suavizado, los filtros de diferencia son filtros lineales que trabajan con una máscara espacial como componente que recorre la imagen generando un valor resultante del píxel en análisis y sus vecinos, sin embargo esta componente posee valores negativos que varían el resultado generando que se haga un análisis de frecuencia por cruce por cero, esto generara que la imagen resultante muestre los bordes que contiene la original, no obstante estos se mostrarán de forma difuminada. 5.4.3. Filtro no lineal. Los filtros no lineales tienen como objetivo principal la reducción de ruido que contenga la imagen, estos se caracterizan por no contener procesos matemáticos para la generación de sus resultados, sino que se realiza de forma selectiva con los componentes contenedores. El filtro más común es el de Mediana, este reduce el efecto borroso que tienen las imágenes, el valor final del píxel es un valor real presente en la imagen y no un promedio como los lineales. Para la implementación de este es necesario ordenas los diferentes valores que aparecen en los píxeles incluidos en la ventana y determinar cuál es el valor central18.

17 Filtros Espaciales, Filtro de Suavizado (Lineales). [Consultado: 14 de Septiembre de 2011]. Disponible en Internet: http://www.varpa.org/~mgpenedo/cursos/Ip/Tema4/nodo4_2.html 18 Filtros Espaciales, Filtros de suavizado no lineales. Op. cit.,. Disponible en Internet: http://www.varpa.org/~mgpenedo/cursos/Ip/Tema4/nodo4_2.html

Page 31: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

31

5.5. ALGORITMO DE CANNY El algoritmo de Canny es un operador resultante de una unión de filtros organizados de forma secuencial que permiten el reconocimiento de bordes en una imagen, la secuencia a seguir para el desarrollo de esta es Filtro Gaussiano, Gradiente, Kirsch, Umbralización y Cierre de contorno19. El algoritmo de Canny es descrito por la siguiente ecuación:

(2)

19 REBAZA. Jorge V. Detección de bordes mediante el algoritmo de Canny. Trujillo - Perú:Universidad Nacional de Trujillo. p. 8. [Consultado: 30 de Marzo de 2011]. Disponible en Internet: http://www.seccperu.org/files/Detecci%C3%B3ndeBordes-Canny.pdf

Parámetro de Escala

Page 32: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

32

6. DESARROLLO CONCEPTUAL El dispositivo se pensó como un proyecto de investigación de procesamiento de video, que pueda identificar y seguir un objeto específico que se encuentra frente al él. El objeto tendrá una forma geométrica sencilla (Circulo, Cuadrado y Triangulo) y es definido con algún color primario (Azul, Rojo y Verde), hay que tener en cuenta que el objeto puede ser desplazado por alguna persona y posicionarlo frente al dispositivo, a sus lados, arriba o debajo de este. El dispositivo podrá entregar los datos de ubicación angular con relación a la posición inicial del dispositivo (visión hacia el frente). Por otra parte es necesario que el dispositivo sea portable para permitir la facilidad en las aplicaciones prácticas. 6.1 IDENTIFICACIÓN DE NECESIDADES Y RESTRICCIONES 6.1.1 Necesidades. Tomando en cuenta algunas conversaciones que se han tenido con Ingenieros de la Universidad Autónoma de Occidente, se ha concluido que los siguientes puntos son necesarios para lograr los objetivos planteados. • El sistema mecánico permitirá que la cámara pueda rotar sobre el eje “X” y

“Y”. • El sistema podrá hacer reconocimiento de colores primarios. • El sistema podrá hacer reconocimiento de figuras geométricamente sencillas. • El sistema hace el reconocimiento con objetos dinámicos y estáticos. • El hardware permitirá que la velocidad y el nivel de procesamiento se ejecuten

a velocidades similares a las obtenidas cuando se usó el pc (Intel – Pentium 4, 3.00GHz – 3.49 Gb de RAM) como procesador de imágenes la cual fue de 5.43 grados/s.

• El sistema podrá hacer el seguimiento del objeto deseado. • El sistema proporciona los datos obtenidos para que sean trabajados por

elementos externos. • El sistema reconocerá objetos que se encuentran en el rango de visión de las

cámaras. • Fácil manejo o interacción con el dispositivo.

6.1.2 Restricciones. Después de haber realizado el análisis de las necesidades, se concluyó que era necesario plantear algunas restricciones para el desarrollo del sistema.

• La fuente de alimentación debe ser de 110 VAC – 60 Hz

Page 33: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

33

• El objeto a identificar debe estar en un rango de giro de 140° sobre el eje Y y 100° sobre el eje X de la plataforma del sistema.

• El objeto a procesar debe tener un área superior a 2 cm2 en la imagen adquirida por la cámara.

• El sistema debe ser portable.

6.2 JERARQUIA DE NECESIDADES Para lograr un mejor análisis, se le asignará un valor entre uno y cinco (1.0 - 5.0) a cada una de las necesidades planteadas anteriormente, con el fin de identificar estas por su grado de importancia, donde 1.0 es el puntaje más bajo mostrando que no tiene mayor importancia la realización de esta necesidad y el 5.0 es el puntaje más alto reflejando que la necesidad es de suma importancia para lograr nuestro objetivo, estos valores se han asignado realizando un análisis de los objetivos y restricciones del proyecto. Cuadro 1. Lista de necesidades y sus niveles de imp ortancia

No. Necesidad Nvl. De

Importancia

1 El sistema mecánico permitirá que la cámara pueda rotar sobre el eje “X” y “Y”. 4.6

2 El sistema podrá hacer reconocimiento de colores primarios. 4.0

3 El sistema podrá hacer reconocimiento de figuras geométricamente sencillas.

4.2

4 El sistema hace el reconocimiento con objetos dinámicos y estáticos.

4.9

5

El hardware permitirá que la velocidad y el nivel de procesamiento se ejecuten a velocidades similares a las obtenidas cuando se usó el pc (Intel – Pentium 4, 3.00GHz – 3.49 Gb de Ram) como procesador de imágenes la cual fue de 5.43 grados/s.

4.7

6 El sistema podrá hacer el seguimiento del objeto deseado. 5.0

7 El sistema proporciona los datos obtenidos para que sean trabajados por elementos externos.

3.5

8 El sistema reconocerá objetos que se encuentran en el rango de visión de las cámaras. 3.9

9 El dispositivo poseerá sensores que permitan identificar la posición de la cámara. 4.8

10 Fácil manejo o interacción con el dispositivo. 3.7

Page 34: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

34

Con base a la Tabla 1, se logra organizar las necesidades de manera jerárquica, donde se empieza por la necesidad más importante, según los resultados obtenidos el orden jerárquico es: •••• El sistema podrá hacer el seguimiento del objeto deseado. •••• El sistema hace el reconocimiento con objetos dinámicos y estáticos. •••• El dispositivo poseerá sensores que permitan identificar la posición de la

cámara. •••• El hardware permitirá que la velocidad y el nivel de procesamiento se ejecuten

a velocidades similares a las obtenidas cuando se usó el pc (Intel – Pentium 4, 3.00GHz – 3.49 Gb de Ram) como procesador de imágenes la cual fue de 5.43 grados/s.

•••• El sistema mecánico permitirá que la cámara pueda rotar sobre el eje “X” y “Y”.

•••• El sistema podrá hacer reconocimiento de figuras geométricamente sencillas. •••• El sistema podrá hacer reconocimiento de colores primarios. •••• El sistema reconocerá objetos que se encuentran en el rango de visión de las

cámaras. •••• Fácil manejo o interacción con el dispositivo. •••• El sistema proporciona los datos obtenidos para que sean trabajados por

elementos externos.

6.3 METRICAS Las métricas obtenidas de la lista de necesidades son las siguientes: •••• Velocidad en los movimiento de rotación (Grados/s) •••• Ángulo (Grados) •••• Tipo de sensores (Lista) •••• Numero de sensores (#) •••• Tipo de tarjetas de procesamiento (Lista) •••• Datos de señal (#) •••• Métodos de procesamiento (Lista) •••• Movimientos en diferentes planos (Grados de libertad) •••• Figuras a reconocer (Lista) •••• Colores a reconocer (Tonalidad) •••• Distancia entre el objeto y la cámara (mm) •••• Interfaz de control (Lista) •••• Tipo de datos de la señal (Lista) •••• Resolución (Píxel)

Page 35: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

35

En la siguiente tabla se realizar la relación de las métricas con las necesidades: Cuadro 2. Lista de métricas con sus unidades, nivel de importancia y relación que tienen con las necesidades #Métricas #Necesidad Métrica Importancia Unidades

1 1, 2 Velocidad en los movimientos de rotación 4.5 Grados/s

2 1, 3, 8 Ángulo 4.2 Grados 3 3, 4 Tipo de sensores 4.6 Lista 4 3 Numero de sensores 4.3 # 5 1, 2, 4, 10 Tipo de tarjetas de

procesamiento 4.7 Lista

6 4, 10 Datos de señal 4.4 # 7 1, 2, 6, 7, 8 Métodos de

procesamiento 5.0 Lista

8 1, 5, 8 Movimientos en diferentes ejes

4.6 Grados

de libertad

9 6 Figuras a reconocer 4.0 Lista 10 7 Colores a reconocer 4.0 Lista 11 1, 2, 6, 7, 8 Distancia entre el objeto

y la cámara 4.5 mm

12 9 Interfaz de control 3.2 Lista 13 3, 4, 10 Tipos de datos de la

señal 3.5 Lista

14 1, 2, 6, 7, 8 Resolución 4.8 Píxel

Page 36: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

36

7. QFD (QUALIFY FUNCTION DEPLOYMENT)

Page 37: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

37

8. GENERACION DE CONCEPTOS 8.1 CAJA NEGRA Figura 8. Caja Negra del Sistema

8.2 DESCOMPOSICIÓN FUNCIONAL

Figura 9. Bloques funcionales del sistema

Page 38: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

38

9. DESARROLLO CONCEPTUAL 9.1 GENERACIÓN DE CONCEPTOS 9.1.1 Fuente de Alimentación. La fuente de alimentación se elegirá para alimentar los motores, los cuales son necesarios para el movimiento de la estructura. Debido a que las tarjetas electrónicas poseen su propia fuente de alimentación no se tendrán en cuanta en la generación de conceptos. Como alternativas de alimentación se tienen las siguientes: •••• Energía eléctrica de 110V (Fuente Propia) •••• Energía DC adquirida de fuente externa 9.1.2 Hardware. De acuerdo a los objetivos planteados en el proyecto el sistema deberá realizar seguimiento del objeto deseado, para esto es necesario el uso de motores que permitan el movimiento de la cámara, al igual que la aplicación de tarjetas electrónicas o circuitos electrónicos para ejecución del software y el control de los motores. A continuación se presentarán tres opciones de tarjetas de desarrollo y embebidas que están en la capacidad de procesar video. •••• DE2-70 Development and Education Board •••• BeagleBoard •••• PandaBoard 9.1.3 Convertir energía en movimiento rotacional. Como ya se ha mencionado anteriormente, es necesaria la aplicación de motores que generen el movimiento de la estructura mecánica, para la elección de estos hay que tener en cuenta las necesidades y restricciones del proyecto, por lo que se han tomado en cuenta las siguientes alternativas: •••• Servomotor •••• Motor paso a paso 9.1.4 Sensar la imagen. Aunque existen otras alternativas para sensar imágenes como son los sensores de color, es claro que para este caso no basta con la información de color sino también de forma, pudiéndose entonces afirmar que el dispositivo idóneo sería una cámara. Existe una gama bastante amplia de

Page 39: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

39

cámaras, pero por la asequibilidad que se tiene en el mercado se hizo uso de cámaras web. 9.1.5 Procesar señal de video. Para el procesamiento de las imágenes, es necesario la aplicación de una secuencia de algoritmos que permitan facilitar la identificación de colores. Para el desarrollo de este se ha tomado en cuenta la aplicación de conversores de espacio de color20, Threshold o Umbralización21 y operadores lógicos y aritméticos22. 9.1.6 Filtrar señal de video. La información resultante del procesamiento puede contener ruido o datos no deseados, por lo que es preciso la implementación de filtros de suavizado y de diferencia que eliminen la mayor cantidad de información innecesaria, para el desarrollo de esto podemos encontrar el filtro de mediana, el gaussiano y la transformada morfológica, los cuales disminuyen la información que es lo que se desea. Por otra parte tenemos el algoritmo Canny que nos permite realizar identificación de bordes23. 9.1.7 Detectar formas. Para la detección de formas la librería de trabajo tiene dos funciones que pueden ser útiles para el desarrollo de este, estos son cvHoughCircle() y cvHoughLines2()24, los cuales no permitirán obtener los datos correspondientes a las líneas y círculos que se encuentran en la imagen procesada. Por otra parte tenemos el detector de Harris25, el cual, es un algoritmo basado en la primera derivada en orientación vertical y horizontal, este permite realizar la identificación de esquinas que se identifican en la imagen. 9.1.8 Filtrar error de posición. Partiendo de la idea planteada de seguir objetos en movimiento, se hace necesario tener una medida de la posición de este. Pero, es claro que cualquier sensor entrega información acompañada de ruido, lo cual puede causar datos erróneos o en el caso más crítico la pérdida del seguimiento

20 Espacio de Color. [Consultado: 10 de Octubre de 2011]. Disponible en Internet: http://es.wikipedia.org/wiki/Espacio_de_color 21 Método del Valor Umbral. [Consultado: 23 de Agosto de 2011]. Disponible en Internet: http://es.wikipedia.org/wiki/M%C3%A9todo_del_valor_umbral 22 Operadores Lógicos y Operaciones Aritméticas. [Consultado: 15 de Octubre de 2011]. Disponible en Internet: http://es.wikipedia.org/wiki/Operador 23 Algoritmo Canny. [Consultado: 4 de Septiembre de 2011]. Disponible en Internet: (http://es.wikipedia.org/wiki/Algoritmo_de_Canny) 24 BRADSKI. Gary, KAEBLER. Adrian. Learning OpenCV – Computer Vision with the OpenCV Library. O’reilly. USA, 2008. p. 153. [Consultado 2 de Abril de 2011] 25 Konstantinos G. Derpanis. The Harris Corner Detector. 2004. [Consultado: 3 de Octubre de 2011]. Disponible en Internet: http://www.cse.yorku.ca/~kosta/ CompVis_Notes/harris_detector.pdf

Page 40: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

40

del mismo. Una de las herramientas más poderosas en la actualidad para trabajar con medidas ruidosas, es el filtro de Kalman (ver ítem 9.4.4). 9.1.9 Controlar. De acuerdo a los objetivos planteados en el proyecto, se desea realizar un control para los motores que permita el seguimiento del objeto capturado en el procesamiento de imágenes. Debido a que no se hace referencia a un tipo de controlador especifico y el proyecto no está enfocado al diseño de uno, por facilidad en la programación, se ha decidido desarrollar un controlador On/Off, el cual recibirá el resultado de diferencia entre la posición del objeto a analizar y el centro de la imagen, permitiendo así variar el ancho de pulso de los PWM que controlan los servomotores, cabe mencionar que se ha asignado un rango de tolerancia de +/- 20 píxeles dentro del espacio de reposo del sistema (centro de la imagen), en el cual se mantendrá el centro del objeto analizado. 9.2 COMBINACIÓN DE CONCEPTOS Como se pudo observar en la generación de conceptos, algunos de estos ya poseen una única alternativa, por lo que solo se trabajaran los conceptos que tienen una varias opciones, planteando así diferentes tipos de sistemas, como se muestra en el Cuadro 1. Cuadro 3. Combinación de Conceptos

CONCEPTOS COMBINACION DE

CONCEPTOS ALIMENTACIONDE

ENERGIA HARDWARE MOTORES

SISTEMA A Alimentación propia DE2-70 Servomotor SISTEMA B Alimentación propia BeagleBoard Motor Paso a Paso SISTEMA C Alimentación propia PandaBoard Servomotor SISTEMA D Alimentación propia DE2-70 Motor Paso a Paso SISTEMA E Alimentación propia BeagleBoard Servomotor SISTEMA F Alimentación propia PandaBoard Motor Paso a Paso

SISTEMA G Alimentación externa

DE2-70 Servomotor

SISTEMA H Alimentación externa BeagleBoard Motor Paso a Paso

SISTEMA I Alimentación externa PandaBoard Servomotor

Page 41: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

41

Cuadro 3. (Continuación)

SISTEMA J Alimentación externa DE2-70 Motor Paso a Paso

SISTEMA K Alimentación externa BeagleBoard Servomotor

SISTEMA L Alimentación externa PandaBoard Motor Paso a Paso

9.3 MATRIZ DE TAMIZAJE Debido a que los conceptos a analizar son muy específicos, no se relacionan con todas las necesidades que se habían planteado para el proyecto, por esta razón solo se realizará la evaluación con las necesidades que tienen una relación con alguno de los conceptos mostrados en el Cuadro 1, así como se presenta en el siguiente cuadro: Cuadro 4. Selección de Conceptos Combinaciones de Concepto s NECESIDADES A B C D E F G H I J K L El sistema mecánico permitirá que la cámara pueda rotar sobre el eje “X” y “Y”.

+ + + + + + + + + + + +

El hardware permitirá que la velocidad y el nivel de procesamiento se ejecuten a velocidades similares a las obtenidas cuando se usó el pc (Intel – Pentium 4, 3.00GHz – 3.49 Gb de RAM) como procesador de imágenes la cual fue de 5.43 grados/s.

0 + + 0 + + 0 + + 0 + +

El sistema podrá hacer el seguimiento del objeto deseado.

+ 0 + 0 + 0 + 0 + 0 + 0

El sistema proporciona los datos obtenidos para que sean trabajados por elementos externos.

0 0 0 0 0 0 0 0 0 0 0 0

Page 42: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

42

Cuadro 4. (Continuación) El dispositivo poseerá sensores que permitan identificar la posición de la cámara.

+ 0 + 0 + 0 + 0 + 0 + 0

Fácil manejo o interacción con el dispositivo. - + + - + + - + + - + +

Positivos 3 3 5 1 5 3 3 3 5 1 5 3 Iguales 2 3 1 4 1 3 2 3 1 4 1 3 Negativos 1 0 0 1 0 0 1 0 0 1 0 0 Total 2 3 5 0 5 3 2 3 5 0 5 3 Orden 3 2 1 4 1 2 3 2 1 4 1 2 ¿Continuar? No No Si No Si No No No Si No Si No Como se puede observar en el Cuadro 2 son varias combinaciones de conceptos las que permiten cumplir con las necesidades planteadas para el proyecto, permitiendo de esta forma elegir la más adecuada tomando en cuenta factores secundarios externos como lo son el precio y la disposición de materiales. 9.4 MATRIZ DE EVALUACIÓN DE CONCEPTOS Para la realización de la matriz de evaluación se ha adicionado los dos factores que se mencionaron anteriormente (precio y disposición de materiales), permitiendo de esta forma elegir el diseño a realizar. Cuadro 5. Evaluación de conceptos

C E I K

Criterios de selección (%)

Not

a

Crit

erio

Not

a

Crit

erio

Not

a

Crit

erio

Not

a

Crit

erio

El sistema mecánico permitirá que la

cámara pueda rotar sobre el eje “X” y “Y”.

8,7 5 0,44 5 0,44 5 0,44 5 0,44

Page 43: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

43

Cuadro 5. (Continuación) El sistema podrá hacer

reconocimiento de colores.

7,6 4,5 0,34 4,5 0,34 4,5 0,34 4,5 0,34

El sistema podrá hacer reconocimiento de

figuras geométricamente

sencillas.

8,0 4,5 0,36 4,5 0,36 4,5 0,36 4,5 0,36

El sistema hace el reconocimiento con objetos dinámicos y

estáticos.

9,3 4,7 0,44 4,7 0,44 4,7 0,44 4,7 0,44

El hardware permitirá que la velocidad y el

nivel de procesamiento se ejecuten a

velocidades similares a las obtenidas cuando se usó el pc (Intel –

Pentium 4, 3.00GHz – 3.49 Gb de Ram) como

procesador de imágenes la cual fue

de 5.43 grados/s.

9,0 4,3 0,39 4,3 0,39 4,3 0,39 4,3 0,39

El sistema podrá hacer el seguimiento del objeto deseado.

9,5 4,8 0,46 4,8 0,46 4,8 0,46 4,8 0,46

El sistema proporciona los datos obtenidos

para que sean trabajados por

elementos externos.

6,7 4,4 0,29 4,4 0,29 4,4 0,29 4,4 0,29

El sistema reconocerá objetos que se

encuentran en el rango de visión de las

cámaras.

7,4 4,8 0,36 4,8 0,36 4,8 0,36 4,8 0,36

El dispositivo poseerá sensores que permitan identificar la posición

de la cámara.

9,1 4,9 0,45 4,9 0,45 4,9 0,45 4,9 0,45

Page 44: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

44

Cuadro 5. (Continuación)

Fácil manejo o interacción con el

dispositivo. 7,0 4,8 0,34 4,8 0,34 4,8 0,34 4,8 0,34

Precio. 8,6 4,3 0,37 4,2 0,36 4,7 0,4 4,6 0,39 Disponibilidad de

Materiales. 9.1 4,5 0,41 4,8 0,44 4,3 0,39 4,6 0,42

Total 4,65 4,67 4,66 4,68

¿Continua? Desarrollar El resultado de la matriz de evaluación de conceptos (Cuadro 3), muestra que todos los sistemas tienen resultados muy favorables y que pueden ser desarrollados, sin embargo, el diseño con mayor puntaje fue el Sistema K, el cual consta de un sistema mecánico de dos grados de libertad manejado por dos servomotores que son controlados con base a los resultados obtenidos por el procesamiento de imágenes y alimentados por una fuente externa, el procesamiento se ejecuta en la tarjeta embebida BeagleBoard donde se encuentra conectada una cámara la cual es la encargada de realizar la adquisición de las imágenes a trabajar. 9.5 TIPO DE ARQUITECTURA Figura 10. Arquitectura del sistema

Page 45: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

45

9.6 INTERACCIÓN ENTRE MÓDULOS El procesamiento de imágenes en tiempo real es una herramienta que requiere de buena memoria de almacenamiento y un buen sistema de velocidad para su ejecución, debido a toda la información que necesita analizar en cada proceso. Teniendo en cuenta lo anterior se ha decidido trabajar la etapa de control de forma externa, dejando que la BeagleBoard solo se encargue de la ejecución del procesamiento de las imágenes. Para la implementación del control se ha resuelto trabajar con la tarjeta electrónica Arduino, por la facilidad de trabajo que posee esta tanto en hardware como en software. De igual forma tiene una conexión tipo serial que es realizada por USB la cual permite facilitar la comunicación con la BeagleBoard. Es importante recalcar que la velocidad de procesamiento del Arduino es lo suficientemente rápida para trabajarla con la del procesamiento de video pues su frecuencia de trabajo es de 16MHz, esto se concluye porque un video normal trabaja con la unión de 29,9 imágenes por segundo, siendo equivalente a una frecuencia de 41.6 KHz, teniendo en cuenta que lo anterior se da en un video que no está siendo manipulado, la velocidad en que se enviaran los datos desde el procesamiento de imágenes es más lenta, permitiendo que la respuesta del Arduino sea eficiente. Figura 11. Interacción entre elementos

Page 46: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

46

9.7 PROTOTIPO A continuación se presentan dos diagramas que muestran las etapas del sistema: el primero es el diagrama que bloques (Figura 12), este permite observar de forma clara la interacción de los componentes que conforman el sistema, la etapa que está encerrada en línea de puntos es la implementada en el software y se ejecuta en la BeagleBoard, como se había mencionado anteriormente el sensor es una cámara web que permite adquirir las imágenes a procesar. Estos resultados son enviados al Arduino por conexión USB quien generará las señales PWM que controlan los motores. Como segundo prototipo se tiene la estructura mecánica (Figura 13), la cual fue diseñada en base a los resultados obtenidos en la selección de conceptos y teniendo en cuenta el cumplimiento de las necesidades planteadas al comienzo del diseño (Ver ítem 6.1), esta posee dos piezas que permiten la rotación de la cámara sobre el eje X y Y, y una plataforma pesada que hará que el centro de gravedad de la estructura sea más bajo y así sea más estable. Figura 12. Diagrama de bloques del sistema

Figura 13. Estructura Electromecánica

Page 47: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

47

10. DESARROLLO 10.1 DISEÑO ELECTROMECANICO Un sistema electromecánico está compuesto por componentes eléctricos y mecánicos para el desarrollo de sus mecanismos, como por ejemplo los motores eléctricos y los dispositivos mecánicos movidos por estos. En este caso se analizará un sistema electromecánico conformado por diferentes piezas que permitirán la rotación de la cámara con ayuda dos servomotores, la cantidad de los servos se ha elegido por la cantidad de grados de libertad requeridos (dos rotacionales). 10.1.1 Sistema mecánico. Un sistema mecánico es un conjunto de componentes, elementos o dispositivos que tiene como función transformar o transmitir un movimiento desde la fuente que lo genera hasta un punto deseado.

Para el desarrollo del proyecto se ha diseñado un sistema mecánico que permita ampliar el espacio de visión de nuestra cámara, para ellos se ha planteado una estructura de dos grados de libertad rotacionales, compuesto por una cantidad de piezas realizadas en lámina de acero inoxidable 304 de calibre 20, diseñadas a la medida de los dos componentes que interactúan con estas (Cámara y Servo-motores), como se puede observar el material usado en la implementación del diseño tiene una alta resistencia, por lo que los esfuerzos generados sobre estas piezas no causaran daños al sistema mecánico. La primera pieza es la superior, permite a la cámara realizar movimientos sobre el eje X (Figura 14). Esta pieza está diseñada para ser acoplada con uno de los servomotores, que permitirá realizar el movimiento del eje horizontal de la cámara, que se encontrará ubicada en la parte superior de la pieza (Anexo D). Figura 14. Pieza superior del sistema mecánico

Page 48: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

48

La segunda pieza es la intermedia, la cual está diseñada para hacer la unión entre los dos servomotores y de esta forma permitir el giro de la cámara sobre el eje vertical (Figura 15), un punto muy importante en el diseño de esta pieza fue tener en cuenta que el centro de giro del motor debía de coincidir con el centro del ancho de la cámara (Anexo E), haciendo que el motor no tenga que realizar mucho esfuerzo sobre su eje para soportar un peso que se encuentre fuera de él. Figura 15. Pieza intermedia del sistema electromecá nico

Con el fin de disminuir la fricción en el movimiento de las piezas, se ha diseñado un sistema compuesto por un eje de cobre por el cual pasa un tornillo de 4 mm de diámetro. Para asegurar mejor y evitar el contacto entre las piezas superior e intermedia se han desarrollado 3 arandelas, también de cobre, las cuales se ubicarán dos entre las láminas y una externa que estará presionada por una arandela de presión (Wasa) y una tuerca de 4 mm en su diámetro interior para que pueda enroscar sobre el tornillo (Anexo H), esto permitirá que el eje de giro se mantenga estable y con un nivel de fricción mínimo, permitiendo una mayor velocidad o precisión en el movimiento de la estructura. Figura 16. Sistema de rodamiento

Page 49: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

49

Por otra parte se realizaron dos piezas en forma de U (Anexo G), las cuales se diseñaron como piezas de agarre del motor inferior a una plataforma de acero calibre 3/16 (4.7 mm de espesor), esta plataforma tiene unas dimensiones de 15x15 (Anexo F), permitiendo asi tener una mayor estabilidad en la estrctura y bajar su cetro de gravedad, en cada una de sus esquinas se le ha adicionado unas patas de goma que eviten que la estructura se deslice o tenga un movimiento externo a causa de las vibraciones de los motores. Figura 17. Base del sistema electromecánico

10.1.2 Servo-motores. Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Mientras esta señal exista en la línea de entrada, el servomotor mantendrá la posición angular del engranaje. Cuando la señal codificada cambia, la posición angular de los piñones cambia.

Como se había mencionado anteriormente, para lograr los movimientos deseados con la estructura mecánica son necesarios dos servomotores, los cuales permitirán los movimientos de la cámara sobre el eje vertical y horizontal. Los servomotores empleados para dicho objetivo son los Futaba S9152, a continuación se puede visualizar las especificaciones de estos. Cuadro 6. Especificaciones del motor Futaba S9152

Variable Valor Modulación Digital

Dimensiones Longitud: 1.93 in (49.0 mm) Ancho: 0.98 in (24.9 mm) Altura: 1.57 in (39.9 mm)

Fuente: Información básica de Motor Futaba S9152. [Consultada: 15 de Enero de 2011]. Disponible en Internet: http://www.servodatabase.com/servo/futaba/s9152

Page 50: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

50

Cuadro 6. (Continuación)

Peso 3.00 oz (85.0 g)

Velocidad 0.23 sec/60° (4.8V) 0.19 sec/60° (6.0V)

Torque 222.0 oz-in (15.99 kg-cm) (4.8V) 278.0 oz-in (20.02 kg-cm) (6.0V)

Tipo de motor Sin núcleo Rotación / Apoyo Doble rodamiento

Fuente: Información básica de Motor Futaba S9152. [Consultada: 15 de Enero de 2011]. Disponible en Internet: http://www.servodatabase.com/servo/futaba/s9152 Como se puede observar, la velocidad de respuesta y el torque con el que trabaja el motor es bastante elevado y puede dar una respuesta favorable para el seguimiento del objeto identificado, debido a que el máximo peso que tiene que mover uno de los motores es de 285.85 g. Por otra parte, se puede observar en la Figura 18 que el motor posee un cable blanco, uno rojo y uno negro, los cuales corresponden a línea de control (PWM), alimentación (6.0 V) y tierra (GND) respectivamente. Figura 18. Motor Futaba S9152

Fuente: Imagen de Motor Futaba S9152. Disponible en Internet: http://c0456141.cdn.cloudfiles.rackspacecloud.com/images/medium/fut/futm0212.jpg

Page 51: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

51

10.2 DISEÑO ELECTRONICO Un sistema electrónico es un conjunto de circuitos que interactúan entre sí para obtener un resultado26. Un sistema electrónico se puede dividir en tres partes o bloques fundamentales27: •••• Bloque de entrada: A través del cual el sistema recibe la información que va a

procesar o las variables que determinan su funcionamiento. •••• Bloque de proceso: en el que se realizan las operaciones necesarias para

gobernar los actuadores. •••• Bloque de salida: Se encarga de realizar la acción final correspondiente al

objetivo deseado. El sistema electrónico permite llevar a cabo el control de los servomotores, como se mencionó anteriormente se trabajará la tarjeta electrónica Arduino, esta permite la implementación de un PWM por medio de una programación simple y posee un sistema de comunicación serial que facilita el traspaso de datos con la BeagleBoard. La señal de control puede ser generada por la BeagleBoard, pero se ha decidido trabajarla externamente para liberar a la tarjeta de procesamiento de otras tareas que no tengan relación con el procesamiento de las imágenes, generando así menos consumo de memoria sobre esta. Figura 19. Características del Arduino

Fuente: Imagen de Arduino Diecimila. Disponible en Internet: http://www.arduino.cc/es/Main/ArduinoBoardDiecimila

26 Sistemas electrónicos. [Consultado: 13 de Noviembre de 2011]. Disponible en Internet: http://es.wikipedia.org/wiki/Electr%C3%B3nica#Sistemas_electr.C3.B3nicos 27 Sistemas electrónicos. p. 8. [Consultado: 13 de Noviembre de 2011]. Disponible en Internet: http://www.iestiemposmodernos.com/depart/dtec/Recursos/siselec4.pdf

Page 52: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

52

Cuadro 7. Especificaciones del Arduino Mega 2560 Variable Valor

Microcontrolador ATmega2560 Voltaje de operación 5V Voltaje de entrada (Recom.) 7 – 12 V Voltaje de entrada (Limites) 6 – 20 V

Pines Digitales I/O 54 (de los cuales 14 proporcionan PWM de salida)

Pines de entrada análoga 16 Corriente DC por pin I/O 40 mA Corriente DC para Pin 3.3V 50 mA

Memoria Flash 256 Kb de los cuales 8 Kb son usados por el gestor de arranque

SRAM 8 Kb EEPROM 4 Kb Velocidad de reloj 16 MHz

Fuente: Arduino Mega 2560. [Consultado: 12 de Agosto de 2011] Disponible en Internet: http://arduino.cc/en/Main/ArduinoBoardMega2560 Hay diversas versiones de placas Arduino. La versión actual es la Duemilanove, que tiene un microcontrolador Atmel ATmega328. La anterior versión se conoce como Arduino Diecimila (Ver Figura 19), estos tenían un microcontrolador Atmel ATmega168 al igual que las primeras unidades de las Duemilanove, las placas más antiguas usaban el ATmega828. Como bien se mencionó anteriormente el Arduino será usado para generar las dos señales PWM que controlaran la posición angular de los motores que mueven el sistema mecánico, permitiendo así posicionar la cámara en el punto deseado. Figura 20. Señal de PWM generada por el Arduino

Fuente: PLAPUTTA. Tobias. Imagen extraída del video Arduino PWM fading seeed Studio DSO Nano. Disponible en Internet: http://vimeo.com/6942170 28 Arduino. Hardware. [Consultado: 13 de Noviembre de 2011]. Disponible en Internet: http://arduino.cc/es/Main/Hardware

Page 53: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

53

Los desarrolladores de Arduino, han generado un software que permite la programación de este en un entorno de descarga gratuita de desarrollo integrado (IDE)29, diseñado específicamente para el Arduino, está diseñado con lenguaje Java, y está dividido en tres secciones integradas que permiten realizar edición del texto programático, compilar y depurar. Figura 21. Interfaz del programa Arduino

Fuente: Imagen de Interfaz de Programa “Arduino”. Disponible en Internet: http://es.wikipedia.org/wiki/Archivo:Arduino_IDE_-_v0011_ Alpha.png La programación del hardware está basado en la plataforma de C/C++, donde se pueden observar muchos comandos de aplicación regular, permitiendo así la conectividad con otros software y la funcionalidad con diferentes sistemas operativos como lo es Windows, Linux y Mac. Adicionalmente tiene algunas librerías propias que permiten hacer llamado de las herramientas que contiene el Arduino30, para el desarrollo de este proyecto se ha aplicado algunas de estas, las cuales permitieron generar las señales deseadas para la alimentación de los servomotores. 29 Descarga gratuita del software Arduino. Disponible en Internet: http://arduino.cc/es/Main/Software 30 Referencias de Lenguaje. [Consultado: 20 de Mayo de 2011]. Disponible en Internet: http://arduino.cc/es/Reference/HomePage

Page 54: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

54

Cabe anotar que la programación se puede hacer off – line, es decir, no se necesita mantener el hardware conectado, este solo será necesario en el momento de realizar pruebas. Es importante tener conocimiento del tipo de tarjeta que se está trabajando y del puerto serial del cual se está haciendo uso para así especificarlos en el programa Arduino, en la sección de herramientas, ya que si no se realizan estos pasos no podrá ser programado el microcontrolador. Para generar la señal de PWM en las salidas del Arduino es necesario especificar que pines son los que serán usados como salida (pines análogos). Después de este se puede hacer llamado de la función analogWrite(pin,val), donde se especifica cual pin y el valor del ancho de pulso deseado en la señal PWM. 10.3 BEAGLEBOARD La BeagleBoard es una tarjeta diseñada específicamente direccionada a la Comunidad de Fuentes Abiertas. Está equipada con un conjunto mínimo de características que permitan al usuario experimentar la potencia del procesador, sin pretender ser una plataforma de desarrollo completa, por esta razón muchas de las características e interfaces proporcionadas por el procesador no son accesibles desde la BeagleBoard31. La última versión de Beagleboard desarrollada es la BeagleBoard-xM, la cual posee una gran cantidad de características. (Ver Cuadro 6) Cuadro 8. Características de la BeagleBoard – xM

Fuente: BeaglerBoard.org. BeagleBoard – xM Reference manual. 2010. p. 21. Disponible en Internet: http://beagleboard.org/static/BBxMSRM_latest.pdf 31 BeaglerBoard.org. BeagleBoard – xM Reference manual. 2010. p. 21. [Consultado: 19 de Julio de 2011]. Disponible en Internet: http://beagleboard.org/static/BBxMSRM_latest.pdf

Page 55: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

55

Cuadro 8. (Continuación)

Fuente: BeaglerBoard.org. BeagleBoard – xM Reference manual. 2010. p. 21. Disponible en Internet: http://beagleboard.org/static/BBxMSRM_latest.pdf Como se puede observar, este hardware posee muchas características que lo llevan a ser un ordenador de poca capacidad, permitiendo así instalar algunas aplicaciones y software que permitan el trabajo de esta. Para ello es necesario la instalación de un sistema operativo, sin embargo hay que tener en cuenta que este debe ser liviano porque la capacidad de almacenamiento no es tan grande para soportar un Windows, al igual que su velocidad de procesamiento, por esta razón se ha decidido trabajar con Linux Angstrom, el cual es de baja memoria y es compatible con las herramientas de trabajo (OpenCV y Arduino). La manipulación del sistema se realiza por medio de teclado y un mouse que se instalan por conexión USB, la imagen se podrá visualizar mediante la salida HDMI que posee el hardware, de esta misma forma es claro que se podrán conectar los demás dispositivos necesario para el desarrollo del proyecto, teniendo en cuenta que el límite de puertos USB es de 4 por lo que es necesario elegir bien las conexiones de mayor importancia.

Page 56: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

56

Figura 22. Especificaciones de la BeagleBoard - xM

Fuente: BeagleBoard. Especificaciones. Disponible en Internet: http://beagleboard.org/hardware 10.4 PROGRAMACIÓN 10.4.1 Procesamiento de Imagen. El procesamiento de imagen en tiempo real se realizó mediante el software VisualStudio 2010 donde fue instalada la librería gratuita OpenCV32, esta es una librería escrita en C y C++ que puede ser ejecutada en diferentes sistemas operativos como Linux, Windows y Mac OS X. OpenCV fue diseñado para lograr una eficiencia computacional en el procesamiento de imágenes bidimensionales en tiempo real. La herramienta para realizar la adquisición de la imagen será una cámara web, puede ser cualquiera que se encuentre en el mercado, en nuestro caso usaremos una cámara Web Startec ST-HC-328 que se conecta a nuestro programa por medio del comando cvCaptureFromCAM()33, este nos permitirá obtener un fragmento por cada ciclo el cual será la fuente del procesamiento a realizar. 32 Instalación de OpenCv 2.1 en Visual Studio 2010. 2011. [Consultado: 26 de Abril de 2011]. Disponible en Internet: http://ingtecmun.wordpress.com/category/opencv/ 33 BRADSKI. Gary, KAEBLER. Adrian. Op. cit., p. 19.

Page 57: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

57

Uno de los problemas que se presentan en el procesamiento de imágenes en RGB (Imagen obtenida por la cámara) es el brillo que se puede generar en un ambiente natural, generando así diferentes tonalidades de color, para disminuir esta reacción se puede trabajar la imagen en otro espacio de color. Aquí se presenta el espacio de HSV, el cual trabaja los aspectos de brillo, color y saturación de las imágenes, por medio de la librería de trabajo (OpenCv) se puede realizar el cambio de espacio mediante el comando cvCvtColor()34. Teniendo en cuenta que los fragmentos obtenidos se encuentran en RGB es necesario usar CV_BGR2HSV que permite realizar la conversión de una imagen RGB a una HSV como se puede observar en la Figura 23. Figura 23. Imagen en espacio HSV

Teniendo la imagen en el nuevo espacio de color se procede a umbralizar (Threshold), este proceso consiste en convertir los componentes de la imagen en datos binarios (1 y 0), asignando un valor o un rango que especifica la salida binaria correspondiente a cada uno de los píxeles que conforman la imagen.

1.0 r > threshold S = (3)

0.0 r <= threshold

0.0 r >= threshold 1 S = 1.0 threshold 1 < r >threshold 2 (4)

0.0 r <= threshold 2

34 BRADSKI. Gary, KAEBLER. Adrian. Op. cit. p. 58.

Page 58: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

58

Para este caso se usará la umbralización por rango, en OpenCv se puede realizar por medio de la función cvInRangeS()35, que permite efectuar una separación de los canales que conforman la imagen, para elegir el rango deseado y a su vez trabajar los factores de color, saturación y brillo en esta (Ver Figura 24), el resultado a obtener será una nueva imagen de un solo canal donde se mostrará la el color deseado en blanco (1) y todo lo demás en negro (0). Figura 24. Imagen Umbralizada

10.4.2 Filtrado de imagen. Antes de pasar a la identificación de formas es necesario la aplicación de una serie de filtros que eliminen la mayor cantidad de ruido (Información no deseada) que resulta de la umbralización de la imagen, como se puede observar en la Figura 24. En el Cuadro 7 se presentará una lista de diferentes combinaciones de los filtros a trabajar, de esta forma se podrá analizar la eficiencia de cada combinación para así elegir la opción más adecuada. Cuadro 9. Combinación de Filtros

Filtro 1 Filtro 2 Filtro 3 Filtro 4

Opción a Filtro de Mediana

Filtro Morfológico

Algoritmo de Canny

Filtro Gaussiano

Opción b Filtro de Mediana

Filtro Morfológico

Filtro Gaussiano

Algoritmo de Canny

Opción c Filtro de Mediana

Filtro Gaussiano

Filtro Morfológico

Algoritmo de Canny

BRADSKI. Gary, KAEBLER. Adrian. Op. cit. p. 65.

Page 59: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

59

Cuadro 9. (Continuación)

Opción d Filtro Morfológico

Filtro de Mediana

Algoritmo de Canny

Filtro Gaussiano

Opción e Filtro Morfológico

Filtro de Mediana

Filtro Gaussiano

Algoritmo de Canny

Opción f Filtro Morfológico

Filtro Gaussiano

Filtro de Mediana

Algoritmo de Canny

Opción g Filtro Gaussiano

Filtro de Mediana

Filtro Morfológico

Algoritmo de Canny

Opción h Filtro Gaussiano

Filtro Morfológico

Filtro de Mediana

Algoritmo de Canny

Cabe aclarar que se han dado 8 combinaciones porque el Algoritmo de Canny tiene que estar siempre después del Filtro Morfológico y del Filtro de Mediana, en caso de que no se cumpla la imagen resultante será completamente negra. A continuación se presentarán los resultados obtenidos de cada una de las combinaciones de filtros respectivamente, para así realizar una elección de la secuencia más eficiente en la eliminación de ruido. Figura 25. Resultados de Opciones de las Secuencias de Filtros.

En estas imágenes se deseaba adquirir el color azul de la Figura 26, como se puede observar las opciones que generan mejores resultados son el (a) y el (b), aunque estas parecen iguales la opción (a) presenta una imagen más atenuada, esto permite que se generen menos cambios de una imagen a otra ayudando así

Page 60: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

60

que la detección sea mejor. De acuerdo a lo anterior la opción más adecuada para realizar la eliminación de ruido es: Filtro de Mediana, Filtro Morfológico, Algoritmo de Canny y Filtro Gaussiano. Figura 26. Imagen Original

Como se mencionó, el primer el primer filtro a aplicar es el de mediana, el cual es un filtro no lineal que como se ha denotado en estadística saca el valor medio en una serie de datos ordenados de forma ascendente o descendente, es necesario que la máscara con la que se trabaja en este filtro sea cuadrada e impar.

(5)

(6)

Page 61: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

61

Figura 27. Filtro de Mediana

Fuente: Jaime A Arteaga, Spatial Filtering. Santiago de Cali: Universidad Autónoma de Occidente, 2011. p. 11. 1 Archivo de computador

En procesamiento de imágenes, estos valores corresponden al dato que contienen cada píxel vecino al que se está evaluando (Figura 27). Este filtro permite eliminar las áreas más pequeñas definiendo así las más grandes, es claro que el área deseada es la que se encuentra en mayor cantidad, por lo que la pérdida de información de esta es mínima y el resultado es un contorno más definido como se puede observar en la Figura 28. Figura 28. Imagen resultante de la aplicación del f iltro de mediana

Con el fin de eliminar una mayor cantidad de ruido, se aplica una máscara que realice un balance de erosión y dilatación, como se puede observar en la Figura 29 la erosión elimina información, haciendo que las áreas más pequeñas

Page 62: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

62

desaparezcan. Por otra parte la dilatación, aumenta el área ya existente formando un borde sobre esta. Figura 29. Erosión y Dilatación

Fuente: Gonzalez. R.C, Woods. R.E, Digital Image Processing, Addison-Wesley, 1993. Para la implementación de este proceso la librería de OpenCV posee el comando cvMorphologyEx()36, el cual permite combinar ambos efectos en cualquier orden. Para este caso se realiza primero la erosión de la imagen con el fin de eliminar todas las áreas pequeñas y a este resultado se aplica una dilatación que ayudará a definir mejor el área a trabajar como se muestra en la Figura 30. Figura 30. Imagen resultante de la aplicación de un filtro morfológico

36 BRADSKI. Gary, KAEBLER. Adrian. Op. cit. p. 120.

Page 63: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

63

Como tercer paso es necesario dejar solo los bordes de la imagen resultante de la aplicación de los anteriores filtros, permitiendo así obtener una forma más clara del objeto con el cual se desea trabajar, este proceso de desarrolla mediante el comando cvCanny()37, que como bien lo dice hace llamado al algoritmo Canny, el cual es un operador de múltiples etapas que permite la detección de bordes en imágenes (Ver Marco teórico – Filtro de Canny). Figura 31. Imagen resultante de la aplicación del a lgoritmo Canny

Finalmente para terminar el proceso de filtración, se procede a aplicar un filtro de suavizado que permita unir los píxeles que se encuentren cercanos entre sí, en este caso se aplica un filtro gaussiano, este filtro está determinado por la ecuación 7, donde se toman en cuenta cada uno de los píxeles y su desviación estándar la cual permite atenuar el resultado de suavizado que se realiza en la imagen a trabajar.

(7) En OpenCv se puede hacer llamado de este filtro mediante el comando cvSmooth()38, este comando permitirá la unión de los píxeles que se encuentren cercanos entre sí, cerrando los contornos que se encuentran en la imagen umbralizada y filtrada (Ver Figura 32). 37 BRADSKI. Gary, KAEBLER. Adrian. Op. cit. p. 152. 38 BRADSKI. Gary, KAEBLER. Adrian. Op. cit. p. 109.

Page 64: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

64

Figura 32. Imagen resultante de la aplicación del f iltro gaussiano

10.4.3 Detección de formas. Existen diferentes aplicaciones que permiten realizar identificación de formas en procesamiento de imágenes, sin embargo la librería de OpenCV posee comandos especializados para la detección de círculos y rectas que entregan la información necesaria para realizar una identificación con mayor precisión y velocidad. La primera tarea a analizar es la detección de círculos, para ello se trabaja con la transformada de Hough39, la cual sirve para el reconocimiento de patrones en imágenes, permitiendo la identificación de formas dentro de esta. En la librería de OpenCv se puede encontrar un comando que trabaja la detección de círculos aplicando esta herramienta, este se denomina cvHoughCircle()40, quien se encarga de entregar la ubicación y el radio de todos los círculos que contiene la imagen analizada, sin embargo en este proyecto se trabajará con detección de un solo circulo, por lo que se realiza una filtración de información dejando el elemento que tenga el radio mayor en la imagen, se resaltará con una circunferencia sobre la imagen mostrada por medio del comando cvCircle()41 (Figura 33), para este es necesario unos datos que son obtenidos del resultado de la transformada de Hough.

39 Procesamiento global empleando la transformada de Hough. Quilmes - Argentina: Universidad Nacional de Quilmes, 2005. Disponible en Internet: http://iaci.unq.edu.ar/materias/vision/archivos/apuntes/Transformada%20de%20Hough.pdf 40 BRADSKI. Gary, KAEBLER. Adrian. Op. cit. p. 159. 41 BRADSKI. Gary, KAEBLER. Adrian. Op. cit. p. 78.

Page 65: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

65

Figura 33. Identificación de círculos y color por medio de OpenCV

Como segunda tarea se tiene la detección de líneas, esta se puede realizar por medio del comando cvHoughLine2()42, que permite al programa la identificación de la forma deseada, en este caso el comando entrega la ubicación de los puntos que determinan a la línea y el ángulo en que se encuentra esta. Por medio de estos resultados podemos realizar una detección de las líneas que conforman la figura que deseamos detectar, ya que por especificación de ángulos y magnitudes de las líneas identificaremos la figuras que se encuentran en la imagen mostrando solo la solicitada por el usuario, así como se puede observar en la Figura 34. Figura 34. Identificación de rectas por medio de Op enCV

42 BRADSKI. Gary, KAEBLER. Adrian. Op. cit. p. 156.

Page 66: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

66

10.4.4 Filtro de Kalman Figura 35. Etapa de aplicación del Filtro de Kalman sobre el sistema

Después de que el objeto ha sido detectado, se genera una posición del centro de masa del mismo. Es claro que los valores entregados por el sensor tienen ruido asociado y que esto puede influenciar negativamente en la posición hallada. En la Figura 36, se muestra el resultado de la ubicación del centroide de los diferentes fragmentos obtenidos. Como se puede observar, esta posición varía en cada una de las imágenes debido a la variación que se genera en cada una de las figuras (figuras diferentes). Esto puede afectar en el proceso de seguimiento, por lo que hay que disminuir este, una primera corrección fue eliminar todos los centros de masa asociados a objetos con un área menor a un área de umbral. Aun después de esta corrección la respuesta obtenida no era la suficientemente favorable, porque se presentaban dos situaciones no deseadas, la primera, que no se eliminaban todos los “objetos falsos”, y la otra, que bajo la suposición que solo quedara el objeto real, la medida de centro de gravedad arrojada por el filtrado básico no era la correcta. Figura 36. Centros de masa identificados por la Tra nsformada de Hough

Page 67: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

67

Una de las herramientas más poderosas en la actualidad para trabajar con medidas ruidosas, es el filtro de Kalman. Este filtro se usó en este proyecto con el fin de dar un mayor grado de exactitud a la posición arrojada por el filtrado básico. El filtro de Kalman es un estimador óptimo que infiere parámetros de interés a partir de observaciones imprecisas. Además es recursivo, ya que las nuevas medidas pueden ser procesadas a medida que ellas llegan, en el sentido que minimiza la media del error cuadrático de los parámetros estimados. En forma general, el filtro de Kalman usa el espacio estado para modelar propiedades del objeto tales como posición, velocidad y aceleración43. Las medidas usualmente provienen de la posición del objeto en la imagen. En el contexto de este proyecto el filtro ha sido usado para seguimiento de un punto. El modelo del estado, se describe en forma general con dos ecuaciones:

(8)

(9) Donde: La ecuación 8 modela el estado y la ecuación 9 modela la observación del estado. • A es una matriz asociada con la matriz de estados. • B un vector o matriz asociada con la señal de control. • C un vector o matriz asociada a la observación del estado. El modelo original se le debe añadir el ruido asociado con el estado, quedando:

(10)

(11)

43 Mohinder S. Grewal, Angus P. Andrews. Kalman Filtering: Theory and Practice Using MATLAB, Ed. 2. EE.UU: John Wiley & Sons, Inc. 2001. p. 116. [Consultado: 3 de Octubre de 2011]. Disponible en Internet: http://ee.sharif.edu/~comcirlab/fazl.pdf

Page 68: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

68

Donde w y v son variables aleatorias que representan el ruido asociado al proceso y a la medida respectivamente. En la práctica se asumen independientes e invariables en el tiempo y con distribuciones de probabilidad normales es decir:

La meta de este modelo es poder obtener el valor del estado X, para lo cual utiliza una forma de control realimentado, es decir, el filtro estima el estado del proceso en algún tiempo y entonces obtiene realimentación en forma de medida con ruido. Por lo tanto las ecuaciones del Filtro de Kalman, caen en dos grupos: ecuaciones de actualización del tiempo y ecuaciones de actualización de la medida. Las ecuaciones de actualización del tiempo son las responsables por proyectar hacia “adelante” el estado actual y el error de covarianza obteniéndose lo que se conoce como el estimado a priori del próximo paso. Las ecuaciones de la actualización de la medida son responsables de la retroalimentación incorporando nuevas medidas al estimado a priori para conseguir un estimado a posteriori mejorado. En otras palabras las ecuaciones de actualización del tiempo pueden ser vistas como un “predictor” mientras las ecuaciones de actualización de medidas pueden ser vistas como un “corrector” (ver figura 37). Figura 37. Predictor y Corrector

Las ecuaciones que se desarrollan son presentadas en las tablas 3 y 4. Ecuaciones de actualización del tiempo del Filtro d e Kalman

Page 69: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

69

Se debe notar que se asume que las matrices A y B son invariables en el tiempo y que se deben asumir unas condiciones iníciales tanto para Q como para el estado. Ecuaciones de actualización de la medida del Filtro de Kalman

Después de cada actualización de tiempo y medidas, el proceso es repetido con los estimados previos a posteriori usados para proyectar o predecir el nuevo estimado a priori. Esta naturaleza recursiva es una de las grandes características del filtro de Kalman. Para hallar el modelo de estado de un objeto moviéndose que es el caso tratado en este trabajo, se hace uso de conceptos de física acerca del movimiento de una partícula con aceleración constante.

(12)

(13)

(14)

Donde: p(t) es la posición del objeto al tiempo t. v(t) es la velocidad del objeto al tiempo t. a(t) es la aceleración la cual se considera constante. Se toma entonces, como variables de estado la posición y la velocidad del objeto, obteniendo el siguiente sistema:

(15)

Page 70: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

70

= (16)

Se hace notar que no existe un elemento de control del proceso y por lo tanto B debe ser cero (B=0). También se debe considerar valores iníciales para el estado X y el error de covarianza P. Para demostrar la utilización del filtro de Kalman, se hizo un programa en Matlab, que permite obtener graficas de error de una manera más fácil que con el OpenCV. El programa usado se presenta en el Anexo C. Y los resultados obtenidos se muestran en la Figura 38. Figura 38. Respuesta del Filtro de Kalman al error generado en el procesamiento

Como se puede observar en la Figura 36, hay tres tipos de líneas de las cuales dos muestran las entradas al filtro, una está determinada por los datos reales (Verde) que son determinados a vista por el usuario mostrando el seguimiento del objeto, la otra es obtenida de los datos observados (Azul) que contiene la señal de ruido con el cual se genera la comparación y permite al filtro determinar la posición del objeto, generando lo nuevos datos que se visualizan en la imagen como “Kalman” (Violeta). Es claro que la línea del filtro que tiene una posición inicial (0,0) si realiza el seguimiento del objeto.

Page 71: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

71

10.5 CONTROL El control implementado en el hardware Arduino es un on/off, este se ha diseñado como un algoritmo secuencial que modifica el ancho de pulso del PWM que sale de los terminales del hardware haciendo que la posición angular del motor varíe. Este depende del valor que es recibido por el algoritmo que realiza el procesamiento de las imágenes. (Anexo B) El algoritmo de procesamiento de imágenes enviará valores fijos (1, 2 o 3) dependiendo de la posición en que se encuentre el centroide del objeto analizado. 10.6 COMUNICACIÓN La comunicación es el proceso mediante el cual se puede transmitir información de una entidad a otra, en cada caso cada entidad trabaja como emisor o como receptor en un tiempo determinado, es posible que una entidad trabaje con ambas formas pero este lo hará por separado ya que no es posible que esté transmitiendo y recibiendo información a la vez, esto es debido a que los hardware de comunicación trabajan de forma secuencial. 10.6.1 Comunicación entre VisualStudio y Arduino. El software VisualStudio (VS), que fue la herramienta base en la que se realizó la programación del detector de objetos, permitió la interacción de la programación de C/C++ con la librería de OpenCV y de igual forma la comunicación entre el Arduino con el software desarrollado para el procesamiento de video en tiempo real. Como proceso inicial es necesario que la plataforma de VS haga reconocimiento del puerto en que se encuentra el Arduino, en este caso se realizará solicitando al usuario que ingrese el puerto, como se muestra a continuación, esto es debido a que el puerto no es el mismo en cada ordenador. Figura 39. Código para ingresar al puerto serial en Visual Studio

Page 72: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

72

Si la identificación del puerto se ha efectuado exitosamente se puede proceder a iniciar la conexión entre VS y el Arduino, esta se hace por medio del comando arduino->Open() el cual abre el proceso para el envío de datos, desde este momento puede realizarse el envío de datos por medio del comando arduino->WriteLine(), ingresando entre los paréntesis el dato que se desea enviar pero este tiene que ser reconocido como un elemento de caracteres, por lo que se coloca entre comillas. Después de haber identificado el puerto y enviado el aviso de conexión desde VS al programa de Arduino, solo es necesario confirmar la lectura del dato por medio del comando Serial.read() igualando este a una variable que contendrá el valor con el cual se trabajará, como se visualiza en la Figura 40. Se observa una operación que se efectúa después de la lectura de datos, esta es desarrollada porque el valor obtenido desde VS queda con una diferencia de 48 unidades con relación al valor real. Figura 40. Código para lectura de datos externos en el software Arduino

Finalmente al momento de terminar el procesamiento es necesario cerrar la conexión entre los software de trabajo, por medio del comando arduino->Close(), que como se puede entender cierra la conexión con el Arduino. 10.6.2 Comunicación entre BeagleBoard y Arduino. Como se mencionó anteriormente, la plataforma Arduino está diseñada para ser trabajada en diversos sistemas operativos dentro de los cuales podemos encontrar Linux. Para la instalación de este es necesario instalar los drivers del Arduino en el sistema operativo que en este caso es Linux Angstrom44, al igual que Java para Linux. De igual forma es muy importante conocer el puerto por el cual está trabajando el hardware, así el programa desarrollado para llevar a cabo la detección del objeto se conectará de forma directa a la tarjeta electrónica permitiendo que se realice el envío de datos como se especificó en el anterior ítem. Cabe aclarar que la conexión de estos dos hardware será por USB, sin embargo la plataforma de Arduino es reconocida como puerto serial.

44 Driver Installation (Linux). 2011. [Consultado: 18 de Octubre de 2011]. Disponible en Internet: http://www.ladyada.net/learn/arduino/lesson0-lin.html

Page 73: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

73

11. RESULTADOS OBTENIDOS 11.1 PROCESAMIENTO El procesamiento de video es en parte la etapa principal y más importante del proyecto, donde era necesario realizar una adquisición de imagen con la menor cantidad de ruido que permitiera realizar la identificación del objeto a trabajar. Como se pudo observar, en el procesamiento de los fragmentos se aplicaron diferentes algoritmos que permitieran separar el elemento deseado y así trabajarlo. El primer algoritmo fue la conversión de RGB a HSV, donde se obtuvieron resultados muy favorables ya que nos permitió trabajar diferentes tonalidades de la imagen y de esta forma adquirir la mayor información posible dentro del rango deseado. Continuamente se aplicó la umbralización mediante la asignación de rangos, obteniéndose buenos resultados, ya que eliminaba todo los componentes que no contenían los parámetros de color deseados. Sin embargo se recalca que el resultado de este puede mejorar en un ambiente ideal (Fondo de una tonalidad diferente a la deseada), ya que en muchos casos hay objetos que también poseen las especificaciones que se han solicitado en la detección generando ruido en la imagen. El primer filtro aplicado fue el de mediana, con el cual se obtuvieron los resultados esperados pues se lograron eliminar la mayor cantidad de datos no deseados que se habían detectado en la umbralización. El segundo filtro fue el morfológico, con el que se deseaba mejorar la forma del objeto reconocido y eliminar aún más el ruido que quedaba en la imagen, dando resultados favorables porque mejoró notablemente el contorno del objeto identificado. Se aclara que toda esta secuencia se realizó para disminuir el ruido que se genera en un ambiente no adecuado. Los dos últimos filtros fueron el Canny y el Gaussiano, el primero cumplió con los resultados deseados que consistía en generar solo los bordes de la imagen. El Gaussiano no se visualiza de forma notable y no sirve en todos los casos, sin embargo ayuda a cerrar algunos contornos que quedan abiertos. En la Figura 41 se muestra el resultado de la identificación del color verde después de haber pasado por todos los filtros mencionados.

Page 74: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

74

Figura 41. Imagen resultante de la etapa de filtrac ión

De acuerdo a los objetivos planteados en el proyecto se deseaba realizar la identificación de formas geométricas sencillas, para ello se había realizado inicialmente la identificación del color permitiendo dejar los contornos deseados. En la Figura 42 se puede observar que después de la identificación de colores se tienen dos formas geométricas distintas con el mismo color, en este caso la transformada de Hough fue de gran utilidad, pues permitió la detección clara de la forma deseada. Sin embargo, para mejorar la identificación de las coordenadas de posicionamiento se aplicó el filtro de Kalman, que permitió obtener datos más finos para el control del sistema electromecánico. Figura 42. Identificación de formas circulares

Page 75: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

75

11.2 SISTEMA ELECTROMECÁNICO Y HARDWARE Los resultados obtenidos con el sistema electromecánico construido, el cual tenía como objetivo principal ampliar el espacio de trabajo de la cámara web, fueron los adecuados pues se logró que la cámara identificara los objetos en un rango aproximado de 150° sobre el eje vertical y de 120° sobre el eje horizontal. El movimiento de la plataforma mecánica es bastante eficiente pues el movimiento se puede realizar libremente mostrando que la fricción entre las piezas es mínima. El control implementado en el sistema permite hacer el seguimiento del objeto, sin embargo este no es muy rápido ya que el cambio de ancho de pulso es de 1 por 1 con cada análisis de una imagen nueva, y este proceso es más lento que el movimiento realizado por el usuario. 11.3 SEGUIMIENTO El objetivo final, el cual era seguir el objeto se puedo efectuar favorablemente, sin embargo como se mencionó anteriormente no es muy rápido porque realiza un movimiento por cada fragmento analizado. En la Figura 43 se puede observar como el ancho de pulso del PWM del motor que realiza la rotación sobre el eje vertical de la cámara, cambia cuando el objeto se encuentra fuera del rango asignado, rotando la cámara hasta que el objeto identificado se encuentre dentro de este. Figura 43. Seguimiento del objeto - Ancho de pulso vs. Posición (Píxel)

Page 76: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

76

12. COSTOS Las tablas presentadas a continuación, muestra los costos de desarrollo del proyecto, donde incluye las piezas que se mandaron a realizar, hardware comprado y los materiales necesarios para el desarrollo de este. Cuadro 10. Precios de piezas que se mandaron a real izar

Piezas de desarrollo externo CANT. ELEMENTO COSTO COP 1 Estructura Mecánica 150.000 1 Eje de rodamiento 5.000 155.000

Cuadro 11. Precios del Hardware comprado

Hardware comprado CANT. ELEMENTO COSTO COP/UND COSTO COP 1 BeagleBoard 288.650 288.650 1 Arduino 78.000 78.000 1 Cámara Web 30.000 30.000 2 Servo-motores 230.000 460.000 856.650

Cuadro 12. Precios de Materiales adicionales

Materiales CANT. ELEMENTO COSTO COP 1 Tornillería 2.000 1 Materiales electrónicos 15.000 17.000

Cuadro 13. Costo Total del Proyecto

Total ELEMENTO COSTO COP Piezas de desarrollo externo 155.000 Hardware comprado 856.650 Materiales 17.000 1’028.650

Page 77: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

77

13. CONCLUSIONES

El espacio de color permite encontrar gran cantidad de componentes que tienen que ser tomados en cuenta en el momento de realizar el procesamiento de la imagen, puede que no se tenga toda la información necesaria para el realizar la tarea deseada, por esta razón es necesario trabajar en otros espacios de color, como lo es el HSV, que permitan la identificación de estos componentes. El procesamiento de video es una aplicación que requiere de gran capacidad de memoria, por lo que es necesario disminuir la mayor cantidad de procesos que se tengan que realizar para generar la imagen resultante (Optimización de código), por esta razón es importante realizar dicho procesos con imágenes trabajadas en un solo canal, permitiendo realizar menos procesamiento para lograr el objetivo deseado, ocupando de esta forma la menor cantidad de memoria posible. La implementación de filtros de suavizado y de diferencia pueden causar en muchos casos disminuir el ruido que se encuentra en la imagen, sin embargo si no se aplica de forma adecuada puede obtenerse resultados no deseados, por esta razón la efectividad del procesamiento no depende de la cantidad de filtros que se implementen durante su desarrollo sino de la forma como se apliquen estos. Se observó que el controlador on/off ayudo a cumplir los objetivos deseado, sin embargo la eficiencia de este no es muy buena ya que trabaja con movimientos temporales, que son pequeños y puede generar resultados aceptables pero con un error de +/- 6 píxeles por cada movimiento unidad que es aumentada en el valor del PWM.

Page 78: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

78

14. RECOMENDACIONES Se recomienda la optimización del código presentado en el proyecto, esto permitirá aumentar la velocidad de procesamiento de las imágenes y de la misma forma la respuesta de los motores. Existen diferentes formas de realizar el mismo proceso así que no hay que cerrarse a un solo método de procesamiento, en algunos casos puede ser más rápido y puede consumir menos cantidad de memoria permitiendo que el procesamiento en las tarjetas de desarrollo sea más eficiente. El control presentado en este proyecto fue un On/Off, con el cual el sistema presento buena respuesta con el seguimiento del objeto, sin embargo la velocidad de respuesta de los motores puede mejorar implementado controladores más avanzados como controladores PI, PID, controladores modernos. Es necesario mencionar que al momento de aumentar la velocidad del sistema puede aumentar el error en la posición relativa y absoluta, por lo que se tiene que trabajar teniendo un equilibrio entre estos.

Page 79: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

79

BIBLIOGRAFIA BRADSKI, Gary. KAEBLER, Adrian. Learning OpenCV – Computer Vision with the OpenCV Library. O’reilly. USA, 2008. 577 p. CABREJAS F, Héctor. Detección y eliminación de sombras y reflejos en entornos de video – seguridad sobre plataforma de analistas distribuido. Madrid - España: Universidad Autónoma de Madrid, Escuela Politécnica Superior, 2010. 138 p. Detección de Bordes en una imagen. Jaén – España: Universidad de Jaén. 7 p. DOMINGO, Mery. Visión Artificial. Santiago de Chile: Universidad Santiago de chile, 2002. 115 p. EVANS, Brian W. Arduino Programming notebook. 6 ed. California – USA: Creative Commons, 2007. 36 p. FLORCZYK, Stefan. Robot Vision. EE.UU: John Wiley & Sons. 2005. 212 p. GIBB, Alicia M. New Media Art, Design, and the Arduino microcontroller: A malleable tool [en línea]. Trabajo de grado Master en Ciencia. EE. UU: School of Art and Design Pratt Institute, 2010. 75 p. Disponible en Internet: http://c298394.r94.cf1.rackcdn.com/New%20Media%20Art,%20Design,%20and%20the%20Arduino%20Microcontroller.pdf HERRADOR, Rafael E. Guía de Usuario de Arduino. Universidad de Cordoba, 2009. 49 p. MARTÍN, Marcos. Técnicas Clásicas de Segmentación de Imagen. 2002. 23 p. MARULL P, Gerard. Introduction to BeagleBoard. España: Universidad Politécnica de Catalunya, 2009. 13 p. MOHINDER S, Grewal, ANGUS P. Andrews. Kalman Filtering: Theory and Practice Using MATLAB, Ed. 2. EE.UU: John Wiley & Sons, Inc. 2001. 397 p. TAYLOR, Geoffrey, KLEEMAN, Lindsay. Monash Visual Perception and Robotic Manipulation – 3D Object Recognitin, Tracking and Hand – Eye Coordination. Australia: Springer, 2006. 230 p.

Page 80: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

80

ANEXOS

Anexo A. Código de Procesamiento en VisualStudio #include "stdafx.h" #include "cv.h" #include "highgui.h" using namespace System; using namespace System::IO::Ports; int VS = 9, f = 0, S = 70, V = 255, Cl = 0, Fr = 0; char* Xpc; void switch_Cl( int cl ) { Cl = cl; } IplImage* GetThresholdedImage(IplImage* img, int Cl, SerialPort^ arduino) { IplImage* imgHSV = cvCreateImage(cvGetSize(img), 8, 3); IplImage* imgThreshed1 = cvCreateImage(cvGetSize(img), 8, 1); IplImage* imgThreshed = cvCreateImage(cvGetSize(img), 8, 1); IplImage* planeH = cvCreateImage( cvGetSize(img), 8, 1); IplImage* planeH2 = cvCreateImage( cvGetSize(img), 8, 1); IplImage* planeS = cvCreateImage( cvGetSize(img), 8, 1); IplImage* planeV = cvCreateImage( cvGetSize(img), 8, 1); cvCvtColor(img, imgHSV, CV_BGR2HSV); cvCvtPixToPlane(imgHSV, planeH, planeS, planeV, 0); if (Cl == 0) { cvInRangeS(planeH,cvScalar(0),cvScalar(0),planeH); } else if (Cl == 1) { cvInRangeS(planeH,cvScalar(0),cvScalar(5),planeH); cvInRangeS(planeH,cvScalar(150),cvScalar(180),planeH2); cvOr(planeH,planeH2,planeH,NULL); }

Page 81: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

81

else if (Cl == 2) { cvInRangeS(planeH,cvScalar(100),cvScalar(130),planeH); } else if (Cl == 3) { cvInRangeS(planeH,cvScalar(25),cvScalar(40),planeH); } else { cvInRangeS(planeH,cvScalar(70),cvScalar(105),planeH); } cvInRangeS(planeS,cvScalar(0),cvScalar(S),planeS); cvInRangeS(planeV,cvScalar(V),cvScalar(255),planeV); cvSub(planeH,planeV,imgThreshed1,NULL); cvSub(imgThreshed1,planeS,imgThreshed1,NULL); // Filtros cvSmooth(imgThreshed1,imgThreshed1,CV_MEDIAN,3,3); cvMorphologyEx(imgThreshed1,imgThreshed1,imgThreshed1,CV_SHAPE_RECT,CV_MOP_OPEN,2); cvCanny(imgThreshed1,imgThreshed1,0,1,3); cvSmooth(imgThreshed1,imgThreshed,CV_GAUSSIAN,3,3); CvMemStorage* storage = cvCreateMemStorage(0); CvMemStorage* storage1 = cvCreateMemStorage(0); CvSeq* circles = cvHoughCircles(imgThreshed,storage1,CV_HOUGH_GRADIENT,2,img->height/30,260,60,20,200); int q = 0, x = 0, y = 0; for( int i = 0; i < circles->total; i++ ) { float* p = (float*) cvGetSeqElem( circles, i ); if (cvRound(p[2]) >= q) { int f = i; q = cvRound(p[2]); x = cvRound(p[0]); y = cvRound(p[1]); }

Page 82: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

82

} if (q != 0) { float* p = (float*) cvGetSeqElem( circles, f ); CvPoint pt1 = cvPoint( cvRound( p[0] ), cvRound( p[1] ) ); cvCircle(img, pt1, cvRound( p[2] ), cvScalar(0,0,255),2); printf("X= %3.2f, Y= %3.2f \n", p[0], p[1]); if (p[0]>380) { arduino->WriteLine("3"); } else if (p[0]<=380 && p[0]>340) { arduino->WriteLine("2"); } else if (p[0]<260) { arduino->WriteLine("0"); } else if (p[0]>=260 && p[0]<300) { arduino->WriteLine("1"); } else { } cvWaitKey(25); if (p[1]>300) { arduino->WriteLine("4"); } else if (p[1]<=300 && p[1]>260) { arduino->WriteLine("5"); } else if (p[1]<180) { arduino->WriteLine("6"); } else if (p[1]>=180 && p[1]<220) {

Page 83: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

83

arduino->WriteLine("7"); } else { } } cvReleaseImage(&imgHSV); cvReleaseImage(&planeH); cvReleaseImage(&planeH2); cvReleaseImage(&planeS); cvReleaseImage(&planeV); cvReleaseImage(&imgThreshed1); return imgThreshed; } int main(array<System::String ^> ^args) { String^ portName; int baudRate = 9600; Console::WriteLine("Escriba el nombre del puerto y presione ENTER\n"); portName = Console::ReadLine(); SerialPort^ arduino; arduino = gcnew SerialPort(portName,baudRate); //inicializando la captura CvCapture* capture=0; capture=cvCaptureFromCAM(1); //si no se puede incializar la camara: salga. if (!capture) { printf("Lo siento, no se pudo inicilizar la camara...\n"); return -1; } //creando dos ventanas para las imagenes cvNamedWindow("video"); cvCreateTrackbar("Color","video",&Cl,4,switch_Cl); //inicializa la imagen que sostiene el trazador IplImage* imgScribble=NULL; try { arduino->Open(); arduino->WriteLine("8"); //Lazo infinito de movimiento

Page 84: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

84

while(true) { //sostener el marco capturado IplImage* frame=0; frame=cvQueryFrame(capture); if (!frame) break; if (imgScribble == NULL) { imgScribble=cvCreateImage(cvGetSize(frame),8,3); } IplImage* imgThresh=GetThresholdedImage(frame,arduino); cvWaitKey(10); cvShowImage("video", frame); int c = cvWaitKey(10); if(c!=-1) { break; } cvReleaseImage(&imgThresh); } arduino->Close(); } catch (IO::IOException^ e) { Console::WriteLine(e->GetType()->Name+": El puerto no esta listo"); } catch (ArgumentException^ e) { Console::WriteLine(e->GetType()->Name+": Sintaxis incorrecta en el nombre del puerto, debe comenzar con COM/com"); } cvReleaseCapture(&capture); return 0; }

Page 85: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

85

Anexo B. Código para movimiento de motores en la pl ataforma Arduino #include <Servo.h> int val, val1, i = 0, d, servo1 = 6, servo2 = 7; void setup() { Serial.begin(9600); } void loop() { while ( Serial.available() && i==0 ) { d = Serial.read(); d = d - 48; i++; } if(i>0) { if (d == 8) { val = 176; val1 = 160; } else { if (val <= 254 && val >= 98 && val1 <= 254 && val1 >= 100) { if (d == 0) { val = val + 3; val1 = val1; } else if (d == 1) { val = val + 1; val1 = val1; } else if (d == 2) { val = val - 1;

Page 86: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

86

val1 = val1; } else if (d == 3) { val = val - 3; val1 = val1; } else if (d == 4) { val1 = val1 + 3; val = val; } else if (d == 5) { val1 = val1 + 1; val = val; } else if (d == 6) { val1 = val1 - 3; val = val; } else if (d == 7) { val1 = val1 - 1; val = val; } else { val = val; val1 = val1; } } else if (val <= 254 && val >= 98 && val1 > 254) { if (d == 0) { val = val + 3; val1 = val1; } else if (d == 1) { val = val + 1; val1 = val1; }

Page 87: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

87

else if (d == 2) { val = val - 1; val1 = val1; } else if (d == 3) { val = val - 3; val1 = val1; } else if (d == 6) { val1 = val1 - 3; val = val; } else if (d == 7) { val1 = val1 - 1; val = val; } else { val = val; val1 = val1; } } else if (val <= 254 && val >= 98 && val1 < 100) { if (d == 0) { val = val + 3; val1 = val1; } else if (d == 1) { val = val + 1; val1 = val1; } else if (d == 2) { val = val - 1; val1 = val1; } else if (d == 3) {

Page 88: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

88

val = val - 3; val1 = val1; } else if (d == 4) { val1 = val1 + 3; val = val; } else if (d == 5) { val1 = val1 + 1; val = val; } else { val = val; val1 = val1; } } else if (val > 254 && val1 <= 254 && val1 >= 100) { if (d == 4) { val1 = val1 + 3; val = val; } else if (d == 5) { val1 = val1 + 1; val = val; } else if (d == 6) { val1 = val1 - 3; val = val; } else if (d == 7) { val1 = val1 - 1; val = val; } else if (d == 2) { val = val - 1; val1 = val1;

Page 89: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

89

} else if (d == 3) { val = val - 3; val1 = val1; } else { val = val; val1 = val1; } } else if (val < 98 && val1 <= 254 && val1 >= 100) { if (d == 4) { val1 = val1 + 3; val = val; } else if (d == 5) { val1 = val1 + 1; val = val; } else if (d == 6) { val1 = val1 - 3; val = val; } else if (d == 7) { val1 = val1 - 1; val = val; } else if (d == 0) { val = val + 3; val1 = val1; } else if (d == 1) { val = val + 1; val1 = val1; } else

Page 90: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

90

{ val = val; val1 = val1; } } else if (val > 254 && val1 > 254) { if (d == 2) { val = val - 1; val1 = val1; } else if (d == 3) { val = val - 3; val1 = val1; } else if (d == 6) { val1 = val1 - 3; val = val; } else if (d == 7) { val1 = val1 - 1; val = val; } else { val = val; val1 = val1; } } else if (val > 254 && val1 < 100) { if (d == 2) { val = val - 1; val1 = val1; } else if (d == 3) { val = val - 3; val1 = val1;

Page 91: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

91

} else if (d == 4) { val1 = val1 + 3; val = val; } else if (d == 5) { val1 = val1 + 1; val = val; } else { val = val; val1 = val1; } } else if (val < 98 && val1 > 254) { if (d == 0) { val = val + 3; val1 = val1; } else if (d == 1) { val = val + 1; val1 = val1; } else if (d == 6) { val1 = val1 - 3; val = val; } else if (d == 7) { val1 = val1 - 1; val = val; } else { val = val; val1 = val1; } }

Page 92: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

92

else if (val < 98 && val1 < 100) { if (d == 0) { val = val + 3; val1 = val1; } else if (d == 1) { val = val + 1; val1 = val1; } else if (d == 4) { val1 = val1 + 3; val = val; } else if (d == 5) { val1 = val1 + 1; val = val; } else { val = val; val1 = val1; } } else { val = val; val1 = val1; } } analogWrite(servo1,val); // set servo to mid-point analogWrite(servo2,val1); // set servo to mid-point i=0; } }

Page 93: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

93

Anexo C. Código de aplicación de filtro de Kalman e n MatLab %Informacion de los adapatadores infoadaptadores=imaqhwinfo; %Capture datos importante a usar acerca de la camara nombrecam=char(infoadaptadores.InstalledAdaptors(end)); infocam=imaqhwinfo(nombrecam); IDcam= infocam.DeviceInfo.DeviceID(end); resolucioncam = char(infocam.DeviceInfo.SupportedFormats(end)); %Usando videoinput para capturar marcos vid = videoinput(nombrecam, IDcam, resolucioncam); %Ajuste de las propiedades del objeto de video creado set(vid, 'FramesPerTrigger', Inf); set(vid, 'ReturnedColorspace', 'rgb'); vid.FrameGrabInterval = 2; mov = avifile('SERIES'); %Inicializar la captura start(vid) %Inicializar el filtro de kalman [A,C,Q,R,P] = KalmanIni(); Xactual=[0 0 0 0]'; datosobservados=[]; datosfiltrados=[]; % Set a loop that stop after 100 frames of aquisition while(vid.FramesAcquired<=50)

% Capturando el marco actual con getsnapshot data = getsnapshot(vid); % Capturar solo la capa de rojo de la imagen convertida a escala de % grises capa_roja = imsubtract(data(:,:,1), rgb2gray(data)); %Quitando ruido con un filtro promedio

Page 94: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

94

capa_roja = medfilt2(capa_roja, [3 3]); % convertir el resultado a una imagen binaria capa_roja = im2bw(capa_roja,0.18); % Removiendo píxeles menores a 300px capa_roja = bwareaopen(capa_roja,300); % Etiqueteado de componentes conectados. bw = bwlabel(capa_roja, 8); %Propiedade de cada region etiquetada stats = regionprops(bw, 'BoundingBox', 'Centroid'); %Mostrando la imagen imshow(data) hold on

%ciclo para colocar dentro de cuadros los elementos de color rojo en el video. for object = 1:length(stats)

bb = stats(object).BoundingBox; bc = stats(object).Centroid; rectangle('Position',bb,'EdgeColor','r','LineWidth',2) plot(bc(1),bc(2), '-m+') %%entra la actualización del filtro de kalman %Actualización del tiempo if vid.FramesAcquired==1

Xestimado=A*[bc(1),bc(2),0,0]'; else

Xestimado=A*Xactual; end Pestimado = A*P*A' + Q; Medida_estimada=C*Xestimado; %Actualizacion de la medida K = (Pestimado*C')/(C*Pestimado*C'+R); Xactual=Xestimado+K*([bc(1),bc(2)]' - Medida_estimada); P = (eye(4)-K*C)*Pestimado; a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ', num2str(round(bc(2)))));

Page 95: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

95

set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow'); b=text(Xestimado(1)+15,Xestimado(2), strcat('X: ', num2str(round(Xestimado(1))), ' Y: ', num2str(round(Xestimado(2))))); set(b, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'blue'); %vectores datosobservados=cat(2,datosobservados,[bc(1),bc(2)]'); datosfiltrados=cat(2,datosfiltrados,[Xestimado(1),Xestimado(2)]');

end mov = addframe(mov, data); hold off

end % % Detener la adquisicion de video stop(vid); % Vaciar la memoria flushdata(vid); %Limpie variables mov = close(mov); %clear all

Page 96: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

96

Anexo D. Planos del Elemento Superior

Page 97: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

97

Anexo E. Planos del Elemento Intermedio

Page 98: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

98

Anexo F. Planos de la Base

Page 99: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

99

Anexo G. Planos del Componente en U

Page 100: DISEÑO E IMPLEMENTACIÓN DE UN SEGUIDOR DE OBJETOS EN ...red.uao.edu.co/bitstream/10614/1394/1/TMK00384.pdf · que requieren del uso de herramientas como OpenCV, y las tarjetas electrónicas

100

Anexo H. Planos del Sistema de Rotación