seguimiento de un objeto en movimiento mediante captura de

64
UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL FACULTAD DE CIENCIAS DE LA INGENIERÍA E INDUSTRIAS CARRERA DE INGENIERÍA INFORMÁTICA Y CIENCIAS DE LA COMPUTACIÓN SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE VIDEO SOBRE LA PLATAFORMA ANDROID UTILIZANDO LAS HERRAMIENTAS OPENCV Y WEKA. TRABAJO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN INFORMÁTICA Y CIENCIAS DE LA COMPUTACIÓN GABRIEL DAMIÁN OSORIO PAREDES DIRECTOR: DR. DIEGO ORDÓÑEZ Quito, Junio 2016

Upload: others

Post on 03-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

 

  

UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL

FACULTAD DE CIENCIAS DE LA INGENIERÍA E INDUSTRIAS

CARRERA DE INGENIERÍA INFORMÁTICA Y

CIENCIAS DE LA COMPUTACIÓN

SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE VIDEO SOBRE LA PLATAFORMA ANDROID UTILIZANDO LAS

HERRAMIENTAS OPENCV Y WEKA.

TRABAJO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN INFORMÁTICA Y CIENCIAS DE LA COMPUTACIÓN

GABRIEL DAMIÁN OSORIO PAREDES

DIRECTOR: DR. DIEGO ORDÓÑEZ

Quito, Junio 2016

Page 2: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

© Universidad Tecnológica Equinoccial. 2016

Reservados todos los derechos de reproducción

Page 3: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE
Page 4: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

utilizó la librería de código abierto de OpenCv

y para el aprendizaje automático la

herramienta Weka.

El trabajo de titulación está compuesto por

dos aplicaciones. Una aplicación de escritorio

desarrollada en Java con el IDE NetBeans

que permitió categorizar las imágenes

utilizando la librería OpenCv. En esta

aplicación se creó un archivo el cual contiene

las posiciones en X e Y de un punto luminoso.

Este archivo será procesado por la

herramienta Weka para determinar que

algoritmos de aprendizaje automático se

ajustan a las necesidades del proyecto.

La aplicación principal es la que se desarrolló

para Android, esta aplicación capta video y lo

procesa en vivo mediante el uso de la librería

OpenCv para sistemas operativos Android, y

de esta manera determina si existe o no un

punto luminoso o un objeto simple. En caso

de existir un objeto o punto luminoso el

programa envía comandos vía Bluetooth a un

robot para desplazarse manteniendo dicho

objeto en el centro de la pantalla.

El uso de estas herramientas en conjunto

facilitó el procesamiento y la creación del

modelo para cumplir con el objetivo de este

trabajo de titulación. En este documento se

redactan las partes claves del trabajo como

son el tamaño de las imágenes, el banco de

imágenes necesario para crear el modelo, las

librerías de procesamiento de imágenes y los

algoritmos de aprendizaje automático.

PALABRAS CLAVES: Weka, Android, Opencv, Procesamiento De

Imágenes, Aprendizaje Automático

ABSTRACT:

This work aims to identify a blip on a surface,

or a simple object, using the camera of an

Page 5: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Android device. To meet the objective,

libraries for image processing and machine

learning tools were used.

The project was developed with free software

tools such as the NetBeans IDE and Eclipse

in the Java programming language. For image

processing, the open source library OpenCV

and the Weka machine learning tool code

were used.

This project consists of two applications. A

desktop application developed in Java with

NetBeans IDE that allowed to categorize

images using the OpenCV library. In this

application a file containing examples of

positions in X and Y of a blip was created. This

file was processed by the Weka tool to

determine which machine learning algorithms

meet the goals of the project.

The main application is the one developed for

Android, this application captures and

processes live video using the OpenCV library

for Android operating systems, and thus

determines whether there is a blip or a simple

object. If there is an object or blip the program

sends commands via Bluetooth to a robot to

keep the object in the center of the screen.

Using these tools together facilitated the

processing and creation of the model to meet

the objective of this work degree. In this

document the key parts of the job such as the

size of the images, the image bank needed to

create the model, libraries of image

processing and machine learning algorithms

are written.

KEYWORDS

Weka, Android, OpenCv, Image Processing,

Machine Learning

Page 6: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE
Page 7: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE
Page 8: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE
Page 9: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE
Page 10: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

ÍNDICE DE CONTENIDOS PÁGINA

RESUMEN ..................................................................................................... iv ABSTRACT ..................................................................................................... v 1. INTRODUCCIÓN ....................................................................................... 1 2. MARCO TEÓRICO .................................................................................... 5

2.1. PLATAFORMAS MÓVILES. ............................................................. 5 2.1.1. PLATAFORMA ANDROID. ............................................................ 5 2.1.2. PLATAFORMA iOS. ...................................................................... 6 2.1.3. PLATAFORMA WINDOWS PHONE. ............................................ 7

2.2. PLATAFORMA ANDROID VS. PLATAFORMA iOS. ........................ 8 2.3. PROCESAMIENTO DE IMÁGENES. ................................................ 9

2.3.1. IMÁGENES DIGITALES. ............................................................... 9 2.4. VISIÓN POR COMPUTADOR. ....................................................... 10 2.5 OPENCV ......................................................................................... 11

2.5.1. RECONOCIMIENTO DE OBJETOS. ........................................... 11 2.5.2. SEGUIMIENTO DE OBJETOS. ................................................... 12 2.5.3. ESCALA DE GRISES ................................................................. 12 2.5.4. BINARIZACION .......................................................................... 13 2.5.5. FILTROS LINEALES EN IMAGEN DIGITAL ............................... 13 2.5.6 DILATACION Y EROSION ........................................................... 14 2.5.7 ALGORITMO DE SUZUKI ............................................................ 15

2.6. INTELIGENCIA ARTIFICIAL. .......................................................... 15 2.6.1 APRENDIZAJE AUTOMÁTICO. ................................................... 16 2.6.2 MÉTODOS DE APRENDIZAJE AUTOMÁTICO ........................... 17 2.6.3 MINERÍA DE DATOS ................................................................... 19

2.7. APRENDIZAJE AUTOMÁTICO Y VISIÓN POR COMPUTADOR. . 19 2.8 WEKA. ................................................................................................ 20 2.9 METODOLOGÍAS PARA EL DESARROLLO DE SOFTWARE. ......... 21

2.9.1. METODOLOGÍAS TRADICIONALES. ......................................... 21 2.9.2. METODOLOGÍAS ÁGILES. ........................................................ 22 2.9.3. EXTREME PROGRAMMING (XP). ............................................. 23

i

Page 11: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2.9.4. SCRUM. ...................................................................................... 23 3. METODOLOGIA ...................................................................................... 24

3.1 FASE 1: CAPTURA DE IMÁGENES. ................................................. 24 3.2 FASE 2: CATEGORIZACIÓN DE IMÁGENES. .................................. 25 3.3 FASE 3: MODELAMIENTO DE LOS DATOS. .................................... 25 3.4 FASE 4: DESARROLLO DE APLICACIÓN. ....................................... 25

4. ANÁLISIS DE RESULTADOS .................................................................. 27 4.1 CAPTURA DE IMÁGENES. ................................................................ 27 4.2 CATEGORIZACIÓN DE IMÁGENES. ................................................. 28 4.3 CREACIÓN DEL MODELO. ............................................................... 30 4.4 DESARROLLO APLICACIÓN ANDROID. .......................................... 33 4.5 FALSOS POSITIVOS. ........................................................................ 37

5. CONCLUSIONES Y RECOMENDACIONES. .......................................... 39 5.1 CONCLUSIONES ............................................................................... 39 5.2 RECOMENDACIONES ....................................................................... 39

BIBLIOGRAFÍA ............................................................................................ 41

ii

Page 12: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

ÍNDICE DE FIGURAS Página

Figura 1. Cuadrícula para la captura de imágenes. ..................................... 24 Figura 2. Cuadricula para la categorización. ................................................ 27 Figura 3. Código botón cargar ...................................................................... 28 Figura 4. Código procesamiento de imagen para la categorización. ............ 28 Figura 5. Creación del archivo csv. .............................................................. 29 Figura 6. Método getPosicion. ...................................................................... 29 Figura 7. Archivo con las Categorías. .......................................................... 30 Figura 8. Interfaz Weka ................................................................................ 30 Figura 9. Selección de Archivo “csv” ............................................................ 31 Figura 10. Filtro no supervisado para cambiar el tipo de clase. ................... 31 Figura 11. Cambio de clase ......................................................................... 32 Figura 12. Resultado árbol de decisión. ....................................................... 32 Figura 13. Árbol de decisión......................................................................... 33 Figura 14. Menú de la Aplicación. ................................................................ 33 Figura 15. Código Menú Laser ..................................................................... 34 Figura 16. Resultado MinMaxLocResult en diferentes superficies. .............. 34 Figura 17. Código del menú Binarizar .......................................................... 35 Figura 18. Resultado por findContours en diferentes superficies. ................ 35 Figura 19. Código menú Otros ..................................................................... 36 Figura 20. Objeto marcados por color .......................................................... 36 Figura 21. Declaración de variables para direccionamiento del robot. ......... 37 Figura 22. Código árbol de decisiones ......................................................... 37 Figura 23. Detección de falsos positivos por MinMaxLocResult de Opencv 38 Figura 24. Detección de falsos positivos por findContours de Opencv ........ 38

