UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de...

116
UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE INGENIERÍA CIENCIAS FÍSICAS Y MATEMÁTICA CARRERA DE COMPUTACIÓN GRÁFICA DESARROLLO DE UNA APLICACIÓN BASADA EN EL RECONOCIMIENTO AUTOMÁTICO DE PATRONES EN IMÁGENES APLICADA A LA EDUCACIÓN TRABAJO DE GRADUACIÓN PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN COMPUTACIÓN GRÁFICA AUTOR: CAROLINA ALEXANDRA HURTADO MORA TUTOR: ING. PEDRO ALMAGRO BLANCO QUITO 15 JULIO 2016

Transcript of UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de...

Page 1: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE INGENIERÍA CIENCIAS FÍSICAS Y MATEMÁTICA

CARRERA DE COMPUTACIÓN GRÁFICA

DESARROLLO DE UNA APLICACIÓN BASADA EN EL RECONOCIMIENTO

AUTOMÁTICO DE PATRONES EN IMÁGENES APLICADA A LA EDUCACIÓN

TRABAJO DE GRADUACIÓN PREVIO A LA OBTENCIÓN DEL TÍTULO DE

INGENIERO EN COMPUTACIÓN GRÁFICA

AUTOR: CAROLINA ALEXANDRA HURTADO MORA

TUTOR: ING. PEDRO ALMAGRO BLANCO

QUITO – 15 JULIO

2016

Page 2: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

ii

DEDICATORIA

A mi madre, quien es ejemplo de fortaleza, dedicación y amor. A ti que eres mi

madre, mi padre y mi amiga te dedico este logro, sin tu apoyo jamás habría llegado

hasta aquí.

A mi hermano Javier, quien me apoyo en épocas difíciles de mi vida, gracias por

ser mi protector.

A mis dos pequeños ángeles Analía y Christopher, me cambiaron la vida con su

llegada, espero verlos llegar lejos, Dios los bendiga siempre.

A mis abuelitos Petrona y Víctor, por enseñarme que la honestidad, humildad y

trabajo no son un camino fácil pero sí el camino correcto.

A mis tíos Paulina y Víctor, por estar siempre a mi lado aconsejándome, parte de

este logro también es suyo.

A Maribel, por todo su apoyo y amistad, gracias por haberme escuchado cuando

nadie más lo hizo.

A David, por su paciencia, cariño y amistad incondicional a lo largo de esta etapa,

porque no dejaste que me rindiera en los momentos más difíciles.

Page 3: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

iii

AGRADECIMIENTO

Quiero agradecer a Pedro, quien colaboró como tutor en el desarrollo de este

proyecto, sin su guía no hubiera sido posible este logro. Gracias por la paciencia

y las palabras de aliento.

A Verónica quien ha sido mi compañera, amiga y colega en este arduo camino.

Gracias por estar en las buenas y malas, espero esta amistad perdure por muchos

años más.

A todos los docentes que conocí a lo largo de la carrera, gracias por sus

enseñanzas, su dedicación y su tiempo. Un agradecimiento especial a los

docentes Roberto Rosero y Gabriela Mafla quienes no solo imparten conocimiento

sobre las asignaturas sino que nos enseñan sobre la vida. Gracias por todo su

apoyo y dedicación pero sobre todo por el cariño.

A todas las personas que conocí a lo largo de esta larga aventura universitaria,

gracias por los buenos y malos momentos compartidos, me llevo bonitos

recuerdos y valiosas lecciones.

Gracias a todos quienes aún siguen siendo parte de mi vida, y me apoyaron en

cada momento de adversidad.

Page 4: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

iv

AUTORIZACIÓN DE LA AUTORÍA INTELECTUAL

Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador

realizado sobre: "Desarrollo de una aplicación basada en el reconocimiento

automático de patrones en imágenes aplicada a la educación" por la presente

autorizo a la UNIVERSIDAD CENTRAL DEL ECUADOR, hacer uso de todos los

contenidos que me pertenecen o parte de los que contiene esta obra, con fines

estrictamente académicos o de investigación.

Los derechos que como autor me corresponden, con excepción de la presente

autorización, seguirán vigentes a mi favor, de conformidad con lo establecido en

los artículos 5, 6, 8, 19 y demás pertinentes de la Ley de Propiedad Intelectual y

su Reglamento.

Quito, 15 de Julio 2016.

CAROLINA ALEXANDRA HURTADO MORA

CC: 1721883641

Dirección electrónica: [email protected]

Telf: 0995217745

Page 5: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

v

CERTIFICACIÓN DEL TUTOR

Yo, Pedro Almagro Blanco en calidad de tutor del trabajo de titulación

"DESARROLLO DE UNA APLICACIÓN BASADA EN EL RECONOCIMIENTO

AUTOMÁTICO DE PATRONES EN IMÁGENES APLICADA A LA EDUCACIÓN",

elaborado por la estudiante Carolina Alexandra Hurtado Mora de la Carrera de

Ingeniería en Computación Gráfica, Facultad de Ingeniería Ciencias Físicas y

Matemática de la Universidad Central del Ecuador, considero que el mismo reúne

los requisitos y méritos necesarios en el campo metodológico y en el campo

epistemológico, para ser sometido a la evaluación por parte del jurado examinador

que se designe, por lo que lo APRUEBO, a fin de que el proyecto integrador sea

habilitado para continuar con el proceso de titulación determinado por la

Universidad Central del Ecuador.

En la ciudad de Quito, a los 20 días del mes de Junio de 2016.

Ing. Pedro Almagro Blanco

CC: 1756591846

Dirección electrónica: [email protected]

Page 6: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

vi

CERTIFICADO DE CALIFICACIONES

Page 7: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

vii

Page 8: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

viii

CONTENIDO

DEDICATORIA .................................................................................................... ii

AGRADECIMIENTO ............................................................................................ iii

AUTORIZACIÓN DE LA AUTORÍA INTELECTUAL .............................................iv

CERTIFICACIÓN DEL TUTOR ............................................................................ v

CERTIFICADO DE CALIFICACIONES ................................................................vi

CONTENIDO ..................................................................................................... viii

LISTA DE FIGURAS ............................................................................................ x

LISTA DE TABLAS ..............................................................................................xi

RESUMEN .......................................................................................................... xii

ABSTRACT ....................................................................................................... xiii

INTRODUCCIÓN ................................................................................................. 1

1. DEFINICIÓN DEL PROBLEMA .................................................................... 2

1.1 Antecedentes ............................................................................................. 2

1.2 Planteamiento del Problema ...................................................................... 3

1.3 Formulación del Problema .......................................................................... 3

1.4 Objetivos .................................................................................................... 4

1.4.1 Objetivo General .................................................................................. 4

1.4.2 Objetivos Específicos ........................................................................... 4

1.5 Justificación ................................................................................................ 4

2. MARCO TEÓRICO ....................................................................................... 6

2.1 Reconocimiento automático de patrones ................................................... 6

2.2 Procesamiento de Imágenes ..................................................................... 6

a) Captura ................................................................................................... 7

b) Pre-procesamiento .................................................................................. 7

Binarización ....................................................................................... 7

Máscara de Convolución .................................................................... 8

Filtro Gaussiano ................................................................................. 9

c) Segmentación ........................................................................................ 10

Filtro Sobel ....................................................................................... 11

Filtro Canny ...................................................................................... 12

Transformada de Hough .................................................................. 13

d) Identificación de objetos ........................................................................ 17

Page 9: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

ix

2.3 Clusterización .......................................................................................... 17

a) Método de Otsu ..................................................................................... 17

b) Algoritmo K-Means ................................................................................ 19

3. METODOLOGÍA ......................................................................................... 21

3.1 Metodología del Proyecto. ....................................................................... 21

3.2 Análisis y especificación de requerimientos. ............................................ 21

3.2.1 Selección de tecnologías .................................................................. 22

a) Selección de tecnologías para el desarrollo de la librería. .................. 22

Python .......................................................................................... 22

Opencv ......................................................................................... 22

cv2.HoughLinesP ............................................................................ 23

cv2.HoughCircles .......................................................................... 24

b) Selección de tecnologías para el desarrollo de la aplicación cliente. .. 24

HTML5 (Lenguaje de Marcado de Hipertexto) .............................. 24

JavaScript ..................................................................................... 25

CSS .............................................................................................. 26

Apache Cordova ........................................................................... 28

Flask ............................................................................................. 29

3.3 Diseño del sistema. ................................................................................. 32

3.3.1 Diseño de métodos para la detección de patrones. ........................... 32

a) Detección de Rectángulos ................................................................. 32

b) Detección de Circunferencias ............................................................ 33

3.3.2 Diseño de la interfaz cliente. ............................................................. 35

a) Sección Inicio ..................................................................................... 35

b) Sección Información ........................................................................... 37

c) Sección Aplicación ............................................................................ 38

d) Sección Documentación .................................................................... 39

3.4 Codificación del software. ........................................................................ 40

3.4.1 Codificación de la librería para la detección de patrones. ................. 40

a) Método umbral_est ................................................................... 40

b) Método lineas_hough ............................................................... 41

c) Método detecta_rectangulo .................................................. 41

Page 10: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

x

d) Método detecta_circulos ...................................................... 42

e) Método metodo_alternativo .................................................. 42

3.4.2 Codificación de la aplicación cliente. ................................................. 43

a) Función $.ajax.......................................................................... 43

b) Método imagen_procesar ......................................................... 43

c) success:function(data) ......................................................... 44

4. RESULTADOS ........................................................................................... 46

4.1 Pruebas con dataset de imágenes. ......................................................... 47

4.2 Tablas de Resultados .............................................................................. 50

4.3 Análisis de resultados.............................................................................. 54

5. CONCLUSIONES ....................................................................................... 55

6. RECOMENDACIONES ............................................................................... 57

7. BIBLIOGRAFÍA ........................................................................................... 59

ANEXOS ........................................................................................................... 64

LISTA DE FIGURAS

Figura 2-1. Etapas del procesamiento de imágenes (Wainschenker, Massa, &

Tristan, 2011) ...................................................................................................... 7

Figura 2-2. Máscara de Convolución: Proceso de Aplicación............................... 8

Figura 2-3. Ejemplo Filtro Gaussiano ................................................................... 9

Figura 2-4. Filtro Gaussiano: Aplicación. ........................................................... 10

Figura 2-5. Filtro Sobel: Paso 2. ........................................................................ 11

Figura 2-6. Filtro Sobel: Paso 3. ........................................................................ 12

Figura 2-7. Representación de coordenadas polares (Wikipedia, 2014) ............ 13

Figura 2-8. Diagrama de la Transformada de Hough (Wikipedia, 2014) ............. 14

Figura 2-9. Transformada de Hough: Líneas ..................................................... 15

Figura 2-10. Izq. Puntos en espacio geométrico Der. Puntos en espacio Hough

(Rhody, 2005) .................................................................................................... 16

Figura 2-11. Pasos del Algoritmo K-Means (Wikipedia, 2016) ........................... 19

Figura 3-1. Esquema de Integración de Tecnologías ......................................... 28

Figura 3-2. Tabla de conversión Decimal a Base64 (Cruz, 2012) ...................... 32

Figura 3-3 Método1. Procesamiento de Imagen ................................................ 33

Figura 3-4. Método2. Procesamiento de Imagen ............................................... 33

Page 11: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xi

Figura 3-5. Procesamiento de Imágenes para la Detección de Circunferencias 34

Figura 3-6. Ejemplo detección de cuadriláteros, rectángulos y círculos ............. 35

Figura 3-7. Visualización de Pantalla: Sección Inicio. ........................................ 35

Figura 3-8. Visualización Móvil: Sección Inicio. .................................................. 36

Figura 3-9. Visualización de Pantalla: Sección Inicio-Menú ............................... 36

Figura 3-10. Visualización Móvil: Sección Inicio-Menú. ...................................... 37

Figura 3-11. Visualización de Pantalla: Sección Información. ............................ 37

Figura 3-12. Visualización Móvil: Sección Información. ..................................... 38

Figura 3-13. Visualización de Pantalla: Sección Aplicación. .............................. 38

Figura 3-14. Visualización Móvil: Sección Aplicación. ........................................ 39

Figura 3-15. Visualización de Pantalla: Sección Documentación. ...................... 39

Figura 3-16. Visualización Móvil: Sección Documentación. ............................... 40

Figura 3-17. Método Estadístico: Proceso Automatización del Umbral. ............. 41

Figura 4-1. Prueba detección de figuras: rectángulos y círculos ........................ 48

LISTA DE TABLAS

Tabla 4-1. Tabla de Resultados: Detección de Círculos..................................... 51

Tabla 4-2. Tabla de Resultados: Detección de Rectángulos .............................. 53

Tabla 4-3. Valores Promedio de cada método. .................................................. 54

Page 12: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xii

RESUMEN

DESARROLLO DE UNA APLICACIÓN BASADA EN EL RECONOCIMIENTO

AUTOMÁTICO DE PATRONES EN IMÁGENES APLICADA A LA EDUCACIÓN

Autor: Carolina Alexandra Hurtado Mora

Tutor: Ing. Pedro Almagro Blanco.

El presente proyecto consiste en elaborar una aplicación que permita el

reconocimiento automático de figuras geométricas básicas en imágenes aplicada

a la educación, para ello se estudiaron los conceptos para el procesamiento de

imágenes y se analizaron las diferentes posibilidades de software a emplearse

para obtener los resultados deseados. Con respecto al procesamiento de

imágenes los filtros principalmente utilizados fueron: filtros para detección de

bordes, filtro de Canny y la transformada de Hough. Por otro lado, dentro de las

tecnologías que nos permitieron el desarrollo de la librería para la detección

automática de patrones tenemos como lenguaje de programación a Python y

como librería especializada para el procesamiento de imágenes a OpenCV,

además se utilizaron las tecnologías HTML5, JavaScript y CSS, para el desarrollo

de la aplicación que permitirá mostrar los resultados obtenidos con la librería

desarrollada.

PALABRAS CLAVES: PROCESAMIENTO DE IMÁGENES / DETECCIÓN DE

PATRONES / APLICACIÓN EDUCATIVA / DETECCIÓN DE BORDES /

TRANSFORMADA DE HOUGH / FILTRO CANNY

Page 13: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xiii

ABSTRACT

DEVELOPMENT OF AN APPLICATION BASED ON THE AUTOMATIC

RECOGNITION OF IMAGES PATTERNS APPLIED TO EDUCATION

Author: Carolina Alexandra Hurtado Mora

Tutor: Eng. Pedro Almagro Blanco.

The current project consisted in preparing an application intended to the automatic

recognition of baseline geometric figures in images applied to education. Concepts

were studied to process images and diverse software possibilities to obtain desired

results, were analyzed. As per processing of images, the most used filters were:

filters for detection of edges, Canny’s filter, and Hough transform. On the other

hand, in technologies that allowed developing library for the automatic detection of

patters, the programming language used was Python, and as a specialized library

to process images, OpenCV. Additionally, HTML5, JavaScript and CSS

technologies were used to develop the application, which shall allow showing

results, with developed library.

KEYWORDS: IMAGE PROCESSING / PATTERNS DETECTION /

EDUCATIONAL APPLICATION / EDGE DETECTION / HOUGH TRANSFORM /

CANNY FILTER.

I CERTIFY that the above and foregoing is a true and correct translation of the

original document in Spanish.

Ernesto Andino Certified Translator IC: 1703852317

Page 14: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

1

INTRODUCCIÓN

La tecnología está presente en todo lo que rodea a la sociedad, desde el trabajo,

la comunidad, la familia, el hogar, y hasta el sector de la enseñanza. Desde hace

algunos años este sector ha explorado el potencial tan grande que ofrece el ámbito

tecnológico para educar y aprender. En efecto, a partir de sus

innumerables servicios y aplicaciones tanto los docentes como los estudiantes

pueden crear, distribuir y compartir sus propios contenidos con una enorme

calidad, versatilidad y amplitud de difusión.

En la actualidad los alumnos necesitan de una amplia gama de experiencias que

incluyan aspectos reales, representaciones visuales y símbolos abstractos que

mejoren el aprendizaje. Es por ello que en los últimos diez años han sido

extraordinariamente fecundos los avances tecnológicos aplicables a la educación

para poder ofrecer lo mejor y lo más importante en experiencias para los

escolares.

Situados en esta sociedad de la información que exige una fuerte disminución de

las prácticas memorísticas/reproductoras en favor de las metodologías socio-

constructivistas centradas en los estudiantes y en el aprendizaje autónomo y

colaborativo, los entornos sociales para la interacción que ofrecen las aplicaciones

de la Web constituyen un instrumento idóneo para ello. Son muchas las materias

educativas que aprovechan los avances digitales, es por ello que el presente

proyecto integrador propone el "Desarrollo de una aplicación basada en el

reconocimiento automático de patrones en imágenes aplicada a la

educación", con lo que se pretende realizar un aporte a la educación para el

aprendizaje de geometría básica.

Page 15: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

2

1. DEFINICIÓN DEL PROBLEMA

1.1 Antecedentes

En el artículo “La Web 2.0 en el ámbito educativo” se menciona que no hace falta

mucha imaginación para intuir las posibilidades educativas que se derivan del

planteamiento de la Web. En efecto, a partir de sus innumerables servicios y

aplicaciones tanto los docentes como los estudiantes pueden crear, distribuir y

compartir sus propios contenidos con una enorme calidad, versatilidad y amplitud

de difusión. 1

El Dr. Pere Marqués Graells asegura que situados en esta sociedad de la

información que exige una fuerte disminución de las prácticas

memorísticas/reproductoras en favor de las metodologías socio-constructivistas

centradas en los estudiantes y en el aprendizaje autónomo y colaborativo, los

entornos sociales para la interacción que ofrecen las aplicaciones de la Web

constituyen un instrumento idóneo para ello.2

La educadora Ana Daroch es una convencida de que hay que intentar que la

enseñanza se transforme en una vivencia educativa, la cual es mucho más que

una actividad. "Una experiencia de aprendizaje es una vivencia educativa, que por

su significancia la hace más eficiente desde el punto de vista de las posibilidades

de aprendizaje”.

En el blog educ@conTIC se menciona lo siguiente: cada vez son más los docentes

que van incorporando las diferentes herramientas TIC a sus actividades de clase,

en una sociedad analógica como la nuestra, alfabetizar supone que los

estudiantes tengan acceso a los medios y redes digitales para obtener, contrastar,

analizar y también publicar contenidos digitales multimedia.

A continuación se muestran ejemplos de aplicaciones educativas, las cuales

sirvieron de inspiración para el desarrollo de este proyecto.

La Cueva Tragapalabras3: Aplicación multimedia que ayuda al desarrollo

lingüístico, reconocimiento de objetos y al ejercicio mental para aprender

