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