iii

Page 13: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

RESUMEN

El presente trabajo de titulación tiene como finalidad identificar un punto

luminoso en una superficie, o un objeto simple, a través del sensor de la

cámara de un dispositivo Android. Para cumplir con el objetivo se utilizaron

librerías para el procesamiento de imágenes y herramientas de aprendizaje

automático.

El proyecto se desarrolló con herramientas de software libre como lo son los

IDE NetBeans y Eclipse en el lenguaje de programación Java. Para el

procesamiento de imágenes se utilizó la librería de código abierto de OpenCv

y para el aprendizaje automático la herramienta Weka.

El trabajo de titulación está compuesto por dos aplicaciones. Una aplicación

de escritorio desarrollada en Java con el IDE NetBeans que permitió

categorizar las imágenes utilizando la librería OpenCv. En esta aplicación se

creó un archivo el cual contiene las posiciones en X e Y de un punto luminoso.

Este archivo será procesado por la herramienta Weka para determinar que

algoritmos de aprendizaje automático se ajustan a las necesidades del

proyecto.

La aplicación principal es la que se desarrolló para Android, esta aplicación

capta video y lo procesa en vivo mediante el uso de la librería OpenCv para

sistemas operativos Android, y de esta manera determina si existe o no un

punto luminoso o un objeto simple. En caso de existir un objeto o punto

luminoso el programa envía comandos vía Bluetooth a un robot para

desplazarse manteniendo dicho objeto en el centro de la pantalla.

El uso de estas herramientas en conjunto facilitó el procesamiento y la

creación del modelo para cumplir con el objetivo de este trabajo de titulación.

En este documento se redactan las partes claves del trabajo como son el

tamaño de las imágenes, el banco de imágenes necesario para crear el

modelo, las librerías de procesamiento de imágenes y los algoritmos de

aprendizaje automático.

iv

Page 14: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

ABSTRACT

This work aims to identify a blip on a surface, or a simple object, using the

camera of an Android device. To meet the objective, libraries for image

processing and machine learning tools were used.

The project was developed with free software tools such as the NetBeans IDE

and Eclipse in the Java programming language. For image processing, the

open source library OpenCV and the Weka machine learning tool code were

used.

This project consists of two applications. A desktop application developed in

Java with NetBeans IDE that allowed to categorize images using the OpenCV

library. In this application a file containing examples of positions in X and Y of

a blip was created. This file was processed by the Weka tool to determine

which machine learning algorithms meet the goals of the project.

The main application is the one developed for Android, this application

captures and processes live video using the OpenCV library for Android

operating systems, and thus determines whether there is a blip or a simple

object. If there is an object or blip the program sends commands via Bluetooth

to a robot to keep the object in the center of the screen.

Using these tools together facilitated the processing and creation of the model

to meet the objective of this work degree. In this document the key parts of the

job such as the size of the images, the image bank needed to create the model,

libraries of image processing and machine learning algorithms are written.

v

Page 15: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

INTRODUCCIÓN

Page 16: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

1. INTRODUCCIÓN

Android es un sistema operativo basado en Linux diseñado para teléfonos

móviles y tablets con pantallas táctiles. Su popularidad ha ido en aumento

desde su salida hasta ser uno de los sistemas operativos más utilizados en la

actualidad.

La visión por computador es un campo de rápido crecimiento dedicado a

analizar, modificar y comprender a un alto nivel las imágenes. Su objetivo es

determinar lo que está sucediendo delante de una cámara y utilizar ese

conocimiento para controlar un ordenador o un sistema robótico (Pulli,

Baksheev, Kornyakov, & Eruhimov, 2012).

Las áreas de aplicación de la tecnología de visión por ordenador incluyen

diferentes campos como por ejemplo video vigilancia, biometría, fotografía,

medicina, juegos de realidad aumentada, las nuevas interfaces de usuario, y

muchos más.

Actualmente la mayoría de teléfonos móviles con el sistema operativo Android

poseen incorporada una cámara. Mediante el uso de la cámara del dispositivo

móvil se identificará el ambiente que rodea al robot, se utilizará una biblioteca

especializada para el tratamiento de imágenes llamada OpenCV.

OpenCV (Open Source Computer Vision) es una biblioteca con licencia BSD

de código abierto que incluye varios cientos de algoritmos de visión por

ordenador. («Introduction — OpenCV 2.4.8.0 documentation», 2014)

La biblioteca OpenCV tiene más de 500 funciones realizadas y sus

actualizaciones se lanzan cada 2 años, gracias a su sofisticación permite

desarrollar sistemas significativos con aplicación comercial.(Zelinsky, 2009).

La automatización de dispositivos electrónicos avanza cada día y esto es

posible gracias a la inteligencia artificial y las técnicas para el aprendizaje

automático.

1

Page 17: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

La inteligencia artificial forma parte de la informática y su objetivo es imitar la

inteligencia de los seres vivos mediante la estructuración de procesos. Uno de

los campos que más se destaca de la inteligencia artificial es el aprendizaje

automático, “cuyo objetivo es desarrollar técnicas que permitan a las

computadoras aprender; de forma más concreta, se trata de crear programas

capaces de generalizar comportamientos a partir de una información no

estructurada suministrada en forma de ejemplos.” (de la Caridad Rivero-

Hernández, Salgueiro-Sicilia, & Domínguez-López, 2012).

Los algoritmos para aprendizaje automático y el análisis de los datos se los

encuentra en el software libre llamado Weka.

Mediante los algoritmos de la biblioteca OpenCV y los algoritmos de

aprendizaje automático, implementados en la aplicación Android que dirigirá

al robot, se analizará el video captado por la cámara del dispositivo en tiempo

real y se indicará al robot la dirección que debería tomar para mantener el

objeto o punto luminoso centrado en la pantalla del dispositivo móvil.

La tecnología tiene un propósito general, facilitar la vida de las personas. La

automatización de dispositivos tiene un gran campo de aplicación, ya sea en

el hogar, en el sector industrial, inclusive en el ámbito militar.

En la automatización de robots móviles la detección de líneas o carriles ha

ganado una gran atención así como también lo ha hecho en los sistemas de

navegación inteligentes. Algunos de ellos son desarrollados para la plataforma

Android en conjunto con la librería OpenCV (Wei & Meng, 2013).

Mediante el uso de bibliotecas especializadas para el tratamiento de imágenes

se pretende desarrollar una aplicación para el sistema operativo Android que

permita automatizar el movimiento de un robot móvil mediante el análisis de

las imágenes captadas por la cámara del dispositivo.

Este análisis consiste en identificar un punto luminoso sobre una superficie y

ejecutar las instrucciones adecuadas para que el robot se dirija a esa posición.

Actualmente no existe una aplicación orientada a dispositivos móviles que

analice en tiempo real las imágenes con la librería OpenCV y con algoritmos

2

Page 18: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

de aprendizaje automático para que detecte un objeto simple o un punto

luminoso y permita guiar el movimiento de un robot.

La detección de objetos es una tecnología de computación relacionada con la

visión artificial y el procesamiento de imágenes que se ocupa de detectar

objetos de una cierta clase de imágenes y videos digitales. (Savitha,

Venugopal, Sarojadevi, & Chiplunkar, 2014).

Esta tecnología se la aplica a diferentes campos, por ejemplo realidad

aumentada, control de tráfico, estudios de imágenes médicas y en la

interacción del hombre con la máquina.

Con la tecnología presente en los dispositivos móviles actuales y su capacidad

de hardware y software estos permiten ejecutar programas avanzados

similares a los que se pueden ejecutar en una computadora. Un dispositivo

móvil en la actualidad puede ser utilizado para el tratamiento de imágenes

gracias a los avances que se han hecho en la biblioteca OpenCV.

Utilizando las herramientas disponibles junto con algoritmos de procesamiento

de imágenes y machine learning se podrá automatizar el movimiento de un

robot. Este robot puede ser utilizado en diferentes ámbitos ya sea industrial o

para asistir a personas con discapacidades visuales u otro tipo de

discapacidades.