y reconocer palabras, ayuda con el desarrollo del lenguaje en los niños.

1 (Larequi, 2014) 2 (Graells, 2013) 3 (Mendez, n.d.)

Page 16: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

3

Geometría Montessori4: Aplicación móvil para niños de 4 a 8 años el

objetivo es que los niños aprendan a desarrollar la lógica a través de la

categorización y jerarquización de la formas geométricas.

Thinkrolls5: Aplicación dirigida a niños entre 3 y años ayuda a que los

infantes aprendan la mecánica de la prueba y error.

1.2 Planteamiento del Problema

La tendencia pedagógica tradicional resulta insuficiente y deficiente en el plano

teórico cognitivo y de la praxis del ser humano ya que ve a éste como un simple

receptor de la información. La retención de la información se alcanza sobre la base

de una repetición mecánica de ejercicios sistemáticos recapitulados, de manera

esquemática y enciclopedista sin preocuparse de forma profunda y esencial de los

procesos que intervienen en la asimilación de los conocimientos, esto ha generado

una tendencia al estudio superficial de las materias con el propósito de cumplir

sea con requisitos de aprobación, un horario de clases o con un contenido

curricular pre-establecido.

En la actualidad los alumnos necesitan de una amplia gama de experiencias que

incluyan aspectos reales, representaciones visuales y símbolos abstractos que

mejoren el aprendizaje. Es por ello que en los últimos diez años han sido

extraordinariamente fecundos los avances tecnológicos aplicables a la educación

para poder ofrecer lo mejor y lo más importante en experiencias para los

escolares.

El mundo moderno exige una preparación que obliga al conocimiento de todo

aquello que tiene que ver con la sociedad de la información y las nuevas

tecnologías, por lo que es necesario e inevitable adoptar nuevas formas de

aprendizaje.

1.3 Formulación del Problema

¿Es posible que una aplicación basada en el reconocimiento automático de

patrones en imágenes facilite el aprendizaje de geometría básica?

4 (Mocholí, 2014) 5 (Mendez, n.d.)

Page 17: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

4

1.4 Objetivos

1.4.1 Objetivo General

Desarrollar de una aplicación basada en el reconocimiento automático de patrones

en imágenes aplicada a la educación que facilite la identificación de figuras

geométricas básicas.

1.4.2 Objetivos Específicos

Emplear los conocimientos en cuanto a programación, procesamiento de

imágenes y diseño obtenidos a lo largo del curso de la carrera de Ingeniería

en Computación Gráfica.

Analizar las diferentes tecnologías disponibles que pueden ser

potencialmente utilizadas en el desarrollo de una aplicación educativa que

haga uso del reconocimiento de patrones en imágenes.

Implementar una librería de software que permita la detección de patrones

geométricos básicos en imágenes y su procesamiento.

Proporcionar una aplicación que reconozca patrones geométricos básicos

automáticamente en una imagen.

1.5 Justificación

La tecnología está presente en todo lo que rodea a la sociedad, desde el trabajo,

la comunidad, la familia, el hogar, y hasta el sector de la enseñanza. Desde hace

algunos años este sector ha explorado el potencial tan grande que ofrece el ámbito

tecnológico para educar y aprender, con el uso adecuado de éste se ayuda a los

estudiantes a adquirir las habilidades necesarias para sobrevivir en una sociedad

enfocada en el conocimiento digital.

Las tecnologías en educación deben usarse para mejorar la calidad de los

aprendizajes. No se trata de que los estudiantes "aprendan computación" se trata

de ofrecer a los estudiantes experiencias de aprendizaje completamente nuevas,

estrategias de construcción colaborativa de conocimiento, centradas en la

obtención de resultados de calidad, medibles y demostrables.

Aunque la noción tecnológica no es la solución a los problemas de la enseñanza

y aprendizaje de las distintas asignaturas, ésta se ha convertido paulatinamente

en un agente catalizador del proceso de cambio en la educación de las distintas

disciplinas.

Son muchas las materias educativas que aprovechan los avances digitales,

también la geometría puede beneficiarse en gran medida de los progresos

Page 18: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

5

surgidos. Éstos son aplicables a la enseñanza y al aprendizaje gracias en parte a

las posibilidades que ofrecen de manejar dinámicamente objetos que permiten al

estudiante vivir nuevas experiencias en un ambiente de exploración.

La necesidad de la enseñanza de la geometría en el ámbito educativo responde,

en primer lugar, al papel que ésta desempeña en la vida cotidiana.

Un conocimiento geométrico básico es indispensable para desenvolverse en el

día a día: para orientarse reflexivamente en el espacio; para hacer estimaciones

sobre formas y distancias; para hacer apreciaciones y cálculos relativos a la

distribución de los objetos en el espacio, etc.

La orientación espacial, fruto de una paulatina organización mental del espacio

exterior, es un objetivo central de la educación geométrica en los primeros niveles

educativos. Las clasificaciones, ordenaciones, etc., se hacen inicialmente de

acuerdo a criterios muy simples, de carácter sensomotor, relativos, entre otros, a

la forma, el tamaño o la distancia.

Es por ello que el presente proyecto integrador propone el "Desarrollo de una

aplicación basada en el reconocimiento automático de patrones en

imágenes aplicada a la educación", con lo que se pretende realizar un aporte a

la educación para el aprendizaje de geometría básica.

Page 19: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

6

2. MARCO TEÓRICO

2.1 Reconocimiento automático de patrones: Previo a la explicación del

reconocimiento automático de patrones en imágenes describiremos tres

definiciones importantes.

- Patrón: Conjunto de características que determinan un objeto, estas

características son las que diferencian un objeto de otro.

- Clase: Conjunto de objetos que tienen características similares.

- Reconocimiento: Proceso en el que se asigna un objeto a una clase.

Para el reconocimiento de patrones en imágenes el primer paso que hay que

realizar es procesar la imagen de tal manera que las características deseadas se

distingan claramente y así lograr definir los patrones que nos permitan identificar

objetos dentro de la imagen.

A continuación se detallan las diferentes técnicas de procesamiento de imágenes

utilizadas en el desarrollo de este proyecto.

2.2 Procesamiento de Imágenes: El procesamiento de imágenes tiene como

objetivo mejorar el aspecto de las imágenes y hacer más evidentes en ellas ciertos

detalles que se desean hacer notar. La imagen puede haber sido generada de

muchas maneras, por ejemplo, fotográfica, o electrónicamente. El procesamiento

de las imágenes se puede en general hacer por medio de métodos ópticos, o bien

por medio de métodos digitales, en una computadora.6

El procesamiento de imágenes se puede en general, resumir en cuatro etapas7

(figura 2-1).

6 (Malacara, n.d.) 7 (Reconocimiento de imágenes)

Page 20: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

7

Figura 2-1. Etapas del procesamiento de imágenes (Wainschenker, Massa, & Tristan, 2011)

a) Captura: Este paso consiste en obtener la imagen con la cual se va a trabajar,

la captura de la imagen se puede realizar a través de medios electrónicos como

cámaras fotográficas, cámaras de video, escáner entre otros. Para obtener una

imagen adecuada se debe tomar en cuenta las condiciones bajo las que la imagen

será tomada como por ejemplo distancia, luz, resolución, etc., esto determinará

qué tan complejo será el pre-procesamiento que se implementará.

b) Pre-procesamiento: Consiste en mejorar la imagen original para el proceso

posterior, la mejora se realiza mediante la reducción del área de trabajo y la

eliminación de ruido.

Para la reducción del área de trabajo es frecuentemente usado el proceso de

Binarización. A continuación se explica dicho proceso.

Binarización8: Convierte la imagen recibida a una imagen en blanco y

negro, por ende la información de la imagen se reducirá a dos valores 0 y

1. El proceso que se realiza para binarizar una imagen es el siguiente:

Se compara cada píxel de la imagen con un determinado umbral 𝑡 si el

valor del píxel es mayor que 𝑡 tomará el valor de 1 caso contrario el valor

que se le asignará será 0.

𝐼(𝑥, 𝑦) = {1 𝑠𝑖 𝑓(𝑥, 𝑦) > 𝑡0 𝑠𝑖 𝑓(𝑥, 𝑦) ≤ 𝑡

8 (Capítulo 2. Técnicas de procesamiento digital de imágenes y reconocimiento de patrones)

Captura Pre-procesamiento

Segmentación y Extracción de

CaracterísticasIdentificación de objetos

Page 21: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

8

Por otro lado para la eliminación de ruido generalmente se utilizan filtros los cuales

trabajan con máscaras de convolución.

Máscara de Convolución9: Dicha máscara no es otra cosa que una matriz

generalmente de tamaño 3x3, en donde sus valores están ya determinados

dependiendo del filtro a aplicarse. Como su nombre indica este tipo de

máscaras sirve para realizar la convolución que no es otra cosa que el

cálculo de un nuevo valor de intensidad de un píxel a partir de los valores

de sus píxeles vecinos.

El proceso para la aplicación de una máscara de convolución es el

siguiente:

- En la imagen se ubica el píxel a ser calculado (marcado en rojo en

la figura 2-2), posteriormente se identifican sus vecinos (marcados

en amarillo en la figura 2-2), el número de éstos vendrá

determinado por el área de acción sobre la que actuará la máscara

de convolución.

- Se multiplica miembro a miembro el valor de cada píxel vecino con

el valor correspondiente de la máscara de convolución.

- Los resultados obtenidos de cada multiplicación se suman y se

obtiene el nuevo valor del píxel determinado inicialmente.

Figura 2-2. Máscara de Convolución: Proceso de Aplicación

En este proyecto para la eliminación de ruido se implementó el filtro Gaussiano el

cual está explicado a continuación.

9 (Maseda Martínez, Ramos Arcos, Rey Piñero, & Rodríguez Rodríguez, n.d.)

23 34 43 86 23

3 29 56 90 67

23 64 86 56 90

23 76 64 76 86

67 67 34 67 90

23 23 64 64 64

90 34 25 25 25

86

0 1 0

0 0 0

0 0 0

Imagen Máscara Resultado

Page 22: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

9

Filtro Gaussiano10: El propósito del filtro gaussiano es dar un efecto de

suavizado a la imagen y reducir el ruido presente. El ruido en imágenes

puede ser producido por factores como:

- Digitalización de la imagen.

- Mala iluminación, mientras menos sombra haya en la imagen

menor es la probabilidad de ruido.

- Zoom excesivo.

- Sensor fotográfico sobrecalentado, entre otros.

El filtro gaussiano consiste en la mezcla de colores para conseguir un

efecto de desenfoque o difuminado, para este proceso se considera la

imagen como una matriz de puntos (píxeles), con valores determinados de

rojo, verde y azul (RGB). Los valores de los píxeles de la nueva imagen

serán una combinación de los puntos cercanos al píxel evaluado, de esta

forma si un punto rojo y azul están cerca, el píxel rojo se oscurecerá y el

azul se enrojecerá (figura 2-3).

Para determinar los píxeles cercanos al píxel a ser calculado se debe

especificar un radio de acción ya que no todos los píxeles influirán de la

misma manera, cuanto más cerca estén del píxel a modificar más influirán

no así los que estén más alejados. (Barros, 2007)

La máscara generalmente usada para la implementación del filtro

gaussiano es la siguiente:

1

273

[ 1 4 7 4 14 16 26 16 4741

26164

41267

26164

741]

Para aplicar una máscara gaussiana de AxB dimensiones a una imagen de

MxN dimensiones primero se debe crear una matriz de 0’s de dimensiones

10 (The University of Auckland, 2010)

Figura 2-3. Ejemplo Filtro Gaussiano

Page 23: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

10

(M+(A-1))X(N+(B-1)), y copiar la imagen original en el centro de dicha

matriz. Por ejemplo para una máscara de 5x5 se creará una matriz de

(M+4) filas por (N+4) columnas y se copiará la imagen (figura 2-4).

𝐼𝑂 = 𝐼𝑅 =

Imagen original

Imagen añadida filas y columnas de 0’s

Figura 2-4. Filtro Gaussiano: Aplicación.

Una vez realizado este paso, se procede a realizar la convolución entre la

imagen obtenida (IR) y la máscara gaussiana.

c) Segmentación11: Esta técnica consiste en descomponer una imagen en sus

partes constituyentes, es decir divide la imagen en objetos de interés y fondo, en

este proceso se identifican los bordes, las líneas o curvas, y se segmenta la

imagen en regiones, etc.

La segmentación se puede realizar en base a dos criterios diferentes:

- Similitud: Divide a la imagen basándose en la búsqueda de zonas que

tengan valores similares conforme al crecimiento de la región o la

umbralización.

- Discontinuidad: Divide a la imagen basándose en cambios bruscos del

nivel, permite la detección de puntos aislados, líneas o curvas y bordes.

En este trabajo para la detección de bordes se utilizaron los siguientes filtros:

11 (La Serna Palomino & Roman Concha, n.d.)

0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0

Page 24: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

11

Filtro Sobel12: Es un filtro de detección de bordes, el cual calcula la

variación de la intensidad de los pixeles en una imagen; un cambio drástico

de intensidad indica una mayor probabilidad de detección de borde.

El operador de sobel es usado para detectar los bordes en dos direcciones:

horizontal y vertical, para ello las máscaras de convolución típicamente

usadas son:

𝑋 = [−1 0 1−2 0 2−1 0 1

] 𝑌 = [−1 −2 −10 0 01 2 1

]

Proceso para aplicar el filtro Sobel

1. Convertir la imagen original (I) de dimensiones MxN a una imagen en escala

de grises (IG).

2. Crear una matriz de 0’s de dimensiones (M+(A-1))x(N+(B-1)) para una

máscara de dimensiones AxB, y sobre esta copiar la imagen original

ubicándola en el centro. En la figura 2-5 se muestra un ejemplo para una

máscara de 3x3.

𝐼𝐺 = 𝐼𝑅 =

Imagen en escala de grises

Imagen añadida filas y columnas de 0’s

Figura 2-5. Filtro Sobel: Paso 2.

3. Aplicar la máscara de convolución 𝑋 o 𝑌 sobre la imagen obtenida

anteriormente (𝐼𝑅). De tal manera que el primer píxel que tomará el kernel

de la máscara de convolución coincida con el primer pixel de la imagen en

escala de grises (IG), el kernel no se aplica sobre los ceros añadidos

anteriormente (figura 2-6).

12 (tutorialspoint, 2016)

0 0 0 0 0 0 0

0 0

0 0

0 0

0 0

0 0

0 0 0 0 0 0 0

Page 25: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

12

Máscara

Imagen (IR)

Figura 2-6. Filtro Sobel: Paso 3.

Filtro Canny13: Es un operador de detección de bordes que implementa

un proceso de múltiples etapas lo que hace de Canny un algoritmo óptimo.

El proceso del algoritmo de Canny es el siguiente:

o Eliminación del ruido: Para este proceso típicamente se aplica el

filtro de Gauss sobre la imagen original.

o Obtención de la intensidad del gradiente de la imagen: Para

este paso se utiliza la implementación del filtro de sobel en sus dos

direcciones X e Y.

o Supresión no máxima al resultado del gradiente: Consiste en

eliminar los bordes más delgados, el procedimiento que se sigue

es:

Se recorre pixel por pixel la imagen y se evalúa el valor del

gradiente con respecto al de sus vecinos, si el valor de

gradiente del pixel actual es el mayor con respecto a sus

vecinos entonces se conserva el valor caso contrario se

suprimirá.

o Doble Umbral: Se fijan dos valores de umbral 𝑈1 𝑦 𝑈2 de tal

manera que 𝑈1 > 𝑈2, se evalúa pixel por pixel de la imagen y si la

intensidad del píxel actual es mayor que 𝑈1 se considera un borde

fuerte, si está entre 𝑈1 y 𝑈2 se considera un borde débil y si su

13 (Canny Edge Detection, 2009)

0 0 0 0 0 0 0

0 0

0 0

0 0

0 0

0 0

0 0 0 0 0 0 0

-1 0 1

-2 0 2

-1 0 1

Page 26: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

13

intensidad se encuentra por debajo de 𝑈2 será eliminado. Para este

proceso se emplea la automatización del umbral que está detallado

en el Apartado 3.4.

o Seguimiento de borde por Histéresis: En este último paso se

evalúa los pixeles que fueron considerados como bordes débiles

ya que muchos de ellos pueden ser resultado del ruido presente en

la imagen. Para la evaluación de los píxeles se procede de la

siguiente forma:

Alrededor del píxel débil se verifica una vecindad 8-

vecinos, si alguno de sus píxeles vecinos es un píxel de

borde fuerte el pixel actual se conserva caso contrario se

suprime.

Siguiendo con la etapa de segmentación basada en la discontinuidad tenemos

como método principal para la detección de líneas y círculos a la transformada de

Hough que se describe a continuación.

Transformada de Hough14

- Para Líneas: La teoría de la transformada de Hough nos dice que toda

línea recta puede ser representada por un punto en el espacio de

coordenadas polares (𝛾, 𝜃) donde:

𝛾: Representa la distancia entre la línea y el origen.

𝜃: Representa el ángulo del vector que va desde el origen hasta la línea y

que corta a ésta de manera perpendicular. (Véase figura 2-7).

Figura 2-7. Representación de coordenadas polares (Wikipedia, 2014)

14 (Rossius)

Y

X 𝜃 O

𝛾

Page 27: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

14

Dado que por un mismo punto pasan muchas líneas diferentes por cada punto en

la imagen original se obtendrá un conjunto de coordenadas (𝛾, 𝜃), este conjunto

de coordenadas determinará una curva sinusoidal en el espacio de Hough. Para

un conjunto de puntos existirá un conjunto de curvas sinusoidales, y las

coordenadas del punto de intersección de dichas curvas en el espacio de Hough

representarán la línea que contenga el conjunto puntos. Para una mejor

comprensión a continuación se presenta un ejemplo.

Ejemplo

Considere los puntos 𝑝1, 𝑝2, 𝑝3 por cada punto pasarán 𝑛 líneas y cada línea estará

determinada por un par de coordenadas (𝛾, 𝜃).(figura 2-8)

Figura 2-8. Diagrama de la Transformada de Hough (Wikipedia, 2014)

Cada par de coordenadas (𝛾, 𝜃) es representado en el espacio de Hough y cada

conjunto de líneas que pasan por un punto determinan una curva sinusoidal en

dicho espacio, el punto de intersección de dichas curvas determinan una distancia

(𝛾) y un ángulo (𝜃) coordenadas las cuales representan la línea que pasa por los

puntos 𝑝1, 𝑝2, 𝑝3. (Véase figura 2-9).

𝒑𝟏 𝒑𝟐

𝒑𝟑

𝒑𝟏 𝒑𝟐

