Download reconocimiento de figuras geométricas a través de una webcam con
Document related concepts
no text concepts found
Transcript
RECONOCIMIENTO DE FIGURAS GEOMÉTRICAS A TRAVÉS DE UNA WEBCAM CON OPENCV. JUAN GABRIEL TAMAYO ZULUAGA. UNIVERSIDAD DE SAN BUENAVENTURA SECCIONAL MEDELLÍN FACULTAD DE INGENIERÍAS INGENIERIA DE SISTEMAS MEDELLÍN - ANTIOQUIA 2012 RECONOCIMIENTO DE FIGURAS GEOMÉTRICAS A TRAVÉS DE UNA WEBCAM CON OPENCV. JUAN GABRIEL TAMAYO ZULUAGA. Proyecto de grado presentado para optar al título de ingeniero de sistemas. Asesor Carlos Arturo Castro Castro. UNIVERSIDAD DE SAN BUENAVENTURA SECCIONAL MEDELLÍN FACULTAD DE INGENIERÍAS INGENIERÍA DE SISTEMAS MEDELLÍN - ANTIOQUIA 2012 CONTENIDO. 1. JUSTIFICACIÓN .............................................................................................................................4 2. PLANTEAMIENTO DEL PROBLEMA ...................................................................................................5 3. OBJETIVO GENERAL..........................................................................................................................7 4. OBJETIVOS ESPECÍFICOS...................................................................................................................7 5. MARCO REFERENCIAL ......................................................................................................................8 5.1. DEFINICIÓN DE CONCEPTOS BÁSICOS .............................................................................8 6. DISEÑO METODOLÓGICO.............................................................................................................. 13 7. METODOLOGÍA DESARROLLO DE SOFTWARE............................................................................... 14 8. ESQUEMA TEMÁTICO................................................................................................................ 14 8.1. INSTALACIÓN Y MANEJO DE OPENCV BAJO WINDOWS. .................................................. 14 8.2. RECONOCIMIENTO DE FIGURAS GEOMÉTRICAS SIMPLES A TRAVÉS DE UNA WEBCAM. 16 9. CONCLUSIONES ............................................................................................................................. 20 10. TRABAJO FUTURO ....................................................................................................................... 22 11. REFERENCIAS BIBLIOGRÁFICAS ................................................................................................... 22 12. ANEXOS ....................................................................................................................................... 22 1. JUSTIFICACIÓN. De acuerdo con las pruebas del saber, en su evaluación en estudiantes de 5º, realizadas en el 2009 en el área de matemáticas, el 31% de los estudiantes demuestran competencias de nivel mínimo, mientras que el 41% presenta competencias de nivel insuficiente, y solamente el 8% de los estudiantes se encuentra en un nivel avanzado. Entre las tareas específicas que puede realizar un estudiante con un nivel mínimo están: reconocer la congruencia entre dos figuras geométricas; expresar simbólicamente algunas operaciones a partir de un enunciado gráfico o verbal; identificar y utilizar el plano cartesiano (ICFES SABER 5° y 9° 2009. RESULTADOS NACIONALES[1]). Se pretende crear un objeto de aprendizaje enfocado a estudiantes de primaria, aplicado a la geometría, con el fin de ayudarles a retener información de las figuras de una manera entretenida y altamente dinámica mediante la visión por computador. La función de la visión por computador es el reconocimiento de objetos físicos a través de una imagen, interactuando comúnmente con cámaras web. A través de este método, se pretende hacer que el estudiante sitúe una figura geométrica simple hecha en madera frente a la cámara web. La tarea del objeto de aprendizaje será identificar la figura a través de la cámara y caracterizarla. El objeto de aprendizaje es entonces la combinación de una interfaz de software amigable e intuitiva, su interacción y operaciones con la cámara web, y su interacción con el usuario. 4 2. PLANTEAMIENTO DEL PROBLEMA. El Programa Internacional para la Evaluación de Estudiantes (PISA) es una iniciativa de la Organización para la Cooperación y el Desarrollo Económico (OCDE). Su objetivo es la elaboración de indicadores de calidad en la educación de los países participantes y monitorear sus avances en el tiempo. Las competencias que evalúa son: lectura, ciencias y matemáticas. Según el PISA, en el 2009 Colombia se encuentra entre los países con puntajes más bajo, lo que cuestiona la calidad de la educación impartida en los establecimientos educativos. La evaluación fue realizada en 65 países en estudiantes de 15 años. Sus resultados para Colombia fueron los siguientes: Sólo el 17% de los resultados obtenidos se explican por las condiciones de pobreza, lo que indica que ésta no es la única causa de dichos resultados. El factor principal es la manera como se les enseña a los estudiantes dentro de las aulas de clase. Las niñas presentan mayores dificultades en matemáticas y ciencias con respecto a los niños, pero tienen mayor facilidad en cuanto a lectura. El bajo nivel de lectura va ligado a los estudiantes repitentes. Colombia ha participado en el PISA en dos ocasiones: en el 2006 y 2009. Según el informe, respecto a la última participación de Colombia en el PISA, los estudiantes han tenido mejoras en el promedio (28 puntos de aumento respecto al 2006 en lectura. 14 puntos de aumento en ciencias y 11 puntos de aumento en matemáticas). Sin embargo, a este ritmo de crecimiento, le tomaría aproximadamente ocho años alcanzar el nivel actual de los países que conforman la OCDE y casi dieciséis años el nivel actual de Shanghái (primer país en la lista de promedios del PISA). Una buena lectura es una buena base para que los estudiantes logren desarrollar opiniones críticas y propias frente a diferentes problemas y les ayuda a tener un mejor desempeño en la sociedad. Los resultados de lectura del PISA indican que el 47% de los estudiantes están por debajo del nivel mínimo aceptable según los estándares del PISA. Esto indica que los estudiantes son capaces de leer textos sencillos y entender problemas cotidianos, pero los dificulta extraer información implícita de textos complejos, así como también la buena argumentación de ideas. 5 En cuanto a los niveles de pobreza, el informe revela que no es el único factor. Sólo el 17% de los resultados obtenidos está ligado a las condiciones socioeconómicas de los estudiantes. Sin embargo, revela que un factor fundamental en los logros de los estudiantes es la escuela: docentes preparados, buen clima escolar, recursos suficientes para el trabajo pedagógico, motivación y proactividad por parte de los estudiantes, son factores determinantes a la hora de obtener buenos resultados (Centro Virtual de Noticias de la Educación. Colombia en PISA 2009[2]). Se hace necesario entonces un cambio de paradigma a la hora de enseñar con el fin de tener al estudiante interesado, especialmente en primaria, donde la atención de los estudiantes suele ser menor. Es aquí donde entra en juego la visión por computador a través de una cámara web, como manera dinámica de enseñar a los estudiantes. Con la construcción de un objeto de aprendizaje que pueda interactuar con el estudiante para la enseñanza de la geometría euclidiana, utilizando como base el procesamiento digital de imágenes, se pretende mejorar la rapidez con la que el estudiante aprende. Al ser el objeto de aprendizaje altamente dinámico y divertido, permitirá al estudiante aprender los conceptos básicos de geometría de manera más intuitiva, pues hará que el estudiante tenga una disposición más abierta y menos tensa. Al tratarse de un proyecto nuevo en la Universidad, hubo una curva de aprendizaje, por este motivo el presente trabajo sólo llegará hasta el reconocimiento de figuras geométricas básicas a través de la cámara web. 6 3. OBJETIVO GENERAL. Construir un reconocedor de figuras geométricas simples a través de una cámara web mediante la visión por computador. . 4. OBJETIVOS ESPECÍFICOS. Descargar e instalar la librería libre OpenCV para el trabajo de visión por computador bajo Windows. Desarrollar algoritmos sencillos que permitan el reconocimiento simple de objetos mediante la segmentación de imágenes. Desarrollar algoritmos mediante el procesamiento digital de imágenes y OpenCV, que permitan la identificación de figuras geométricas simples en tiempo real a través de una webcam. 7 5. MARCO REFERENCIAL 5.1. DEFINICIÓN DE CONCEPTOS BÁSICOS. ¿Qué es una imagen? Aunque una imagen es la reproducción de la figura de un objeto por la combinación de los rayos de luz que inciden en él, dentro de un computador una imagen (o imagen digital), no es más que una gran secuencia de ceros y unos que pueden ser leídos y modificados como se desee. Dicho en términos técnicos, una imagen digital es una representación numérica binaria de una imagen del mundo real en una matriz bidimensional, la cual puede ser recorrida mediante ciclos anidados dentro de un algoritmo. El tamaño de las imágenes, se define en pixeles; éstos a su vez se definen por su brillo o color. Las imágenes contienen tres canales distintos: Rojo, Verde y Azul, o conocidos simplemente como RGB (por sus siglas en inglés: Red, Green, Blue). Cada canal toma un valor entre 0 (negro) y 255 (blanco); por ejemplo, un pixel con valores R = 255, G = 255, B = 255, sería un pixel completamente blanco; mientras que uno con valores R = 255, G = 0 y B = 0, será un pixel completamente rojo. ¿Cuántos valores hay en una imagen? El cálculo está dado por la siguiente fórmula: Altura * anchura * canales Visión por Computador. La Visión por Computador (Computer Vision) es la construcción de descripciones explícitas y significativas de objetos físicos desde una imagen. La Visión por Computador es un campo de estudio diverso y relativamente nuevo. Anteriormente era difícil procesar incluso datos de imágenes moderadamente grandes. No fue sino hasta finales de 1970 que surgió un estudio más enfocado del campo. [3] No existe una formulación estándar de cómo los problemas de visión por computador deberían resolverse. En su lugar, existen varios métodos para resolver varias tareas bien definidas de visión por computador. Los principales problemas a los que se enfrenta la visión por computador son: 8 Reconocimiento. El mayor problema de la visión por computador es determinar si una imagen contiene uno o varios objetos determinados: cuántos árboles hay, cuántas casas hay, qué colores, etc. Este tipo de tarea es fácil de lograr para el ojo humano, pero no para una computadora. Análisis de movimiento. Otro problema de la visión por computador es identificar objetos que están en movimiento, pues muchas veces, debido a su velocidad de movimiento, pueden interpretarse como ruido. OpenCV. La Visión por Computador gana campo rápidamente, en parte como resultado de cámaras más baratas y capaces, en parte por poder de procesamiento asequible, y en parte porque los algoritmos de visión están empezando a madurar y se desarrollan librerías, las cuales facilitan la labor del programador a la hora reconocer objetos; dentro de éstas se encuentra OpenCV. OpenCV (Open Source Computer Vision Library) es una librería de código abierto escrita en C y C++ y es capaz de correr bajo Linux, Windows y Mac OSX. Fue desarrollada por Intel y ahora es mantenida por Willow Garage. Se enfoca principalmente en procesamiento de imágenes en tiempo real. Una de las metas de OpenCV, es proveer una infraestructura de visión por computador fácil de usar, que ayude a las personas a construir aplicaciones de visión por computador sofisticadas de manera rápida. La librería contiene más de 500 funciones que abarcan muchas áreas en visión, incluyendo imágenes médicas, seguridad, calibración de cámaras y robótica. [3] Operaciones sobre una imagen digital con OpenCV. Recorrido de una imagen. Para recorrer una imagen en OpenCV se va de izquierda a derecha, y de arriba a abajo; los canales están ordenados en BGR (Blue, Green, Red (Azul, Verde, Rojo)). Como se dijo anteriormente, una imagen digital es una matriz bidimensional, la cual se recorre mediante ciclos anidados en un algoritmo, los cuales empezarían desde la posición cero (0). Por lo tanto y a manera de ejemplo, si se quiere acceder al valor rojo del pixel número 40 de la fila 24 tendríamos que acceder al dato: ( anchuraFila * 23 ) + ( numeroCanales * 39 ) + 2. [4][5] Segmentación de imágenes. En la visión por computador, Segmentación es el proceso de particionar una imagen 9 digital en múltiples segmentos. Su objetivo es simplificar y/o cambiar la representación de una imagen en algo que sea más significativo y fácil de analizar. Dicho de manera más precisa, la segmentación es el proceso de asignar una etiqueta a cada pixel de una imagen, así cada pixel con una misma etiqueta comparten ciertas características visuales, tales como líneas, curvas, colores, entre otras. [6] Un ejemplo sencillo de segmentación en OpenCV, es determinar qué pixeles de una imagen dada tienen un mismo color. Primero se debe recorrer la imagen y buscar en todos los píxeles de la imagen, calculando si son o no del color deseado. ¿Cómo saber si por ejemplo es rojo? En primer lugar se debe saber qué datos característicos tiene dicho color. En este caso es sencillo, su dato más característico será que el canal con mayor valor será el del rojo. También hay que tener en cuenta que los valores de los otros canales no sean muy altos, por lo menos no lo suficiente como para acercarse al valor del canal del rojo, ya que estos valores podrían corresponder a colores como el morado o el naranja. Segmentación por umbral (Thresholding). La segmentación por umbral es una técnica de segmentación de imágenes, en la que se elige un valor de umbral y se recorre cada uno de los pixeles de una imagen. Aquellos pixeles cuyo valor sea mayor o igual al umbral elegido, serán denominados “pixeles de primer plano”, mientras que aquellos con un valor por debajo del umbral, se denominarán “pixeles de segundo plano”; a este tipo de segmentación se le denomina “umbral por encima”. Existen también “umbral por debajo”, el cual es el opuesto al de “umbral por encima”; “umbral por dentro” y “umbral por fuera”. La técnica de “umbral por dentro”, consiste en elegir un umbral menor y uno mayor; aquellos pixeles que se encuentren dentro de este rango, serán los pixeles de primer plano, mientras que los que estén por fuera, serán los de segundo plano; la técnica de “umbral por fuera”, es la opuesta a la de “umbral por dentro”. [3][6] Siguiendo el ejemplo de detección de pixeles de color rojo en OpenCV, se emplearía la técnica de umbral por encima, con un valor de 80 para el canal rojo, así como también un umbral por debajo con un valor de [Valor Canal Rojo ] / 2 para los canales verde y azul. Ruido. El ruido, en una imagen, es una variación aleatoria de información de brillo o color. Puede ser producido por los circuitos de un scanner o una cámara digital. El ruido de una imagen, también puede darse al aplicar una técnica de umbral, en la que pixeles con demasiado brillo, son el resultado de una segmentación de umbral por encima, y pixeles demasiado oscuros, son el resultado de una segmentación de umbral por debajo. 10 Suavizamiento (Smoothing). Suavizar un conjunto de datos (pixeles), es la reducción de la cantidad de variaciones de intensidad entre pixeles vecinos, eliminando el ruido de la imagen. El procedimiento consiste en encontrar los valores máximo y mínimo de intensidad para cada uno de los pixeles que se encuentran alrededor de un pixel a analizar (pixel central). Si la intensidad del pixel central está dentro del rango de sus vecinos, no se realiza cambio alguno. Si la intensidad del pixel central es mayor que el valor máximo, el pixel central toma el valor del máximo. Si la intensidad del pixel central es menor que el valor mínimo, dicho valor es asignado al pixel central. [7] En OpenCV, el suavizamiento de una imagen, se hace de manera sencilla mediante la función cvSmooth(). Detección de bordes. La detección de bordes consiste en identificar los puntos de una imagen digital, en la cual su brillo tenga discontinuidades. Esto se hace mediante el cálculo de la primera y segunda derivada (Figura 1). El resultado de aplicar la detección de bordes a una imagen, puede reducir significativamente la cantidad de datos a ser procesados y así dejar por fuera información que puede ser catalogada como menos relevante y preservar las propiedades estructurales importantes de la imagen. Figura 1. Detección de discontinuidades en una imagen mediante la primera y segunda derivada. 11 Detector de bordes de Canny. El detector de bordes de Canny, es un algoritmo utilizado para detectar un amplio rango de bordes en las imágenes. Se le llama así debido a su autor, John F. Canny. El algoritmo consiste en armar pixeles candidatos a contornos; esto se logra mediante dos umbrales, uno alto y uno bajo. Si un pixel tiene un gradiente mayor al umbral umbral alto, entonces es considerado como un pixel de borde; si es menor al umbral bajo, entonces se rechaza. Si el gradiente está dentro de los dos umbrales, sólo se acepta si el pixel está conectado a un pixel que está por encima del umbral alto. [3] En OpenCV, se puede lograr la detección de bordes con el algoritmo de Canny mediante la función cvCanny(). Transformadas de Hough. Transformada de líneas. Realiza un seguimiento de la intersección entre curvas de cada punto de una imagen. Si el número de intersecciones está por encima de un umbral dado, entonces es intersección. declarado como una línea de parámetros del punto de Transformada de círculos. Esta transformada, funciona de manera análoga a la transformada de líneas, con algunas diferencias: En la transformada de líneas, una línea se definía por dos parámetros: En la transformada de círculos, se necesitan tres parámetros para definir un círculo: , donde , definen la posición central, y r es el radio. [8][9] En OpenCV, la aplicación de la transformada de círculos de Hough, se logra mediante la función HoughCircles(). 12 6. DISEÑO METODOLÓGICO. A. Fase 1: Instalación y manejo de la librería bajo Windows. Descarga de herramientas de compilación y posterior compilación de las fuentes. Manipulación de la librería a través de ejemplos prácticos y sencillos para el reconocimiento de objetos sencillos dada una imagen. B. Fase 2: Reconocimiento de figuras geométricas con OpenCV a través de la webcam. Instalación y reconocimiento de la webcam con la librería. Reconocimiento de figuras geométricas en tiempo real con la webcam, comparando con una serie de características de figuras geométricas simples. 13 7. METODOLOGÍA DESARROLLO DE SOFTWARE Para el desarrollo del proyecto, se utilizó una definición de fases metodológicas con actividades asociadas a cada uno de los objetivos específicos. 8. ESQUEMA TEMÁTICO. 8.1. INSTALACIÓN Y MANEJO DE OPENCV BAJO WINDOWS. A continuación, se listan los pasos básicos para la descarga e instalación de OpenCV bajo Windows. Para instrucciones más detalladas, dirigirse al Anexo 1: Instalación e integración de OpenCV con Eclipse Indigo en Windows. 1) Se descarga OpenCV de la página oficial y se instala: Ingresar a la página http://opencvlibrary.sourceforge.net/ y dar clic en “Download Open Computer Vision Library files”. 2) Se descarga e instala MinGW: MinGW, provee los compiladores de C y C++ que se utilizarán a la hora de ejecutar el proyecto en Eclipse. Ingresar a la página del proyecto en SourceForge: http://sourceforge.net/projects/mingw/files/ Se da clic en “Installer” --> “mingw-get-inst” --> “mingw-get-inst-20110802” --> “mingw-get-inst-20110802.exe”. Nota: Hay una nueva versión disponible, pero se recomienda bajar la utilizada en estos pasos para no entrar en conflictos con posibles cambios de la nueva versión. 3) Se añaden a PATH, la carpeta de binarios de MinGW y las carpetas de OpenCV necesarias para la utilización de los DLLs por parte de MinGW: Se da clic derecho en "Mi PC" --> "Propiedades". Una vez allí, se da clic en la pestaña "Opciones avanzadas", botón "Variables de entorno". El sistema muestra la lista de variables de entorno; se selecciona la variable "Path" y se da clic en el botón "Modificar". La variable recibe varias rutas, cada ruta separada por un punto y coma (;). 4) Se descarga e instala Eclipse Indigo: Se ingresa a la página http://www.eclipse.org/downloads/ 14 Se selecciona "Eclipse IDE for C/C++ Developers (includes Incubating components)" para Windows de 32 Bits (en nuestro caso), el cual es el que cuenta con todo el entorno desarrollo de programas para C++. 5) Se crea un nuevo proyecto HelloWorld de C++ con Eclipse y MinGW. 6) Se le agregan las siguientes librerías a Eclipse: opencv_calib3d230 opencv_contrib230 opencv_core230 opencv_features2d230 opencv_flann230 opencv_gpu230 opencv_highgui230 opencv_imgproc230 opencv_legacy230 opencv_ml230 opencv_objdetect230 opencv_video230 Reconocimiento básico de objetos por segmentación. En el siguiente caso, se hace aplicación de la técnica de segmentación para ubicar aquellos objetos dentro de una imagen que sean de color rojo: Se recorre la imagen de izquierda a derecha y de arriba hacia abajo, validando cada uno de los pixeles contra un umbral definido, en este caso 150; se eligió dicho valor pues generalmente se trabaja con cámaras digitales de muy alta resolución y con espacios demasiado iluminados. También se necesita que los valores de los canales verde y azul del pixel sean considerablemente inferiores al valor del canal rojo, en este caso, por debajo de la mitad. Por lo tanto, la validación quedaría estructurada de la siguiente manera: “Si [Valor del canal rojo] > 150, y [Valor de los canal verde] < [Valor del canal rojo] / 2, y [Valor canal azul] < [Valor del canal rojo] / 2, entonces, es un pixel rojo”. La aplicación de dicho algoritmo se aprecia en la Figura 2. 15 Figura 2. Aplicación de algoritmo de segmentación en OpenCV para la detección de objetos rojos. Comparación de la imagen original (izquierda) contra la imagen modificada (derecha) con la detección de pixeles rojos. 8.2. RECONOCIMIENTO DE FIGURAS GEOMÉTRICAS SIMPLES A TRAVÉS DE UNA WEBCAM. Segmentación por umbral para el reconocimiento de objetos rojos. Dado que una iluminación adecuada es esencial para la captura óptima de pixeles rojos, algunos de éstos no fueron detectados debido a sombras muy oscuras para el umbral definido. Figura 3. Aplicación de algoritmo de segmentación para la detección de objetos rojos en tiempo real a través de una cámara Web. Detección de círculos. Para la detección de círculos, el proceso es el siguiente: 1) Se copia la imagen original y se convierte a escala de grises. 2) Una vez convertida a escala de grises, se detectan los contornos mediante el detector de bordes de Canny. 16 3) Se le aplica la transformada de círculos de Hough a la imagen con los contornos. 4) Se pintan los círculos detectados y se presentan en la imagen original, modificando los pixeles correspondientes. En la Figura 4, se muestra la aplicación de los pasos anteriormente mencionados. Figura 4. Transformación de imagen original (izquierda superior) a escala de grises (derecha superior), detectando sus bordes mediante el algoritmo de Canny (izquierda inferior) y su posterior aplicación de la transformada de Hough, presentando la detección de círculos sobre la imagen original (derecha inferior). Detección de círculos rojos. Para combinar el algoritmo de detección de objetos de colores rojos y la detección de círculos, sólo se hace un paso de más: En vez de aplicar la escala de grises a la imagen original, primero se hace la segmentación por umbral para el color rojo, los demás pasos son los mismos. En la Figura 5, se muestra la aplicación de dicho proceso. 17 Figura 5. Detección de colores rojos en la imagen original y transformación a escala de grises (derecha superior) aplicando los algoritmos de detección de bordes de Canny (izquierda inferior) y detección de círculos mediante la transformada de Hough (derecha inferior). Detección de cuadriláteros y triángulos. En ambos casos, se utiliza la función cvApproxPoly(), para la aproximación poligonal de los bordes. Si el resultado arrojado es igual a cuatro, entonces es un cuadrilátero; si es igual a tres, entonces es un triángulo. Los pasos, son los siguientes: 1) Se copia la imagen original y se convierte a escala de grises. 2) Una vez convertida en escala de grises, se aplica la detección de bordes de Canny. 3) Se le aplica la función cvApproxPoly() a la imagen de contornos. 4) Si el resultado es igual a tres, es un triángulo; si es igual a cuatro, es un cuadrilátero. En la Figura 6 y Figura 7, se muestra la detección de cuadriláteros y triángulos en objetos reales a través de la Webcam, sin la presentación de sus copias en grises y detección de bordes. 18 Figura 6. Detección de cuadrilátero en una memoria USB mediante la función de aproximación de polígonos. Figura 7. Detección de triángulo en un control de consola de videojuegos mediante la función de aproximación de polígonos. 19 9. CONCLUSIONES. • OpenCV es una herramienta poderosa y sencilla, la cual permite crear aplicaciones complejas de forma rápida gracias a su gran número de funciones predefinidas. • Gracias a librerías libres y potentes como OpenCV, no es necesario adquirir equipos muy costosos para trabajar con procesamiento digital de imágenes y reconocimiento de objetos en tiempo real. • Para la detección óptima de figuras geométricas sencillas como triángulos y círculos, de determinado color, son necesarias varias condiciones especiales a la hora de hacer dicho proceso, como una buena iluminación, un buen ángulo de los objetos respecto al computador, y objetos con colores que se diferencien de manera significativa frente a otros. 20 10. TRABAJO FUTURO. Detección de cuadriláteros más específicos como un cuadro o un rectángulo, así como la detección de triángulos rectángulos, equiláteros y demás. Detección de formas complejas a través de objetos del mundo real, extrayendo la información de las posibles figuras geométricas que lo pueden conformar. Construcción de un sitio Web que pueda ejecutar remotamente desde cualquier lugar el reconocedor de figuras geométricas. Construcción de un Objeto de Aprendizaje, con un entorno gráfico llamativo que permita al usuario decidir el tipo de figura que se quiere reconocer. 21 11. REFERENCIAS BIBLIOGRÁFICAS. [1] Centro Virtual de Noticias de la Educación. Colombia en PISA 2009 - Mensaje de urgencia a la calidad de la educación. http://www.mineducacion.gov.co/cvn/1665/w3-article-257876.html [2] ICFES SABER 5° y 9° 2009. RESULTADOS NACIONALES. http://www.icfes.gov.co/saber59/images/pdf/Informe%20nacional%20SABER%205%20y% 209%202009.pdf [3] Learning OpenCV. Gary Bradski and Adrian Kaehler. O’Reilly (2008). Págs. 1, 125, 151-152. [4] OpenCV Examples Part 1. Access Image Data. (Nov. 4, 2008) http://nashruddin.com/opencv-examples-for-operation-on-images.html/6/ [5] Reconocimiento básico de objetos con OpenCV. ElectricBricks (May. 7, 2010). http://blog.electricbricks.com/es/2010/05/reconocimiento-objetos-opencv/ [6] Computer Vision. Linda Shapiro and George Stockman. Prentice-Hall (2000). Págs. 97, 305. [7] Sistema de pre-procesamiento de imágenes electrocardiográficas en telemedicina. Melva Ramos Rivas. Universidad de las Américas Puebla (2003). Capítulo 3. http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/ramos_r_m/ [8] OpenCV v2.4.1 documentation (Official). http://docs.opencv.org/2.4.1/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html [9] Lecture 10: Hough Circle Transform. Harvey Rhody. Rochester Institute of Technology (Oct. 11, 2005). 22 12. ANEXOS. I. ANEXO 1: INSTALACIÓN E INTEGRACIÓN DE OPENCV CON ECLIPSE INDIGO EN WINDOWS. Referirse al archivo “Instalar_OpenCV.pdf”, ubicado en la carpeta “Anexos”. II. ANEXO 2: ALGORITMO DE SEGMENTACIÓN PARA LA DETECCIÓN DE COLORES ROJOS EN UNA IMAGEN. Para una mejor apreciación “Anexos/Algoritmos/Colores”. de 23 la imagen, referirse a la ruta 24 III. ANEXO 3: ALGORITMO PARA LA DETECCIÓN DE CÍRCULOS, TRIÁNGULOS Y CUADRILÁTEROS A TRAVÉS DE UNA WEBCAM. Para una mejor apreciación de “Anexos/Algoritmos/Deteccion_Figuras”. 25 la imagen, referirse a la ruta 26 27