Los objetivos que se plantearon fueron:

Diseñar e implementar una aplicación Android-OpenCV-Weka que permita

analizar en tiempo real un flujo continuo de imágenes para detectar un objeto

simple o punto luminoso moviéndose en el piso, e indicar la dirección a seguir

para mantener siempre el punto o el objeto en el centro de la imagen.

Desarrollar un módulo de reconocimiento utilizando los algoritmos contenidos

en la biblioteca OpenCV que permita detectar un punto luminoso en una

captura de video.

Desarrollar un módulo para encontrar la ubicación del objeto a seguir

utilizando la herramienta de aprendizaje automático Weka.

3

Page 19: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Desarrollar un módulo de direccionamiento basado en un modelo de

aprendizaje automático para guiar al robot mediante comandos bluetooth.

4

Page 20: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

MARCO TEÓRICO

Page 21: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2. MARCO TEÓRICO

2.1. PLATAFORMAS MÓVILES.

Ya hay más teléfonos móviles que ordenadores conectados a Internet.

Mientras que una minoría de esos teléfonos se consideraría Smartphone, se

está viendo un movimiento rápido donde los teléfonos de gama alta de hoy en

día se convierten en el año siguiente en dispositivos de gama media o incluso

en dispositivos de gama baja. (Allen, Graupera, & Lundrigan, 2010)

El diseño de plataformas móviles se ha apoyado gradualmente en el uso de

sensores integrados para optimizar la operación de la plataforma (por ejemplo,

la brújula digital, sensores de proximidad y sensores acelerómetros), y para

ofrecer servicios de alto nivel a los usuarios (por ejemplo, cámaras digitales y

sensores NFC).Como consecuencia de las innovaciones de hardware y

refinamientos, nuevas arquitecturas de software y sistemas operativos han

sido creados desde cero. Como resultado se obtuvieron tres poderosas

plataformas nativas: Android de Google, Apple iOS y Windows Phone de

Microsoft. (Helal, Bose, & Li, 2012)

2.1.1. PLATAFORMA ANDROID.

En 2005, Google compró una compañía pequeña fundada por Andy Ruben.

El 5 de noviembre de 2007, Google anunció el sistema operativo Android y la

Open Handset Alliance, un grupo de empresas que ayuden a desarrollarlo.

Los miembros de Open Handset Alliance incluyen compañías de teléfonos,

desarrolladores de software, fabricantes de dispositivos y fabricantes de

componentes.

Android tiene una filosofía muy diferente en comparación con Apple y el

iPhone. Cualquiera podría utilizar Android en sus dispositivos de forma

5

Page 22: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

gratuita, cualquier persona podría modificar Android, y cualquier persona

puede desarrollar aplicaciones para ella sin pedir permiso para colocar sus

aplicaciones en el Android Market. (Karch, 2010)

Se diversifica con lectores de libros electrónicos, tabletas, e incluso

dispositivos médicos. El costo y su fácil personalización se prestan a todo tipo

de aplicaciones para dispositivos portátiles. Android está disponible como una

plataforma móvil de código abierto bajo la Licencia Pública General de GNU y

la licencia Apache 2.0.

Esto permite que cualquiera que esté interesado, para descargar y

personalizar su código fuente o para su propio uso sin pagar derechos de

licencia o regalías al consorcio. Cada actualización importante de la

plataforma Android se identifica por el nombre de un postre. (Helal et al., 2012)

El editor más utilizado y recomendado es el de Eclipse con el plug-in Android

Development Tools. El plug-in proporciona un entorno de desarrollo completo

que se integra con el emulador. Proporciona capacidades de depuración y

permite instalar fácilmente varias versiones de la plataforma Android. (Allen

et al., 2010)

2.1.2. PLATAFORMA iOS.

iOS es el sistema operativo de Apple Inc. que alimenta todos sus dispositivos

móviles, que van de los reproductores multimedia iPod touch a la tableta iPad