𝒑𝟑

𝒑𝟏 𝒑𝟐

𝒑𝟑

Page 28: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

15

Espacio de la Transformada de Hough (Wikipedia, 2014)

Figura 2-9. Transformada de Hough: Líneas

- Para círculos15: La transformada de Hough para círculos es usada para

determinar los parámetros de una circunferencia cuando el conjunto de

puntos (𝑥, 𝑦) que determinen el perímetro de la misma es conocido.

Una circunferencia de radio 𝑟 y centro (𝑎, 𝑏) es descrita por las siguientes

ecuaciones paramétricas:

𝑥 = 𝑎 + 𝑟𝑠𝑖𝑛(𝜃)

𝑦 = 𝑏 + 𝑟𝑐𝑜𝑠(𝜃)

Donde:

𝑥, 𝑦: Coordenada de un punto perteneciente al perímetro de la

circunferencia.

𝑎, 𝑏: Coordenadas del centro de la circunferencia.

𝑟: Radio de la circunferencia.

𝜃: Ángulo que recorre de 0° a 360°.

Si no se conoce el radio 𝑟 en la aplicación de la transformada de Hough

tendrán que determinarse las tripletas (𝑎, 𝑏, 𝑟) que describan un círculo lo

que ocasionará lentitud en el proceso y que se consuma demasiada

memoria del ordenador, por lo tanto es recomendable definir de manera el

radio 𝑟.

15 (Rhody, 2005)

Y

X

𝒑𝟏 𝒑𝟐

𝒑𝟑

. Espacio Lineal

Page 29: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

16

En el caso de este proyecto el valor del radio es desconocido, por lo que

de acuerdo a los requerimientos de la función cv2.HoughCircles

(Apartado 3.2.1) se definieron las variables minRadius y maxRadius, lo

que definirá un rango de valores de radio dentro de los cuales se

identificarán las circunferencias.

Una vez conocido el radio y las coordenadas de los puntos que determinan

el perímetro de la circunferencia el proceso de aplicación de la

transformada de Hough para círculos es el siguiente:

o Se toma el radio conocido 𝑟, y como centro cada punto (𝑥, 𝑦) y se

procede a graficar las circunferencias que cada triada (𝑥, 𝑦, 𝑟)

definirán.

o Se almacena en una matriz de acumulación las coordenadas de los

puntos de intersección de las circunferencias y por cada círculo que

contenga dicha coordenada el contador se incrementará en 1.

o Se define el máximo local de la matriz de acumulación lo que nos

proporcionará el centro que determinará la circunferencia de radio

𝑟.

Ejemplo

Considere los puntos 𝑝1, 𝑝2, 𝑝3 cada punto será el centro de las circunferencias

𝐶1, 𝐶2, 𝐶3 respectivamente (figura 2-10).

Figura 2-10. Izq. Puntos en espacio geométrico Der. Puntos en espacio Hough (Rhody, 2005)

𝒑𝟏

𝒑𝟐

𝒑𝟑

𝑪𝟏

𝑪𝟑

𝑪𝟐

𝑰𝟏

𝑰𝟑

𝑰𝟐 𝑰𝟒

𝐶

Page 30: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

17

Intersección de coordenadas (𝒙, 𝒚) Contador

𝐼1 2

𝐼2 2

𝐼3 2

𝐼4 3

Representación de la Matriz de Acumulación.

En este ejemplo las coordenadas de la intersección 𝐼4 determinarán el centro de

la circunferencia 𝐶 de radio 𝑟.

d) Identificación de objetos: En este paso lo que se hace es elaborar un sistema

que permita la toma de decisiones, en el caso de este proyecto el sistema recibirá

una imagen previamente procesada, para posteriormente analizar las

características obtenidas, dichas características se basaron en contabilizar el

número de vértices que tenían los polígonos encontrados en la imagen, se

descartaron los polígonos con un número de vértices menor y mayor a 4 con lo

que se logró la identificación de rectángulos dentro de la imagen. Para la

identificación de circunferencias una vez procesada la imagen se utilizó la función

cv2.HoughCircles proporcionada por la librería OpenCV (Apartado 3.2.1), dicha

función nos retorna como resultado una estructura que contiene triadas (𝑥, 𝑦, 𝑟)

que representan las coordenadas de centro y radio de cada circunferencia

reconocida en la imagen.

2.3 Clusterización: Consiste en dividir un conjunto de datos en clusters, en este

caso el conjunto de datos serán los píxeles que conforman la imagen y se dividirán

de acuerdo a la intensidad. Este proceso se realizará con el objetivo de encontrar

los umbrales óptimos para la implementación del filtro Canny. Para el proceso de

clusterización se estudiaron los siguientes métodos.

a) Método de Otsu16: Esta técnica es utilizada para la determinación automática

del umbral de segmentación, utiliza la varianza como medida de la dispersión de

los niveles de gris para determinar un único umbral adecuado.

El proceso que este método implementa se describe a continuación:

16 (Araújo, 2010)

Page 31: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

18

1) Se toma en cuenta una imagen que contiene 𝑁 píxeles donde la intensidad

de los píxeles se encuentra entre [1…𝐿].

2) Cálculo de la probabilidad de ocurrencia del nivel de gris 𝑖

𝑝𝑖 =𝑓𝑖𝑁

Donde:

𝑓𝑖: Número de píxeles con nivel de intensidad 𝑖.

𝑁: Número de píxeles en la imagen.

3) Cálculo de sumas acumulativas, para ello se divide el conjunto de píxeles

en dos clases así:

Si fijásemos un valor de umbral 𝑡 dividiríamos el conjunto de píxeles de la

siguiente manera:

𝐶1: [1,… , 𝑡]

𝐶2: [(𝑡 + 1),… , 𝐿]

Para lo cual la sumatoria de probabilidades sería:

𝜔1(𝑡) = ∑𝑝𝑖

𝑡

𝑖=1

𝜔2(𝑡) = ∑ 𝑝𝑖

𝐿

𝑖=𝑡+1

Donde

𝑝𝑖: Probabilidad de ocurrencia del nivel de gris 𝑖

4) Cálculo de la media

𝜇1 = ∑𝑖. 𝑝𝑖

𝜔1(𝑡)

𝑡

𝑖=1

𝜇2 = ∑𝑖. 𝑝𝑖

𝜔2(𝑡)

𝐿

𝑖=𝑡+1

Donde

𝑝𝑖: Probabilidad de ocurrencia del nivel de gris 𝑖

5) Cálculo de varianza entre clases

𝜎𝐵2 = 𝜔1(𝜇1 − 𝜇𝑇)2 + 𝜔2(𝜇2 − 𝜇𝑇)2

Donde:

𝜇𝑇 = 𝜔1𝜇1 + 𝜔2𝜇2

6) El umbral óptimo 𝑡 es definido de tal manera que maximice la varianza 𝜎𝐵2

Page 32: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

19

b) Algoritmo K-Means17: Es un algoritmo de aprendizaje no supervisado que

permite la clasificación automática de datos, el procedimiento que realiza K-Means

consiste en dividir en 𝑘 grupos un determinado conjunto de datos en donde para

cada grupo existirá un centroide que lo determina.

Descripción del algoritmo K-Means.

1. Del grupo de datos se eligen 𝑘 centroides iniciales usualmente se hace de

manera aleatoria.

2. Se asigna cada dato al cluster asociado al centroide más cercano.

3. Se recalcula el centroide correspondiente a cada cluster calculando el

promedio de cada uno de los valores que pertenecen al mismo. Se repiten

los pasos 2 y 3 hasta que ya no haya cambios en los clusters o éstos sean

pequeños, una vez logrado esto se asigna el centroide como fijo.

4. Se hace una última pasada asignando cada dato al centroide fijo más

cercano. (Véase figura 2-11).

Figura 2-11. Pasos del Algoritmo K-Means (Wikipedia, 2016)

Aplicación del resultado de K-Means para la automatización de los umbrales

canny en imágenes.

1. Dividir los píxeles en tres grupos o clases implementando K-Means.

2. Ordenar en forma ascendente los grupos.

17 (Métodos no Jerárquicos de Análisis Clusters)

Page 33: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

20

3. Encontrar el máximo del grupo 1 y promediarlo con el mínimo del grupo 2

para obtener el primer umbral.

4. Para conseguir el segundo umbral se promedia el máximo del segundo

grupo con el mínimo del grupo 3.

Page 34: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

21

3. METODOLOGÍA

3.1 Metodología del Proyecto.

Para el proceso de desarrollo de la aplicación se ha tomado como base la

metodología UWE (UML-Based Web Engineering), dicha metodología consta de

distintas fases, pero de acuerdo a las necesidades del proyecto se han aplicado

las siguientes:

Análisis y especificación de requerimientos

Diseño del sistema

Codificación del Software

A continuación se explica la ejecución de cada fase.

3.2 Análisis y especificación de requerimientos.

El presente proyecto tiene como fin el desarrollo de una aplicación basada en el

reconocimiento automático de patrones en imágenes, por lo tanto, se ha estudiado

los conceptos más importantes en cuanto a procesamiento de imágenes y ya que

ésta será aplicada a la educación se ha diseñado una interfaz amigable con el

usuario y de fácil manejo. La aplicación cumplirá con las siguientes

especificaciones:

Permitirá subir imágenes o tomar fotografías en formato png o jpg.

Procesará la imagen para su mejora (eliminación de ruido), permitiendo así

el reconocimiento de patrones.

Identificará dos tipos de figuras (círculos y rectángulos).

Contará con una paleta de colores que permitirá la interacción usuario-

aplicación.

Permitirá al usuario identificar las formas encontradas en la imagen

mediante la interacción con botones de identificación.

Las figuras se animarán para dar un mayor énfasis a las formas

identificadas.

De acuerdo a las especificaciones de la aplicación se analizaron las tecnologías

aplicables al desarrollo de este proyecto, a continuación se detalla la selección de

tecnologías y en qué fase del desarrollo fueron empleadas.

Page 35: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

22

3.2.1 Selección de tecnologías

De acuerdo a los requerimientos de la aplicación, se dividió el desarrollo de la

misma en dos fases y en cada una de ellas se hizo uso de distintas tecnologías.

a) Selección de tecnologías para el desarrollo de la librería.

Para el desarrollo de esta fase nos enfocaremos en el lenguaje de programación

Python (versión 2.7.10) junto con la librería OpenCV (versión 3.0.0), a

continuación se argumenta la elección realizada con una breve explicación y

detalle de características de cada uno.

Python18: Es un lenguaje de programación creado por Guido van Rossum

a principios de los 90. Python permite desarrollar todo tipo de programas

desde aplicaciones Windows hasta servidores de red o incluso páginas

web. Entre sus principales características encontramos que es un:

- Lenguaje de Alto nivel: Un lenguaje de alto nivel permite al

programador utilizar una sintaxis sencilla ya que son más cercanos

al lenguaje natural.

- Lenguaje interpretado: Un lenguaje interpretado es aquel en el

que cada una de sus instrucciones son traducidas en tiempo real

por un “intérprete” al lenguaje de máquina, este proceso se repite

cada vez que se ejecuta el programa.

- Lenguaje Multiplataforma: El intérprete de Python puede ser

utilizado en diferentes plataformas y sistemas operativos como por

ejemplo Windows, Mac OS X y Linux.

- Lenguaje Orientado a Objetos: Este tipo de lenguaje permite

crear objetos con propiedades (atributos) que los diferencia de

otros objetos pertenecientes a otra clase, esta organización permite

que el código sea más fácil de entender y reutilizar.

Opencv19: Es una librería de código abierto, permite utilizar y modificar sus

algoritmos, proporciona funciones para el procesamiento de imágenes y

para visión computacional, Opencv es compatible con Linux, Windows y

MacOSx. Opencv tiene una estructura modular, los módulos principales

son:

18 (cuatroríos TECNOLOGÍAS, 2014) 19 (Garcia, 2013)

Page 36: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

23

- core: Incluye las estructuras de datos básicas y las funciones

básicas de procesamiento de imágenes.

- highhui: Provee la capacidad de captura de vídeos e imágenes,

así como la capacidad de captura de eventos.

- Imgproc: Contiene algoritmos para el procesamiento de imágenes

como filtrado y transformación de imágenes.

- video Dispone de algoritmos para el seguimiento de objetos.

- Objdetect: Incluye algoritmos de detección y reconocimiento de

objetos para objetos estándar.

En el presente proyecto se hace uso de distintas funciones proporcionadas

por OpenCV, siendo las principales las siguientes:

cv2.HoughLinesP20: Encuentra segmentos de línea en imágenes

binarias usando la transformada probabilística de Hough. Los

parámetros que recibe esta función en Python son los siguientes:

o image: Imagen binaria.

o rho: Resolución en píxeles de la distancia del vector que va

desde el origen hasta la línea.

o theta: Resolución del ángulo en radianes.

o threshold: Número de píxeles seguidos por los que debe

pasar una línea para ser considerada como tal.

o Lines: Vector de salida que contiene las coordenadas que

definen las líneas, cada línea está definida por un vector de

cuatro elementos (𝑿𝟏 , 𝒀𝟐, 𝑿𝟑 , 𝒀𝟒 ).

o minLineLength: Mínima longitud de la línea, segmentos de

línea con longitud menor a la establecida no serán tomados en

cuenta.

o maxLineGap: Máxima distancia permitida entre puntos de la

misma línea para vincularlos. Si la distancia entre los puntos de

la misma línea es mayor a lo establecido no se vincularán los

puntos por lo que se considerarán dos segmentos de línea

diferentes.

Page 37: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

24

cv2.HoughCircles20: Encuentra círculos en una imagen en escala

de grises usando la transformada de Hough. La función recibe los

siguientes parámetros en Python:

o image: Imagen en escala de grises.

o method: Método de detección usado generalmente se utiliza

el método CV_HOUGH_GRADIENT ya que es el único método

disponible actualmente en OpenCV.

o dp: Resolución de la matriz de acumulación, si dp=1 la matriz

tiene la misma resolución que la imagen de entrada (image).

o minDist: Mínima distancia entre centros de los círculos.

o circles: Vector de salida que contiene las coordenadas de

centro y el radio que define una circunferencia, cada

circunferencia está definida por un vector de tres elementos

(𝑥, 𝑦 , 𝑟𝑎𝑑𝑖𝑜).

o param1: Umbral mayor de los dos umbrales fijados en Canny.

o param2: Número de píxeles seguidos por los que debe pasar

un circulo para ser considerado como tal.

o minRadius: Radio mínimo que tendrán las circunferencias a

encontrarse.

o maxRadius: Radio máximo que tendrán las circunferencias a

encontrarse.

b) Selección de tecnologías para el desarrollo de la aplicación cliente.

En esta etapa haremos énfasis en las tecnologías HTML5, JavaScript y CSS que

nos permitieron el desarrollo de la aplicación cliente, además nos enfocaremos en

el framework Apache Cordova (versión 2.0)21 que permitió embeber la aplicación

web en una aplicación móvil y en el microframework Flask (versión 0.11.1) que

permitió el desarrollo del servidor de aplicación.

HTML5 (Lenguaje de Marcado de Hipertexto):22 Es la última versión de

HTML, contiene una serie de nuevos atributos y elementos lo que permite

a los sitios web ser más diversos y de gran alcance. A continuación se

detallan algunas de las mejoras.

20 (OpenCV, 2014) 21 (APACHE SOFTWARE FOUNDATION, 2015) 22 (Mozilla Developer Network, 2016)

Page 38: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

25

- Sin conexión y almacenamiento: Permite almacenar datos

localmente en el lado del cliente y operar sin conexión de manera

más eficiente.

- Rendimiento e Integración: Brinda una mayor optimización de la

velocidad (mejor uso del hardware).

- Video: Admite formatos como mp4, webm y ogg lo que permite que

el navegador seleccione el formato que sea compatible con su

sistema de reproducción.

- Audio: Permite al usuario manejar las características de play y

pause mediante la implementación de un elemento gráfico sin

necesidad de plugins como el de Flash, además admite distintos

formatos como ogg, AAC, Speex, MP3, etc.

- Canvas: Facilita la representación de imágenes y de variedad de

gráficas (figuras geométricas, texto, paths), además permite la

animación e interactividad mediante programación en JavaScript ya

que responde a eventos (mouse, teclado, touch, etc).

JavaScript:23 Es un lenguaje de programación orientado a objetos, que se

utiliza en páginas web o aplicaciones de servidor. JavaScript permite la

utilización de sentencias como if, o bucles como for, while, etc. Las

funciones básicas de este lenguaje son soportadas en la mayoría de

navegadores, a continuación se listan algunas de sus características.

- Es dinámico responde a eventos de hardware (teclado, mouse,

etc.) en tiempo real.

- El código JavaScript se ejecuta en el cliente por lo que el servidor

no es solicitado más de lo debido. Por ejemplo, las extensiones del

lado del cliente permiten que una aplicación coloque elementos en

un formulario HTML y responda a eventos del usuario, tales como

ingreso de datos al formulario y navegación de páginas y por otro

lado las extensiones del lado del servidor permiten que una

aplicación se comunique con otra solo cuando esta sea invocada.

(Mozilla Developer Network, 2015)

- Disponibilidad de objetos limitada, lo que hace que procesos

sencillos requieran scripts complejos.

23 (Mozilla Developer Network, 2015)

Page 39: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

26

CSS24: Es un lenguaje que permite dar estilo al documento HTML que se

desarrolla, permite separar la estructura del documento de su presentación

lo que facilita el manejo del diseño para varias web al mismo tiempo. En

su versión 3 CSS posee nuevas características que le otorgan diferentes

capacidades, para una breve descripción se detallarán tres de ellos.

- Media Queries25: Permiten adaptar el contenido a distintas

resoluciones de pantalla, es un principio básico de la tecnología

Responsive Design.

- Selectors Level 326: Son reglas condicionales que permiten aplicar

hojas de estilos a elementos HTML. Existen diferentes tipos de

selectores entre ellos tenemos:

o Selector Universal: Se utiliza para seleccionar todos los

elementos de la página, este selector se indica mediante un

asterisco (*).

*{ estilo }

o Selector de Tipo o Etiqueta: Selecciona los elementos de la

página cuya etiqueta coincide con el valor del selector, para

implementar este selector solo se indica la etiqueta HTML

sin los caracteres (<>). Por ejemplo para la etiqueta

<p>……</p> el estilo CSS sería definido así:

p { estilo }

o Selector descendente: Selecciona los elementos que se

encuentra dentro de otros elementos, es decir cuando un

elemento se encuentra entre las etiquetas de apertura y

cierre de otro elemento. Por ejemplo si en HTML tenemos

el siguiente código:

<p><span>…………</span></p>

24 (w3schools, n.d.) 25 (MOZILLA DEVELOPER NETWORK, 2016) 26 (LIBROSWEB, 2015)

Page 40: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

27

El estilo CSS para la etiqueta <span> irá definido así:

p span{ estilo }

o Selector de Clase: Consiste en utilizar el atributo class de

HTML sobre un elemento para indicar directamente la regla

CSS que se debe aplicar. La sintaxis sería la siguiente:

<p class=”nombre_clase”>…</p>

Y la definición del estilo asociado a la clase iría así:

.nombre_clase{estilo}

o Selectores de ID: Permite seleccionar un elemento de una

página mediante su atributo id. Para la implementación en

CSS se utiliza el símbolo almohadilla (#) antes del id así:

#nombre_id{estilo}

- Color: Permite la implementación de propiedades de color como la

opacidad (opacity) ya que soporta el canal alpha (rgba).

Seguidamente se presenta un esquema de la integración de las tecnologías

descritas para el desarrollo de la interfaz cliente de este proyecto (figura 3-1).

Page 41: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

28

Figura 3-1. Esquema de Integración de Tecnologías

A continuación se presenta la descripción de Apache Cordova que es la tecnología

que permitió el desarrollo de la aplicación móvil, proporcionando así una mayor

interactividad con el usuario al permitir la obtención de imágenes fotograficamente.

Apache Cordova27: Es un framework que permite la creación de

aplicaciones orientadas a dispositivos móviles utilizando herramientas web

como HTML5, CSS3 y JavaScript. Cordova proporciona además una serie

de API’s (Application Programming Interface) que permiten la

comunicación entre la interfaz web y las distintas funciones nativas de cada

dispositivo. Gracias a las herramientas de este framework se pueden

desarrollar aplicaciones móviles para las siguientes plataformas:

- Android.

- iOS.

- LGwebOS.

- FireOS.

Las aplicaciones de Apache Cordova se basan en un común config.xml

que es el archivo que proporciona información sobre la aplicación y

especifica los parámetros que afectan el comportamiento de la misma, por

27 (APACHE SOFTWARE FOUNDATION, 2015)

•Estructura de la página de la aplicación.

•Programación de la página de la aplicación, script para conexión

con el servidor envío y recepción de datos.

•Diseño de la página de la aplicación.

Page 42: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

29

ejemplo cuando responde a cambios de orientación del dispositivo.

Además incluye un archivo cordova.js que envuelve cada plugin

Cordova dentro de su propio módulo.

Apache Cordova permite utilizar dos flujos de trabajo para la creación de

aplicaciones móviles, cada uno de ellos ofrece varias ventajas.

- Flujo de trabajo Multiplataforma (CLI): Este flujo de trabajo se

centra en CLI que es una herramienta de alto nivel que permite

desarrollar proyectos para varias plataformas a la vez, CLI copia un

conjunto común de recursos web para cada plataforma móvil, lo

que no hace necesario cambios de configuración para cada

plataforma.

- Flujo de trabajo centrada en Plataforma: Este flujo de trabajo es

ideal para desarrollar una aplicación orientada a una sola

plataforma, permite un mayor acceso a opciones de desarrollo

proporcionadas por cada SDK, es decir permite modificaciones de

la aplicación a bajo nivel.

En ambos casos Apache Cordova permite la depuración o prueba de la

aplicación tanto en un emulador (dispositivo virtual), como en un dispositivo

móvil real (conexión USB), adicionalmente para acceder a la consola de

depuración de la aplicación podemos ingresar en nuestro navegador a

chrome://inspect, esto nos permitirá visualizar en tiempo real la

ejecución de la aplicación.

A continuación se presenta la descripción de Flask, que es la tecnología que

permitió incrustar en un servidor la librería Python desarrollada.

Flask28: Es un microframework desarrollado en lenguaje Python que

permite el desarrollo de aplicaciones web de una manera sencilla. Sus

características más importantes son:

- Tiene embebido su propio servidor web, levanta automáticamente

el puerto 5000 para mostrar el contenido web.

- Contiene un depurador que permite probar, limpiar y monitorizar la

ejecución del programa asociando el código fuente con las

instrucciones ejecutadas por el programa.

28 (Rodríguez, 2015)

Page 43: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

30

- Es de fácil desarrollo ya que no divide las tareas web por módulos

lo que facilita el desarrollo de las aplicaciones sencillas, permite la

creación de rutas a las cuales se les asigna un método que

responde por ella.

Para el desarrollo de este proyecto, Flask se utilizó en la creación del servidor web

que contiene la librería para la detección automática de patrones, dicho servidor

recibe la imagen enviada por el usuario a través de la aplicación, la procesa y de

vuelta envía una estructura de puntos con los que se grafican las figuras

geométricas correspondientes.

Para el envío de la imagen desde la aplicación se utilizó codificación base64, la

cual se explica a continuación.

Base6429: Es un sistema de codificación que se basa en el uso de caracteres

ASCII, permite el envío de archivos, imágenes, credenciales, etc. Transporta los

datos de tal forma que preserva su integridad para que al momento de

decodificarlos se obtengan los bytes originales.

Para explicar el proceso de codificación lo haremos mediante un ejemplo, para

ello codificaremos la palabra Hola.

1.- Se convierte la cadena a código Ascii

Letra Valor Ascii

H 72

o 111

l 108

a 97

29 (González, 2014)

Page 44: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

31

2.- Una vez obtenidos los valores Ascii se los convierte a valor binario.

Valor Ascii Valor Binario

72 01001000

111 01101111

108 01101100

97 01100001

3.- El valor binario debe ser de 8 dígitos, si no es así se debe añadir tantos

0’s como sea necesario. Luego concatenaremos los valores binarios.

01001000011011110110110001100001

4.- Dividiremos la cadena en grupos de 6 bits, si un grupo queda

incompleto se debe añadir tantos 0’s como se necesite para completarlo

010010 000110 111101 101100 011000 010000

5.- Los valores binarios obtenidos se transformarán a valores decimales

Valor Binario Valor Decimal

010010 18

000110 6

111101 61

101100 44

011000 24

010000 16

6.- Se toma el valor decimal y se procede a buscar su equivalente en

base64 de acuerdo a los datos de la figura 3-2.

Page 45: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

32

Figura 3-2. Tabla de conversión Decimal a Base64 (Cruz, 2012)

El resultado será el siguiente:

Valor Decimal Valor Base64

18 S

6 G

61 9

44 S

24 Y

16 Q

3.3 Diseño del sistema.

3.3.1 Diseño de métodos para la detección de patrones.

La aplicación permite la detección de dos tipos de figuras (rectángulos y círculos),

se ha probado la detección de otros tipos de cuadriláteros pero esto aumentaba

considerablemente el problema de detección de figuras "erróneas" (figura 3-6).

Además buscamos simplicidad por tratarse de una aplicación educativa orientada

a los más pequeños. Por estos motivos se ha decidido que la aplicación finalmente

sólo detecte rectángulos y círculos; de acuerdo a ello se han establecido los

siguientes métodos.

a) Detección de Rectángulos: Para la detección de rectángulos se desarrollaron

los siguientes métodos:

Método1: Este método permite la detección de rectángulos de dos formas

distintas de acuerdo al método empleado para la automatización del

umbral Canny, este método pueden ser Clusterización (Apartado 2.3) o

Umbral estadístico (Apartado 3.4.1). De esto obtenemos:

Page 46: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

33

i. Método1 Estadístico.

ii. Método1 Clusterización.

Para ambos casos el procesamiento para la imagen utilizado se muestra

en la figura 3-3.

Método2 o Método Alternativo: Para la detección de rectángulos en el

segundo método desarrollado se empleó un procesamiento de imagen

distinto en donde no interviene el proceso de automatización del umbral

para Canny, a continuación se presenta la figura 3-4 del procesamiento

implementado en el Método Alternativo.

b) Detección de Circunferencias: Para la detección de circunferencias se tiene

un solo método que contempla dos alternativas de acuerdo al método de

Imagen Original

Automatización del Umbral mediante

Umbral Estadístico o Clusterización

Aplicación del Filtro Canny

Implementación de la Transformada

de Hough

Detección de Contornos

Detección de Cuadrados

Figura 3-3 Método1. Procesamiento de Imagen

Figura 3-4. Método2. Procesamiento de Imagen

ImagenOriginalTransformacióna Escala de Grises

Aplicación del Filtro Gaussiano

Binarización de la Imagen

Detección de Contornos

Detección de Cuadrados

Page 47: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

34

automatización del umbral Canny empleado, la automatización del umbral es

utilizada para la aplicación de la función cv2.HougCircles (Apartado 3.2.1) que

requiere como parámetro el umbral mayor de los dos umbrales fijados en Canny.

De esta manera se tiene:

Método1 Estadístico.

Método1 Clusterización.

El procesamiento de imágenes para las dos alternativas de este método se

muestra en la figura 3-5.

Figura 3-5. Procesamiento de Imágenes para la Detección de Circunferencias

Ejemplo de detección de figuras

Imagen Original Detección cuadriláteros y

círculos

Detección de rectángulos y

círculos

Imagen OriginalTransformación

a Escala de Grises

Implementación de la

Transformada de Hough para

Círculos

Obtención de coordenadas de

cada círculo detectados.

Page 48: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

35

Figura 3-6. Ejemplo detección de cuadriláteros, rectángulos y círculos

3.3.2 Diseño de la interfaz cliente.

Aquí se establece la apariencia que tendrá la aplicación, qué objetos visualizará

el usuario en la interfaz, así como la funcionalidad que posee la aplicación. La

aplicación consta de cuatro secciones y se presenta en dos versiones, web y

móvil. A continuación se muestra la visualización de pantalla de cada sección en

cada una de sus versiones.

a) Sección Inicio: En esta sección se presenta una breve descripción de la

aplicación junto con las instrucciones para usar la misma, además en esta sección

está el botón Menú que permitirá dirigirse a las demás secciones de la aplicación.

Véase desde la figura 3-6 hasta la figura 3-9.

Figura 3-7. Visualización de Pantalla: Sección Inicio.

Page 49: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

36

Figura 3-8. Visualización Móvil: Sección Inicio.

Figura 3-9. Visualización de Pantalla: Sección Inicio-Menú

Page 50: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

37

Figura 3-10. Visualización Móvil: Sección Inicio-Menú.

b) Sección Información: Aquí se detalla brevemente el desarrollo de este

proyecto, las tecnologías y los procesos utilizados. Véase figura 3-10 y

figura 3-11.

Figura 3-11. Visualización de Pantalla: Sección Información.

Page 51: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

38

Figura 3-12. Visualización Móvil: Sección Información.

c) Sección Aplicación: Esta sección permite hacer uso de la aplicación, consta

de una paleta de colores en donde se elegirán dos colores que serán utilizados

para dibujar las figuras detectadas, además permite subir la imagen para la

detección de figuras y sobre la cual se dibujarán las mismas, finalmente consta de

dos botones que permiten que el usuario identifique qué figuras fueron dibujadas.

Véase figura 3-12 y figura 3-13.

Figura 3-13. Visualización de Pantalla: Sección Aplicación.

Page 52: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

39

Figura 3-14. Visualización Móvil: Sección Aplicación.

d) Sección Documentación: Aquí se detallan links en donde se puede acceder

a información completa sobre el desarrollo del proyecto. Véase figura 3-14 y figura

3-15.

Figura 3-15. Visualización de Pantalla: Sección Documentación.

Page 53: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

40

Figura 3-16. Visualización Móvil: Sección Documentación.

3.4 Codificación del software.

3.4.1 Codificación de la librería para la detección de patrones.

Para el desarrollo de la librería se hizo uso del IDE JetBrains PyCharm Community

Edition30 el cual permitió la programación de la librería con lenguaje Python junto

con la librería OpenCV.

La librería para el reconocimiento automático de patrones contiene varios métodos

a continuación se detallan los principales.

a) Método umbral_est: Este método recibe el siguiente parámetro:

- img: imagen original.

El proceso para la automatización de umbrales que este método realiza es el

siguiente31:

- Calcula la mediana de la intensidad de los píxeles de la imagen.

- Determina dos umbrales 𝑡𝑚𝑖𝑛, 𝑡𝑚𝑎𝑥 cada uno estará determinado por +/- un

valor de porcentaje determinado. Por defecto se utilizará un porcentaje del

33%. (Véase figura 3-16).

30 (Jet Brains, n.d.) 31 (Rosebrock, 2015)

Page 54: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

41

Figura 3-17. Método Estadístico: Proceso Automatización del Umbral.

Como resultado este método retorna dos valores t_min, t_max que

representan el umbral mínimo y máximo usados por el filtro de Canny.

b) Método lineas_hough: Los argumentos que recibe este método son:

- img_canny: Este parámetro es la imagen original a la que se le ha

aplicado el filtro canny para la detección de bordes.

- imagenoriginal: Es la imagen original enviada por el usuario, nos

permite crear una imagen binaria de iguales dimensiones.

- promedio: Es el promedio entre el alto y ancho de la imagen original, este

argumento se utiliza para automatizar los parámetros de la función

cv2.HoughLinesP.

En este método se aplica la función cv2.HoughLinesP proporcionada por la

librería Opencv, esta función permite identificar las líneas dentro de la imagen

img_canny, el método lineas_hough devuelve una imagen binaria que

contiene solamente las líneas identificadas.

c) Método detecta_rectangulo: Este método recibe dos argumentos:

- img_contours: hace referencia a la imagen resultante en el método

lineas_hough.

- imagoriginal: hace referencia a la imagen original la cual es enviada

por el usuario.

En este método se procesa la imagen de contornos img_contours para obtener

una imagen binarizada, a esta imagen se le aplica la función de Opencv

cv2.findcontours que permite encontrar los contornos en una imagen binaria,

seguido se aplica la función cv2.approxPolyDP que permite reducir el número

-33% +33%

t_min t_max

Page 55: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

42

de puntos que conforman los contornos, quedándose solamente con puntos

(vértices) que formen un polígono, a continuación se realiza una evaluación para

determinar el número de vértices y acorde a ello determinar si la figura es o no un

rectángulo. Este método devuelve un arreglo en el que se encuentran

almacenados los vértices de los rectángulos detectados.

d) Método detecta_circulos: En este método se detectan los círculos

presentes en la imagen, para ello los argumentos que recibe son:

- original: Hace referencia a la imagen original que será enviada por el

usuario.

- umbral: Es el valor más alto de los dos umbrales definidos en el método

canny.

- prome: Es el promedio de las dimensiones de la imagen original (ancho y

alto) este argumento se utiliza para automatizar los parámetros de la

función cv2.HougCircles.

El proceso que este método realiza es el siguiente: a la imagen original la

transforma en una imagen a escala de grises, seguidamente se le aplica la función

cv2.HougCircles la que nos permitirá la identificación de círculos para

finalmente dibujarlos sobre la imagen original. El método detecta_circulos

retorna una estructura de datos que contiene el centro y radio de los círculos

detectados.

A continuación se describe un método tentativo para la detección de rectángulos,

el cual emplea un procesamiento de imagen más sencillo, por ende la detección

se puede realizar solo en imágenes simples, dicho método es un antecedente que

permitió el desarrollo del método detecta_rectangulo.

e) Método metodo_alternativo: El proceso que este método realiza nos

proporciona otra opción para la detección de rectángulos, para ello este método

recibe dos argumentos que son:

- original: Es la imagen que el usuario envía.

- Umbral: Es el valor más alto de los dos umbrales definidos en el método

canny.

Page 56: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

43

Este método lo que hace es tomar la imagen original aplicarle un filtro gaussiano

y seguido binarizarla; a continuación se utiliza la función cv2.findContours que

nos permite encontrar los contornos de la imagen binarizada, luego se aplica la

función cv2.approxPolyDP que permite reducir el número de puntos que

conforman los contornos, quedándose solamente con puntos que formen un

polígono, finalmente se realiza una evaluación para determinar el número de

puntos y acorde a ello determinar si es o no un rectángulo. Para la detección de

círculos se utiliza el método detecta_circulos.

Como resultado este método retorna dos estructuras una con los vértices de los

rectángulos encontrados y otra con el centro y el radio de cada uno de los círculos

detectados.

3.4.2 Codificación de la aplicación cliente.

La aplicación se desarrolló mediante la implementación de las tecnologías

descritas en el apartado 3.2.1, a continuación se detalla el método principal

proporcionado por la librería jQuery (JavaScript) que es el que permite el envío de

la imagen así como la recepción de las estructuras con los vértices de las figuras.

a) Función $.ajax: Esta función nos permite enviar la imagen subida por el

usuario hacia el servidor para ser procesada, para ello recibe tres parámetros

importantes:

- url: Es la dirección del servidor a la que se va a enviar la imagen.

- data: Es la imagen subida por el usuario, codificada en base64 para ser

enviada.

- datatype: Es el tipo de dato con el que se define la imagen, permitirá al

servidor identificarla.

Una vez enviada la imagen hacia el servidor, entra en el proceso el método

imagen_procesar, a continuación se explica el funcionamiento de dicho

método.

b) Método imagen_procesar: En este método el proceso que realiza es el

siguiente:

Page 57: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

44

Recibe los datos enviados desde JavaScript, la imagen codificada en base64 y

de tipo json es cargada mediante la función json.loads.

Se decodifica la imagen mediante la función base64.decodestring, y se la

almacena en el servidor.

Finalmente se hace uso de la librería para procesar la imagen y obtener las

estructuras con los vértices de las figuras, las estructuras son enviadas hacia

JavaScript mediante json.dumps.

Una vez enviados las estructuras de vértices entra en trabajo la función success:

function(data), en donde data representa los datos que se envían desde el

servidor en este caso las estructuras de vértices, este proceso se ejecutará en el

lado del cliente.

c) success:function(data): Esta función lo que nos permite es dibujar las

figuras geométricas de acuerdo a los vértices recibidos. En esta función se

implementan métodos desarrollados en JavaScript y son los siguientes:

- dibuja_circulo: Este método recibe tres parámetros:

o x: coordenada x del centro de la circunferencia.

o y: coordenada y del centro de la circunferencia.

o r: radio de la circunferencia.

Los parámetros anteriores serán tomados de la estructura de vértices

recibida, y mediante la función context.arc se procederá a dibujar los

círculos que se determinen.

- dibuja_rectángulo: Este método recibe 4 argumentos que son:

o x: coordenada x de la esquina superior izquierda del rectángulo.

o y: coordenada y de la esquina superior izquierda del rectángulo.

o w: ancho del rectángulo.

o h: alto del rectángulo.

Los cuatro parámetros definidos se tomarán de la estructura de vértices

enviada por el servidor y con la función context.rect se realizarán los

dibujos de los distintos rectángulos encontrados.

Para realizar los dibujos de las distintas figuras encontradas se utilizó el elemento