(http://www.apple.com/ios). Fue diseñado desde cero como un sistema

operativo para dispositivos con pantalla táctil y está basado en el kernel XNU

de Mac OS X. iOs fue lanzado originalmente en 2007 como el sistema

operativo para iPhone.

Fue el primer sistema operativo móvil comercial en proporcionar una interfaz

de usuario con capacidad multi-touch y comenzó la tendencia de la industria

de dispositivos con pantallas táctiles. (Helal et al., 2012)

6

Page 23: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Para desarrollar aplicaciones para el iPhone o iPod touch, se necesita un

equipo Macintosh basado en Intel con OS X v10.5.7 o posterior. Xcode es el

entorno de desarrollo integrado de Apple para el desarrollo de aplicaciones

para Mac OS X y dispositivos iOs.

El lenguaje preferido en Xcode es Objective-C, que es necesario para las

aplicaciones del iPhone, pero Xcode también es compatible con una gran

variedad de otros lenguajes (C, C + +, Fortran, Java, Objective-C + +,

AppleScript, Python y Ruby). El IDE de Xcode tiene un compilador GNU

modificado y depurador para su backend. (Allen et al., 2010)

2.1.3. PLATAFORMA WINDOWS PHONE.

Windows Phone 8.1 es el último sistema operativo para teléfonos móviles de

Microsoft. Anteriormente, Microsoft creó el software llamado "Windows

Mobile", que se desarrolló en los teléfonos inteligentes y se veía muy similar

a la forma en que aparece en Windows en las computadoras de escritorio.

(Westfall, 2011)

Aproximadamente el 15% de los teléfonos inteligentes actualmente funcionan

en la plataforma Windows Phone y sigue siendo la tercera plataforma más

popular para los usuarios de negocios, al mando de aproximadamente 1/4 del

mercado empresarial. (Allen et al., 2010)

Su plataforma de desarrollo se llama Windows Phone Developer Tools. Las

herramientas incluyen Visual Studio 2010 Express para Windows Phone, XNA

Game Studio 4 y Expression Blend 4 para Windows Phone, todo lo que se

necesita en una sola descarga gratuita. (Cameron, 2011)

7

Page 24: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2.2. PLATAFORMA ANDROID VS. PLATAFORMA iOS.

La comparación entre estos dos sistemas operativos fue tomada de (Shih,

Lakhani, & Nagy, 2010)

Una ventaja clave de la forma de Apple y el iPhone es su ambiente muy

estrechamente controlado, es más fácil de desarrollar, probar y mantener

aplicaciones debido a que el tamaño de la pantalla, hardware, etc, están

estandarizados. El desarrollo en Android será mucho más difícil, ya que un

desarrollador se tiene que dar cuenta de todos los demás requisitos y/o

limitaciones de los diferentes fabricantes de hardware.

Apple requiere una suscripción por 99 dólares, como parte del Programa de

Desarrolladores de Apple, y obtener un ID de Apple para obtener el kit de

desarrollo de software de iPhone. En comparación. El iPhone SDK se puede

descargar gratis, utiliza 5 gigas de disco duro para instalar y requiere Leopard

10.5.5 o superior para instalar el paquete entero. XCode 3, el IDE de Apple,

ha sido descrito como el entorno de desarrollo mejor integrado para

dispositivos móviles.

Android se basa en el sistema operativo Linux y utiliza el lenguaje de

programación Java, así que debería ser relativamente fácil trasladar las

aplicaciones de PC existentes para Android. Desarrolladores entrenados en

Java puede desarrollar fácilmente aplicaciones para esta plataforma.

Google y Apple tienen radicalmente diferentes modelos empresariales y

filosofías. Mientras que Google promueve la libertad y flexibilidad con el

Android, Apple controla prácticamente todo lo relacionado con el iPhone. Por

un lado, el sistema operativo del iPhone es de código cerrado, en segundo

lugar, para unirse a su programa para desarrolladores, primero se tiene que

pagar una cuota anual.

Android es presentado en varios teléfonos inteligentes, cada uno con

diferentes características y potencial, y será fácilmente maleable, ya que es

8

Page 25: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

de código abierto. Este potencial para la diversidad es atractiva y facilitará la

adopción y adaptación global.

2.3. PROCESAMIENTO DE IMÁGENES.

El procesamiento de imágenes se utiliza en una amplia variedad de

aplicaciones, para dos propósitos algo diferentes:

1. Mejorar la apariencia visual de las imágenes para un observador humano,

incluyendo la impresión y la transmisión.

2. Preparación de imágenes para la medición de las características y

estructuras que revelan.

Las técnicas que son apropiadas para cada una de estas tareas no siempre

son las mismas, pero hay una considerable superposición.

La medición de imágenes es a menudo un método principal para la adquisición

de datos científicos y generalmente requiere que las características o

estructuras estén bien definidas, ya sea por bordes o brillo único, color,

textura, o alguna combinación de estos factores. Los tipos de mediciones que

se pueden realizar en escenas enteras o en las características individuales

son importantes en la determinación de las etapas de procesamiento. Los

datos de medición pueden ser utilizados para la clasificación o reconocimiento

de objetos. (Russ, 2011)

2.3.1. IMÁGENES DIGITALES.

Las imágenes se representan por matrices de dos dimensiones en los

ordenadores. El mundo es tridimensional, pero nuestras cámaras tienen una

matriz bidimensional de sensores de luz, lo que crea una matriz bidimensional

correspondiente de valores de intensidad de luz. Cada elemento de la imagen

se llama pixel. La memoria de la computadora se organiza en torno a

conjuntos de bytes.

9

Page 26: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Los valores de los píxeles que representan los niveles de luz pueden ser un

valor cero que significa la falta de luz, es decir, oscuro, mientras que 255

representa el valor máximo posible de luz, que es blanco. Cuando se habla

de colores, por ejemplo, rojo, el significado es el mismo: 0 significa que no hay

rojo, y 255 se refiere a la intensidad máxima de color rojo perceptible. (Abreu,

2013)

2.4. VISIÓN POR COMPUTADOR.

La visión por computador es la ciencia de programar un ordenador para

procesar y finalmente comprender las imágenes y video, o simplemente decir

que un ordenador vea. (Laganiere, 2011)

Las siguientes aplicaciones de la visión por computador fueron tomadas de

(Dawson-Howe, 2014). La visión por computador permite la inspección

automática de los productos manufacturados en cualquier etapa en la línea

de producción. Por ejemplo, se ha utilizado para:

• Inspección en circuitos impresos para asegurar que las pistas y los

componentes están correctamente colocados.

• Inspección en la calidad de impresión de las etiquetas.

• Inspección en botellas para garantizar que estén debidamente llenas.

• Inspección en las manzanas para determinar si hay alguna

magulladura.

La visión por computador también está resolviendo los problemas fuera de la

fábrica. Aplicaciones de visión por ordenador fuera de la fábrica incluyen:

• Lectura automática de matrículas de vehículos a medida que pasan a

través de las barreras de peaje en las carreteras principales.

• Controles de seguridad biométricos en los aeropuertos que utilizan

imágenes de rostros y las imágenes de las huellas dactilares.

• Asistir al conductor, advirtiendo cuando están fuera del carril.

• Detección de minas terrestres enterradas en imágenes infrarrojas.

10

Page 27: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2.5 OPENCV

OpenCV (Open source computer vision) es una biblioteca de visión por

computador de código abierto, con más de 500 algoritmos optimizados para

el análisis de imagen y vídeo. OpenCV fue diseñado para la eficiencia

computacional y con un fuerte enfoque en las aplicaciones en tiempo real.

(Datal & Patel, 2013)

Uno de los objetivos de OpenCV es proporcionar una infraestructura fácil de

utilizar y ayudar a las personas a construir aplicaciones de visión por

computador bastante sofisticadas rápidamente.

La licencia de código abierto para OpenCV se ha estructurado de tal manera

que se puede construir un producto comercial utilizando la totalidad o parte de

OpenCV. OpenCV es popular en todo el mundo, con grandes comunidades

de usuarios en China, Japón, Rusia, Europa e Israel. OpenCV fue una parte

clave del sistema de visión en el robot de Stanford, "Stanley", que ganó la

carrera DARPA Grand Challenge con un premio de $2,000,000.

(Bradsky&Kaehler, 2008)

2.5.1. RECONOCIMIENTO DE OBJETOS.

La detección de objetos y el reconocimiento de objetos están estrechamente

vinculados, en cierta medida ambos dominios se pueden ver como la

clasificación de patrones y frecuentemente la detección de objetos precede al

reconocimiento.

El objetivo del reconocimiento de objetos es identificar su tipo particular. La

detección y reconocimiento de objetos en las escenas observadas es una

capacidad biológica natural. Las personas y los animales realizan esto sin

esfuerzo en la vida cotidiana. Sin embargo, los métodos informáticos similares

y algoritmos para el análisis de escenas no son tan sencillos, a pesar de su

desarrollo sin precedentes. (Cyganek, 2013)

11

Page 28: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2.5.2. SEGUIMIENTO DE OBJETOS.

Una parte importante de la visión por computador es el seguimiento de

objetos, ésta ha crecido y llamado la atención por décadas. El seguimiento de

objetos tiene un gran campo de aplicación como lo es interacción hombre-

máquina, video vigilancia y sistemas guiados de conducción. Generalmente

un algoritmo de rastreo puede categorizarse como un método generativo o un

método discriminativo.

Un problema para el seguimiento de objetos es escoger las características

claves. El éxito o el fracaso depende en primer lugar de cuanto se puede

distinguir el objeto de los objetos que lo rodean, que tiene que ver con las

características claves escogidas. Hay muchas características que pueden ser

escogidas para el seguimiento de objetos como lo son:

• Color

• Textura

• Patrones locales binarios

• Características de codificación dispersa, etc. (D. Wang, Lu, Xiao, &

Chen, 2013)

El seguimiento de objetos en tiempo real ha crecido rápidamente debido al

poder de procesamiento de las máquinas actuales y la existencia de cámaras

compactas baratas. La mayoría de las aplicaciones de seguimiento utiliza el

seguimiento basado en características. En este caso la detección de punto de

interés y descriptores de características son el primer paso. (Gauglitz,

Höllerer, & Turk, 2011)

2.5.3. ESCALA DE GRISES

Una imagen en escala de grises solo contiene información de la intensidad de

luz no del color, las imágenes a color usualmente tienen 3 canales. Para

obtener una imagen en escala de grises se almacena solo la intensidad de

cada canal y se descarta la información del color.

12

Page 29: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

El formato más común para imágenes digitales es RGB; Red=rojo,

Green=verde y B=azul; esto significa que la intensidad de cada color está

almacenada de manera independiente en la imagen, haciendo un promedio

de estos valores se puede obtener una imagen en escala de grises.

(Montabone, 2010)

El valor de los pixeles de una imagen en escala de grises está entre 0 y 255.

Siendo 0 la mínima intensidad y 255 la máxima. (Fisher et al., 2013)

2.5.4. BINARIZACIÓN

Las imágenes en escala de grises generalmente tienen 8 bits por pixel.

Procesar imágenes en escala de grises es más sencillo que procesar

imágenes a color, hay otra forma de imagen, la imagen binaria. Una imagen

binaria es la que tiene un solo bit por pixel, es decir blanco o negro. (Dawson-

Howe, 2014)

La binarización de imágenes ha sido aplicada ampliamente como una forma

básica en la etapa de pre-procesamiento en muchas tareas de análisis de

imagen. (Ranchordas, Pereira, Araujo, & Tavares, 2010)

Procesar imágenes binarias tiene una menor carga computacional que

procesar imágenes en escala de grises.

2.5.5. FILTROS LINEALES EN IMAGEN DIGITAL

Los filtros lineales se usan en Procesamiento Digital de Imágenes para

obtener alguna modificación específica de la imagen que permita facilitar su

tratamiento. Se caracterizan especialmente por implementar una respuesta

impulsiva h(x,y), o también llamado Kernel. Los usos de los filtros son

diversos, entre ellos se encuentran los filtros Suavizadores, Realzadores de

Contornos, de Gradiente y Direccionales. En este apartado solo se revisarán

los dos primeros mencionados.

13

Page 30: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2.5.5.1 Filtros suavizadores Este tipo de filtros calculan un promedio alrededor de un pixel. En la práctica,

son filtros Paso-bajo y tienen como objetivo reducir la diferencia de valores

entre un pixel y sus pixeles vecinos mediante el uso de un kernel Rectangular

o de aproximación Gaussiana. La aplicación de estos filtros producen

degradación de la imagen (le da un efecto desenfocado) debido a la

difuminación de las líneas de contorno. (Pertusa Grau, 2011)

2.5.5.2 Suavizadores gaussianos

Estos son filtros suavizadores que utilizan un kernel Gaussiano. En este tipo

de filtrado se le da más importancia al pixel central y sus vecinos cercanos, y

menos peso a los pixeles lejanos. El kernel tiene una forma de campana,

asemejándose mucho a una función de Gauss.

Esto ocasiona un suavizado mucho menos abrupto que otros tipos de filtro, ya

que los valores de los pixeles decaen continuamente y no realizan un cambio

brusco de valor con sus vecinos. (Albiol, 2013)

2.5.6 DILATACION Y EROSION

La dilatación y la erosión son dos de las operaciones morfológicas más

fundamentales. Estas dos operaciones trabajan con los vecinos de un pixel.

La erosión reemplaza el pixel actual con el valor mínimo del conjunto de

pixeles definidos. La dilatación es el operador complementario y reemplaza el

valor del pixel actual con el valor máximo del conjunto de pixeles definidos.

Estos operadores trabajan con imágenes binarias, y debido a que estas

imágenes solo contienen valores de 0 o 1, o blanco y negro, cada pixel es

reemplazado por un pixel blanco o negro. (Laganiere, 2011)

14

Page 31: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2.5.7 ALGORITMO DE SUZUKI

Este método propone dos algoritmos de análisis topológico para las imágenes

binarizadas. El primero de ellos determina la relación que existe entre los

bordes y la imagen binaria en sí, de tal forma que revisa las conexiones 1-a-1

de los píxeles y determina como están relacionados los bordes internos y

externos de un objeto; a partir de eso se pueden obtener una serie de

características del mismo sin necesidad de reconstruir la imagen.

El segundo algoritmo es una modificación del primero, y solo se analizan los

borden externos del objeto. Este algoritmo es muy útil es sistemas de conteo

o análisis estructural de imágenes binarias. (Suzuki & Abe, 1985)

La función de OpenCV “findContours” devuelve los contornos de una imagen

binaria utilizando el algoritmo de Suzuki anteriormente mencionado. Los

contornos son una herramienta útil para analizar la forma de un objeto

detectarlo y reconocerlo. («Structural Analysis and Shape Descriptors —

OpenCV 2.4.11.0 documentation», 2015).

2.6. INTELIGENCIA ARTIFICIAL.

Inteligencia Artificial (IA) se suele definir como la ciencia y la ingeniería de

imitar, ampliar y aumentar la inteligencia humana a través de los medios y

técnicas para hacer máquinas inteligentes artificiales. Parte de la definición de

la inteligencia es acerca de la capacidad de aprender. Hasta cierto punto, las

computadoras pueden aprender a resolver problemas, dependiendo de los

tipos de problemas que reciben. (Shi, 2011).

Los pequeños problemas que se pueden resolver actualmente con la IA

incluyen el reconocimiento de voz, reconocimiento de objetos visuales, gran

capacidad de almacenamiento y velocidades de computación

extremadamente rápidas. La IA puede hacer frente a algunas áreas muy

limitadas. Los sistemas expertos pueden resolver problemas en áreas muy

específicas, casi al igual que los seres humanos pueden.

15

Page 32: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Los sistemas expertos, por ejemplo, pueden leer monitores cardíacos e

interpretarlos, así como muchos médicos humanos. El software puede traducir

de un idioma a otro bastante bien.

Un proyecto más reciente es el Proyecto de coches sin conductor de Google.

Los coches de Google han conducido hasta 1000 millas (1600 kilómetros) sin

ayuda humana y un total de 140000 millas con muy poca orientación humana.

En todo ese tiempo, el único accidente fue cuando uno de los coches de

Google era dirigido por una persona, un error humano y no un error de la

máquina. Puede ser que la tecnología desarrollada por Google podría ser la

primera de su tipo en ser vendida.(Karam, 2011)

2.6.1 APRENDIZAJE AUTOMÁTICO.

El aprendizaje es la adquisición de nuevos o la modificación de los

conocimientos existentes, comportamientos, habilidades, valores o

preferencias y puede implicar la síntesis de diferentes tipos de información. El

aprendizaje en los animales y los seres humanos ha sido explorado por los

biólogos y psicólogos por igual.

Muchas de las técnicas de aprendizaje automático se derivan de los esfuerzos

de los psicólogos para hacer más precisas sus teorías de los animales y del

aprendizaje humano a través de modelos computacionales. Varias disciplinas

como la inteligencia artificial, sistemas de control adaptativo, modelos

evolutivos basados en biología, estadísticas, modelos psicológicos han

contribuido al aprendizaje automático. (Ramanna, Jain, & Howlett, 2012)

El principio básico del aprendizaje automático es el modelado automático del

proceso que han generado los datos recogidos. Se aprende de los resultados,

de los datos en las reglas, funciones, relaciones, sistemas de ecuaciones, las

distribuciones de probabilidad y otras representaciones del conocimiento,

tales como reglas de decisión, árboles de decisión y regresión, redes

bayesianas, redes neuronales, etc.

16

Page 33: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

El análisis de datos manual ya no es suficiente, y los métodos para el análisis

computarizado eficiente ahora son necesarios. Por lo tanto, un nuevo campo

interdisciplinario ha surgido, que abarca estadística, reconocimiento de

patrones, aprendizaje automático y herramientas de visualización para apoyar

el análisis de datos y descubrimiento de principios ocultos dentro de los datos.

En diferentes comunidades de este campo se conoce con diferentes nombres:

descubrimiento de conocimiento en bases de datos (KDD), minería de datos

(DM), o el análisis inteligente de datos (IDA). (Kononenko & Kukar, 2007)

(Lantz, 2013) propone dividir la tarea de aprendizaje automático en una serie

de pasos manejables. Como son:

• Recopilación de datos.

• Exploración y preparación de los datos

• Entrenamiento de un modelo sobre los datos.

• Evaluar el desempeño del modelo.

• Mejorar el rendimiento del modelo.

Después de que estos pasos se han completado, si el modelo parece estar

funcionando de manera satisfactoria, se puede implementar para la tarea

prevista.

2.6.2 MÉTODOS DE APRENDIZAJE AUTOMÁTICO

Los métodos del aprendizaje automático se dividen en:

• Clasificación.- Los métodos de aprendizaje automático se utilizan con

mayor frecuencia para la clasificación. Los métodos de aprendizaje

automático se emplean para la creación de clasificadores. La tarea del

clasificador es determinar la clase a la que se le debe asignar el objeto

en cuestión.

Los clasificadores más comunes son: árboles de decisión, reglas de

decisión, clasificadores bayesianos, redes bayesianas, clasificadores

17

Page 34: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

de vecinos más cercanos, funciones discriminantes lineales, regresión

logística y redes neuronales artificiales.

• Regresión.- Al igual que en los problemas de clasificación, en la

regresión se tienen un conjunto de objetos (ejemplos de aprendizaje),

que se describe con varios atributos (características, propiedades). Los

atributos son variables observables independientes (ya sean continuos

o discretos). Los predictores de regresión más comunes son: regresión lineal,

árboles de regresión, regresión ponderada localmente, y redes

neuronales multicapa para la regresión.

• Relaciones lógicas.- Las relaciones lógicas pueden ser considerados

como una generalización de las funciones discretas. A diferencia de las

funciones, no hay una única variable discreta dependiente (clase), y

todas las variables (atributos) se tratan de manera equivalente. Los algoritmos que se pueden encontrar son: las asociaciones y

programación lógica inductiva.

• Clustering.- El aprendizaje no supervisado es diferente del de

clasificación y regresión, sólo se da la descripción de ejemplos con

atributos, y sin la variable de supervisión. Clustering es el más popular

de los métodos de aprendizaje no supervisado. Los algoritmos más

conocidos son: Clustering jerárquico y clustering particional.

• Aprendizaje por refuerzo.- El aprendizaje por refuerzo trata con el

problema de la enseñanza a un agente autónomo que actúa y siente

su entorno y de esta manera elige acciones óptimas para el logro de

sus metas. El aprendizaje por refuerzo es usado frecuentemente para

controlar sistemas dinámicos como los robots, resolver varios

problemas de optimización y en videojuegos. (Kononenko & Kukar,

2007)

18

Page 35: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2.6.3 MINERÍA DE DATOS

La minería de datos se define como el proceso de descubrimiento de patrones

en los datos. El proceso debe ser automático o (más habitualmente)

semiautomático. Los patrones descubiertos deben ser significativos y conducir

a alguna ventaja, por lo general de carácter económico. Los datos son

invariablemente presentes en cantidades sustanciales.

En la minería de datos (data mining), los datos se almacenan

electrónicamente y la búsqueda está automatizada. Incluso esto no es

particularmente nuevo. Los economistas, estadísticos, analistas e ingenieros

de la comunicación han trabajado durante mucho tiempo con la idea de que

los patrones en los datos se pueden buscar de forma automática,

identificarlos, validarlos, y utilizarlos para la predicción.

Los datos analizados adecuadamente son un recurso valioso. Puede conducir

a nuevos conocimientos. (Witten, Frank, & Hall, 2011)

La minería de datos se utiliza rutinariamente para detectar el fraude de tarjetas

de crédito, ayudar a determinar si es probable pagar un préstamo, llevar a

cabo la investigación de mercados, clasificar a través de enormes cantidades

de datos científicos, y así sucesivamente.

El software de minería de datos puede ser increíblemente sofisticado. Es

capaz de detectar los patrones que la mayoría de la gente no podría. Sin

embargo, aun con todo este poder, el software de minería de datos no es

inteligente. (Karam, 2011)

2.7. APRENDIZAJE AUTOMÁTICO Y VISIÓN POR COMPUTADOR.

El aprendizaje es una de las fronteras actuales en la investigación de visión

por computador y ha estado recibiendo cada vez más atención en los últimos

años.

19

Page 36: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

La tecnología de aprendizaje automático tiene un gran potencial para

contribuir a:

• El desarrollo de algoritmos de visión flexibles y robustos que mejorarán

el rendimiento de los sistemas de visión con un mayor nivel de

competencia y una mayor generalidad.

• El desarrollo de arquitecturas que acelerarán el tiempo de desarrollo

del sistema y proporcionaran un mejor rendimiento.

Los algoritmos de aprendizaje automático se pueden aplicar en al menos dos

formas diferentes en los sistemas de visión informáticos:

• Para mejorar la percepción del medio ambiente circundante, es decir,

para mejorar la transformación de señales detectadas en

representaciones internas.

• Para cerrar la brecha entre las representaciones internas del medio

ambiente y la representación del conocimiento que necesita el sistema

para llevar a cabo su tarea. (Sebe, Cohen, & Garg, 2006)

2.8 WEKA.

Weka es una colección de algoritmos de aprendizaje automático para tareas

de minería de datos. Los algoritmos bien se pueden aplicar directamente a un

conjunto de datos o llamados desde su propio código Java. Weka contiene

herramientas para el pre-procesamiento de datos, clasificación, regresión,

clustering, reglas de asociación, y la visualización. También es muy adecuado

para el desarrollo de nuevos sistemas de aprendizaje automático. (The

University of Waikato, 2014)

La intuición humana no puede ser reemplazada en su totalidad, ya que el

diseñador del sistema ha de especificar la forma de representación de los

datos y los métodos de manipulación y caracterización de los mismos. (De la

Caridad Rivero-Hernández et al., 2012)

20

Page 37: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2.9 METODOLOGÍAS PARA EL DESARROLLO DE SOFTWARE.

La ingeniería de software es una disciplina que estudia la naturaleza del

software, enfoques y metodologías para el desarrollo de software a gran

escala. (Y. Wang, 2007)

Muchos sistemas de software están pobremente documentados. Los

programadores pasan mucho tiempo en desarrollar funcionalidades en vez de

documentarlas. Esto provoca un problema porque después de algún tiempo

es difícil entender el sistema. La tarea de darle mantenimiento al sistema

puede ser difícil al no existir documentación de las funcionalidades existentes.

(Lo, Khoo, Han, & Liu, 2011)

2.9.1. METODOLOGÍAS TRADICIONALES.

El ciclo de vida del desarrollo de software incluye todos los eventos que

suceden en la producción de un software. Aunque los ciclos de vida han

sufrido muchos cambios y evolucionado a lo largo de un período de tiempo,

se consideran dos enfoques fundamentales: cascada e iterativo incremental.

(Krishnamurthy & Saran, 2007)

• Cascada.

Uno de los modelos de ciclo de vida más conocidos es el modelo de cascada.

Fue descrito por primera vez formalmente por Winston Royce en 1970. La

idea detrás del modelo de cascada es la creación secuencial de productos en

diferentes niveles de abstracción y la integración en la dirección inversa.

Cumplir con el orden secuencial de las actividades es muy difícil de conseguir,

incluso si se permite la interacción con las actividades vecinas inmediatas. Los

requisitos necesarios para la aplicación de un enfoque de creación de

prototipos incluyen estar familiarizados con el dominio, métodos, técnicas,

21

Page 38: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

herramientas, procesos de ingeniería y con una muy buena comprensión de

los requisitos. (Münch, Armbrust, & Kowalczyk, 2012)

Iterativo, incremental.

La mayoría de los ciclos de vida de desarrollo de software modernos subrayan

iteración durante todo el proceso y les agregan funcionalidades incrementales

dentro de cada iteración.

Esta es la base para la mayoría de los procesos de desarrollo de software

modernos. En el modelo en espiral, el ciclo comienza con ciertos requisitos.

Proyectos de riesgos, con respecto a los requisitos, se evalúan, y la aplicación

(desarrollo) del producto para esa iteración comienza. Una vez que se haya

completado, se obtiene la retroalimentación de los clientes, y la siguiente

iteración se inicia.

En esta iteración, de nuevo, los artículos más altos de riesgo se tratan primero.

Mientras que las partes de este bucle pueden cambiar, el patrón de la

repetición y la entrega incremental del producto se repiten a lo largo del ciclo

de vida. (Krishnamurthy & Saran, 2007)

2.9.2. METODOLOGÍAS ÁGILES.

El desarrollo ágil de software es un intento de poner el software a desarrollar

primero y reconocer que las necesidades de los usuarios cambian. Es ágil, ya

que puede responder rápidamente a las necesidades cambiantes de los

usuarios. El desarrollo ágil de software consta principalmente en versiones de

software frecuente y regular. Esto permite que las nuevas versiones de

software sean entregadas a los usuarios de forma rápida y con frecuencia.

(Hunt, 2006)

22

Page 39: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

2.9.3. EXTREME PROGRAMMING (XP).

XP es una metodología ligera que se centra en la codificación como la tarea

principal. Con XP, las actividades centradas en el código están en todas las

etapas del ciclo de vida de desarrollo de software. Algunos profesionales de

las metodologías más tradicionales han criticado XP, afirmando que se trata

de la codificación imprudente y no es un proceso real.

Por el contrario, XP es una metodología muy disciplinada que se centra en la

revisión de código constante, pruebas frecuentes, participación de los clientes,

retroalimentación rápida y la integración continua para descubrir problemas a

tiempo en el proceso de desarrollo.

El autor principal de esta metodología definió 4 puntos claves:

Comunicación, simplicidad, retroalimentación y coraje. (Hightower et al., 2004)

2.9.4. SCRUM.

Scrum (Schwaber 1995; Schwaber y Beedle 2002) ha sido desarrollado para

la gestión del proceso de desarrollo de software en un entorno volátil. Se basa

en la flexibilidad, la capacidad de adaptación y la productividad. Scrum deja

abierto la posibilidad a los desarrolladores elegir las técnicas específicas de

desarrollo de software, métodos y prácticas para el proceso de

implementación.

Esto involucra manejo frecuente de las actividades y está destinado a

identificar sistemáticamente las deficiencias o impedimentos en el proceso de

desarrollo, así como el de las prácticas que se utilizan. (Dingsoyr, Dyba, &

Moe, 2010)

23

Page 40: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

METODOLOGÍA

Page 41: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

3. METODOLOGÍA

La aplicación se la diseñó y desarrolló para mantener centrado en la pantalla

de un dispositivo Android un punto luminoso o un objeto de un solo color,

mediante el uso de herramientas open source como lo son OpenCv y Weka.

Para el desarrollo de las aplicaciones se usó la metodología eXtreme

Programming.

A continuación se detallan las fases para la realización del proyecto.

3.1 FASE 1: CAPTURA DE IMÁGENES.

Para la captura de imágenes se utilizó la aplicación “Cámara de Google” la

cual se puede descargar gratis de la “Play Store” ésta aplicación ofrece la

opción de tomar fotos en una resolución de 0.3 megapíxeles además ofrece

una cuadrícula de 3x3 es decir 3 filas de alto por 3 filas de ancho como se

muestra en la Figura 1.

Figura 1. Cuadrícula para la captura de imágenes.

24

Page 42: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

3.2 FASE 2: CATEGORIZACIÓN DE IMÁGENES.

Para el procesamiento de las imágenes se desarrolló una aplicación en Java

con el IDE Netbeans en la cual se cargan las imágenes que se obtuvieron de

la fase 1 y se indica la categoría en la que se encuentra el objeto dependiendo

de la posición en la que se encuentra. Para lograr esto se probaron diferentes

técnicas de procesamiento de imágenes y librerías de OpenCv.

Las librerías que se utilizaron son:

- Escala de grises

- Binarización

- Dilatación.

3.3 FASE 3: MODELAMIENTO DE LOS DATOS.

En esta fase se utilizó la herramienta de Machine Learning, Weka. En esta

herramienta se carga un set o conjunto de datos, los cuales fueron obtenidos

en la fase 2, estos datos serán analizados por diferentes algoritmos y

dependiendo del mejor resultado, es decir el que menos error posea, será el

que se ajuste mejor a las necesidades de la aplicación. Entre los algoritmos

probados se encuentran: NaiveBayes, IBk, IB1, LinearRegression, árboles de

decisión, Kstar , M5Rules, M5P entre otros.

3.4 FASE 4: DESARROLLO DE APLICACIÓN.

La aplicación se desarrolló en eclipse con el plugin de Android. Se basó en el

programa BlobDetectors de la librería de OpenCv. En esta fase se probaron

diferentes técnicas para el procesamiento de imágenes de video las cuales

ayuden a detectar el punto luminoso con la menor cantidad de falsos positivos.

25

Page 43: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Entre los algoritmos de procesamiento de imágenes que se utilizaron están:

transformación a escala de grises, binarización, filtros gaussianos, dilatación,

entre otros.

26

Page 44: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

ANÁLISIS DE RESULTADOS

Page 45: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

4. ANÁLISIS DE RESULTADOS

La finalidad del proyecto es diseñar e implementar una aplicación en Android

que detecte un punto luminoso o un objeto simple y pueda tener dicho objeto

centrado en la pantalla acorde se vaya moviendo el objeto. A continuación se

detallan los pasos para el desarrollo de la aplicación y su ejecución.

4.1 CAPTURA DE IMÁGENES.

Las imágenes fueron tomadas con la aplicación Cámara de Google en una

resolución de 0.3 megapíxeles, es decir 640 píxeles de ancho por 480 píxeles

de alto. Ésta es la resolución mínima que permite la aplicación.

Se tomaron 400 imágenes, 40 imágenes por cada uno de los segmentos. La

aplicación tiene una cuadrícula de 3x3.

Lo que indica que existen 10 categorías, la décima categoría es cuando no

hay un objeto para categorizar. En la Figura 2 se muestran las categorías.

1 2 3

4 5 6

7 8 9

Figura 2. Cuadricula para la categorización.

27

Page 46: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

4.2 CATEGORIZACIÓN DE IMÁGENES.

Para la categorización de imágenes se desarrolló un programa en Java con el

IDE NetBeans y la librería OpenCv.

El programa posee un interfaz simple, el botón cargar abre un cuadro de

diálogo que permite seleccionar una imagen para procesarla y determinar la

categoría a la que pertenece. En la Figura 3 se muestra el método para la

carga de imágenes.

Figura 3. Código botón cargar

Para el procesamiento de imágenes se utilizó las librerías de OpenCv. La

imagen cargada se la pasa a un objeto de tipo matriz de OpenCv y se procede

con el procesamiento de la imagen como se muestra en la Figura 4.

Figura 4. Código procesamiento de imagen para la categorización.

28

Page 47: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Una vez procesada la imagen se la muestra en la interfaz de usuario. El

resultado será una imagen binarizada, es decir sus pixeles tendrán valores de

0 o 1.

Para guardar el valor de la categoría correspondiente a la imagen se crea un

archivo separado por comas (.csv) este archivo sirve para crear el modelo que

guiará al robot más adelante. En la Figura 5 se muestra el código para la

creación del archivo.

Figura 5. Creación del archivo csv.

El método getPosicion devuelve como una cadena de texto la posición del

pixel más luminoso en el eje X e Y de la imagen cargada. En la Figura 6 se

muestra el código.

Figura 6. Método getPosicion.

29

Page 48: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

El archivo que se obtiene después de procesar y clasificar las 400 imágenes

es un archivo plano y puede ser visualizado por cualquier procesador de

texto. Este archivo está compuesto por un encabezado y sus valores. En la

Figura 7 se puede observar la categorización.

Figura 7. Archivo con las Categorías.

4.3 CREACIÓN DEL MODELO.

Para crear el modelo se utilizó la herramienta Weka y el archivo “csv” que se

obtuvo del programa en NetBeans con las 400 imágenes procesadas y

categorizadas. Para hacer el modelo se presiona el botón Explorer de la

interfaz de Weka como se muestra en la Figura 8.

Figura 8. Interfaz Weka

30

Page 49: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

En Weka Explorer se abre el archivo donde se guardó la categorización de las

imágenes presionando el botón Open file, en este caso es el archivo

“categorías 400.csv”. En la Figura 9 se observa el procedimiento.

Figura 9. Selección de Archivo “csv”

La mayoría de los algoritmos de Weka trabajan con clases nominales y no

numéricas. Para cambiar el tipo de clase es necesario aplicar un filtro no

supervisado que trabaje sobre los atributos del archivo de las categorías. En

la Figura 10 se muestra el filtro con el que se trabajó.

Figura 10. Filtro no supervisado para cambiar el tipo de clase.

31

Page 50: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Una vez aplicado el filtro se observa en la Figura 11 el cambio de numérico a

nominal en la clase.

Figura 11. Cambio de clase

Se probaron diferentes clasificadores o algoritmos para crear el modelo que

mejor se ajuste a las necesidades de la aplicación. Entre esos clasificadores

están IB1, Kstar, NaiveBayes, IBk entre otros. Los modelos obtenidos daban

problemas de compatibilidad con Android y la librería de Weka para Andorid

por lo cual no se pudo trabajar con esos modelos.

El clasificador o algoritmo con el que se pudo trabajar e implementar en

Android fue un árbol de decisión J48. En la Figura 12 se muestra el resultado

del algoritmo.

Figura 12. Resultado árbol de decisión.

32

Page 51: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

En la Figura 13 se puede observar el árbol de decisiones de manera gráfica.

Figura 13. Árbol de decisión.

4.4 DESARROLLO DE LA APLICACIÓN ANDROID.

La aplicación está diseñada para conectarse automáticamente con el robot i-

Racer mediante la dirección MAC del robot. Consta de un menú de opciones

para elegir el objeto al que se desea seguir como se muestra en la Figura 14.

Figura 14. Menú de la Aplicación.

La aplicación funciona en dispositivos con cualquier resolución de pantalla.

Para lograr que el modelo desarrollado en Weka se ajuste a los diferentes

33

Page 52: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

tipos de resoluciones de pantalla que existen Android se normalizaron las

coordenadas del objeto que se desea seguir.

La aplicación está basada en el programa ColorBlobDetector que viene

incluido como ejemplo en la biblioteca de OpenCv.

En la Figura 15 se muestra la parte principal del código del menú “Laser” el

cual permite identificar un punto luminoso mediante el uso de las librerías de

OpenCv.

Figura 15. Código Menú Laser

El resultado de la función MinMaxLocResult son las coordenadas del punto

más luminoso en la imagen que se está procesando. En la Figura 16 se

observa la imagen procesada e identificado el punto luminoso.

Figura 16. Resultado MinMaxLocResult en diferentes superficies.

34

Page 53: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

El código del menú Binarizar se puede observar en la Figura 17. Este código

es el que mejores resultados dio ya que procesa la imagen y escoge el punto

luminoso dependiendo del área que este tenga. Este método utiliza la función

findContours de OpenCv lo que permite saber el área de los objetos

detectados y su posición.

Figura 17. Código del menú Binarizar

En la Figura 18 se observa el resultado del procesamiento de la imagen

utilizando las funciones de OpenCv.

Figura 18. Resultado por findContours en diferentes superficies.

35

Page 54: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

En la Figura 19 se observa la parte principal del código para detectar objetos

por color. Está basado en la detección por Blobs que viene incluida como

ejemplo en la librería de OpenCv.

Figura 19. Código menú Otros

Esta sección de la aplicación requiere que el usuario pulse sobre un objeto en

la pantalla del dispositivo Android para analizar su color y marcar el objeto

para su seguimiento, como se ve en la Figura 20, donde se muestra el

resultado de este procedimiento.

Figura 20. Objeto marcados por color

36

Page 55: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Para dirigir al Robot se definieron las siguientes variables estáticas al inicio

del programa. En la Figura 21 se muestra la declaración de estas variables

que luego serán utilizadas en la implementación del árbol de decisiones y

dirigirán al robot de acuerdo a la posición del objeto.

Figura 21. Declaración de variables para direccionamiento del robot.

En la Figura 22 se observa la implementación del árbol de decisiones para 3

categorías. La implementación para las demás categorías es similar.

Figura 22. Código árbol de decisiones

4.5 FALSOS POSITIVOS. La aplicación fue probada en diferentes superficies. En superficies de alta

reflectancia como baldosa o cerámica no se detecta el objeto deseado. Como

se observa en la Figura 23.

37

Page 56: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Figura 23. Detección de falsos positivos por MinMaxLocResult de OpenCv

El problema anteriormente mencionado también se aplica para las funciones

utilizadas en el menú Binarizar, como se ve en la Figura 24.

Figura 24. Detección de falsos positivos por findContours de Opencv

38

Page 57: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

CONCLUSIONES Y RECOMENDACIONES

Page 58: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

5. CONCLUSIONES Y RECOMENDACIONES.

5.1 CONCLUSIONES

• La captura de imágenes debe ser en un entorno controlado, es decir la

luz debe ser la adecuada y no deben existir factores que puedan alterar

los resultados en el modelamiento como superficies de alta

reflectancia.

• Se decidió trabajar con imágenes de 640 x 480 pixeles ya que es la

resolución mínima ofrecida por la aplicación Cámara de Google y de

esta manera evitar más procesamiento de las imágenes.

• No se trabajó con resoluciones de imagen más pequeñas porque se

perdía mucha información en la imagen, al ser un punto luminoso el

objeto que se debe seguir.

• Se decidió trabajar con 400 imágenes porque daban los mejores

resultados con esta cantidad de instancias los algoritmos de Weka

incluido el árbol de decisiones.

• La captura y el procesamiento de imágenes se hizo con las librerías y

funciones de OpenCv lo que permite ahorrar recursos en dicho

procesamiento.

• La aplicación funciona de manera adecuada sobre superficies que no

posean alta reflectancia como baldosa y pisos de madera sin lacar

cumpliendo con los objetivos planteados.

5.2 RECOMENDACIONES

• La aplicación solo puede seguir un punto u objeto a la vez, al existir dos

puntos u objetos la aplicación se detiene. Para futuros trabajos sería

recomendable elegir uno de los objetos por sus características es decir

por tamaño, color o la característica más relevante.

39

Page 59: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

• Para futuros trabajos es recomendable probar con otros algoritmos de

aprendizaje automático incluyendo imágenes con ruido o con varios

objetos para tener un índice menor de falsos positivos.

• Para incrementar el rendimiento de la aplicción es recomendable

trabajar con celulares con pantallas pequeñas debido a que la captura

de imágenes se la hace de acuerdo a la resolución de la pantalla del

dispositivo.

40

Page 60: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

BIBLIOGRAFÍA

Abreu, A. (2013). Introduction to openCV as a way to train openMP. Instituo

Politécnico de Setúbal.

Albiol, A. J. (2013). Técnicas de filtrado de imágenes. Universitat Politécnica

de Valencia.

Allen, S., Graupera, V., & Lundrigan, L. (2010). Pro Smartphone Cross-

Platform Development : IPhone, Blackberry, Windows Mobile, and

Android Development and Distribution. Springer.

Bradsky, G., & Kaehler, A. (2008). Learning OpenCV : Computer Vision with

the OpenCV Library. O’Reilly Media.

Cameron, R. (2011). Pro Windows Phone 7 Development. Springer

Fachmedien.

Cyganek, B. (2013). Object Detection and Recognition in Digital Images :

Theory and Practice. EBL.

Datal, J., & Patel, S. (2013). Instant OpenCV Starter. Packt Publishing.

Dawson-Howe, K. (2014). A Practical Introduction to Computer Vision with

OpenCV. Wiley.

de la Caridad Rivero-Hernández, D., Salgueiro-Sicilia, Y., & Domínguez-

López, R. (2012). Evaluación de varias técnicas de aprendizaje

automático en el Software Weka. (Spanish). Valuation of several

learning techniques in the Weka software. (English), 18(3), 1-10.

Dingsoyr, T., Dyba, T., & Moe, N. B. (2010). Agile Software Development.

Springer.

41

Page 61: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Fisher, R. B., Breckon, T. P., Dawson-Howe, K., Fitzgibbon, A., Robertson,

C., Trucco, E., & Williams, C. K. I. (2013). Dictionary of Computer

Vision and Image Processing (2.a ed.). Hoboken: Wiley.

Gauglitz, S., Höllerer, T., & Turk, M. (2011). Evaluation of Interest Point

Detectors and Feature Descriptors for Visual Tracking. International

Journal of Computer Vision, 94(3), 335-360.

Helal, S., Bose, R., & Li, W. (2012). Mobile Platforms and Development

Environments. Morgan & Claypool Publishers.

Hightower, R., Onstine, W., Visan, P., Payne, D., Gradecki, J. D., Rhodes,

K., … Meade, E. (2004). Professional Java Tools for Extreme

Programming : Ant, XDoclet, JUnit, Cactus, and Maven. EBL.

Hunt, J. (2006). Agile Software Construction. Springer.

Introduction — OpenCV 2.4.8.0 documentation. (s. f.). Recuperado 9 de abril

de 2014, a partir de

http://docs.opencv.org/2.4.8/modules/core/doc/intro.html

Karam, P. A. (2011). Artificial Intelligence. Infobase Publishing.

Karch, M. (2010). Android for Work. Dordrecht: Springer.

Kononenko, I., & Kukar, M. (2007). Machine Learning and Data Mining.

Elsevier Science.

Krishnamurthy, N., & Saran, A. (2007). Building Software : A Practitioner’s

Guide. Taylor and Francis.

Laganiere, R. (2011). OpenCV 2 Computer Vision Application Programming

Cookbook. Packt Publishing.

Lantz, B. (2013). Machine Learning with R. Packt Publishing.

42

Page 62: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Lo, D., Khoo, S.-C., Han, J., & Liu, C. (2011). Mining Software

Specifications : Methodologies and Applications. Chapman &

Hall/CRC Data Mining and Knowledge Discovery Series.

Montabone, S. (2010). Beginning Digital Image Processing : Using Free

Tools for Photographers. Berkeley, CA: Apress.

Münch, J., Armbrust, O., & Kowalczyk, M. (2012). Software Process

Definition and Management. EBL.

Pertusa Grau, J. F. (2011). Técnicas de análisis de imagen: Aplicaciones en

Biología (2da ed.). Universitat de València.

Pulli, K., Baksheev, A., Kornyakov, K., & Eruhimov, V. (2012). Real-Time

Computer Vision with OpenCV. Association for Computing Machinery.

Communications of the ACM, 55(6).

Ramanna, S., Jain, L. C., & Howlett, R. J. (2012). Emerging Paradigms in

Machine Learning. Springer.

Ranchordas, A. K., Pereira, J. M., Araujo, H. J., & Tavares, J. M. R. S.

(2010). Computer Vision, Imaging and Computer Graphics : Theory

and Applications. Dordrecht: Springer.

Russ, J. C. (2011). The Image Processing Handbook, Sixth Edition (6.a ed.).

Taylor and Francis.

Savitha, G., Venugopal, P. S., Sarojadevi, & Chiplunkar, N. (2014). An

Approach for Object Detection in Android Device. En 2014 Fifth

International Conference on Signal and Image Processing (ICSIP) (pp.

9-14).

43

Page 63: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

Sebe, N., Cohen, I., & Garg, A. (2006). Machine Learning in Computer

Vision. Springer.

Shih, G., Lakhani, P., & Nagy, P. (2010). Is Android or iPhone the Platform

for Innovation in Imaging Informatics. Journal of Digital Imaging, 23(1),

2-7.

Shi, Z. (2011). ADVANCED ARTIFICIAL INTELLIGENCE. World Scientific

Publishing Company.

Structural Analysis and Shape Descriptors — OpenCV 2.4.11.0

documentation. (2015). Recuperado 10 de junio de 2015, a partir de

http://docs.opencv.org/2.4.11/modules/imgproc/doc/structural_analysis

_and_shape_descriptors.html?highlight=findcontours#cv.FindContour

s

Suzuki, S., & Abe, K. (1985). Topological Structural Analysis of Digitized

Binary Images by Border Following, 32-46.

The University of Waikato. (2014). Weka 3 - Data Mining with Open Source

Machine Learning Software in Java. Recuperado 26 de junio de 2014,

a partir de http://www.cs.waikato.ac.nz/ml/weka/index.html

Wang, D., Lu, H., Xiao, Z., & Chen, Y. (2013). Fast and effective color-based

object tracking by boosted color distribution. Pattern Analysis and

Applications, 16(4), 647-661.

Wang, Y. (2007). Software Engineering Foundations : A Software Science

Perspective. Taylor and Francis.

Wei, X.-X., & Meng, L. (2013). A Method to Implementation of Lane Detection

Under Android System Based on OpenCV. En J. Juang & Y.-C. Huang

44

Page 64: SEGUIMIENTO DE UN OBJETO EN MOVIMIENTO MEDIANTE CAPTURA DE

(Eds.), Intelligent Technologies and Engineering Systems (pp. 115-

121). Springer New York.

Westfall, J. (2011). Windows Phone 7 Made Simple. Springer.

Witten, I. H., Frank, E., & Hall, M. A. (2011). Data Mining : Practical Machine

Learning Tools and Techniques (3.a ed.). Burlington: Elsevier Science.

Zelinsky, A. (2009). Learning OpenCV—Computer Vision with the OpenCV

Library (Bradski, G.R. et al.; 2008)[On the Shelf]. IEEE Robotics

Automation Magazine, 16(3), 100-100.

45