canvas de HTML5 y en el estilo CSS se utilizó la propiedad z-index lo que

Page 58: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

45

permitió sobreponer el elemento canvas que contiene las figuras dibujadas sobre

la imagen original.

Page 59: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

46

4. RESULTADOS

Para tomar la decisión de que método para la detección de patrones se debe

emplear en la aplicación desarrollada se ha realizado una evaluación experimental

con un banco de imágenes seleccionadas de distintos datasets obtenidos de la

web. Se han utilizado 37 imágenes que cumplen con el requisito mínimo de tener

un elemento de forma cuadrada o circular.

A continuación se presenta una muestra de las pruebas realizadas.

Page 60: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

47

4.1 Pruebas con dataset de imágenes.

Imagen Original

Detección de Figuras

Método 1 Estadístico Método 1 Clusterización Método Alternativo (Sólo para

Rectángulos)

Page 61: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

48

Figura 4-1. Prueba detección de figuras: rectángulos y círculos

Page 62: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

49

Luego de realizar las pruebas con las imágenes obtenidas de los datasets se hizo

un estudio utilizando una fórmula que se considera la más pertinente para los fines

de este proyecto. La fórmula es la siguiente:

𝐹𝐷𝐶 − 𝐹𝐷𝐸

𝐹𝐼

Donde:

𝐹𝐷𝐶: Número de Figuras (círculos o rectángulos) detectadas Correctamente.

𝐹𝐷𝐸: Número de Figuras (círculos o rectángulos) detectadas Erróneas.

𝐹𝐼: Número de Figuras (círculos o rectángulos) en la imagen.

Una vez empleada esta fórmula sobre las 37 imágenes trabajando con los

diferentes métodos se han conseguido valores promedio que señalan la eficiencia

de detección de patrones de cada método. A continuación se presentan las tablas

de resultados.

Page 63: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

50

4.2 Tablas de Resultados

DATOS MÉTODO 1 ESTADÍSTICO MÉTODO 1 KMEANS

No. IMAGEN CÍRCULOS EN LA

IMAGEN CÍRCULOS

DETECTADOS

CÍRCULOS DETECTADOS

ERRÓNEOS PUNTUACIÓN

CÍRCULOS DETECTADOS

CÍRCULOS DETECTADOS

ERRÓNEOS PUNTUACIÓN

1 IMG0 0 1 0 0,0 0 9 0,0

2 IMG1 0 2 0 0,0 2 7 0,0

3 IMG2 0 1 0 0,0 1 13 0,0

4 IMG3 0 2 6 0,0 2 8 0,0

5 IMG4 2 1 0 0,5 1 9 -4,0

6 IMG5 5 0 0 0,0 0 12 -2,4

7 IMG6 0 3 0 0,0 3 3 0,0

8 IMG7 0 1 0 0,0 1 9 0,0

9 IMG8 0 1 0 0,0 2 0 0,0

10 IMG9 0 1 6 0,0 0 11 0,0

11 IMG10 2 1 0 0,5 1 0 0,5

12 IMG11 2 1 2 -0,5 1 11 -5,0

13 IMG12 1 1 2 -1,0 1 5 -4,0

14 IMG13 1 0 0 0,0 0 5 -5,0

15 IMG14 3 0 0 0,0 0 13 -4,3

16 IMG15 0 2 0 0,0 1 9 0,0

17 IMG16 0 4 0 0,0 4 7 0,0

18 IMG17 5 2 0 0,4 0 6 -1,2

19 IMG18 2 1 0 0,5 1 0 0,5

20 IMG19 1 0 0 0,0 0 10 -10,0

Page 64: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

51

21 IMG20 0 0 0 0,0 0 6 0,0

22 IMG21 1 0 0 0,0 0 2 -2,0

23 IMG22 2 0 0 0,0 0 0 0,0

24 IMG23 0 0 2 0,0 0 8 0,0

25 IMG24 0 2 0 0,0 1 9 0,0

26 IMG25 1 1 0 1,0 1 3 -2,0

27 IMG26 2 0 0 0,0 0 11 -5,5

28 IMG27 1 0 0 0,0 0 8 -8,0

29 IMG28 1 0 8 -8,0 0 4 -4,0

30 IMG29 2 0 1 -0,5 0 6 -3,0

31 IMG30 1 0 4 -4,0 0 1 -1,0

32 IMG31 7 0 6 -0,9 0 13 -1,9

33 IMG32 1 0 2 -2,0 0 11 -11,0

34 IMG33 2 0 0 0,0 0 11 -5,5

35 IMG34 2 0 0 0,0 0 0 0,0

36 IMG35 0 0 0 0,0 0 9 0,0

37 IMG36 2 0 6 -3,0 0 11 -5,5

38 IMG37 3 1 0 0,3 1 2 -0,3

PROMEDIO -0,44 -2,23

Tabla 4-1. Tabla de Resultados: Detección de Círculos

Page 65: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

52

DATOS MÉTODO 1 ESTADÍSTICO MÉTODO 1 KMEANS MÉTODO ALTERNATIVO

No.

IMAGEN

RECTÁNGULOS EN LA IMAGEN

RECTÁNGULOS

DETECTADOS

RECTÁNGULOS

DETECTADOS ERRÓNEOS

PUNTUACIÓN

RECTÁNGULOS

DETECTADOS

RECTÁNGULOS

DETECTADOS ERRÓNEOS

PUNTUACIÓN

RECTÁNGULOS

DETECTADOS

RECTÁNGULOS

DETECTADOS ERRÓNEOS

PUNTUACIÓN

1 IMG0 0 0 0 0,0 0 0 0,0 0 1 0,0

2 IMG1 0 0 0 0,0 0 1 0,0 0 15 0,0

3 IMG2 0 0 0 0,0 0 1 0,0 0 15 0,0

4 IMG3 0 0 1 0,0 0 1 0,0 0 15 0,0

5 IMG4 2 0 0 0,0 0 0 0,0 0 3 -1,5

6 IMG5 5 1 0 0,2 0 1 -0,2 0 15 -3,0

7 IMG6 0 0 0 0,0 0 1 0,0 0 3 0,0

8 IMG7 0 0 3 0,0 0 1 0,0 0 15 0,0

9 IMG8 0 0 0 0,0 0 0 0,0 0 15 0,0

10 IMG9 0 0 0 0,0 0 0 0,0 0 15 0,0

11 IMG10 2 0 0 0,0 0 1 -0,5 0 10 -5,0

12 IMG11 2 0 1 -0,5 0 1 -0,5 0 15 -7,5

13 IMG12 1 0 0 0,0 0 0 0,0 0 15 -15,0

14 IMG13 1 1 1 0,0 0 0 0,0 0 15 -15,0

15 IMG14 3 1 1 0,0 0 0 0,0 0 30 -10,0

16 IMG15 0 0 0 0,0 0 1 0,0 0 19 0,0

17 IMG16 0 0 0 0,0 0 0 0,0 0 1 0,0

18 IMG17 5 0 0 0,0 0 0 0,0 0 6 -1,2

19 IMG18 2 0 5 -2,5 0 0 0,0 0 0 0,0

20 IMG19 1 0 2 -2,0 0 1 -1,0 0 1 -1,0

21 IMG20 0 1 0 0,0 0 0 0,0 0 2 0,0

22 IMG21 1 0 0 0,0 0 1 -1,0 0 4 -4,0

Page 66: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

53

23 IMG22 2 0 2 -1,0 0 0 0,0 0 2 -1,0

24 IMG23 0 0 0 0,0 0 0 0,0 0 16 0,0

25 IMG24 0 0 0 0,0 0 1 0,0 0 18 0,0

26 IMG25 1 0 0 0,0 0 1 -1,0 0 25 -25,0

27 IMG26 2 0 3 -1,5 0 0 0,0 1 0 0,5

28 IMG27 1 0 0 0,0 0 1 -1,0 0 18 -18,0

29 IMG28 1 0 0 0,0 0 1 -1,0 0 10 -10,0

30 IMG29 2 0 0 0,0 0 1 -0,5 0 3 -1,5

31 IMG30 1 0 0 0,0 0 0 0,0 1 0 1,0

32 IMG31 7 0 0 0,0 0 0 0,0 0 15 -2,1

33 IMG32 1 0 0 0,0 0 0 0,0 0 20 -20,0

34 IMG33 2 0 0 0,0 0 0 0,0 0 1 -0,5

35 IMG34 2 1 0 0,5 0 0 0,0 0 15 -7,5

36 IMG35 0 0 0 0,0 0 0 0,0 0 30 0,0

37 IMG36 2 0 0 0,0 0 0 0,0 1 7 -3,0

38 IMG37 3 1 0 0,3 0 1 -0,3 0 3 -1,0

PROMEDIO -0,17 -0,19 -3,98

Tabla 4-2. Tabla de Resultados: Detección de Rectángulos

LEYENDA

15 VALORES SUPERIORES A 15

20 VALORES SUPERIORES A 20

30 VALORES SUPERIORES A 20

Page 67: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

54

4.3 Análisis de resultados.

Después de realizar las distintas pruebas se obtuvo los valores promedio que

señalan la eficiencia de detección de patrones de cada método.

Figura Detectada Método Utilizado Promedio

Rectángulos

Método 1 Estadístico -0,17

Método 1 Clusterización -0,19

Método Alternativo -3,98

Círculos Método 1 Estadístico -0,44

Método 1 Clusterización -2,23

Tabla 4-3. Valores Promedio de cada método.

De acuerdo a los promedios obtenidos el Método 1 Estadístico es el método que

tiene los valores más altos tanto para la identificación de rectángulos como para

la de círculos, dicho valor señala la eficiencia de detección de patrones de éste

método para el conjunto de imágenes seleccionado, por ende es el método que

se ha utilizado en la aplicación desarrollada.

Page 68: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

55

5. CONCLUSIONES

El conocimiento adquirido en el transcurso de la carrera de Ingeniería en

Computación Gráfica en cuanto a procesamiento de imágenes y

programación fue base para el inicio de esta investigación, facilitó el

entendimiento de los distintos conceptos y teorías adquiridas a lo largo del

desarrollo de este proyecto.

Las distintas tecnologías estudiadas y analizadas fueron completamente

aplicables en la detección automática de patrones geométricos básicos.

Estas tecnologías fuero Python, OpenCV, HTML5, CSS, JavaScript y

Flask.

Siendo una aplicación orientada a la educación la presentación visual

juega un papel muy importante ya que si no se tiene una aplicación de

diseño amigable y didáctico, está no influirá de manera positiva sobre el

usuario para lograr el objetivo deseado que es el aprendizaje.

Tanto la aplicación web como la aplicación móvil hacen uso de la librería

desarrollada en Python para el procesamiento de la imagen y la detección

automática de patrones en la misma; en ambos casos se hace uso del

Método Estadístico ya que de acuerdo a las pruebas realizadas es el

método con un mayor promedio en la detección correcta de figuras.

El conocimiento acerca de la comunicación cliente-servidor es importante

para el desarrollo de este tipo de aplicaciones, ya que es lo que permitirá

mostrar los resultados sin que el lado del cliente se vea sobrecargado de

procesos.

Mientras más elaborado sea el procesamiento de imágenes, mejor se

realizará la detección de patrones, ya que así se descartarán objetos,

fondos y ruido que dificultan la identificación correcta de patrones, para la

aplicación móvil el reconocimiento de patrones para imágenes obtenidas

fotográficamente debe ser mucho más estricto ya que influirán las

condiciones (luz, posición, resolución de la cámara, etc.) en que la captura

de la imagen se realice.

Los resultados obtenidos en la aplicación web y la aplicación móvil variarán

debido a la mejora de calidad de imágenes que el dispositivo móvil realiza

automáticamente.

Para la implementación del filtro Canny se debe tener muy claro el proceso

del algoritmo que este filtro internamente realiza, ya que una vez

Page 69: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

56

comprendido esto se puede emprender una investigación sobre la

automatización de umbrales que este filtro requiere.

El método de clusterización para la automatización del umbral dio como

resultado valores demasiado bajos lo que perjudicó la detección de

patrones dando como consecuencia que éste sea un método no óptimo

para su implementación en la librería desarrollada en este proyecto.

Este proyecto servirá como fuente de consulta para la continuación o

mejora del mismo o para el inicio de proyectos similares.

Al finalizar el desarrollo de la aplicación y de acuerdo a los resultados

obtenidos se concluye que sí es posible que la aplicación web-móvil

basada en el reconocimiento automático de patrones facilite el aprendizaje

de geometría básica ya que ésta permite la identificación de figuras

geométricas básicas (rectángulos y círculos) a través de la interacción con

el usuario mediante representaciones visuales y sonoras. La aplicación

móvil ofrece un manejo didáctico lo que permitirá al usuario explorar en el

ambiente que lo rodea identificando las formas de los objetos con los que

cotidianamente se relaciona.

Page 70: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

57

6. RECOMENDACIONES

Debido a que es el primer resultado de una ardua investigación, se tiene trabajo

por delante para mejorarlo y que pueda ser presentado al público, por ello se

recomienda tener en cuenta lo siguiente:

La mejora del procesamiento de imágenes es imprescindible para un mejor

resultado del reconocimiento de patrones.

La automatización del umbral para el filtro Canny se puede optimizar mediante la

mejora del método de clusterización, el método de umbral estadístico o mediante

la investigación de una nueva alternativa de automatización para umbrales Canny.

En la detección automática de patrones se puede obtener mejores resultados si

se mejora la automatización de parámetros para aplicar las funciones

cv2.HoughLinesP y cv2.HougCircles.

Para una mejor detección de rectángulos la longitud de los segmentos de líneas

devueltos por la función cv2.HoughLinesP debe ser extendida, para ello se

recomienda la mejora del proceso implementado.

Ya que en el presente proyecto se logró el reconocimiento de dos figuras (círculos

y rectángulos), se puede extender el reconocimiento de figuras mediante la

investigación de otras alternativas en cuanto al procesamiento de imágenes.

La presentación de la aplicación puede ser mejorada aplicando y desarrollando

librerías CSS con las cuales se podría agregar animaciones o crear un diseño más

personalizado.

Page 71: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

58

Para hacer uso de la aplicación móvil se recomienda usar el dispositivo en modo

horizontal (landscape) ya que dependiendo de la resolución del dispositivo, la

interfaz se ajustará.

En la aplicación móvil la fotografía debe ser tomada de preferencia en un fondo

oscuro, el objeto debe sobresalir del fondo, la cámara debe estar en posición recta

captando correctamente la forma del objeto, no inclinar el dispositivo lo que

permitirá que la imagen se identifique claramente y facilite el procesamiento de la

imagen para lograr la identificación de patrones.

Para la aplicación web se recomienda el uso de la aplicación en el navegador

Chrome – Google, ya que ciertas funcionalidades CSS y jQuery solamente son

soportadas por este navegador

Page 72: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

59

7. BIBLIOGRAFÍA

1. Aguilera, D. G. (s.f.). PROCESAMIENTO DE IMÁGENES. Recuperado el

24 de Abril de 2016, de http://ocw.usal.es/eduCommons/ensenanzas-

tecnicas/procesamiento-avanzado-de-imagenes-

digitales/contenidos/Tema2.pdf

2. Alarcón, J. M. (11 de Septiembre de 2014). campus MVP. Recuperado el

08 de Junio de 2016, de

http://www.campusmvp.es/recursos/post/PhoneGap-o-Apache-Cordova-

que-diferencia-hay.aspx

3. ALEGSA.com.ar. (s.f.). Obtenido de

http://www.alegsa.com.ar/Dic/lenguaje%20de%20programacion%20de%2

0alto%20nivel.php

4. Álvarez, D., Guevara, M., & Holguín, G. (Agosto de 2006).

PREPROCESAMIENTO DE IMÁGENES APLICADAS A MAMOGRAFÍAS

DIGITALES. Obtenido de

http://www.redalyc.org/articulo.oa?id=84911639002

5. Análisis de Herramientas y Tecnología. (s.f.). Recuperado el 25 de Abril de

2016, de

http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/aldrette_m_r/capitulo

2.pdf

6. APACHE SOFTWARE FOUNDATION. (2015). Apache Cordova.

Recuperado el Junio de 2016, de https://cordova.apache.org/

7. Araújo, J. R. (2010). Scribd. Obtenido de

http://es.scribd.com/doc/45875911/Metodo-Otsu#scribd

8. Barros, A. (Diciembre de 2007). Boozox. Recuperado el 09 de Mayo de

2016, de http://boozox.net/php/desenfoque-gaussiano-como-funciona-

filtro-para-imaset/

9. Bazaga, A. R. (2015). Universidad de La Laguna. Obtenido de

http://osl.ull.es/software-libre/opencv-libreria-vision-computador/

10. Canny Edge Detection. (23 de Marzo de 2009). Obtenido de

http://www.cse.iitd.ernet.in/~pkalra/csl783/canny.pdf

11. Capítulo 2. Técnicas de procesamiento digital de imágenes y

reconocimiento de patrones. (s.f.). Obtenido de

Page 73: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

60

http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/nieto_b_d/capitulo2.p

df

12. Carpe Diem. (04 de Febrero de 2014). Carpe Diem. Recuperado el 04 de

Abril de 2016, de http://www.mclarenx.com/2014/02/04/validar-iban-en-

javascript/

13. Chapter 4: Image Filtering. (s.f.). Recuperado el 24 de Abril de 2016, de

http://www.cse.usf.edu/~r1k/MachineVisionBook/MachineVision.files/Mac

hineVision_Chapter4.pdf

14. Cortés Osorio, J. A., Muriel, A., & Mendoza Vargas, J. A. (Diciembre de

2011). Qualitative and quantitative Comparison of Basic histogram-based

global Thresholding. Obtenido de file:///C:/Users/David/Downloads/Dialnet-

ComparacionCualitativaYCuantitativaDeLasTecnicasBa-4322813.pdf

15. Cruz, V. (2012). Recuperado el 27 de Abril de 2016, de

http://vmcruz.tumblr.com/post/14586674674

16. cuatroríos TECNOLOGÍAS. (Mayo de 2014). Obtenido de

http://www.cuatrorios.org/index.php?option=com_content&view=article&id

=161:principales-caracteristicas-del-lenguaje-python&catid=39:blogsfeeds

17. educ@conTIC. (2010). educ@conTIC. Obtenido de El uso de las TIC en

las aulas: http://www.educacontic.es/blog/recursos-tic-para-educacion-

infantil

18. educarchile. (2013). educarchile. Obtenido de Artículo Educación

Parvularia y TICs:

http://www.educarchile.cl/ech/pro/app/detalle?ID=188299

19. Garcia, L. M. (09 de Octubre de 2013). Un poco de Java. Obtenido de

https://unpocodejava.wordpress.com/2013/10/09/que-es-opencv/

20. González, A. (30 de Mayo de 2014). Albertx blog. Recuperado el 27 de

Abril de 2016, de https://albertx.mx/blog/base64/

21. Graells, D. P. (02 de Enero de 2013). La Web 2.0 y sus aplicaciones

didácticas. Obtenido de http://www.peremarques.net/web20.htm

22. Herramientas 10. (s.f.). Herramientas 10.com. Recuperado el 04 de Abril

de 2016, de http://www.herramientas10.com/12-editores-html5-

desarrolladores_526.html

23. Herrick, J. (s.f.). Cómo evitar el ruido en tus fotos digitales. Recuperado el

21 de Abril de 2016, de http://es.wikihow.com/evitar-el-ruido-en-tus-fotos-

digitales

Page 74: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

61

24. Jet Brains. (s.f.). Jet Brains. Recuperado el 26 de Abril de 2016, de

https://www.jetbrains.com/pycharm/

25. La REvista Informática.com. (2006). Obtenido de

http://www.larevistainformatica.com/lenguajes-programacion-orientada-

objetos.htm

26. La Serna Palomino, N., & Roman Concha, U. (s.f.). Técnicas de

Segmentación en Procesamiento Digital de Imágenes. Obtenido de

http://sisbib.unmsm.edu.pe/bibvirtual/publicaciones/risi/2009_n2/v6n2/a02

v6n2.pdf

27. Larequi, E. (27 de Diciembre de 2014). Propuesta TIC para el área de

Lengua. Obtenido de http://propuestastic.elarequi.com/propuestas-

didacticas/la-web-2-0/la-web-2-0-en-el-ambito-educativo/

28. LIBROSWEB. (2015). LIBROSWEB. Recuperado el 17 de Mayo de 2016,

de http://librosweb.es/libro/css/capitulo_2/selectores_basicos.html

29. Malacara, D. (s.f.). ÓPTICA TRADICIONAL Y MODERNA. Obtenido de

http://bibliotecadigital.ilce.edu.mx/sites/ciencia/volumen2/ciencia3/084/ht

m/sec_9.htm

30. Marcos, J. (20 de Mayo de 2014). JM. Recuperado el 04 de Abril de 2016,

de http://javimarcos.com/category/front-end/css3/

31. Maseda Martínez, L., Ramos Arcos, M., Rey Piñero, E., & Rodríguez

Rodríguez, N. (s.f.). Procesado Digital de la Imagen. Recuperado el 24 de

Abril de 2016, de

http://sabia.tic.udc.es/gc/Contenidos%20adicionales/trabajos/Imagenyvid

eo/Procesado%20Digital%20de%20la%20Imagen/pagina_superior6.htm

32. Mendez, D. (s.f.). educ@conTIC. Recuperado el 04 de 2015, de

http://ntic.educacion.es/w3/eos/MaterialesEducativos/mem2007/cueva_tr

agapalabras/

33. Métodos no Jerárquicos de Análisis Clusters. (s.f.). Obtenido de

http://www.ugr.es/~gallardo/pdf/cluster-4.pdf

34. Milán, V. (12 de Abril de 2012). la webera.es. Recuperado el 25 de Abril de

2016, de http://www.lawebera.es/diseno-web-html-5/etiquetas-html5-

audio-video-canvas.php

35. Mocholí, A. (12 de Noviembre de 2014). Recuperado el 21 de Abril de

2016, de https://www.yeeply.com/blog/top-6-mejores-aplicaciones-

moviles-educativas-para-ninos/

Page 75: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

62

36. Morse, B. S. (12 de Enero de 2000). Lecture 4: Thresholding. Obtenido de

http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MORSE/thre

shold.pdf

37. Mozilla Developer Network. (26 de Abril de 2015). Mozilla Developer

Network. Recuperado el 01 de Abril de 2016, de

https://developer.mozilla.org/es/docs/Web/JavaScript/Acerca_de_JavaScr

ipt

38. Mozilla Developer Network. (26 de Septiembre de 2015). Mozilla Developer

Network. Recuperado el 02 de Junio de 2016, de

https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Introducci%C

3%B3n

39. MOZILLA DEVELOPER NETWORK. (12 de Mayo de 2016). MDN.

Recuperado el Mayo de 2016, de

https://developer.mozilla.org/es/docs/CSS/Media_queries

40. Mozilla Developer Network. (12 de Febrero de 2016). Mozilla Developer

Network. Recuperado el 31 de Marzo de 2016, de

https://developer.mozilla.org/es/docs/HTML/HTML5

41. Mozilla Developer Network y colaboradores individuales. (02 de Febrero

de 2016). MDN. Recuperado el 26 de Abril de 2016, de

https://developer.mozilla.org/es/docs/Web/CSS/CSS3

42. Multitouch visual. (2010). Obtenido de

http://multitouchvisual.blogspot.com/2010/09/tratando-imagenes.html

43. Muñox, A., Franke, A., Prokoudine, A., & Otros, y. (2010). gimp.org.

Recuperado el 24 de Abril de 2016

44. OpenCV. (2014). OpenCV. Recuperado el 09 de Mayo de 2016, de

http://docs.opencv.org/2.4/modules/imgproc/doc/feature_detection.html#h

oughlinesp

45. Otro Espacio Blog. (02 de Septiembre de 2012). Obtenido de Lenguajes

de programación: Compilados vs Interpretados:

https://otroespacioblog.wordpress.com/2012/09/02/lenguajes-de-

programacion-compilados-vs-interpretados/

46. Reconocimiento de imágenes. (s.f.). Obtenido de

http://catarina.udlap.mx/u_dl_a/tales/documentos/lem/ramirez_r_ja/capitul

o4.pdf

Page 76: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

63

47. Rhody, H. (11 de Octubre de 2005). Lecture 10: Hough Circle Transform.

Obtenido de

https://www.cis.rit.edu/class/simg782/lectures/lecture_10/lec782_05_10.p

df

48. Rodríguez, A. E. (05 de Marzo de 2015). GeekyTheory. Recuperado el 01

de Abril de 2016, de https://geekytheory.com/aprende-flask-introduccion-y-

hola-mundo/

49. Roldán, C. S. (s.f.). CODEJOBS. Obtenido de

https://www.codejobs.biz/es/blog/2013/03/02/que-es-python

50. Rosebrock, A. (06 de Abril de 2015). pyimagesearch. Recuperado el 14 de

Enero de 2016, de http://www.pyimagesearch.com/2015/04/06/zero-

parameter-automatic-canny-edge-detection-with-python-and-opencv/

51. Rossius, S. (s.f.). Reconocimiento de objetos mediante WebCam en

tiempo real. Obtenido de

http://www.ic.unicamp.br/~rocha/teaching/2013s1/mc851/aulas/hough-

transform.pdf

52. Tema 4: Segmentación de imágenes. (s.f.). Obtenido de

http://alojamientos.us.es/gtocoma/pid/tema4.pdf

53. The University of Auckland. (25 de Mayo de 2010). Obtenido de

https://www.cs.auckland.ac.nz/courses/compsci373s1c/PatricesLectures/

Gaussian%20Filtering_1up.pdf

54. tutorialspoint. (2016). Obtenido de

http://www.tutorialspoint.com/dip/sobel_operator.htm

55. w3schools. (s.f.). w3schools.com. Obtenido de

http://www.w3schools.com/html/html_intro.asp

56. w3schools. (s.f.). w3schools.com. Obtenido de

http://www.w3schools.com/css/

57. Wainschenker, R., Massa, J. M., & Tristan, P. (2011). Procesamiento

Digital de Imágenes. Obtenido de

http://www.exa.unicen.edu.ar/catedras/pdi/FILES/TE/CP1.pdf

58. Wikipedia. (27 de Septiembre de 2014).

https://es.wikipedia.org/wiki/Transformada_de_Hough. Recuperado el

Marzo de 2016, de https://es.wikipedia.org/wiki/Transformada_de_Hough

59. Wikipedia. (19 de Febreo de 2016). Obtenido de

https://es.wikipedia.org/wiki/K-means

Page 77: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

64

ANEXOS

Anexo A. Servidor. ................................................................................................ i

a) PROCESO_DETECCION.py ....................................................................... i

b) METODO_DETECCION.py ....................................................................... iv

c) CONEXION.py ......................................................................................... v

Anexo B. Cliente Web. .........................................................................................vi

a) index.html .......................................................................................... vi

b) appimage.js ....................................................................................... xvi

c) mystyle.css ..................................................................................... xxiii

Anexo C. Cliente Móvil...................................................................................... xxv

a) index.js ............................................................................................ xxv

b) config.xml ...................................................................................... xxxii

Anexo D. Manual de Usuario. ........................................................................ xxxiii

a) Aplicación Web ..................................................................................... xxxiii

b) Aplicación Móvil .................................................................................... xxxvi

Page 78: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

i

Anexo A. Servidor.

a) PROCESO_DETECCION.py

import numpy as np

import cv2

import math

# CALCULO ESTADISTICO DE LOS UMBRALES DE CANNY

def umbral_est(img):

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

blur = cv2.GaussianBlur(gray,(5,5),0)

media = np.median(blur)

sigma = 0.33

t_min =int(max(0,(1.0 - sigma)* media))

t_max = int(min(255, (1.0 + sigma) * media))

return t_min, t_max

# CALCULO DE UMBRALES CON K-MEANS

def umbral_kmeans(imag):

gray = cv2.cvtColor(imag, cv2.COLOR_BGR2GRAY)

blur = cv2.GaussianBlur(gray,(5,5),0)

img_sob = cv2.Sobel(blur,-1,1,1)

lista_im = img_sob.reshape(-1,1)

lista_im = np.float32(lista_im)

criterio =

(cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER,10,1.0)

bandera = cv2.KMEANS_RANDOM_CENTERS

dist, label, center =

cv2.kmeans(lista_im,3,False,criterio,10,bandera)

group1 = lista_im[label.ravel()==0]

group2 = lista_im[label.ravel()==1]

group3 = lista_im[label.ravel()==2]

#ORDENAR GRUPOS EN ORDEN ASCENDENTE

a = max(group1)

b = max(group2)

c = max(group3)

# valor maximo

maximo = a

minimo3 = min(group1)

if b>maximo:

maximo = b

minimo3 = min(group2)

elif c>maximo:

maximo = c

minimo3 = min(group3)

# valor menor

menor = a

# minimo1 = min(group1)

if b<menor:

menor = b

# minimo1 = min(group2)

Page 79: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

ii

elif c<menor:

menor = c

# minimo1 = min(group3)

# valor medio

minimo2 = min(group1)

medio = a

if maximo>a and a>menor:

medio = a

minimo2=min(group1)

elif maximo>b and b>menor:

medio = b

minimo2=min(group2)

elif maximo>c and c>menor:

medio = c

minimo2=min(group3)

tresh1 = (menor+minimo2)/2

tresh2 = (medio+minimo3)/2

return tresh1, tresh2

#promedio de las dimensiones de la imagen

def promedio(img):

prom = (img.shape[0]+img.shape[1])/2

return prom

#APLICANDO FILTRO CANNY

def canny(img, treshol1,treshold2):

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

blur = cv2.GaussianBlur(gray,(5,5),0)

img_cany = cv2.Canny(blur,treshol1,treshold2,False,3,True)

return img_cany

# APLICACION DE LA TRANSFORMADA DE HOUGH

def lineas_hough(img_canny, imagenoriginal,promedio):

#AUTOMATIZACION DE PARAMETROS PARA HOUGHLINE

treshold_hough = promedio/30

min_line_length = promedio/10

#IMPLEMENTACION DE HOUGH PARA LINEAS

lineas=cv2.HoughLinesP(img_canny,2,np.pi/180,treshold_hough,False,

min_line_length,10)

imgcontorno = np.zeros(imagenoriginal.shape, np.uint8)

if (lineas is None):

lineas=[]

else:

#DISMINUCION DE LONGITUD DE LINEAS

for pos in lineas:

pos=pos[0]

y = abs(pos[3]-pos[1])

x = abs(pos[2]-pos[0])

modulo = math.sqrt(pow(x,2)+(pow(y,2)))

cte=((imgcontorno.shape[0]+imgcontorno.shape[1])/3)

vx = x/modulo

vy = y/modulo

Page 80: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

iii

#LINEAS HORIZONTALES Y VERTICALES (RECTANGULOS)

pos[2] = pos[2]+cte*vx

pos[3] = pos[3]+cte*vy

pos[0] = pos[0]-cte*vx

pos[1] = pos[1]-cte*vy

#LINEAS HORIZONTALES, VERTICALES E INCLINADAS

(CUADRILATEROS)

# if (pos[1] > pos[3]):

# pos[0] = pos[0] - cte * vx

# pos[1] = pos[1] + cte * vy

# pos[2] = pos[2] + cte * vx

# pos[3] = pos[3] - cte * vy

# elif (pos[1] < pos[3]):

# pos[0] = pos[0] - cte * vx

# pos[1] = pos[1] - cte * vy

# pos[2] = pos[2] + cte * vx

# pos[3] = pos[3] + cte * vy

cv2.line(imgcontorno,(pos[0],pos[1]),(pos[2],pos[3]),(255,255,255)

)

return imgcontorno

# DETECCION DE CONTORNOS Y DETECCION DE CUADRADOS

def detecta_rectangulo(img_contours, imagoriginal):

grises = cv2.cvtColor(img_contours, cv2.COLOR_RGB2GRAY)

ret, thresh =

cv2.threshold(grises,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

imagen, contours, hierarchy = cv2.findContours(thresh,

cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

vertices_rec = []

for pos in contours:

aproximacion = cv2.approxPolyDP(pos, 0.01 *

cv2.arcLength(contours[0], True), True)

if len(aproximacion)==4:

vertices_laterales = (int(aproximacion[3][0][0]),

int(aproximacion[3][0][1]), int(aproximacion[1][0][0]),

int(aproximacion[1][0][1]))

vertices_rec.append(vertices_laterales)

#PARA CUADRILATEROS EN GENERAL

# vertices_cuadri = (int(aproximacion[0][0][0]),

int(aproximacion[0][0][1]), int(aproximacion[1][0][0]),

# int(aproximacion[1][0][1]),

int(aproximacion[2][0][0]), int(aproximacion[2][0][1]),

# int(aproximacion[3][0][0]),

int(aproximacion[3][0][1]))

# vertices_rec.append(vertices_cuadri)

return vertices_rec

#DETECCION DE CIRCULOS

def detecta_circulos(original, umbral, prome):

#AUTOMATIZACION DE PARAMETROS PARA HOUGHCIRCLES

min_dist =prome/5

img_gray = cv2.cvtColor(original, cv2.COLOR_RGB2GRAY)

treshold_circ =prome/5

min_radio=prome/50

max_radio=prome/3

vertices_cir=[]

Page 81: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

iv

#APLICACION DE HOUGH PARA CIRCULOS

circulos =

cv2.HoughCircles(img_gray,cv2.HOUGH_GRADIENT,1,min_dist,False,umbr

al,treshold_circ,min_radio,max_radio)

if circulos is None:

vertices_cir=[]

else:

for pos in circulos:

for vec in pos:

vertices = (int(vec[0]),int(vec[1]),int(vec[2]))

vertices_cir.append(vertices)

return vertices_cir

#METODO ALTERNATIVO PARA LA DETECCION DE CUADRADOS

def metodo_alternativo(original,umbral):

gray = cv2.cvtColor(original, cv2.COLOR_BGR2GRAY)

blur = cv2.GaussianBlur(gray,(5,5),0)

ret, thresh =

cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

#DETECCION DE CONTORNOS

imagen, contours, hierarchy = cv2.findContours(thresh,

cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

vertices_rec = []

for pos in contours:

aproximacion = cv2.approxPolyDP(pos, 0.01 *

cv2.arcLength(contours[0], True), True)

if len(aproximacion)==4:

vertices_laterales = (aproximacion[3][0][0],

aproximacion[3][0][1], aproximacion[1][0][0],

aproximacion[1][0][1])

vertices_rec.append(vertices_laterales)

#PARA CUADRILATEROS EN GENERAL

# vertices_laterales = (int(aproximacion[0][0][0]),

int(aproximacion[0][0][1]), int(aproximacion[1][0][0]),

# int(aproximacion[1][0][1]),

int(aproximacion[2][0][0]), int(aproximacion[2][0][1]),

# int(aproximacion[3][0][0]),

int(aproximacion[3][0][1]))

# vertices_rec.append(vertices_laterales)

vertices_cir=detecta_circulos(original, umbral,

promedio(original))

return vertices_rec, vertices_cir

b) METODO_DETECCION.py

from PROCESO_DETECCION import *

def procedimiento(metodo, imagen):

#METODO 1 ESTADISTICO

if metodo == 1:

original = cv2.imread(imagen)

dimensiones = ([original.shape[0], original.shape[1]])

promedio_img = promedio(original)

t1, t2 = umbral_est(original)

cany = canny(original,t1,t2)

contorno =lineas_hough(cany, original,promedio_img)

rec_ver = detecta_rectangulo(contorno, original)

Page 82: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

v

cir_ver = detecta_circulos(original, t2, promedio_img)

##################################################################

#######

#METODO 1 CLUSTERIZACION

if metodo == 2:

original1 = cv2.imread(imagen)

# copia1 = cv2.imread(imagen)

dimensiones = ([original1.shape[0],original1.shape[1]])

promedio_img1 = promedio(original1)

t1, t2 = umbral_kmeans(original1)

cany1 = canny(original1,t1,t2)

contorno1 =lineas_hough(cany1, original1,promedio_img1)

rec_ver=detecta_rectangulo(contorno1, original1)

cir_ver = detecta_circulos(original1, t2, promedio_img1)

##################################################################

#############

#METODO ALTERNATIVO PARA DETECCION DE CUADRADOS

#IMPLEMENTA DETECCION DE CIRCULOS UMBRAL ESTADISTICO

if metodo == 3:

original2 = cv2.imread(imagen)

t1, t2 = umbral_est(original2)

rec_ver, cir_ver = metodo_alternativo(original2, t2)

dimensiones = ([original2.shape[0], original2.shape[1]])

##################################################################

############

# METODO ALTERNATIVO PARA DETECCION DE CUADRADOS

# IMPLEMENTA DETECCION DE CIRCULOS CLUSTERIZACION

if metodo == 4:

original3 = cv2.imread(imagen)

t1, t2 = umbral_kmeans(original3)

rec_ver, cir_ver=metodo_alternativo(original3, t2)

dimensiones = ([original3.shape[0], original3.shape[1]])

return dimensiones, rec_ver, cir_ver

c) CONEXION.py

from flask import *

import base64

from METODO_DETECCION import *

app = Flask(__name__)

@app.route('/procesar', methods =['GET','POST'])

def procesar():

#CARGANDO DATOS RECIBIDOS DE LA IMAGEN

c=json.loads(request.data)

#DECODIFICANDO LA IMAGEN

fh = open("IMAGES\imagen.png", "wb")

fh.write(base64.decodestring(c))

fh.close()

#PROCESO DE DETECCION

Page 83: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

vi

dimensiones, vertices_rectangulo, vertices_circulo =

procedimiento(1, "IMAGES\imagen.png")

#ARREGLO DE VERTICES

vertices =

json.dumps({"dimensiones":dimensiones,"rectangulo":vertices_rectan

gulo, "circulo":vertices_circulo})

return vertices

if __name__ == '__main__':

app.debug = True

app.run(host="0.0.0.0")

Anexo B. Cliente Web.

a) index.html

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

<!--AÑADIENDO LIBRERIAS DE ESTILO-->

<link rel="stylesheet" href="css/mystyle.css">

<link rel="stylesheet" href="css/jquery.mobile-1.4.5.css">

<link rel="stylesheet" href="fonts/stylefont.css">

<!--AÑADIENDO LIBRERIAS JavaScript-->

<script type="text/javascript" src="js/lib/jquery.js"></script>

<script type="text/javascript" src="js/lib/jquery.mobile-1.4.5.js"></script>

<script type="text/javascript" src="js/appimage.js"></script>

<title>DAPAGE</title>

</head>

<body>

<div data-role="page" id="pageone">

<!-- panel del menu-->

<div data-role="panel" id="myPanel">

<h2>MENÚ</h2>

<ul>

<li><a href="#infor"><span class="icon-file-text2"></span>Información</a></li>

<li><a href="#apli" ><span class="icon-delicious"></span>Aplicación</a></li>

Page 84: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

vii

<li><a href="#contac" ><span class="icon-

newspaper"></span>Documentación</a></li>

</ul>

</div>

<!--boton de menu-->

<div data-role="header" >

<h1>DAPAGE</h1>

<a href="#myPanel" class="ui-btn ui-corner-all ui-icon-bullets ui-btn-icon-left"

style="font-family:Danae;">Menú</a>

</div>

<!--contenido-->

<div data-role="main" class="ui-content">

<p>DAPAGE es una aplicación desarrollada como trabajo de titulación en la

carrera de Ingeniería en Computación

Gráfica de la Universidad Central del Ecuador, esta aplicación se basa en la

identificación automática de figuras geométricas básicas en imágenes.

<br></br>

Permite la interactividad con el usuario al dejar que elija colores e identifique las

figuras reconocidas sobre

la imagen original, así podrá relacionar el objeto de la imagen con la forma que

éste tiene.<br></br>

Si deseas saber sobre el desarrollo de la aplicación consulta en <a

style="color:rgba(244, 208, 63, 0.85);"href="#infor">Información</a></p>

</div>

<div data-role="footer" id="foot" >

<h1>Instrucciones</h1>

</div>

<div data-role="main" class="ui-content">

<p> 1) Vamos al botón Menú ubicado en la parte superior izquierda.<br></br>

2) Seleccionamos la opción Aplicación.<br></br>

3) Elegimos DOS colores.<br></br>

<input type="image" src="image/colores.png"><br></br>

4) Selecciona la imagen deseada, observa qué figuras se dibujan, e identifica

qué figura fue dibujada.<br></br>

<input type="image" src="image/elegirimg.png"><br></br>

Page 85: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

viii

</p>

</div>

</div>

<!-- INFORMACION-->

<div data-role="page" id="infor">

<div data-role="header">

<a href="#pageone" class="ui-btn ui-corner-all ui-icon-home ui-btn-icon-

notext">Home Icon</a>

<h1>Cómo se hizo?</h1>

</div>

<div data-role="main" class="ui-content">

<p>Este proyecto fue desarrollado como trabajo de titulación en la carrera de

Ingeniería en Computación Gráfica. La función de la

aplicación DAPAGE es recibir una imagen enviarla al servidor el cual contendrá

a la librería DAP que procesa la imagen y detecta

los patrones geométricos devolviendo una estructura de vértices que DAPAGE

recibirá para proceder a dibujar las figuras sobre

la imagen original. Para la obtención de dichos resultados se integraron distintas

tecnologías entre ellas tenemos:<br></br>

- Lenguaje Python junto con la librería OpenCV (Desarrollo de la librería

DAP)<br>

- HTML5, CSS, JavaScript y JqueryMobile (Desarrollo de la aplicación

DAPAGE)<br>

- Microframework Flask (Conexión entre la librería y la aplicación)<br></br>

Cada una de las tecnologías mencionadas fue implementada en distintas fases

del desarrollo de este proyecto, a continuación se describe

cada fase de desarrollo.</p>

</div>

<div data-role="footer" id="foot" >

<h1>Desarrollo de la Librería DAP</h1>

</div>

<div data-role="main" class="ui-content">

Page 86: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

ix

<p>DAP fue desarrollada en Python implementando la líbreria OpenCV la cual

nos proporcionó las funciones acordes para realizar

el procesamiento de imágenes y lograr así la detección automática de patrones

geométricos.

El procesamiento de imagen realizado es el siguiente:<br></br>

- Automatización de umbrales para el Filtro Canny: Para la automatización de

umbrales se tomó en cuenta dos alternativas:<br>

1) Para el primer proceso de automatización se hizo un estudio acerca de el

Método de Otsu y el Algoritmo K-means.<br>

2) Para el segundo proceso de automatización se estudió el <a

style="color:rgba(244, 208, 63, 0.85);"

href="http://www.pyimagesearch.com/2015/04/06/zero-parameter-automatic-

canny-edge-detection-with-python-and-opencv/">Umbral estadístico</a>,

este es el proceso que se implementó en este proyecto.<br></br>

- Aplicación del Filtro de Canny: Para la aplicación del filtro Canny se utilizó la

función <a

href="http://docs.opencv.org/2.4/modules/imgproc/doc/feature_detection.html">cv

2.Canny</a>

proporcionada por la librería OpenCV.<br></br>

- Aplicación de la Transformada de Hough para líneas y círculos: La librería

OpenCV nos proporcionó dos funciones que nos permitieron

implementar la Transformada de Hough estas son: <a style="color:rgba(244,

208, 63, 0.85);"

href="http://docs.opencv.org/2.4/modules/imgproc/doc/feature_detection.html#ho

ughlinesp">cv2.HoughLinesP</a>

y <a style="color:rgba(244, 208, 63, 0.85);"

href="http://docs.opencv.org/2.4/modules/imgproc/doc/feature_detection.html#ho

ughcircles">cv2.HoughCircles</a>.<br></br>

- Detección de Patrones: Para la detección de rectángulos se empleó las

siguientes funciones: <a style="color:rgba(244, 208, 63, 0.85);"

href="http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_s

hape_descriptors.html?highlight=cv2.findcontours#cv2.findContours">cv2.findCo

ntours</a>

que permite encontrar los contornos en una imagen binaria, seguido se aplica la

función <a style="color:rgba(244, 208, 63, 0.85);"

href="http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_s

Page 87: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

x

hape_descriptors.html?highlight=cv2.findcontours#approxpolydp">cv2.approxPol

yDP</a>

que permite reducir el número de puntos(vértices) que conforman los

contornos.<br>

Por otro lado para la detección de círculos después de aplicar cv2.HoughCircles

simplemente se recorre la estructura

de centros y radios que nos da como resultado.

</p>

</div>

<div data-role="footer" id="foot" >

<h1>Desarrollo del Servidor</h1>

</div>

<div data-role="main" class="ui-content">

<p>El servidor fue desarrollado mediante la implementación de Flask en Python.

Flask es un microframework que permite

el desarrollo de aplicaciones web de una manera sencilla. Sus características

más

importantes son:<br></br>

- Tiene embebido su propio servidor web, lo que significa que tiene su

propio motor de trabajo en lenguaje Python,

levanta automáticamente el puerto 5000 para mostrar el contenido

web.<br></br>

- Contiene un depurador que permite probar, limpiar y monitorizar la

ejecución del programa asociando el código fuente

con las instrucciones ejecutadas por el programa.<br></br>

- Es de fácil desarrollo ya que no divide las tareas web por módulos lo que

facilita el desarrollo de las aplicaciones

sencillas, permite la creación de rutas a las cuales se les asigna un método que

responde por ella.<br></br>

Para mayor información acerca de Flask puedes visitar su página web <a

style="color:rgba(244, 208, 63, 0.85);"

href="http://flask.pocoo.org/">http://flask.pocoo.org/</a>

</p>

</div>

Page 88: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xi

<div data-role="footer" id="foot" >

<h1>Desarrollo de la Aplicación DAPAGE</h1>

</div>

<div data-role="main" class="ui-content">

<p>Para el desarrollo de la aplicación se hizo uso del lenguaje HTML5 junto con

CSS y JavaScript. El proceso seguido fue

el siguiente:<br></br>

Se realizó la maquetación de la página web, la cual tendrá cuatro secciones:

Inicio, Información, Aplicación y Documentación.<br></br>

- La sección Inicio es la sección que presenta la aplicación, se presenta una

breve descripción y las instrucciones de uso.<br></br>

- La sección Información contiene detalles teóricos sobre el desarrollo del

presente proyecto.<br></br>

- La sección Aplicación permite al usuario probar la aplicación, el usuario podrá

subir una imagen que será enviada al servidor

mediante la función $.ajax proporcionado por la librería jQuery(JavaScript), el

servidor desarrollado en Flask recibirá

la imagen y pondrá en funcionamiento la librería DAP para el procesamiento de

la imagen, como resultado obtendremos un

par de estructuras; una contendrá los vértices de los rectángulos obtenidos,

mientras que otra contendrá los centros y radios

de las circunferencias reconocidas en la imagen, éstas estructuras serán

enviadas de vuelta y es ahí donde entrará en trabajo

la función callback en donde se reciben los datos que se envían desde el

servidor en este caso las estructuras

de vértices. Esta función lo que nos permite es dibujar las figuras geométricas de

acuerdo a los vértices recibidos.

Éste proceso se ejecutará en el lado del cliente.<br></br>

- La sección Documentación proporciona información para obtener la

documentación completa del proyecto.

</p>

</div>

</div>

<!-- APLICACION -->

Page 89: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xii

<div data-role="page" id="apli">

<div data-role="header">

<a href="#pageone" class="ui-btn ui-corner-all ui-icon-home ui-btn-icon-

notext">Home Icon</a>

<h1>¿Qué Figura es?</h1>

</div>

<div data-role="main" class="ui-content">

<div style="float:left; width:20%;padding-right:5%;">

<p style="color:#F7DC6F;"><span class="icon-checkmark"></span>Elige DOS

colores:</p>

<fieldset data-role="controlgroup" style="float:left;">

<label for="red" style="background-color:#FF0000; text-shadow:none;

color:#FFDAB9; border-width:5px; border-color:rgba(186,85,211,0.8) /*{a-bup-

border}*/;">Red</label>

<input type="checkbox" name="favcolor" id="red" value="red" >

<label for="green" style="background-color:#008000; text-shadow:none;

color:#FFDAB9; border-width:5px; border-

color:rgba(186,85,211,0.8);">Green</label>

<input type="checkbox" name="favcolor" id="green" value="green">

<label for="blue" style="background-color:#0000FF; text-shadow:none;

color:#FFDAB9; border-width:5px;border-

color:rgba(186,85,211,0.8);">Blue</label>

<input type="checkbox" name="favcolor" id="blue" value="blue">

<label for="yellow" style="background-color:#FFFF00; text-shadow:none;

color:#FFDAB9; border-width:5px;border-

color:rgba(186,85,211,0.8);">Yellow</label>

<input type="checkbox" name="favcolor" id="yellow" value="yellow">

<label for="purple" style="background-color:#800080; text-shadow:none;

color:#FFDAB9; border-width:5px;border-

color:rgba(186,85,211,0.8);">Purple</label>

<input type="checkbox" name="favcolor" id="purple" value="purple">

<label for="brown" style="background-color:#A52A2A; text-shadow:none;

color:#FFDAB9; border-width:5px;border-

color:rgba(186,85,211,0.8);">Brown</label>

<input type="checkbox" name="favcolor" id="brown" value="brown">

Page 90: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xiii

</fieldset>

<fieldset data-role="controlgroup" style="float:left;">

<label for="pink" style="background-color:#FFC0CB; text-shadow:none;

color:#FFDAB9; border-width:5px;border-

color:rgba(186,85,211,0.8);">Pink</label>

<input type="checkbox" name="favcolor" id="pink" value="pink">

<label for="violet" style="background-color:#EE82EE; text-shadow:none;

color:#FFDAB9; border-width:5px;border-

color:rgba(186,85,211,0.8);">Violet</label>

<input type="checkbox" name="favcolor" id="violet" value="violet">

<label for="cyan" style="background-color:#00FFFF; text-shadow:none;

color:#FFDAB9; border-width:5px;border-

color:rgba(186,85,211,0.8);">Cyan</label>

<input type="checkbox" name="favcolor" id="cyan" value="cyan">

<label for="gray" style="background-color: #808080; text-shadow:none;

color:#FFDAB9; border-width:5px;border-

color:rgba(186,85,211,0.8);">Gray</label>

<input type="checkbox" name="favcolor" id="gray" value="gray">

<label for="orange" style="background-color: #FFA500; text-

shadow:none; color:#FFDAB9; border-width:5px;border-

color:rgba(186,85,211,0.8);">Orange</label>

<input type="checkbox" name="favcolor" id="orange" value="orange">

<label for="skyblue" style="background-color:#87CEEB; text-shadow:none;

color:#FFDAB9; border-width:5px; border-

color:rgba(186,85,211,0.8);">SkyBlue</label>

<input type="checkbox" name="favcolor" id="skyblue" value="skyblue">

</fieldset>

</div>

<div id="subirimg" style="float:left; width:55%;padding-right:5%;">

<p style="color:#F7DC6F;"><span class="icon-images"></span> Selecciona una

Imagen:</p><input type="file" id="imagen" style="font-family:Danae;"/>

<img src="" class="dimensiones"/>

<canvas id="myCanvas" class="dimensiones"></canvas>

</div>

Page 91: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xiv

<div id="btimgs" style="float:left; width:15%;">

<p style="color:#F7DC6F;"><span class="icon-cool"></span> Qué figura se

dibujó?</p>

<a id="bt-cir" data-rel="popup" data-position-to="origin">

<input type="image" src="image/circulo.png" alt="Skaret View" width="128px">

</a>

<a id="bt-cua" data-rel="popup" data-position-to="origin">

<input type="image" src="image/cuadrado.png" alt="Skaret View"

width="128px">

</a>

</div>

<div data-role="popup" id="CirPopup">

<p ><span class="icon-happy"></span> CORRECTO! ES UN CÍRCULO</p>

</div>

<div data-role="popup" id="CuadPopup">

<p><span class="icon-happy"></span> CORRECTO! ES UN

RECTÁNGULO</p>

</div>

<div data-role="popup" id="NoCirPopup">

<p><span class="icon-sad"></span> INCORRECTO! INTENTA DE

NUEVO...!!!</p>

</div>

<div data-role="popup" id="NoCuadPopup">

<p><span class="icon-sad"></span> INCORRECTO! INTENTA DE

NUEVO...!!!</p>

</div>

<audio id="bien">

<source src="sounds/TaDa-Sound.mp3" type="audio/mpeg">

</audio>

<audio id="mal">

<source src="sounds/Sad_Trombone.mp3" type="audio/mpeg">

</audio>

Page 92: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xv

</div>

</div>

<!-- DOCUMENTACION -->

<div data-role="page" id="contac">

<div data-role="header" >

<h1>Quieres saber más?</h1>

<a href="#pageone" class="ui-btn ui-corner-all ui-icon-home ui-btn-icon-

notext">Home Icon</a>

</div>

<div data-role="main" class="ui-content">

<p>Si deseas saber más sobre el desarrollo u obtener el documento escrito

acerca del

proyecto puedes ingresar al <a style="color:rgba(244, 208, 63, 0.85);"

href="http://www.dspace.uce.edu.ec/handle/25000/74">Repositorio Digital</a>

de la Facultad de Ingeniería Ciencias Físicas

y Matemática(UCE) en donde encontrarás el documento bajo el título:

"DESARROLLO DE UNA APLICACIÓN BASADA EN EL RECONOCIMIENTO

AUTOMÁTICO DE PATRONES

EN IMÁGENES APLICADA A LA EDUCACIÓN"<br></br>

Para revisar el código fuente puedes visitar la siguiente página: <a

style="color:rgba(244, 208, 63, 0.85);"

href="http://www.dspace.uce.edu.ec/handle/25000/74">Reconocimiento

Automático de Patrones</a><br></br>

Toda la información proporcionada ha sido fruto de una ardua investigación por

lo que se espera que ésta

sea utilizada de la mejor manera, pero sobre todo que sea un aporte para

investigaciones futuras.<br></br>

Si deseas contactarte con la Autora de este proyecto puedes escribir a:

[email protected]<br></br>

GRACIAS.

</p>

</div>

</div>

</body>

Page 93: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xvi

</html>

b) appimage.js

$(document).ready(function(){

var file;

var reader;

var preview;

var canvas;

var context;

var ok = document.getElementById("bien");

var bad = document.getElementById("mal");

var escale;

var ok_cir=2;

var ok_cuad=2;

var color_fig=[];

var fig_cir=[]

var fig_rec=[];

var fig = 0;

$("#subirimg").hide();

$("#btimgs").hide();

$( "#imagen" ).change(function() {

//devuelve el primer elemento <img> en el documento

preview = document.querySelector('img');

//devuelve el primer elemento <input> tipo file en el

documento posicion 0

file = document.querySelector('input[type=file]').files[0];

//crear objero fileReader

reader = new FileReader();

Page 94: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xvii

reader.readAsDataURL(file);

//validando que el usuario solo pueda subir imagenes de tipo

jpg o png

if (!(/\.(jpg|png)$/i).test(file.name)){

alert("El archivo no es una imagen, intenta de nuevo por

favor");

}else{

//funcion que se ejecuta una vez que la lectura a finalizado

reader.onloadend = function () {

// result contiene un data: URL que representa los datos del

fichero.

preview.src = reader.result;

imagen =

reader.result.replace(/^data:image\/(png|jpeg);base64,/,"");

iniciarPizarra();

$("#btimgs").show();

//CONEXION CON EL SERVIDOR, ENVIANDO IMAGEN EN BASE 64

$.ajax({

async: true,

type: "POST",

url:"http://127.0.0.1:5000/procesar",

data: JSON.stringify(imagen),

dataType: "json",

contentType: "application/json",

//RECIBIR DATOS

success: function(data){

//ESTABLECIENDO ESCALA PARA AJUSTAR EL TAMANO DE LAS FIGURAS

escala = preview.height/data["dimensiones"][0];

escale = escala.toFixed(2);

//RECORRIENDO ARRAY DE COORDENADAS DE CIRCULOS DETECTADOS

//console.log(data);

if(data["circulo"].length==0){

ok_cir = 0;

} else{

ok_cir = 1;

fig_cir = data["circulo"];

Page 95: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xviii

for(num_array = 0; num_array<data["circulo"].length;

num_array++){

dibuja_circulo(data["circulo"][num_array][0]*escale,data["ci

rculo"][num_array][1]*escale,data["circulo"][num_array][2]*e

scale);

}

}

//RECORRIENDO ARRAY DE VERTICES DE RECTANGULOS DETECTADOS

if(data["rectangulo"].length==0){

ok_cuad = 0;

} else{

ok_cuad = 1;

fig_rec = data["rectangulo"];

for(num_array = 0; num_array<data["rectangulo"].length;

num_array++){

h=data["rectangulo"][num_array][3]-

data["rectangulo"][num_array][1];

//console.log(h)

w=data["rectangulo"][num_array][2]-

data["rectangulo"][num_array][0];

dibuja_rectangulo(data["rectangulo"][num_array][0]*escale,da

ta["rectangulo"][num_array][1]*escale,w*escale,h*escale);

//PARA CUADRILATEROS EN GENERAL

//dibuja_rectangulo(data["rectangulo"][num_array][0]*escale,

data["rectangulo"][num_array][1]*escale,data["rectangulo"][n

um_array][2]*escale,data["rectangulo"][num_array][3]*escale,

data["rectangulo"][num_array][4]*escale,data["rectangulo"][n

um_array][5]*escale,data["rectangulo"][num_array][6]*escale,

data["rectangulo"][num_array][7]*escale);

}

}

}

});

}

Page 96: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xix

}

});

//FUNCION PARA INICIALIZAR CANVAS

function iniciarPizarra(){

canvas = document.getElementById('myCanvas');

context = canvas.getContext('2d');

canvas.width=preview.width;

canvas.height=preview.height;

}

function limpiarCanvas(){

context.beginPath();

context.clearRect(0,0, canvas.width, canvas.height);

}

//FUNCION PARA DIBUJAR CIRCULOS CON COORDENADAS RECIBIDAS

function dibuja_circulo(x,y,r){

context.beginPath();

context.arc(x, y,r,0,2*Math.PI, false );

context.lineWidth = 5;

context.strokeStyle=color_fig[0];

context.stroke();

}

//FUNCION PARA DIBUJAR RECTANGULOS CON LOS VERTICES

RECIBIDOS

function dibuja_rectangulo(x,y,w,h){

context.beginPath();

context.rect(x,y,w,h);

context.lineWidth = 5;

context.strokeStyle=color_fig[1];

context.stroke();

}

Page 97: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xx

//FUNCION PARA DIBUJAR CUADRILATEROS EN GENERAL

/*function dibuja_rectangulo(x0,y0,x1,y1,x2,y2,x3,y3){

context.beginPath();

context.moveTo(x0,y0);

context.lineTo(x1,y1);

context.lineTo(x2,y2);

context.lineTo(x3,y3);

context.lineTo(x0,y0);

context.lineWidth = 5;

context.strokeStyle=color_fig[1];

context.stroke();

}*/

function render_cir(){

for(num_array = 0; num_array<fig_cir.length; num_array++){

dibuja_circulo(fig_cir[num_array][0]*escale,fig_cir[num_arra

y][1]*escale,fig_cir[num_array][2]*escale);

}

}

function render_rec(){

for(num_array = 0; num_array<fig_rec.length; num_array++){

h=fig_rec[num_array][3]-fig_rec[num_array][1];

w=fig_rec[num_array][2]-fig_rec[num_array][0];

dibuja_rectangulo(fig_rec[num_array][0]*escale,fig_rec[num_a

rray][1]*escale,w*escale,h*escale);

}

}

// PARA CUADRILATEROS EN GENERAL

/*function render_rec(){

for(num_array = 0; num_array<fig_rec.length; num_array++){

dibuja_rectangulo(fig_rec[num_array][0]*escale,fig_rec[num_a

rray][1]*escale,fig_rec[num_array][2]*escale,fig_rec[num_arr

ay][3]*escale,fig_rec[num_array][4]*escale,fig_rec[num_array

][5]*escale,fig_rec[num_array][6]*escale,fig_rec[num_array][

7]*escale);

Page 98: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxi

}

}*/

//FUNCION DE BOTON CIRCULO DE INTERACCION CON EL USUARIO

$("#bt-cir").click(function(){

if(ok_cir==0){

$("canvas").slideToggle(limpiarCanvas);

document.getElementById("bt-cir").href="#NoCirPopup";

mal.play();

}else{

if(ok_cir==1){

//setInterval(limpiarCanvas,1000);

//setInterval(render,2000);

setTimeout(limpiarCanvas,500);

setTimeout(render_cir,1000);

setTimeout(limpiarCanvas,1500);

setTimeout(render_cir,2000);

setTimeout(limpiarCanvas,2500);

setTimeout(render_cir,3000);

document.getElementById("bt-cir").href="#CirPopup";

ok.play();

}

}

});

//FUNCION DE BOTON RECTANGULO DE INTERACCION CON EL USUARIO

$("#bt-cua").click(function(){

if(ok_cuad==0){

$("canvas").slideToggle(limpiarCanvas);

setTimeout(function(){ $("canvas").slideToggle(); }, 3000);

document.getElementById("bt-cua").href="#NoCuadPopup";

mal.play();

}else{

if(ok_cuad==1){

setTimeout(limpiarCanvas,500);

setTimeout(render_rec,1000);

Page 99: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxii

setTimeout(limpiarCanvas,1500);

setTimeout(render_rec,2000);

setTimeout(limpiarCanvas,2500);

setTimeout(render_rec,3000);

document.getElementById("bt-cua").href="#CuadPopup";

ok.play();

}

}

});

//ELECCION DE COLORES PARA LAS FIGURAS

$("input[type='checkbox']").change(function(){

if($(this).is(':checked')){

if($("input[type='checkbox']:checked").length<=2 &&

$("input[type='checkbox']:checked").length>=1){

color_fig.push($(this).val());

if($("input[type='checkbox']:checked").length==2){

$("#subirimg").show();

fig=1;

}

}else{

alert("Solo debes elegir DOS colores");

$(this).is(':checked')=false;

}

}else{

for(i=0;i<color_fig.length;i++){

if(color_fig[i]==($(this).val())){

color_fig.splice(i,1);

}

}

if($("input[type='checkbox']:checked").length==0 && fig==1){

alert("Debes elegir DOS colores");

preview.src="";

limpiarCanvas();

$("#subirimg").hide();

Page 100: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxiii

$("#btimgs").hide();

}

}

});

});

c) mystyle.css

/*ANADIENDO TIPOGRAFIAS*/

@font-face{

font-family:"Timoteo";

src:url(fuentes/Timoteo.ttf) format('truetype');

}

@font-face{

font-family:"FoliaMixRegular";

src:url(fuentes/FoliaMixRegular.ttf) format('truetype');

}

@font-face{

font-family:"Delius-Regular";

src:url(fuentes/Delius-Regular.ttf) format('truetype');

}

@font-face{

font-family:"Danae";

src:url(fuentes/Danae.ttf) format('truetype');

}

/*MODIFICANDO ESTILOS*/

h1{

font-family:FoliaMixRegular;

}

h2{

font-family:Danae;

color:rgba(244, 208, 63, 0.85);

}

Page 101: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxiv

a{

font-family:Danae;

}

p{

font-family:Delius-Regular;

text-align:justify;

color: #FAFAD2;

font-size:14pt;

}

ul li a{

padding:20px;

display:block;

text-decoration:none;

}

ul li span{

margin-right:10px;

}

ul{

list-style: none;

}

h2{

margin-left:25%;

}

img{

position:absolute;

z-index:1;

}

canvas{

position:absolute;

Page 102: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxv

z-index:2;

}

.dimensiones{

width:54%;

text-align:center;

}

Anexo C. Cliente Móvil

a) index.js

var preview;

var canvas;

var context;

var escale;

var ok_cir=2;

var ok_cuad=2;

var color_fig=[];

var fig_cir=[]

var fig_rec=[];

var fig = 0;

// ESPERA A QUE LAS APIs SE CARGUEN

document.addEventListener("deviceready", onDeviceReady,

false);

// UNA VEZ CARGADAS LAS APIs

function onDeviceReady() {

var ok = document.getElementById("bien");

var bad = document.getElementById("mal");

Page 103: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxvi

document.getElementById("capture").addEventListener("click",

capturePhoto);

document.getElementById("getFoto").addEventListener("click",

getPhoto);

$("#subirimg").hide();

$("#btimgs").hide();

//FUNCION DE BOTON CIRCULO DE INTERACCION CON EL USUARIO

$("#bt-cir").click(function(){

if(ok_cir==0){

document.getElementById("bt-cir").href="#NoCirPopup";

mal.play();

limpiarCanvas();

}else{

if(ok_cir==1){

document.getElementById("bt-cir").href="#CirPopup";

ok.play();

render_cir();

}

}

});

//FUNCION DE BOTON RECTANGULOS DE INTERACCION CON EL USUARIO

$("#bt-cua").click(function(){

if(ok_cuad==0){

document.getElementById("bt-cua").href="#NoCuadPopup";

mal.play();

limpiarCanvas();

}else{

if(ok_cuad==1){

document.getElementById("bt-cua").href="#CuadPopup";

ok.play();

render_rec();

}

}

Page 104: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxvii

});

//ELECCION DE COLORES PARA LAS FIGURAS

$("input[type='checkbox']").change(function(){

if($(this).is(':checked')){

if($("input[type='checkbox']:checked").length<=2 &&

$("input[type='checkbox']:checked").length>=1){

color_fig.push($(this).val());

if($("input[type='checkbox']:checked").length==2){

$("#subirimg").show();

fig=1;

}

}else{

alert("Solo debes elegir DOS colores");

$(this).is(':checked')=false;

}

}else{

for(i=0;i<color_fig.length;i++){

if(color_fig[i]==($(this).val())){

color_fig.splice(i,1);

}

}

if($("input[type='checkbox']:checked").length==0 && fig==1){

alert("Debes elegir DOS colores");

preview.src="";

limpiarCanvas();

$("#subirimg").hide();

$("#btimgs").hide();

}

}

});

}

// SE LLAMA CUANDO LA FOTO ES CAPTURADA CORRECTAMENTE

function onPhotoDataSuccess(imageURL) {

Page 105: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxviii

preview = document.getElementById('image');

//preview.style.display = 'block';

//Mostrando fotografia

preview.src = "data:image/jpeg;base64," + imageURL;

imagen = imageURL;

iniciarPizarra();

$("#btimgs").show();

//CONEXION CON EL SERVIDOR, ENVIANDO IMAGEN EN BASE 64

$.ajax({

async: true,

type: "POST",

url:"http://192.168.0.101:5000/procesar",

data: JSON.stringify(imagen),

dataType: "json",

contentType: "application/json",

//RECIBIR DATOS

success: function(data){

//ESTABLECIENDO ESCALA PARA AJUSTAR EL TAMANO DE LAS FIGURAS

escala = preview.height/data["dimensiones"][0];

escale = escala.toFixed(2);

//RECORRIENDO ARRAY DE COORDENADAS DE CIRCULOS DETECTADOS

if(data["circulo"].length==0){

ok_cir = 0;

} else{

ok_cir = 1;

fig_cir = data["circulo"];

for(num_array = 0; num_array<data["circulo"].length;

num_array++){

dibuja_circulo(data["circulo"][num_array][0]*escale,data["ci

rculo"][num_array][1]*escale,data["circulo"][num_array][2]*e

scale);

//dibuja_circulo(fig_cir[num_array][0]*escale,fig_cir[num_ar

ray][1]*escale,fig_cir[num_array][2]*escale);

}

}

//RECORRIENDO ARRAY DE VERTICES DE RECTANGULOS DETECTADOS

Page 106: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxix

if(data["rectangulo"].length==0){

ok_cuad = 0;

} else{

ok_cuad = 1;

fig_rec = data["rectangulo"];

for(num_array = 0; num_array<data["rectangulo"].length;

num_array++){

h=data["rectangulo"][num_array][3]-

data["rectangulo"][num_array][1];

w=data["rectangulo"][num_array][2]-

data["rectangulo"][num_array][0];

dibuja_rectangulo(data["rectangulo"][num_array][0]*escale,da

ta["rectangulo"][num_array][1]*escale,w*escale,h*escale);

}

}

},

error: function(jqXHR,textStatus,errorThrown){

//console.log('jqXHR:');

//console.log(jqXHR);

alert("Ocurrio un error en la conexión:" +jqXHR);

//console.log('textStatus:');

//console.log(textStatus);

//alert(textStatus);

//console.log('errorThrown:');

//console.log(errorThrown);

//alert(errorThrown);

}

});

}

// FUNCION PARA CAPTURAR LA FOTO

function capturePhoto() {

// TOMA LA FOTO CON LA CAMARA DEL DISPOSITIVO Y DEVUELVE

ESTA EN BASE64

navigator.camera.getPicture(onPhotoDataSuccess, onFail, {

Page 107: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxx

quality: 30,

targetWidth: 600,

targetHeight: 600,

destinationType: navigator.camera.DestinationType.DATA_URL,

saveToPhotoAlbum: true

});

}

// FUNCION PARA OBTENER LA FOTO DESDE GALERIA

function getPhoto() {

// RECUPERA LA UBICACION DE LA IMAGEN

navigator.camera.getPicture(onPhotoDataSuccess, onFail, {

//quality: 30,

//targetWidth: 600,

//targetHeight: 600,

destinationType: navigator.camera.DestinationType.DATA_URL,

sourceType:

navigator.camera.PictureSourceType.SAVEDPHOTOALBUM

});

}

// FUNCION LLAMADA SI OCURRE UN ERROR DURANTE LA OPERACION

DE CAPTURA DE LA IMAGEN

function onFail(message) {

alert('Failed because: ' + message);

}

//FUNCION PARA INICIALIZAR CANVAS

function iniciarPizarra(){

canvas = document.getElementById('myCanvas');

context = canvas.getContext('2d');

canvas.width=preview.width;

canvas.height=preview.height;

}

function limpiarCanvas(){

context.beginPath();

Page 108: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxxi

context.clearRect(0,0, canvas.width, canvas.height);

}

//FUNCION PARA DIBUJAR CIRCULOS CON COORDENADAS RECIBIDAS

function dibuja_circulo(x,y,r){

context.beginPath();

context.arc(x, y,r,0,2*Math.PI, false );

context.lineWidth = 5;

context.strokeStyle=color_fig[0];

context.stroke();

}

//FUNCION PARA DIBUJAR RECTANGULOS CON LOS VERTICES

RECIBIDOS

function dibuja_rectangulo(x,y,w,h){

context.beginPath();

context.rect(x,y,w,h);

context.lineWidth = 5;

context.strokeStyle=color_fig[1];

context.stroke();

}

function render_cir(){

for(num_array = 0; num_array<fig_cir.length; num_array++){

dibuja_circulo(fig_cir[num_array][0]*escale,fig_cir[num_arra

y][1]*escale,fig_cir[num_array][2]*escale);

}

}

function render_rec(){

for(num_array = 0; num_array<fig_rec.length; num_array++){

h=fig_rec[num_array][3]-fig_rec[num_array][1];

w=fig_rec[num_array][2]-fig_rec[num_array][0];

dibuja_rectangulo(fig_rec[num_array][0]*escale,fig_rec[num_a

rray][1]*escale,w*escale,h*escale);

}

}

Page 109: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxxii

b) config.xml

<?xml version='1.0' encoding='utf-8'?>

<widget id="com.example.dapage" version="0.0.1"

xmlns="http://www.w3.org/ns/widgets"

xmlns:cdv="http://cordova.apache.org/ns/1.0">

<name>DAPAGE</name>

<description>

A sample Apache Cordova application that responds to the

deviceready event.

</description>

<author email="[email protected]"

href="http://cordova.io">

Apache Cordova Team

</author>

<content src="index.html" />

<plugin name="cordova-plugin-whitelist" spec="1" />

<access origin="*" />

<allow-intent href="http://*/*" />

<allow-intent href="https://*/*" />

<allow-intent href="tel:*" />

<allow-intent href="sms:*" />

<allow-intent href="mailto:*" />

<allow-intent href="geo:*" />

<platform name="android">

<allow-intent href="market:*" />

</platform>

<platform name="ios">

<allow-intent href="itms:*" />

<allow-intent href="itms-apps:*" />

</platform>

</widget>

Page 110: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxxiii

Anexo D. Manual de Usuario.

a) Aplicación Web

1. En la página de Inicio click en el botón Menú y seleccionamos la opción

Aplicación.

2. En la página que aparezca se mostrará una paleta de colores en la que

procedemos a elegir dos colores con los que se dibujarán las figuras detectadas.

Page 111: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxxiv

3. En la misma página luego de elegir dos colores, aparecerá un botón para

seleccionar una imagen, damos click sobre Seleccionar archivo.

4. Se abrirá una nueva ventana en la que elegiremos una imagen con la que

deseemos trabajar y hacemos click en el botón Abrir.

Page 112: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxxv

5. Sobre la imagen elegida se dibujarán las figuras detectadas y al lado derecho

aparecerán dos botones, éstos nos permitirán elegir qué figura observamos que

se dibujó.

Si elegimos correctamente observaremos un mensaje de CORRECTO! Y las

figuras dibujadas se animarán.

Page 113: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxxvi

Si elegimos incorrectamente observaremos un mensaje de INCORRECTO! Y las

figuras dibujadas desaparecerán.

b) Aplicación Móvil

1. Abrir la aplicación, elegimos Menú y vamos a la opción Aplicación.

Page 114: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxxvii

2. Elegimos dos colores con los cuales se dibujarán las figuras detectadas.

3. Touch en el botón Capturar Imagen, para proceder a tomar una fotografía o

touch en el botón Ir a Galería para subir una imagen.

Page 115: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxxviii

4. Verificar e Identificar las figuras que se dibujan.

Si la identificación es correcta, aparecerá un mensaje de CORRECTO!.

Page 116: UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE … · Yo Carolina Alexandra Hurtado Mora en calidad de autor(a) del Proyecto Integrador realizado sobre: "Desarrollo de una aplicación

xxxix

Si la identificación es incorrecta, aparecerá un mensaje de INCORRECTO! Y la

figura desaparecerá.