PROGRAMA DE PROCESAMIENTO DE …repository.udistrital.edu.co/bitstream/11349/2819/1/...2 PROGRAMA DE...

73
1 PROGRAMA DE PROCESAMIENTO DE IMÁGENES ADQUIRIDAS POR MEDIO DEL SENSOR KINECT PARA DETERMINAR LA POSIBILIDAD UNA VÍCTIMA EN DETERMINADA ZONA EDWIN MONSALVE LESMES COD.: 20111283038 LEONARDO LADINO AGUDELO COD.: 20111283017 DIRECTOR: M.SC. RICARDO PÉREZ PEREIRA UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS” FACULTAD TECNOLÓGICA INGENIERÍA EN CONTROL BOGOTÁ D.C. 2016

Transcript of PROGRAMA DE PROCESAMIENTO DE …repository.udistrital.edu.co/bitstream/11349/2819/1/...2 PROGRAMA DE...

1

PROGRAMA DE PROCESAMIENTO DE IMÁGENES ADQUIRIDAS POR

MEDIO DEL SENSOR KINECT PARA DETERMINAR LA POSIBILIDAD UNA

VÍCTIMA EN DETERMINADA ZONA

EDWIN MONSALVE LESMES

COD.: 20111283038

LEONARDO LADINO AGUDELO

COD.: 20111283017

DIRECTOR: M.SC. RICARDO PÉREZ PEREIRA

UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS”

FACULTAD TECNOLÓGICA

INGENIERÍA EN CONTROL

BOGOTÁ D.C.

2016

2

PROGRAMA DE PROCESAMIENTO DE IMÁGENES ADQUIRIDAS POR

MEDIO DEL SENSOR KINECT PARA DETERMINAR LA POSIBILIDAD UNA

VÍCTIMA EN DETERMINADA ZONA

EDWIN MONSALVE LESMES

COD.: 20111283038

LEONARDO LADINO AGUDELO

COD.: 20111283017

MONOGRAFÍA PARA OPTAR POR EL TÍTULO DE INGENIERO

EN CONTROL

DIRECTOR: M.SC. RICARDO PÉREZ PEREIRA

UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS”

FACULTAD TECNOLÓGICA

INGENIERÍA EN CONTROL

BOGOTÁ D.C.

2016

3

Contenido INTRODUCCIÓN .......................................................................................................... 8

PLANTEAMIENTO DEL PROBLEMA ......................................................................... 9

Descripción ................................................................................................................... 9

Identificación ................................................................................................................ 9

Formulación .................................................................................................................. 9

OBJETIVOS ................................................................................................................... 10

Objetivo General......................................................................................................... 10

Objetivos Específicos ................................................................................................. 10

MARCO DE REFERENCIA ......................................................................................... 11

PROCESAMIENTO DIGITAL DE IMÁGENES (PDI) ........................................... 11

Fundamentos Del PDI ................................................................................................ 11

Definiciones ................................................................................................................ 11

Color ....................................................................................................................... 11

Espacio de Color ..................................................................................................... 11

Mapa de Color ........................................................................................................ 12

Histograma de una Imagen ..................................................................................... 12

Relaciones entre Pixeles ......................................................................................... 12

Conectividad ........................................................................................................... 13

Distancia ................................................................................................................. 13

Resolucion Optica ...................................................................................................... 14

Resolucion Interpolada ........................................................................................... 15

Distancia Focal ....................................................................................................... 15

Sensibilidad a la Luz .............................................................................................. 15

La Exposicion ......................................................................................................... 15

Compresion ............................................................................................................. 15

Resolucion .............................................................................................................. 15

MARCO TEORICO ....................................................................................................... 16

KINECT ..................................................................................................................... 16

Historia ....................................................................................................................... 16

Arquitectura Kinect .................................................................................................... 17

Funcionamiento .......................................................................................................... 18

Driver .......................................................................................................................... 19

Requerimiento de Hardware y Software ................................................................... 20

MATLAB ................................................................................................................... 21

Historia ....................................................................................................................... 22

Caracteristicas ............................................................................................................. 24

REDES NEURONALES ARTIFICIALES ................................................................ 26

Ventajas de las Redes ............................................................................................. 28

Descripcion ............................................................................................................. 30

Conectividad ........................................................................................................... 31

TIPO DE REDES ....................................................................................................... 32

Redes Monocapa .................................................................................................... 33

Redes Multicapa ..................................................................................................... 34

4

Redes Recurrentes .................................................................................................. 35

Funcionamiento ...................................................................................................... 35

Correlacion ................................................................................................................. 36

DISEÑO E IMPLEMENTACION DE LA SOLUCION ............................................... 37

Metodologia Aplicada ............................................................................................ 37

DESARROLLO DE LAS ACTIVIDADES DE INVESTIGACION......................... 38

Actividad 1 ................................................................................................................. 38

Analisis de Resultados 1 ............................................................................................. 46

Producto Actividad 1 .................................................................................................. 47

Actividad 2 ................................................................................................................. 47

Analisis de Resultados 2 ............................................................................................. 51

Producto Actividad 2 .................................................................................................. 56

Actividad 3 ................................................................................................................. 52

Analisis de Resultados 3 ............................................................................................. 54

Producto Actividad 3 .................................................................................................. 54

Actividad 4 ................................................................................................................. 55

Analisis de Resultados 4 ............................................................................................. 56

Producto Actividad. 4 ................................................................................................. 56

Actividad 5 ................................................................................................................. 57

Analisis de Resultados 5 ............................................................................................. 67

Producto Actividad 5 .................................................................................................. 68

Actividad 6 ................................................................................................................. 65

Analisis de Resultados 6 ............................................................................................. 70

Producto Actividad 6 .................................................................................................. 71

CONCLUSIONES .......................................................................................................... 72

MEJORAS FUTURAS ................................................................................................... 72

REFERENCIAS ............................................................................................................. 73

5

INDICE DE TABLAS

Tabla 1. Pruebas realizadas con archivos de imagen_____________________________ 48

Tabla 2. Pruebas realizadas con imágenes tomadas del SK._______________________ 49

Tabla 3. Vector con las salidas de la red para el entrenamiento_____________________ 55

Tabla 4. Matriz para el entrenamiento de la red neuronal__________________________58

Tabla 5. Resultados obtenidos con una red con una capa oculta y variando la velocidad de

convergencia____________________________________________________________ 66

Tabla 6. Resultados obtenidos con una red con dos capas ocultas y variando la velocidad de

convergencia____________________________________________________________ 66

Tabla 7. Separación de planos ______________________________________________ 68

Tabla 8. Comparación de valores directos entre la Correlación y la RNA_____________71

Tabla 9. Resultados finales del método por correlación___________________________71

Tabla 10. Resultados finales del método por Redes Neuronales____________________ 71

_

6

ÍNDICE DE FIGURAS

Figura 1. Imagen de 16 pixeles [1] ________________________________________ 11

Figura 2. Vecindad N4 [1] ______________________________________________ 12

Figura 3. Vecindad ND [1] ______________________________________________ 13

Figura 4. Distancia euclidiana para una imagen de 5 por 5. [1] __________________ 13

Figura 5. Distancia Manhattan para una imagen de 5 por 5. [1] _________________ 14

Figura 6. Distancia Tablero de ajedrez [1] __________________________________ 14

Figura 7. Numero de bits necesarios representar un píxel de cada color [3] ________ 17

Figura 8. Sensor Kinect [4]______________________________________________ 17

Figura 9. Partes del Kinect [3] ___________________________________________ 18

Figura 10. Estructura del Kinect [3] _______________________________________ 19

Figura 11. Arquitectura del Kinect [3] _____________________________________ 20

Figura 12. Distribución del infrarrojo (Archivo del Autor) _____________________ 21

Figura 13. Puntos de articulaciones que reconoce la función Skeleton. [4] _________ 23

Figura 14. Flujo de información entre el Kinect y las aplicaciones [3] ____________ 24

Figura 15. Red neuronal artificial [3] ______________________________________ 26

Figura 16. Red Neuronal Mono capa [9] ___________________________________ 27

Figura 17. Red neuronal Multicapa [9] ____________________________________ 28

Figura 18. Red Neuronal Recurrente [9] ___________________________________ 29

Figura 19. Representación graf. Fun. Escalón o Umbral con su notación [7] _______ 29

Figura 20. Representación gráf. Fun Lineal Identidad con su notación [7] _________ 30

Figura 21. Representación gráf Fun Lineal y Mixta con su notación [7] ___________ 30

Figura 22. Representación graf Fun Sigmoidal con su notación [7] ______________ 31

Figura 23. Representación graf Fun Gaussiana con su notación [7] ______________ 31

Figura 24. Características del Computador en que se desarrolla el proyecto ________ 38

Figura 25. Aplicaciones Instaladas para trabajar con Visual Sudio y Kinect ________ 39

Figura 26. Programa Color Basic Kinect Tool (Archivo del Autor) ______________ 40

Figura 27. Programa Background Removal Basic Del Kinect Tool ______________ 40

Figura 28. Programa Skeleton Basic Del Kinect Tool (Archivo del Autor) ________ 41

Figura 29. Programa captura RGB compilado en Visual Basic. _________________ 42

Figura 30. Programa Visor de Profundidad compilado en Visual Basic. ___________ 42

Figura 31. Resultado al ejecutar el comando imaqhwinfo en Matlab. _____________ 43

Figura 32. Resultado del comando supportPackageInstaller en Matlab ____________ 43

Figura 33. Variables en Workspace de Matlab (Archivo del Autor) ______________ 43

Figura 34. Opciones de la cámara RGB del SK (Archivo del Autor) _____________ 44

Figura 35. Opciones de la cámara de profundidad del SK (Archivo del Autor) _____ 45

Figura 36. Captura de imagen RGB con Matlab (Archivo del Autor) _____________ 46

Figura 37. Imágenes para la creación de la base de datos (Archivo del Autor) ______ 46

Figura 38. Resultado de delimitar cada figura (Archivo del Autor) _______________ 45

Figura 39. Interfaz gráfica de la segunda entrega (Archivo del Autor) ____________ 48

Figura 40. Ventana para cargar la imagen de un archivo (Archivo del Autor) ______ 50

Figura 41. Programa una imagen de la cámara RGB y procesándola _____________ 57

Figura 42. Programa de reconocimiento de fig geométricas con la cámara de profundidad

del SK ______________________________________________________________ 53

7

Figura 43. Siluetas hecha en Paint para la creación de la base de datos ___________ 55

Figura 44. Programa que identifica siluetas humanas en un espacio abierto ________ 55

Figura 45. Imágenes para realizas en Paint para el entrenamiento de la red. ________ 57

Figura 46. Guide del programa realizado para el entrenamiento de la red) _________ 58

Figura 47. Entrenamiento de la red1 ______________________________________ 58

Figura 48. Patrones para el entrenamiento de la Red Neuronal Artificial ___________59

Figura 49. Entrenamiento de la RNA2 _____________________________________ 60

Figura 50. Grafica de Error en la RNA2 ___________________________________ 61

Figura 51. Entrenamiento de la RNA3 _____________________________________ 61

Figura 52. Grafica de Error en la RNA3 ___________________________________ 62

Figura 53. Entrenamiento de la RNA4 _____________________________________ 62

Figura 54. Grafica de Error en la RNA4 ___________________________________ 63

Figura 55. Entrenamiento de la RNA5 _____________________________________ 63

Figura 56. Grafica de Error en la RNA5 ___________________________________ 64

Figura 57. Entrenamiento de la RNA6 _____________________________________ 64

Figura 58. Grafica de Error en la RNA6 ___________________________________ 65

Figura 59. Entrenamiento de la RNA7 _____________________________________ 65

Figura 60. Grafica de Error en la RNA7 ___________________________________ 66

Figura 61. Programa que identifica formas Humanas(Archivo del Autor) _________ 67

Figura 62. Diagrama de Flujo del programa final (Archivo del Autor) ____________ 67

Figura 63. Separación de planos por distancia (Archivo del Autor) ______________ 69

8

INTRODUCCIÓN

El grupo de investigación ROMA de la Universidad Distrital trabaja en el desarrollo de

varias plataformas robóticas, sistemas sensoricos, muchos algoritmos de planificación de

movimientos y tareas, el grupo de investigación orienta sus principales actividades de

investigación en el estudio de la robótica de servicio y todo lo que ello implica para el

mejoramiento de la sociedad, conservar la vida natural (vida humana/animal/vegetal) del

Distrito Capital y toda la ciudad-región. Para ello, el grupo de investigación plantea dentro

de sus actividades de investigación procesos de formación de investigadores, formulación y

ejecución de proyectos de investigación, apropiación social del conocimiento y transferencia

de resultados a la sociedad en general y la industria en particular.

El grupo trabaja con robots para búsqueda y rescate de víctimas, para ello es muy importante

la visión artificial del robot que es muy limitada con una cámara convencional, la propuesta

de investigación e innovación contempla el estudio del comportamiento del Sensor Kinect

de Microsoft proyectado a usarse para la detección de victimas en zonas de desastre.

El proyecto de investigación en innovación se desarrolló con un plan de trabajo el cual

contempla tareas o actividades orientadas a objetivos que se irán trabajando desde el más

básico hasta el más complejo.

Para el desarrollo de este proyecto se cuenta con todo el conocimiento adquirido a lo largo

de la carrera, adicionalmente toda la información consultada de internet.

El resultado principal será un programa que use la adquisición de imágenes por medio del

Sensor de Kinect que procese e identifique si en estas imágenes hay una probable víctima.

El Indicador del resultado será la capacidad del programa junto al sensor para detectar

posibles víctimas humanas en las imágenes capturadas teniendo en cuenta las limitaciones

tanto del sensor como las de la capacidad de procesamiento.

9

PLANTEAMIENTO DEL PROBLEMA

Descripción

En la época actual se presentan diversas catástrofes de tipo natural y artificial: terremotos,

inundaciones, huracanes y terrorismo, entre otros. En estas situaciones de emergencia se

despliegan diferentes grupos de personas (policía, bomberos, paramédicos, etc.) que

cooperan para preservar la vida humana, proteger infraestructuras y evacuar víctimas.

En estas circunstancias, los grupos de rescate (incluyendo perros especializados) deben tomar

decisiones rápidas bajo presión e intentar salvar víctimas (a menudo bajo su propio riesgo),

determinando el estado de las víctimas o la estabilidad de las estructuras tan rápido como sea

posible; por fortuna, la tecnología también está jugando un papel importante, apoyando

algunas tareas que los seres humanos y los perros, por sí solos, no pueden hacer.

Identificación

Para suplir la necesidad de un sistema de visión robusto que pueda identificar víctimas en

una serie de imágenes capturadas por el Sensor Kinect de Microsoft. ROMA en su línea de

investigación Desarrollo de Sistemas Sensoriales ha optado por solicitar un solución que use

un sensor que logre capturar imágenes digitales y por medio de un ordenador procesarlas e

identificar si hay una posible víctima en ellas.

Esta solución se basa en al igual que otras en la un sistema de visión artificial el cual usa una

cámara digital que captura imágenes, las procesa para buscar la información que requiera en

ellas y finalmente las compara con una base datos por medio de un algoritmo que determina

y publica si corresponden a lo que se está buscando.

Formulación

Diseñar e implementar un programa capaz de capturar y procesar las imágenes adquiridas

por medio del Sensor Kinect y determinar si se puede detectar una posible víctima en las

imágenes capturadas.

10

OBJETIVOS

Generales

Desarrollar e implementar un aplicativo, capaz de obtener los datos del Sensor Kinect de

Microsoft y procesarlos para identificar si en estas imágenes digitales hay involucrada una

posible víctima.

Específicos.

Desarrollar cada uno de los 3 componentes principales del aplicativo (adquisición,

procesamiento de imágenes y presentación de los datos).

Implementar un sistema de adquisición de imágenes mediante el sensor Kinect de

Microsoft.

Aplicar varios métodos de procesamiento y tratamiento a las imágenes adquiridas.

Comparar las imágenes procesadas con la base de datos y referencias para establecer

si en las imágenes adquiridas hay una posible víctima.

11

MARCO DE REFERENCIA

PROCESAMIENTO DIGITAL DE IMÁGENES (PDI)

Fundamentos del (PDI)

Definiciones

Visión por computadora.- Consiste en la adquisición, procesamiento, clasificación y

reconocimiento de imágenes digitales es un Campo de la Inteligencia Artificial enfocado a

que las computadoras puedan extraer información a partir de imágenes, ofreciendo

soluciones a problemas del mundo real.

Píxel.- Elemento básico de una imagen (picture element).

Imagen.- Arreglo bidimensional de píxeles con diferente intensidad luminosa (escala de

gris).

Figura 1. Imagen de 16 pixeles [1]

Si la intensidad luminosa de cada píxel se representa por n bits, entonces existirán 2n escalas

de gris diferentes.

Matemáticamente, una imagen se representa por r f (x, y), donde r es la intensidad luminosa

del píxel cuyas coordenadas son (x,y). Matemáticamente, un sistema para procesar imágenes

se representa como g(x, y) Tf (x, y).

Color.- El color se forma mediante la combinación de los tres colores básicos rojo, azul y

verde (en inglés RGB). A continuación se presentan algunas definiciones básicas para

comprender los espacios de color:

Brillo.- Indica si un área está más o menos iluminada.

Tono.- Indica si un área parece similar al rojo, amarillo, verde o azul o a una proporción de

ellos.

Luminosidad.- Brillo de una zona respecto a otra zona blanca en la imagen.

12

Croma.- Indica la coloración de un área respecto al brillo de un blanco de referencia.

Mapa de color

El mapa de color es una matriz de n x 3, donde cada renglón es una tripleta de colores. El

primer renglón corresponde al valor mínimo del eje de color y el último renglón al máximo.

Al definir diferentes distribuciones de intensidad de los tres colores básicos, se crean

diferentes mapas de color. Algunos de los mapas de color predeterminados en MATLAB

son:

hsv, cool, hot, jet, gray, flag

Histograma de una imagen.

El histograma de una imagen es una representación del número de píxeles de cierto nivel de

gris en función de los niveles de gris.

Relaciones entre píxeles

Un píxel p con coordenadas (x,y) tiene cuatro vecinos horizontales y verticales, cuyas

coordenadas son: (x+1, y), (x-1,y), (x,y-1), (x,y+1). A este conjunto de píxeles se llama

vecindad 4 o 4 vecinos de p y se denota por N4 (p), ver la figura 3. Nótese que para cada uno

de estos píxeles hay una distancia de 1 de p y que en los bordes de la imagen algunos de estos

píxeles quedarán fuera de la imagen.

Figura 2. Vecindad N4 (p). [1]

Existen también 4 vecinos diagonales de p con coordenadas: (x+1,y+1), (x+1,y-1), (x-1,y-1),

(x-1,y-1) y se les denota por ND(p), ver la figura 4. N4 (p) y ND(p) juntos forman la vecindad

8 denotada por N8(p).

13

Figura 3. Vecindad ND (p).[1]

Conectividad

La conectividad es un concepto importante utilizado para establecer los límites de objetos en

regiones dentro de una imagen. Para determinar si dos píxeles están conectados se determina

si son adyacentes en algún sentido (ND (p), N4 (p) por ejemplo) y si sus niveles de gris

satisfacen un criterio de similaridad (por ejemplo si son iguales). Por ejemplo, en una imagen

binaria con valores de 1 y 0, dos píxeles pueden ser vecinos N4 (p), pero se dice que están

conectados solo cuando tienen el mismo valor.

Distancia

La distancia o transformada de distancia proporciona una medición de la separación existente

entre dos puntos dentro de una imagen. Dados tres píxeles, p, q y z, con coordenadas (x, y),

(s, t) y (u, v), respectivamente, se puede definir una función de distancia

D si se cumple:

Dp, q0,Dp,q0, si p q

Dp, qDq, p

Dp, z≤Dp, qDq, z

Las funciones de distancia comúnmente usadas son: distancia euclidiana, distancia

Manhattan o de cuadra y distancia tablero de ajedrez.

Distancia euclidiana entre p y q: D p qx sy tE , −2 −. En la figura 5 se muestra

la distancia euclidiana para una imagen de 5 por 5.

Figura 4. Distancia euclidiana para una imagen de 5 por 5. [1]

14

Distancia Manhattan: se toman solamente en cuenta los vecinos de orden 4, es decir:

D x −s y −t

En la figura 6 se muestra la distancia Manhattan de una imagen de 5 por 5.

Figura 5. Distancia Manhattan para una imagen de 5 por 5. [1]

Distancia tablero de ajedrez: es similar a la distancia Manhattan, en donde se observa que

los 4-vecinos están a una distancia unitaria del píxel central; si se desea que los 8-vecinos

estén a la misma distancia se toma:

Dp, qMaxx −s, y −t

Figura 6. Distancia tablero de ajedrez. [1]

Resolución óptica e interpolada

Resolución óptica:

La resolución óptica es la que conforma la verdadera imagen, la que proporciona el número

real de sensores de la matriz de la cámara digital. La resolución óptica de una cámara digital

o escáner está determinada por el número real de sensores de imagen o foto elementos que

producirán la imagen dando origen a los píxeles. Para incrementar la resolución real de la

15

imagen digital en ciertos límites, la resolución óptica puede aumentarse usando un software.

Este proceso, es la resolución interpolada.

La resolución interpolada:

La resolución interpolada es la que conforma una imagen que se obtiene mediante un

software con la adición artificial de píxeles a una imagen digital real. La resolución

interpolada agrega píxeles a la imagen para aumentar el número total de los mismos, para

hacer esto el software evalúa aquellos píxeles que rodean a cada uno de los píxel para

determinar de qué color que debería adoptar para ser el mismo. Es importante tener presente

que la resolución interpolada no agrega nueva información a la imagen, sólo agrega píxeles

y hace el archivo más grande.

Distancia focal:

Uno de las características más importantes de cualquier lente es su distancia focal. La

distancia focal es la que determina el campo de visión de una lente, si es gran angular, normal,

o telefoto. Estas distancias focales se indican en milímetros (mm) y de terminan la cantidad

de la escena que es proyectada sobre el sensor. Una cámara que posea un zoom digital usa

una parte de la imagen normal proyectada sobre el sensor y almacena esa parte tal como es

recibida, para luego ampliarla para llenar el sensor. Hace esto agregando nuevos píxeles a la

imagen original y luego utiliza la interpolación para completar la imagen. Esta imagen

interpolada no tiene tantos píxeles únicos como una tomada con un zoom óptico y por lo

tanto es de inferior calidad.

Sensibilidad a la luz

Las cámaras digitales pueden tener más de una graduación de ISO, por lo que se puede

aumentar la sensibilidad del sensor amplificando electrónicamente la señal obtenida. Algunas

cámaras incluso aumentan la ganancia automáticamente.

La exposición:

Las cámaras digitales tienen dos retrasos, el primero es el retraso de régimen de refresco,

ocurre porque la cámara borra la imagen del sensor, ajusta el equilibrio de blanco para

corregir los colores, calcula la exposición, enfoca la imagen, y captura la foto y el segundo

es el del tiempo de reciclado, ocurre cuando la imagen ya capturada es procesada y

almacenada en el dispositivo de almacenamiento. Estos retrasos pueden variar en cada

fabricante y modelo de cámara.

Compresión

Durante la compresión, los datos duplicados o que no tienen un valor específico se eliminan

o se guardan en una forma más simplificada de almacenamiento, por lo que se reduce el

tamaño del archivo de la imagen resultante en gran medida. Existen dos tipos de compresión

que son compresión sin pérdidas o con pérdidas, y la fotografía digital utiliza ambas formas.

16

Es muy importante tener en cuenta que para la selección de la cámara la compresión que esta

le haga a la imagen captada debe ser mínima y que dicha compresión le agregue la menor

cantidad de pérdidas.

Resolución

La profundidad de bits, también llamada profundidad del píxel o profundidad del color, mide

los valores posibles que puede tener cada uno de los píxeles que forman la imagen. A mayor

profundidad de bits, (más bits de información por píxel), la imagen tiene más colores

disponibles y puede representar su color de forma más precisa. A mayor profundidad de bits,

mayor será el tamaño del archivo de la imagen.

La resolución interpolada es la que conforma una imagen que se obtiene mediante un

software con la adición artificial de píxeles a una imagen digital real. La resolución

interpolada agrega píxeles a la imagen para aumentar el número total de los mismos, para

hacer esto el software evalúa aquellos píxeles que rodean a cada uno de los píxel para

determinar de qué color que debería adoptar para ser el mismo. Es importante tener presente

que la resolución interpolada no agrega nueva información a la imagen, sólo agrega píxeles

y hace el archivo más grande.

Figura 7. Numero de bits necesarios para representar un píxel de cada color [3]

MARCO TEORICO

KINECT

Historia

Kinect (originalmente conocido por el nombre en clave «Project Natal» El 13 de junio de

2010),es «un controlador de juego libre y entretenimiento» creado por Alex Kipman,

desarrollado por Microsoft para la videoconsola Xbox 360, y desde junio del 2011 para PC

a través de Windows 7 y Windows 8.3 Kinect permite a los usuarios controlar e interactuar

con la consola sin necesidad de tener contacto físico con un controlador de videojuegos

17

tradicional, mediante una interfaz natural de usuario que reconoce gestos, comandos de voz

y objetos e imágenes. El dispositivo tiene como objetivo primordial aumentar el uso de la

Xbox 360, más allá de la base de jugadores que posee en la actualidad. En sí el Kinect compite

con los sistemas Wii mote con Wii MotionPlus y PlayStation Move, que también controlan

el movimiento para las consolas Wii y PlayStation 3, respectivamente. [3]

Figura 8. Sensor Kinect [4]

Arquitectura del Kinect

El sensor Kinect está constituido por (4) cuatro partes fundamentales:

1. Servomotor.

2. Una cámara RGB

3. Una cámara de Profundidad o Sensor 3D

4. Cuatro micrófonos

Su forma física es la de una barra plástica negra de 30 cm de ancho conectado a un cable que

se bifurca en dos, un cable USB y el otro es un cable eléctrico. [3]

18

Figura 9. Partes del Kinect [3]

Estos 4 elementos son fundamentales pero además de estos hay otro que los describimos.

Motor Inclinación monitorizada que permite ajustar la cámara hacia arriba o hacia abajo

hasta 27º.

Cámara RGB Se emplea para capturar la resolución espacial, es decir las coordenadas X, Y.

Posee una resolución de 8-bit VGA (640 x 480 Pixeles) que opera a través de un sensor

CMOS con un filtro de Bayer lo cual hace posible capturar la imagen a color y envía datos a

una frecuencia de actualización de 30 cuadros por segundo.

Sensores 3D de profundidad compuesto de dos partes, un proyector de rayos infrarrojos y

un sensor CMOS monocromático. El sensor que percibe los rayos infrarrojos puede capturar

datos de video en 3D bajo cualquier condición de luz. Este, además opera en resolución VGA

(640 x 480) con 16-bit de profundidad a 30 cuadros por segundo, provee 2048 niveles de

sensibilidad. Proyector de profundidad mediante rayos infrarrojos (retícula izquierda),

Sensor CMOS monocromático (retícula derecha), se calcula la distancia en función del

tiempo que tarda en reflejar la luz. [5]

Micrófono Multi-array de cuatro micrófonos ubicados a los extremos del sensor, cada

canal procesa 16-bit y un rango de muestreo de 16kHz. Estos micrófonos son la única razón

por la cual el sensor es tan ancho y se monta como un solo micrófono y se usa para

reconocimiento de voz y charlas.

Y aunque no visibles a simple vista, Kinect también posee:

19

Chip PRIMESENSE PS1080 Este chip sirve para reconstruir la captura del movimiento

3D de la escena que este ubicada frente al Kinect el chip captura su entorno en tres

dimensiones y transforma esas capturas en imágenes sincronizadas en 3D.

Memoria RAM.- de 512 Mb

Acelerómetro.- para estabilizar la imagen cuando se mueve.

Ventilador.- no está encendido continuamente para no interferir con los micrófonos.

Data Streams (Flujo de datos)

•320 × 240 a 16 bits de profundidad @ 30fps

•640 × 480 32-bit de color @30fps

•Audio de 16-bit @ 16 kHz

Figura 10. Estructura del Kinect [3]

Funcionamiento

El sensor actúa como un sonar, la operación no es teóricamente complicada, si se conoce el

tiempo de cada salida y llegada de la luz tras reflejarse en un objeto, sabiendo la velocidad

absoluta de la luz, se puede tener la distancia a la cual se encuentra ese objeto. En un amplio

20

campo visual con objetos, la cámara Kinect trata de reconocer a qué distancia están los

objetos, distinguiendo el movimiento en tiempo real. Kinect puede llegar a distinguir la

profundidad de cada objeto con diferencias de 1 centímetro, su altura y anchura con

diferencias de 3 milímetros. El hardware de Kinect está compuesto por la cámara y el

proyector de luz infrarroja, añadido al firmware y a un procesador que utiliza algoritmos para

procesar las imágenes tridimensionales. [3]

Se puede dividir el funcionamiento de Kinect en tres partes:

Figura 11. Arquitectura del Kinect

RECONOCIMIENTO DE IMÁGENES

La configuración óptica permite el reconocimiento de imágenes en tiempo real. Kinect no

usa tecnología compleja, de hecho la tecnología usada está disponible desde hace 15 años,

pero Microsoft ha conseguido efectos y funciones que antes estaban disponibles solamente

con un gran costo.

21

Podemos dividir dos partes principales, el proyector y la cámara de infrarrojos VGA. El

rebote de los haces de laser por todo el campo de juego es lo que permite que la cámara capte

al profundidad de los diferentes objetos.

Para conocer la distancia a la que se encuentra cada píxel de la imagen de profundidad se

emite una constelación de puntos con el emisor infrarrojo:

Figura 12. Distribución del infrarrojo

Entonces la cámara infrarroja detecta esta constelación y Kinect calcula la disparidad para

cada píxel (la diferencia entre donde estaba el punto al proyectarlo a donde está en la

proyección). A esto se le llama cámara de luz estructurada. Con estos datos Kinect ejecuta

una serie de filtros con la intención de calcular que es una persona y que no lo es. El sistema

utilizará directrices como “una persona tiene una cabeza, dos piernas y dos brazos” para

diferenciarla del sofá o de algún otro elemento que pueda haber en el campo de juego.

También es capaz de distinguir si se usa ropa ajustada o si tiene el pelo largo.

22

Figura 13. Puntos de articulaciones que reconoce la función Skeleton. [4]

A partir de esta información, se ordena y convierte la identificación de las partes del cuerpo

en un esqueleto. Kinect tiene precargadas más de 200 posiciones comunes del ser humano

por lo que en caso de que alguna acción tape alguna parte del esqueleto a la cámara, Kinect

llenará el vacío automáticamente, se generan varios esqueletos pero se elige uno basándose

en la experiencia. El sistema hace todo esto continuamente a una velocidad de 30fps y hay

que estar a una distancia de unos dos metros para poder ser reconocido.

RECONOCIMIENTO DE VOZ

El mayor problema del reconocimiento de voz era que tenía que ser sensible a voces de hasta

cinco metros de distancia además de ignorar los ruidos ambientales, otro sonido y el eco fue

lo que menciono Alex Acero en una entrevista realizada por Xataka, la revista Gamespot.

Para solucionarlo Microsoft puso en doscientas cincuenta viviendas dieciséis micrófonos

para tomar una serie de grabaciones con el objetivo de determinar cuál es el mejor

posicionamiento del micrófono.

Como resultado se tiene una colocación específica que hace que el Kinect sea tan ancho como

es con un micrófono boca abajo, uno en la izquierda y tres en la derecha. Esta forma es la

mejor para recoger las voces desde la distancia, el ruido asociado es cancelado por la unidad

de procesamiento y se utiliza un sistema software que usa la cámara para calcular de donde

viene el sonido y así crear un burbuja de sonido alrededor del usuario, de esta manera se

23

separa el sonido de la voz y se hace caso omiso a las otras personas que se encuentren

alrededor de los jugadores. Al igual que el reconocimiento de imágenes, el reconocimiento

de sonido está funcionando continuamente.

EL MOTOR

Tras investigaciones para ver las diferentes configuraciones de espacios de vida en toda

América, Europa y Asia, Microsoft llego a la conclusión de que era necesario dotar la cámara

del Kinect la posibilidad de moverse hacia arriba o hacia abajo con el objetivo de calibrar

cada espacio concreto. El motor es capaz de mover la unidad hacia arriba o hacia abajo 27º,

por lo que la altura óptima está recomendada en uno o dos metros. El motor también opera

la cámara, él es quién activa la función de zoom, que permite ampliar el espacio de juego

DRIVER PARA KINECT

El sensor Kinect posee un puerto USB 2.0 para la conexión con la consola de videojuegos

XBOX 360. El protocolo con el que se comunica el sensor con la consola no fue protegido

con ningún tipo de cifrado, lo que facilito enormemente la creación de controladores que

permitieron el uso del sensor a través de una computadora.

Dado que es relativamente fácil generar un controlador propio para el Kinect, se pueden

encontrar gran cantidad de estos disponibles en internet al igual que tutoriales para la

implementación de los mismos. Sin embargo, existen dos que logran destacarse a la hora del

uso para el desarrollo de aplicaciones: OpenKinect y OpenNI.

OpenKinect: Es una librería que se ha venido desarrollando mediante técnicas de ingeniería

inversa del protocolo utilizado por el Kinect por parte de una gran comunidad de

desarrolladores que colaboran con este proyecto. Esta librería es de código abierto y ofrece

control sobre la mayoría de los dispositivos de hardware del sensor, más no ofrece facilidades

en cuanto a algoritmos especializados para el procesamiento de imágenes.

OpenNI: Se trata de un framework desarrollado por la empresa PrimeSense que ofrece gran

facilidad para el desarrollo de aplicaciones utilizando el sensor Kinect. Al igual que

OpenKinect ofrece control sobre la mayoría de los dispositivos de hardware del Kinect,

además, posee compatibilidad con la librería NITE de PrimeSense que contiene algoritmos

para el procesamiento de imágenes, detección y seguimiento de individuos. Sin embargo, el

código de esta librería no es abierto. Al ver que otras empresas generaban controladores y

que tenía éxito, provocó que Microsoft decidiese publicar la SDK oficial de Kinect.

El SDK está orientado a la investigación académica principalmente aunque también a

programadores particulares con el objetivo que experimenten con la creación de interfaces

naturales de usuario.

El SDK permite:

Kinect.

24

El SDK incluye:

Figura14. Flujo de información entre el Kinect y las aplicaciones [3]

Se recomienda usar el SDK oficial de Kinect para el desarrollo de aplicaciones para la

consola Xbox 360, debido a las diferencias arquitectónicas, de mantenimiento y de

funcionamiento son distintas en Windows que en Xbox360. Para programación sobre Xbox

se recomienda usar el Xbox desarrollo kits (XDK).

Los lenguajes utilizados por el SDK son C#, C++, Matlab y Labview.

MATLAB

MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es una

herramienta de software matemático que ofrece un entorno de desarrollo integrado (IDE) con

un lenguaje de programación propio (lenguaje M).

Está disponible para las plataformas Unix, Windows, Mac OS X y GNU/Linux.

Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de

datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario

(GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware.

El paquete MATLAB dispone de dos herramientas adicionales que expanden sus

prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor

de interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB

con las cajas de herramientas (Toolbox); y las de Simulink con los paquetes de bloques

(Blockset).

Es un software muy usado en universidades y centros de investigación y desarrollo. En los

últimos años ha aumentado el número de prestaciones, como la de programar directamente

procesadores digitales de señal o crear código VHDL. [6]

25

Historia

Fue creado por el matemático y programador de computadoras Cleve Moler en 1984,

surgiendo la primera versión con la idea de emplear paquetes de subrutinas escritas en Fortran

en los cursos de álgebra lineal y análisis numérico, sin necesidad de escribir programas en

dicho lenguaje. El lenguaje de programación M fue creado en 1970 para proporcionar un

sencillo acceso al software de matrices LINPACK y EISPACK sin tener que usar Fortran.

En 2004, se estimaba que MATLAB era empleado por más de un millón de personas en

ámbitos académicos y empresariales. [2]

Características principales

Lenguaje de alto nivel para cálculos de ingeniería y científicos.

Entorno de escritorio afinado para la exploración, el diseño y la solución de

problemas de manera iterativa.

Gráficos para visualizar datos y herramientas para crear gráficos personalizados.

Apps para ajustar curvas, clasificar datos, analizar señales y muchas otras tareas

relacionadas con dominios concretos.

Toolbox complementarias para una amplia variedad de aplicaciones de ingeniería y

científicas.

Herramientas para crear aplicaciones con interfaces de usuario personalizadas.

Interfaces para C/C++, Java®, .NET, Python®, SQL, Hadoop® y

Microsoft® Excel®.

Opciones de despliegue sin coste en concepto de derechos de licencia para

compartir programas de MATLAB con los usuarios finales.

¿Por qué MATLAB?

MATLAB es el software más sencillo y productivo para ingenieros y científicos. Ya tenga

que analizar datos, desarrollar algoritmos o crear modelos, MATLAB ofrece un entorno que

invita a la exploración y el descubrimiento. Combina un lenguaje de alto nivel con un entorno

de escritorio adaptado a los flujos de trabajo iterativos de la ingeniería y la ciencia. [6]

REDES NEURONALES.

Redes neuronales artificiales

EL principio de las redes neuronales se dio en los años 40 con las investigaciones de Warren

McCulloch y Walter Pitts quienes propusieron un modelo matemático para describir el

26

comportamiento de las neuronas del cerebro humano, el cual proponía que cada neurona está

dotada de una conjunto de entradas y salidas, y cada entrada es afectada por una conexión o

peso, la activación de la neurona está determinada por la suma de sus conexiones y la salida

está determinada por la función de transferencia de la neurona.

Figura 15. Red neuronal artificial

En 1958, Rosenblat desarrolló el Perceptrón simple, y en 1960 Widrow y Hoff desarrollaron

el ADALINE[8], estas fueron las primeras redes neuronales artificiales, las cuales tenían

limitaciones ya que solo resolvían problemas linealmente separables, fue hasta los años 80

cuando apareció la red de Hopfield desarrollada por el John Hopfield, y en especial, al

algoritmo de aprendizaje de retro propagación (BackPropagation) ideado por Rumelhart y

McClellan en 1986 que fue aplicado en el desarrollo de los perceptrones multicapa[9] se

logra resolver este inconveniente, logrando con esto un sin fin posibilidades a esta nueva área

de conocimiento. Algunas de las principales aplicaciones en la que se utilizan actualmente

son reconocimiento de patrones, reconocimiento de caracteres en imágenes, reconocimiento

de fonemas en voz, predicción de series temporales (demandas, etc.), identificación y control

de sistemas y compresión de imágenes y reducción de dimensionalidad.

Las ventajas que ofrecen las redes neuronales son:

Aprendizaje adaptativo: Después de haber entrenado la red, esta puede responder a patrones

que no se le hubieran presentado en la etapa de entrenamiento, es decir puede modificarse

constantemente con el fin de adaptarse a nuevas condiciones.

Auto-organización: La red puede organizar la información en toda sus neuronas y

generalizar patrones e información, esto es útil en el caso de que la información este

incompleta o que se a poco clara.

Tolerancia fallos: Como las redes neuronales guardan la información en forma distribuida y

con un alto grado de redundancia si alguna parte de la red se daña esta puede seguir

27

funcionando sin problemas, además si la información presenta ruido, distorsión o esta

incompleta la red tiene la capacidad de generalizar la información y responder

adecuadamente.

Operación en tiempo real: La red trabaja en forma paralela y no secuencial como los

computadores, además se pueden implementar sobre hardware lo cual hace que su respuesta

sea en tiempo real.

Fácilmente implementables en hardware: Usando matrices de diodos que representen las

conexiones de las neuronas, las redes mono capas pueden utilizarse en circuitos eléctricos ya

que debido a su topología son adecuadas para ser implementas en hardware.

Descripción

El principio de funcionamiento de las redes neuronales, se le muestra un conjunto de entradas

a la red y se verifica la salida de esta, si la salida no corresponde con la que se desea, se

ajustan los pesos de las neuronas hasta lograr la salida deseada.

TIPO DE REDES

Redes Mono capa

Las redes mono capa son redes con una sola capa. Para unirse las neuronas crean conexiones

laterales para conectar con otras neuronas de su capa. Las redes más representativas son la

red de Hopfield, la red BRAIN-STATE-IN-A-BOX o memoria asociativa y las maquinas

estocásticas de Botzmann y Cauchy, y su salida está dada por la suma de sus conexiones y

su función de transferencia.

Figura 16. Red Neuronal Mono capa [9]

Entre las redes neuronales mono capa, existen algunas que permiten que las neuronas tengan

conexiones a sí mismas y se denominan auto recurrentes.

28

Redes Multicapa

Estas redes tienes capas ocultas entre las capas de entrada y salida y generalmente son

capaces de aprender funciones que una red mono capa no puede aprender, por lo que ofrecen

mejores capacidades computacionales, como es resolver problemas que no son linealmente

separable, las redes más representativas son el Perceptrón Multicapa, Adaline, Madaline y

Backpropagation

.

Figura 17. Red neuronal Multicapa [9]

Redes Recurrentes

A diferencia de las redes mono capa o multicapa que transmiten su información hacia las

neuronas posteriores, estas transmiten información también hacia las neuronas de la misma

capa y hacia atrás por lo que la complejidad de este tipo de redes es más alto, sus salidas

están determinadas por sus entradas y salidas previas por lo que se asocian más a la memoria

de corto plazo de los seres humanos.

29

Figura 18. Red neuronal Recurrente [9]

Funciones de Activación o Transferencia

Las funciones de activación como su nombre lo indica determinar si una neurona se activa o

inhibe es decir si aporta información o no, entre las principales funciones de activación están

Función Escalón, Función Lineal o Identidad, Función Lineal y Mixta, Función sigmoidal y

Función Gaussiana.

Función Escalón o Umbral

Esta función es utilizada generalmente es las redes que tiene salidas binarias, la salida de la

neuronal se activa si supera cierto umbral. Esta puede estar desplazada sobre los ejes,

generalmente poco se usa.

Figura 19. Representación grafica de la Función Escalón o Umbral con su notación [7]

30

Función Lineal o Identidad

La salida de esta función está dada por su entrada

Figura 20. Representación gráfica de la función Lineal Identidad con su notación [7]

Función Lineal y Mixta

Esta función está obligada a permanecer en un rango de valores reales predeterminados

Figura 21. Representación gráfica de la Función Lineal y Mixta con su notación [7]

Función Sigmoidal

Esta función es muy importante ya que esta función es derivable y cercana a cero y su valor

máximo esta cuando x toma valores cercanos a cero.

31

Figura 22. Representación grafica de la Función Sigmoidal con su notación [7]

Función Gaussiana

Los centros y la anchura de esta función son adaptables lo cual consigue generalmente con

dos capas ocultas.

Figura 26. Representación grafica de la Función Gaussiana con su notación [7]

La Regla delta generalizada (Backpropagation)

La Regla Delta o LMS era una regla de aprendizaje que se utilizaba para entrenar un PE o

una capa de PE, pero como se ha visto en algún ejemplo anterior, es posible que para resolver

ciertos problemas necesitásemos añadir a la estructura alguna capa oculta. En ese caso, la

Regla Delta no serviría para el entrenamiento de la estructura:

• Conocemos la salida deseada para cada patrón de entrenamiento.

• No conocemos la salida deseada para los PE de las capas ocultas.

La Regla Delta Generalizada o Backpropagation fue creada para generalizar la Regla Delta

sobre Redes Neuronales de múltiples capas y funciones de transferencia no lineales y

diferenciables. El aprendizaje es también Supervisado. Su utilización consiste en ajustar

pesos y bias tratando de minimizar la suma del error cuadrático. Esto se realiza de forma

continua, cambiando dichas variables en la dirección contraria a la pendiente del error. Esto

se denomina Técnica del Gradiente Descendente.

32

Redes Neuronales entrenadas mediante esta regla, dan razonables respuestas cuando al

sistema se le presentan entradas que no ha visto nunca. Típicamente a una nueva entrada, le

hará corresponder una salida similar a la salida obtenida para un patrón de entrenamiento,

siendo éste similar al patrón presentado a la red. Una de las grandes propiedades de este tipo

de estructuras es su capacidad de Generalización. [8]

Funcionamiento Básico

1- Se aplica un vector de entrada y se calculan sus correspondientes salidas.

2- Se determina una medida de error.

3- Se determina en qué dirección se deben cambiar los pesos para minimizar dicho error.

4- Se determina la cantidad en que es preciso cambiar cada peso.

5- Se modifican los pesos.

6- Se repiten los pasos del 1 al 5 con todos los patrones de entrenamiento, hasta que el error

para todos los vectores del conjunto de entrenamiento quede reducido a un valor

aceptable.[2]

Arquitectura de Pesos

Capa de Salida

Como en la capa de salida puede haber un no >1 de PE, en este caso no nos basta con un

único valor de error:

El error que se debe minimizar es la suma de los cuadrados de los errores de todas las

unidades de salida.

33

Todo implica que:

De tal manera que los pesos en la capa de salida se modificarán de la siguiente manera:

Condición necesaria: f debe ser derivable. Dos casos:

Sea:

NOTA: Si se desea que la Regla Delta Generalizada funcione igual que la Regla Delta o

mínimos cuadrados, NO se debe cambiar los pesos hasta que se presenten todos los patrones

de entrenamiento al menos una vez. Se acumularía el error de cada uno de ellos y se trabajaría

con él al modificar los pesos. El error que se estaría minimizando sería:

Capas Ocultas

Ep está relacionado con la salida de los PE en capas ocultas de la siguiente manera:

minimizado pp

n

E E

1

34

Por otra parte:

De tal manera:

Con lo que:

Las actualizaciones de los pesos en la capa oculta dependen de todos los términos de errores

de la capa de salida. Esto es a lo que se refiere uno con el nombre de propagación hacia atrás.

Entonces:

Los términos de error de las unidades ocultas, se calculan antes de que hayan sido

modificados los pesos de las conexiones con las unidades de la capa de salida.

Consideraciones Prácticas

Datos de entrada (entrenamiento)

En general se pueden emplear todos los datos disponibles para entrenar la red. Con cierta

frecuencia, lo único que se necesita es un pequeño subconjunto de datos que cubran todo el

espacio de los mismos.

La BPN admite bien la Generalización: Dados varios vectores de entrada, pertenecientes a la

misma clase, aprenderá la similitud existente entre ellos.

35

Por otro lado, la BNP no extrapola bien es decir, que si la red se entrena mal o

insuficientemente, las salidas pueden ser imprecisas. Hay que asegurarse que los datos de

entrenamiento cubran todo el espacio de entradas esperadas. La red se debe de entrenar

seleccionando patrones de manera aleatoria, es mala técnica de entrenamiento presentar

primero los patrones de una clase y luego los de otra: la red se olvidaría del entrenamiento

inicial. [9]

Dimensionamiento de la Red

No existe una respuesta sencilla para resolver esta cuestión. En general 3 capas son

suficientes, pero en ciertos casos, un problema se puede resolver de manera más fácil

añadiendo más capas ocultas (nos referimos a que el aprendizaje se realiza de forma más

rápida).

Control de Convergencia

En las técnicas de gradiente descendente es conveniente avanzar por la superficie de error

con incrementos pequeños de los pesos. Esto se debe a que tenemos una información local

de la superficie y no se sabe lo lejos o lo cerca que se está del punto mínimo. Con incrementos

grandes, se corre el riesgo de pasar por encima del punto mínimo sin conseguir estacionarse

en él. Con incrementos pequeños, aunque se tarde más en llegar, se evita que ocurra esto. [3]

El elegir un incremento adecuado influye en la velocidad con la que converge el algoritmo.

Sabemos que este control lo podemos realizar mediante el parámetro denominado ganancia

Normalmente se le asigna un valor pequeño (0,05-0,25) para asegurar que la red llegue a

asentarse en una solución.

Otra manera de incrementar la velocidad de aprendizaje, consiste en utilizar otro parámetro

llamado Momento, cuando se calcula el cambio de peso se le añada una fracción del cambio

anterior. Con ello también se trata de que la red no se estabilice en un mínimo local, aunque

esto algunas veces no puede ser conseguido.

Un último aspecto a tener en cuenta es la posibilidad de convergencia hacia alguno de los

mínimos locales que pueden existir en la superficie de error del espacio de pesos. No se puede

asegurar en ningún momento que el mínimo que se encuentre sea global. Una vez que la red

se asienta en un mínimo, sea local o global, cesa el aprendizaje, aunque el error siga siendo

demasiado alto, si se ha alcanzado un mínimo local. Si se alcanza un mínimo local y el error

es satisfactorio, el entrenamiento ha sido un éxito, si no sucede así, puede realizarse varias

acciones para solucionar el problema:

• Cambio de arquitectura (más capas ocultas o más PE)

• Modificación de parámetros de aprendizaje.

• Emplear un conjunto de pesos iniciales diferentes.

• Modificar el conjunto de entrenamiento o presentar los patrones en distinta secuencia.

36

Procedimientos para incrementar la velocidad de aprendizaje.

En este apartado se describirá diferentes procedimientos que permiten incrementar la

velocidad de aprendizaje manteniendo intacto la propiedad de localidad que tienen este tipo

de redes, referido a que la computación de un PE está solamente influenciado por aquellos

pesos que están físicamente conectados con él.

Heurística 1: Cada parámetro ajustable de la red que determina la función de coste debería

tener su propio parámetro de control de velocidad de aprendizaje.

Esta heurística reconoce el hecho de la posible existencia de diferentes ganancias para cada

conexión ajustable de la estructura.

Heurística 2: Cada parámetro de control de velocidad debería variar de un paso a otro.

Normalmente la superficie de error tiene diferentes formas en un mismo espacio. En función

de dichas diferencias, esta heurística establece que así como cambia la forma del error,

debería cambiar la velocidad de aprendizaje.

Heurística 3: Cuando la derivada de la función error (coste) con respecto a una conexión

determinada, tiene el mismo signo algebraico durante varios pasos del algoritmo, el

parámetro ganancia para dicha conexión debería ser incrementado.

Esta heurística, establece que en las condiciones mencionadas anteriormente, el número de

pasos requeridos para moverse en una cierta parte de la superficie de error, puede ser

reducido, incrementando convenientemente la ganancia.

Heurística 4: Cuando el signo algebraico de la derivada de la función error con respecto a

una particular conexión cambia durante pasos consecutivos, la ganancia para el peso en

cuestión debería decrecer.

El cambio de signo en pasos consecutivos viene a significar la existencia de picos y valles.

En orden de tratar de localizar el punto mínimo del valle y así evitar esas oscilaciones, la

ganancia debería ser reducido (ajuste de pesos más fino).

CORRELACIÓN

En probabilidad y estadística, la correlación indica la fuerza y la dirección de una relación

lineal y proporcionalidad entre dos variables estadísticas, es decir la dependencia que existe

entre las dos variables que intervienen en una distribución bidimensional. Se considera que

dos variables cuantitativas están correlacionadas cuando los valores de una de ellas varían

sistemáticamente con respecto a los valores homónimos de la otra: si tenemos dos variables

(A y B) existe correlación si al aumentar los valores de A lo hacen también los de B y

viceversa. La correlación entre dos variables no implica, por sí misma, ninguna relación de

causalidad. Se aplica a diversas áreas de la ingeniería como radar, sonar, comunicaciones

digitales, geología, etc.

La correlación se calcula con la siguiente formula:

37

Donde:

r = coeficiente de correlación

n = número de pares ordenados

x = variable independiente

y = variable independiente

La correlación tiene las siguientes propiedades:

El coeficiente de correlación no varía al hacerlo la escala de medición.

El signo del coeficiente de correlación es el mismo que el de la covarianza.

Si la covarianza es positiva, la correlación es directa.

o Si la covarianza es negativa, la correlación es inversa.

o Si la covarianza es nula, no existe correlación.

El coeficiente de correlación lineal es un número real comprendido entre menos -1 y 1.

Si el coeficiente de correlación lineal toma valores cercanos a -1 la correlación es fuerte e

inversa, y será tanto más fuerte cuanto más se aproxime r a -1.

Si el coeficiente de correlación lineal toma valores cercanos a 1 la correlación es fuerte y

directa, y será tanto más fuerte cuanto más se aproxime r a 1.

Si el coeficiente de correlación lineal toma valores cercanos a 0, la correlación es débil.

Si r = 1 o -1, los puntos de la nube están sobre la recta creciente o decreciente. Entre ambas

variables hay dependencia funcional.

DESCRIPCIÓN DEL PROYECTO

DISEÑO E IMPLEMENTACIÓN DE LA SOLUCIÓN

Metodología Aplicada

El programa de procesamiento de imágenes adquiridas por medio del sensor Kinect para

determinar la posibilidad una víctima en determinada zona se desarrolló en el software

Matlab R2014a y su base principal como proyecto de investigación son el desarrollo de

actividades diseñadas a partir de cada uno de los objetivos específicos presentados de forma

que cada actividad tiene asociados unos pasos orientados a cumplir cabalmente con los

objetivos propuestos en cada una y además hace una análisis de resultados, conclusiones y

producto al final de cada actividad de investigación.

38

DESARROLLO DE ACTIVIDADES DE INVESTIGACIÓN

Actividad 1

Objetivo:

Pruebas básicas para familiarización con el Sensor, pruebas de programas básicos, estudio

de su código, ventajas y desventajas del uso del Sensor Kinect que de ahora en adelante será

llamado SK. Se estudiaran dos programas para el desarrollo del proyecto el Microsoft Visual

Studio y Matlab.

Tiempo de ejecución: Un Mes, Mes 1 Entregada (29/09/2015)

Para la ejecución de este se proyectó se usó el Sensor Kinect de Microsoft proporcionado por

el Grupo Roma de La Universidad Distrital F.J.D.C. que de ahora en adelante será llamado

SK. Para el desarrollo de este proyecto se evaluaron las herramientas Kinect SKD que es el

lenguaje nativo del SK de Microsoft y Matlab con su Toolbox para Kinect.

El proyecto se desarrolló sobre un portátil SONY VAIO con las siguientes características:

Figura 24. Características del Computador en que se desarrolla el proyecto

Pruebas con Kinect SDK

La página de Microsoft permite la descarga del Kinect Studio y el Kinect Windows

Developer Toolkit.

Todas las librerías clases y objetos del sistema SKD son soportadas por Visual Studio 2013

de Microsoft [10] así que todo el código se compila y ejecuta sobre este Software que tiene

una versión de estudiantes para Windows 8.1.

Se realizó la instalación de los siguientes programas necesarios para el correcto

funcionamiento de los programas de ejemplo: Developer Toolkit Browser v1.8.0 (Kinect

39

for Windows) y Kinect Studio v1.8.0, descargados desde la página de Microsoft. [11]

Figura 25. Aplicaciones instaladas para trabajar con Visual Studio y kinect SDK

La primera prueba que se hace es conectar el SK al adaptador USB computador y a su vez

conectar el adaptador a su alimentación eléctrica. Luego se verifica que el computador haya

detectado el Sensor, generalmente publica un mensaje como cuando se conecta una memoria

USB, sin embargo se verifica en el administrador de dispositivos que el dispositivo no tenga

ningún problema de drivers o configuración. Seguidamente se abre el Programa Kinect

Windows Developer Toolkit, que contiene una serie de programas ejemplo acerca de los usos

básicos y avanzados del sensor Kinect de Microsoft. Allí se abren algunos programas y de

esta forma se puede comprobar si está funcionando el Sensor Kinect de forma correcta o si

tiene algún problema de configuración en el computador en el que se ha conectado. Se

realizan pruebas básicas de los Micrófonos, cámara RGB, Cámara infrarroja. La página no

entrega el código de los programas que presenta pero si da una documentación y explicación

de las clases y objetos usados en el desarrollo de los programas.

Por otro lado se hacen pruebas con el programa Matlab 2014a el cual también tiene varias

herramientas para trabajar con el Kinect, como este programa no cuenta con una herramienta

para hacer pruebas directas hay que hacer un pequeño programa por medio del cual se

realizan pruebas de funcionamiento básico.

Pruebas del SK en el programa Kinect Windows Developer Toolkit

A continuación se muestran pruebas realizadas con el sensor Kinect para varios programas

predeterminados en la herramienta Kinect Windows Developer Toolkit se seleccionan los

programas que más se acerquen a los objetivos de nuestra investigación:

40

Programa Color Basic 2d

Figura 26 Programa Color Basic Kinect Tool

Este programa publica el video que se adquiere con la cámara RGB del Kinect y permite

capturar fotografías por medio del accionar de un botón. Podría ser el programa base del

proyecto ya que lo primero que se requiere inicialmente es la adquisición de imágenes.

Programa Background Removal Basic

Figura 27. Programa Background Removal Basic Del Kinect Tool

Este programa hace la captura básica de video por medio de la cámara RGB del Kinect y lo

publica en una ventana cambiando el fondo por medio de una herramienta del SKD que es lo

que se usa actualmente en varios juegos. Como solo toma la silueta de la persona para ponerla

sobre el fondo es un programa interesante con limitación ya que tiene un rango reducido de

41

acción, la distancia de la persona al Kinect debe estar entre 100 y 350 cm. Programa que sería

de gran aporte a los objetivos del proyecto.

Programa Skeleton Basic

Figura 28. Programa Skeleton Basic Del Kinect Tool

Este es quizá una de las aplicaciones más interesantes que se puedan trabajar con el Kinect

pues hace un trazado del esqueleto humano y así puede identificar detalla mente que parte

del cuerpo es la que está en movimiento. Esta función nos resulta muy atractiva pues

queremos detectar humanos en un área determinada y esta función fue diseñada para detectar

siluetas humanas en posición vertical. Estudiando y ejecutando estos programas se puede

tener una buena idea de los alcances, limitaciones del sensor y los programas con los que se

pueden trabajar.

Programas básicos con código compilados en Microsoft Visual Studio.

Con unos conocimientos básicos de programación, la ayuda de varios documentos y

tutoriales en internet [3], se pudo llegar a compilar el código de los siguientes programas.

Programa que se implemento es el de poder visualizar el video de la cámara RGB del Kinect

en una ventana permita capturar una fotografía y guardarla en el destino deseado. Este

programa es muy importante ya que será la base de nuestro programa final porque en este se

aprendió a interactuar con el SK activar, desactivar su cámara, capturar una foto y guardarla

en el momento que se desee, para después procesarlas.

42

Captura de imágenes con la cámara RGB

Figura 29. Programa captura RGB compilado en Visual Basic

Programa que nos permite visualizar la profundidad con diferentes colores.

Este es un programa de gran interés para el proyecto pues toma las profundidades medidas

por el sensor infrarrojo y las proyecta como una imagen en una gama de colores donde

dependiendo de la profundidad varía el tono del color, con la ayuda de unas librerías que nos

facilita el SKD de Kinect. De esta forma podemos tomar imágenes procesarlas e identificar

lo que necesitemos de la captura. (También hay otra aplicación que da un color distinto al

objeto que este en movimiento lo cual sería muy útil para la detección de sobrevivientes).

Figura 30. Programa Visor de Profundidad compilado en visual Basic.

Como podemos ver en la figura el color verde representa la distancia más cercana, el color

rojo representa la distancia desconocida, el color azul representa la distancia más lejana.

43

Pruebas con Sensor Kinect en el programa Matlab 2014A

Gracias a que ya se realizaron pruebas satisfactorias con el SK y el programa Kinect

Windows Developer Toolkit se puede asegurar de que el sensor está en perfecto

funcionamiento ahora se procede a revisar la configuración del programa Matlab para que

detecte el Sensor y pueda adquirir información del él.

Investigando en Internet se encuentran ejemplos claros de cómo desarrollar un GUIDE o

interfaz gráfica para usuario para una interacción más sencilla con el usuario final, hacer la

captura de la imagen, guardarla, procesarla y publicar los resultados. [12]

Lo primero que se hace es abrir el programa Matlab 2014a y en la consola de comandos

ingresar la orden Imaqhwinfo y pulsar enter, con esta orden el programa nos da la

información de los adaptadores de video que tiene instalados Matlab, si todo está bien nos

debe salir la siguiente información [13]

Figura 31. Resultado al ejecutar el comando imaqhwinfo en Matlab.

Generalmente Matlab tiene instalado por defecto el “WinVideo” pero este no basta para

trabajar con el SK para este propósito debemos descargar el adaptador de video para Kinect

entonces ejecutamos el comando “supportPackageInstaller” y de esta forma instalamos el

programa para el adaptador de video Kinect de Microsoft, una vez instalado comenzamos a

hacer pruebas básicas del sensor.

Figura 32. Resultado al ejecutar el comando supportPackageInstaller en Matlab

44

Ejecutando los siguientes comandos en Matlab se pueden acceder a las propiedades del SK

de la cámara de profundidad y de la RGB desde el Workspace.

VideoDepth = videoinput ('kinect', 2, 'DEPTH_640x480');

PropiedadeDepth = getselectedsource (VideoDepth);

VideoRGB = videoinput ('kinect', 1, 'RGB_640x480');

PropiedadeRGB= getselectedsource (VideoRGB);

En la ventana del Workspace de Matlab se abre el PorpiedadeDepth

Figura 33. Variables en Workspace de Matlab

Al dar clic sobre PropiedadeDepth o PropiedadeRGB se despliegan las opciones

respectivamente de cada cámara.

45

Figura 34. Opciones de la cámara RGB del SK.

Figura 35. Opciones de la cámara de profundidad del SK.

Con estas herramientas se pueden controlar algunas características del SK, Como puede ser

la inclinación de la cámara, si se enciende el infrarrojo y la postura que reconocerá, sentada

o de pie. [14] Estas opciones también son configurables desde línea de comandos como se

muestra a continuación:

Algunas opciones para la cámara RGB del SK por líneas de comandos.. set(PropiedadeRGB, 'BacklightCompensation' , 'LowLightsPriority'); set(VideoRGB,'FramesPerTrigger',1); set(VideoRGB,'TriggerFrameDelay',25); set(PropiedadeRGB, 'CameraElevationAngle' , 5);

Algunas opciones para la cámara de profundidad del SK por líneas de comandos. set (PropiedadeDepth,'DepthMode','Near'); set(PropiedadeDepth, 'CameraElevationAngle' , 5);

46

set (PropiedadeDepth,'BodyPosture','Standing');

Se realizó un programa en Matlab para inicializar la cámara de profundidad y RGB del SK.

Figura 36. Captura de imagen RGB con Matlab

En este programa se inicializa la cámara de profundidad y RGB del SK para luego dividir la

información suministrada de profundidad o distancia para dividirla en objetos muy cerca

“rojo”, cerca “verde” y lejos “azul”.

En esta parte se toma los datos de la cámara de profundidad y se verificada cada pixel para

mirar su valor, la información suministrada por la cámara de profundidad es de un valor entre

0 y 4000 cm donde 4000 cm es la distancia más larga que puede reconocer el SK la cual es

de 4 metros. El programa verifica si el valor del pixel es menor que 100 cm genera un pixel

en esa posición de color rojo, si el valor esta entre 1001 y 2000 cm lo crea de color verde y

si es mayor 2001 cm lo crea de color azul.

Análisis de Resultados Actividad 1

La herramienta más poderosa del SK es su sensor infrarrojo pues nos permite tener

una visión de profundidad de la zona en la que se está trabajando y la distancia a la

que se encuentran los objetos desde el SK.

Se comprobó por método práctico que la cámara de infrarrojo del sensor Kinect no

reconoce temperaturas y para el reconocimiento de objetos se puede utilizar con

oscuridad.

La única resolución del SK está limitada a 640x480 ya sea la de profundidad o la

RGB.

Del SK que es un excelente sensor de movimiento se aprovecha su sensor de

profundidad.

En ocasiones tiene problemas para trabajar con alta exposición a la luz solar pues la

cámara de profundidad se afectada por el espectro infrarrojo de esta luz.

Todo el procesamiento se realiza por software en Pc, esto genera retrasos y

problemas de movilidad.

47

Producto Actividad 1

Se logra la elaboración de este programa base del proyecto que es la captura de

imágenes de la cámara RGB e infrarroja para ser procesadas o ser almacenadas.

Se hace la entrega de los programas comentaríados al tutor del proyecto.

ACTIVIDAD 2

Objetivo: Detección de formas Básicas geométricas regulares completas en un ambiente

controlado o conocido. (Con el SK Cámara RGB).

Tiempo de ejecución: Un Mes, Mes 2 Entregada (28/10/2015).

Para el desarrollo de esta actividad se aplicaron conocimientos previos del manejo de Matlab

y adicionalmente se consultan diversos tutoriales en internet. [13], [14] Estos videos nos

muestran las funciones predefinidas en Matlab para el tratamiento morfológico de imágenes

como son el conteo de objetos detectados en una imagen, la extracción de propiedades de

una figura y la identificación o comparación con una base de datos.

Se realiza un programa para la detección de figuras geométricas básicas con la cámara a color

o RGB del Sensor. En esta etapa encontramos que el desarrollo por medio del programa SDK

de Microsoft tiene una documentación cerrada que está más enfocada al desarrollo de

videojuegos, entonces optamos por continuar desarrollando el proyecto en Matlab el cual

conocemos mejor y del cual hay más documentación con el SK de Microsoft para proyectos

y aplicaciones de investigación.

Investigando un poco encontramos que el programa Matlab tiene un Toolbox para el

tratamiento de imágenes llamado “regionprops” que halla su área, centro y sus coordenadas

ejes. Lo cual nos resulta muy útil a la hora de identificar su forma.

Inicialmente se usan imágenes elaboradas en un programa editor de imágenes en las cuales

aparecen figuras negras sobre un fondo blanco para facilitar su identificación.

Para el desarrollo de esta aplicación se utilizó un algoritmo de correlación para la

identificación de patrones, se creó una base de datos donde se almacenan 13 figuras

geométricas diferentes. [4]

Para la elaboración de la base de datos se elaboraron con el programa Microsoft Paint 13

figuras cada una en un archivo diferente.

48

Figura 37. Imágenes para la creación de la base de datos

Figura 38. Resultado de delimitar cada figura

Como se observa en la figura 13 se delimita cada figura con la función regionprops de Matlab

y se después se guarda en una matriz cada figura para generar la base de datos, después de

crear la base de datos se realizó el programa en Matlab para el reconocimiento de las figuras

geométricas llamado Entrega2

49

Figura 39. Interfaz gráfica de la segunda entrega

Se deja un Check Box para seleccionar si se va a trabajar con el Kinect y el botón de

reconocer, al iniciar la aplicación se inicializa el SK.

Para el caso que no se selección el Check Box del Kinect el programa mostrara la siguiente

ventana donde se seleccionará el archivo con que se realizara el procesamiento.

Figura 40. Ventana para cargar la imagen de un archivo

50

Para el caso que el Check Box del SK este activado el programa toma una foto con el SK y

la guarda en una variable la cual se redimensiona a un tamaño de 120x160, para realizar el

procesamiento de la imagen, como se ve en la figura,

Figura 41. Programa tomando una imagen de la cámara RGB y procesándola

Para cualquiera de los dos casos, se realiza el etiquetado de todas las figuras encontradas en

la imagen y se sacan por separado generando una imagen 120x160 con solo una figura con

la cual se realiza la correlación con cada una de las imágenes de la base de datos cada

resultado se guarda en un vector, luego se saca la posición del valor máximo con el cual se

verifica a qué imagen corresponde o asemeja y se imprime el resultado.

Tabla 1. Pruebas realizadas con archivos de imagen

Figura Cantidad % Acierto Promedio % Error promedio

Cuadrado 10 100 0

Rombo 10 100 0

Circulo 10 100 0

Estrella 10 100 0

Cruz 10 100 0

Triangulo 10 100 0

Derecha 10 100 0

Izquierda 10 100 0

Derecha 10 100 0

Arriba 10 100 0

Abajo 10 100 0

Pentagono 10 100 0

Hexagono 10 100 0

Imágenes de Archivos

51

Tabla 2. Pruebas realizadas con imágenes tomadas del SK.

Como se observa en la tablas se realizaron 10 pruebas diferentes con todas las figuras para

verificar el funcionamiento del programa, se evidencia que en las imágenes tomadas de

archivos elaborados con el programa Microsoft Paint el programa funciona al 100 %, no

ocurre lo mismo con las imágenes tomadas de la cámara RGB del SK ya que son imágenes

susceptibles a ruido, inclinación de la cámara, iluminación entre otros factores, en esta etapa

no se implementó ningún filtro para eliminar estos ruidos.

Análisis de resultados Actividad 2

Como la imagen es recortada y redimensionada a 120x160 esto evita que el programa sea

susceptible al tamaño de las imágenes ya sea de archivos o tomadas directamente del SK.

Para realizar una mejor detección de las figuras con la cámara RGB es necesario realizar

un tratamiento a las imágenes para eliminar ruidos. [17]

Los errores de reconocimiento debido a la inclinación de la cámara, no se pueden corregir

mediante programación por lo cual se debe tener cuidado con este factor.

El algoritmo usado resulta eficiente por que el ambiente es controlado y las figuras a

reconocer son limitadas.

Limitaciones

Si la cámara presenta algo de inclinación el reconocimiento no es óptimo.

Como las imágenes son tomadas con la cámara RGB el reconocimiento se ve afectado

por la iluminación.

Este método de identificación es más lento ya que se debe realizar una operación con

cada objeto encontrado es decir si son 10 objetos se debe hacer 130 operaciones para

identificar todas las figuras.

Figura Cantidad % Acierto Promedio % Error promedio

Cuadrado 10 80 20

Rombo 10 90 10

Circulo 10 90 10

Estrella 10 70 30

Cruz 10 70 30

Triangulo 10 80 20

Derecha 10 80 20

Izquierda 10 70 30

Derecha 10 90 10

Arriba 10 90 10

Abajo 10 90 10

Pentagono 10 80 20

Hexagono 10 70 30

Imágenes Tomadas del SK

52

Producto Actividad 2

Se logra la elaboración un programa para reconocimiento de figuras en un ambiente

controlado con una margen de error aceptable. Se realiza la entrega al tutor de los programas

desarrollados.

ACTIVIDAD 3

Objetivos: Detección de formas Básicas geométricas regulares completas en un ambiente

controlado o conocido. (Con el SK Cámara de profundidad).

Tiempo de ejecución: Un Mes, Mes 3 Entrega (25/11/2015).

Con el conocimiento adquirido en la última actividad ya se tiene el comportamiento de la

cámara RGB para la captura y posterior identificación de imágenes, lo que se hace ahora es

usar la cámara IR o de profundidad para hacer el mismo reconocimiento, así ver las ventajas

y desventajas del uso de las dos cámaras.

Teniendo en cuenta las limitaciones del SK en cuanto a distancia se realizan pruebas para

verificar su capacidad de detectar a que profundidad esta cada objeto del sensor, se coloca un

metro desde el origen que se considera es la base del SK y se van capturando fotos cambiando

la distancia del objeto o el sujeto de prueba y se toman datos, de esta forma se calculan las

distancias apropiadas a las que puede identificar sin problema un objeto.

Inicialmente se hace el reconocimiento con las figuras mono dimensionales a una distancia

cercana fija usadas en la práctica anterior, después se usan figuras tridimensionales para

probar la detección de profundidad con la cámara.

Esta actividad representa un reto pues en la actualidad no existe mucha documentación en

libros ni en la web acerca de cómo trabajar con los datos de la cámara de profundidad del

SK, con ensayos prueba y error se logra entender cómo es que trabaja el sensor y como deben

procesarse los datos

Como ya está la base de datos creada de las figuras geométricas, no es necesario volver a

crear otra si no que se debe asegurar que la imagen tomada de la cámara de profundidad y

luego procesada tenga las misma características de la base de datos es decir tenga el mismo

formato y los valores estén en el mismo rango en este caso solo pueden ser 1 o 0.

53

Figura 42. Programa de reconocimiento de figuras geométricas con la cámara de profundidad del SK

En este programa se utiliza la misma interfaz gráfica de la entrega anterior ya que el único

cambio respecto a esta es que se va a utilizar la cámara de profundidad.

Análisis de resultados de la actividad 3

Con la cámara de profundidad no se tienen los mismos inconvenientes que con la

cámara RGB pues por ser IR no le afecta tanto el cambio de luz.

Con la cámara de profundidad se puede hallar la distancia aproximada del objeto con

respecto al SK lo cual el de gran importancia para el proyecto.

Se logran confirmar las distancias de trabajo teóricas del SK ya que antes de un metro

(1m) o después de cuatro (4m) no puede idéntica objetos.

Si se quiere procesar aisladamente los objetos hallados en la imagen se deben separar

planos de acuerdo a cierta distancia según los objetos que estén cerca o lejos en la

captura.

Como la imagen tomada por la cámara de profundidad presenta mucho ruido y objetos

parecidos, deberá hacerse un procesamiento digital de las imágenes filtrándolas y

suavizándolas para hacer fácil su comparación e identificación.

Como el objeto es delimitado y redimensiona a un tamaño fijo este programa tampoco

le afecta el tamaño de los objetos capturados.

En la práctica se encuentra que la altura en la que se posiciona el Kinect es muy

importante, esta debe de estar entre 1 y 1.5 metros, puesto que si este se ubica a una

altura muy baja o muy alta no captara una imagen completa del usuario, factor

fundamental para el reconocimiento de los puntos de interés del cuerpo humano por

parte del sistema; cabe señalar que el posicionamiento del sensor tendrá que ser en

una superficie firme y a nivel con respecto al piso.

54

Limitaciones

La figura debe estar a una distancia de entre 100 y 120 cm aproximadamente

Este método de identificación es más lento ya que se debe realizar una operación

con cada objeto encontrado es decir si son 10 objetos se debe hacer 130 operaciones

para identificar todas las figuras.

Si la imagen de profundidad se captura en un ambiente con mucha luz solar, hay

problemas para detectar las siluetas.

Producto de la actividad 3

Se elabora un programa en Matlab que logra capturar una imagen con la cámara de

profundidad y determinar a la distancia que se encuentran varios objetos.

Se elabora un programa que captura una imagen con la cámara de profundidad y es

capaz de reconocer si hay una figura geométrica involucrada en la imagen y su

distancia. Se entregan todos los programas desarrollados al tutor.

ACTIVIDAD 4

Objetivo: Detección de siluetas humanas parciales y completas en un ambiente controlado o

conocido. (Con el SK Cámara Color y profundidad)

Tiempo de ejecución: Dos Meses, Mes 4 y 5 Entrega (20/01/2016)

Luego de haber trabajado con figuras geométricas básicas regulares y tener muy clara la parte

de captura y procesamiento de las imágenes con las dos cámaras se comienza a trabajar con

siluetas humanas que es el objetivo principal del proyecto. Como siempre se comienza de la

forma más simple que es tomar siluetas elaboradas en un programa editor de imágenes y

hacer pruebas hasta tener claro el procedimiento, luego se capturan imágenes directamente

con el sensor y se comienzan a procesar hasta tener la parte que tenemos de la imagen lista

para ser comparada. [15]. [16]

Se elaboran imágenes con siluetas en un editor gráfico y de esta forma se hacen pruebas

iniciales se toma la imagen se procesa se le quitan los ruidos o las cosas no importantes

después se hace un conteo, se hallan sus propiedades y se publican.

55

Figura 43. Imagen de siluetas hecha en Paint para la creación de la base de datos

Después de tener un programa con rendimiento óptimo se elabora un programa con una

interfaz gráfica que sea capaz de capturar la imagen con el SK e importarla de cualquier

carpeta, la procese y compare con para saber si corresponde a una víctima en la zona.

Figura 44. Programa que identifica siluetas humanas en un espacio abierto

Se elabora una silueta en una lámina para hacer las respectivas pruebas de identificación a

varias distancias del SK se coloca en varios espacios sin un ambiente controlado con distintas

cosas a su alrededor para probar la eficacia del programa. [26]

Como los objetos se pueden encontrar a varias distancias dentro del rango de funcionamiento

del sensor, se toma la información del sensor de profundidad del SK y se separa en planos

de 30cm valor que se toma después de hacer varias pruebas y encontrar que es la distancia

de profundidad que ocupa una persona, de esta forma es más fácil aislar los objetos

encontrados y poder procesarlos. [27]

56

Al trabajar con siluetas humanas encontramos que es un campo muy basto y la base de datos

seria inmensa, entonces se opta por trabajar en la detección de figuras únicamente de pie o

de manera vertical.

Análisis de Resultados Actividad 4

El trabajar con siluetas humanas es mucho más complejo ya que no son formas

irregulares y se pueden confundir con cualquier otra cosa en el entorno.

Ya que para la identificación de siluetas humanas existe una base de datos

demasiado grande se opta por trabajar únicamente en la detección de siluetas

humanas en forma vertical o de pie.

Se llega a un punto en donde las primeras dos etapas del proyecto la de captura y la

de procesamiento tiene una versión estable.

Se desarrolla una parte fundamental del código la cual consiste en separar los objetos

según la distancia a la que estén y así poderlos procesar separadamente.

El proceso de comparación no puede ser el mismo aplicado a las figuras geométricas

ya usamos el algoritmo de correlación probaremos la efectividad del otro algoritmo

propuesto Redes Neuronales Artificiales (RNA).

PRODUCTO ACTIVIDAD 4

Se desarrolla un programa el cual es capaz de hacer la captura, procesamiento y

detección de siluetas humanas parciales y completas en un ambiente controlado o

conocido. Se entregan todos los programas desarrollados al Tutor.

Se logra establecer una base de datos de imágenes que sirven para evaluar los

resultados del algoritmo de comparación.

ACTIVIDAD 5

Objetivo:

Detección de formas humanas Parciales y completas en un ambiente controlado o conocido

y evaluación de resultados con los dos algoritmos de Comparacion. (Con el SK Cámara

Color y profundidad).

Tiempo de ejecución: Dos Meses, Mes 5 y 6 Entregada (23/03/2016)

En esta etapa se trabaja con un ambiente no controlado en el que la forma humana puede

estar en medio de cualquier zona que tenga muchos más objetos, así que el procesamiento se

vuelve mucho más pesado por eso se implementa una red neuronal que siendo un algoritmo

más robusto puede tener una base de datos más amplia y un procesamiento más rápido. [33]

Como la actividad se propone se trabajara con formas humanas de pie y no con siluetas

humanas, lo cual hace más complicada la actividad pues una forma humana puede llegar al

tomar el contorno casi que cualquier cosa en la zona.

En este programa se codifica la información tomada de la cámara de profundidad del SK

que es de 320x640 y se lleva a una vector de 192 datos no más, para simplificar el proceso,

57

lo cual se realiza de la siguiente manera se redimensiona la imagen tomada a 120x160 y luego

se toma una cuadricula de 10x10 y se saca el promedio de esta, es decir de 100 valores

sacamos un promedio de ellos con lo cual la imagen que tenía 19200 se sacan 192 valores de

esta, para las imágenes de prueba se crean en Microsoft Paint 35 grupos de figuras con

formas de siluetas parciales y completas, cada grupo tiene cuatro imágenes que varían solo

un poco entre sí para obtener un mejor entrenamiento de la red.

Figura 45. Imágenes para realizas en Paint para el entrenamiento de la red

1 1 1 1 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 1 1 1 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 1 1 1 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 1 1 1 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 1 1 1 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 1 1 1 Tabla 3. Vector con las salidas de la red para el entrenamiento

En la tabla 3 se da un ejemplo de cómo debe ser la matriz para el entrenamiento de la red en

Matlab, cada fila representa la salida que debe mostrar la red cuando se le presente una

imagen, en este caso la red se entrena con 4 imágenes que son muy parecidas la salida debe

serla misma, esto mejora el entrenamiento de la red, esta red solo tendría 6 neuronas en la

capa de salida.

Los para metros con que se entrenó la red en Matlab son los siguientes:

192 Neuronas en la capa de Entrada

Dos capas ocultas cada una con 100 neuronas con funciones de transferencia tangente

hiperbólica

Máximo de iteraciones 50000

Objetivo para converger 0.01

35 neuronas en la capa de salida.

58

Figura 46. Guide del programa realizado para el entrenamiento de la red

Figura 47. Entrenamiento de la red

Como no está establecido un parámetro para la configuración del entrenamiento de la red se

hacen ajustes por ensayo, error y análisis de resultados.

59

Para realizar el entrenamiento de la red Backpropagation se toma varias imágenes que van a

ser los patrones de referencia los cuales se deben agrupar de acuerdo a sus caracteristicas mas

sobresaliente para conseguir la mejor respuesta del sistema.

Figura 48. Patrones para el entrenamiento de la Red Neuronal Artificial

En la figura anterior se muestran varias imagenes tomadas con la camara de profundidad del

SK y separadas en dos grupos, en los cuales se observan las caracterisiticas sobresalientes el

primer grupo son fotos tomadas a una distancia de un metro las segundas son a dos metros

de distancia, en total se crearon 5 grupos de imágenes diferentes para realizar el

entrenamiento de la red neuronal.

Para realizar el entrenamiento de la red se debe generar un archivo como se muestra en la

Tabla 3. Donde cada colmuna representa la salida que debe tener la red con determinada

imagen., para el entrenamiento de la red se generaron 6 posibles salidas diferentes.

60

1 1 1 1 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 1 1 1 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 1 1 1 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 1 1 1 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 1 1 1 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 1 1 1 Tabla 3. Vector con las salidas de la red para el entrenamiento

Para conseguir el mejor resultado de la red se realizan varias pruebas cambiando la topologia

de la red para validar cual es la mejor configuracion de la red ya que no hay una regla pàra

determinar dichos parametros, los parametros fijos de la red para todas las pruebas son las

entradas de la red que en este caso son de 14000 ya que la imagen de dimeniones 100x140,

el tipo de red que es Backpropagation y las salidas de la red las cuales son 30, la meta del

error que deber ser menor a 0.01 y Velocidad de convergencia 0.25, los dos parametros que

se van a cambiar son numero de capas ocultas y el factor de aprendizaje la caracteristicas de

la primera red implementada son:

2 capas ocultas con 100 neuronas cada una, velocidad de convergencia 0.25, neuronas de

entrada 140 y neuronas de salida 30.

Figura 49. Entrenamiento de la Red2

En la grafica siguiente se muestra la disminucion del error en la fase del entrenamiento de

la red neuronal

61

Figura 50. Grafica del error de la Red2

Para el siguiente entrenamiento se cambia la velocidad de convergencia de la red de es de

1.5

Figura 51. Entrenamiento de la Red3

62

En la grafica siguiente se muestra la disminucion del error en la fase del entrenamiento de

la red neuronal

Figura 52. Grafica del error de la Red3

Para el siguiente entrenamiento se cambia la velocidad de convergencia de la red a 3.5

Figura 53. Entrenamiento de la Red4

63

En la grafica siguiente se muestra la disminucion del error en la fase del entrenamiento de

la red neuronal

Figura 54. Grafica del error de la Red4

Para la segunda prueba se va a realizar solo con una capa oculta y se varian la velocidad

de convergencia es de 0.25

Figura 55. Entrenamiento de la Red5

64

En la grafica siguiente se muestra la disminucion del error en la fase del entrenamiento de

la red neuronal

Figura 56. Grafica del error de la Red5

Para el siguiente entrenamiento se cambia la velocidad de convergencia de la red de es de

3.5

Figura 57. Entrenamiento de la Red6

65

En la grafica siguiente se muestra la disminucion del error en la fase del entrenamiento de

la red neuronal

Figura 58. Grafica del error de la Red6

Para el siguiente entrenamiento se cambia la velocidad de convergencia de la red de a 1.5

Figura 59. Entrenamiento de la Red7

66

En la grafica siguiente se muestra la disminucion del error en la fase del entrenamiento de

la red neuronal

Figura 60. Grafica del error de la Red7

Tabla 5. Resultados obtenidos con una red con una capa oculta y variando la velocidad de convergencia

Tabla 6. Resultados obtenidos con una red con dos capas ocultas y variando la velocidad de convergencia

Con los resultados obtenidos con estas pruebas se observa que la mejor red es la que tiene

dos capas ocultas y una velocidad de convergencia de 2.5, por lo cual se va a escoger esta

para realizar el reconocimiento.

Numero de pruebas% acierto % error Vel de convergencia

30 30 70 1.5

30 40 60 2.5

30 10 90 3.5

1 capa ocultas

Numero de pruebas % acierto % error Vel de convergencia

30 50 50 1.5

30 60 40 2.5

30 20 80 3.5

2 capas ocultas

67

Se implementa una interfaz para el usuario final que le permita usar todo el proyecto con una

interacción sencilla e intuitiva, es decir que permita el manejo por parte de una persona sin

mucho conocimiento técnico.

Figura 61. Programa que identifica forma humanas en un espacio abierto

68

Figura 62. Diagrama de flujo del programa final

Para la parte de separación de planos se tomó la imagen de profundidad del SK y se dividió

en planos, como la información está en el rango de 0 a 4000 se dividió en planos de 300

empezando en 1000, adicionalmente para tener sistema más robusto se dividió la imagen

también en saltos de 600 para de la siguiente forma:

Plano Rango

1 1000-1300

2 1300-1600

3 1600-1900

4 1900-2200

5 2200-2500

6 2500-2800

7 2800-3100

8 3100-3400

9 3400-3700

10 3700-4000

11 1000-1600

12 1300-1900

13 1600-2200

14 1900-2500

15 2200-2800

16 2500-3100

17 2800-3500

18 3100-3700

19 3400-4000 Tabla 7. Separación de planos

69

Figura 63. Separación de planos por distancia

Como podemos apreciar en la figura 50. Se realiza la captura con la cámara de profundidad

del SK se hace una división de planos por distancia de forma que en algún plano estará de

forma más clara la imagen que se busca, esta será escogida para ser procesada y enviada

posteriormente a la Red Neuronal que hará el proceso de comparación.

ANALISIS ACTIVIDAD 5

Después de hacer varias pruebas se llega a la conclusión de que la mejor forma de

hacer una comparación entre el objeto sacado de la imagen y una base de datos es una

Red Neuronal Artificial.

El proyecto alcanza el objetivo propuesto pues sus etapas ya cumplen con los

requisitos fundamentales.

PRODUCTO ACTIVIDAD 5

Se crea un programa con una interfaz gráfica que vincula cada una de las etapas del proyecto

captura por medio del Sensor Kinect una imagen la envía a un computador que se encarga de

hacer el procesamiento digital de las imágenes por medio de tratamiento para extracción de

las propiedades y cuando a limpiado la imagen envía la información a una Red Neuronal

Artificial de tipo Back Propagación comparación con una base de datos y publicación de

resultados en una interfaz gráfica diseñada en Matlab.

70

ACTIVIDAD 6

Objetivo: Programa Final de Procesamiento de Imágenes Adquiridas por Medio del Sensor

Kinect

Para determine en que porcentaje hay una víctima en determinada zona. (Sensor Kinect

Completo)

Tiempo de ejecución: Dos Meses, Mes 6 y 7. Entregada (25/04/2016).

En este punto ya está desarrollado el proyecto completamente y cumple todos los objetivos

propuestos.

Implementar un sistema de adquisición de imágenes mediante el Sensor Kinect de

Microsoft.

Segmentar imágenes y aplicar otros métodos de procesamiento.

Comparar la imagen adquirida con la base de datos y referencias para establecer si

en las imágenes adquiridas hay una posible víctima.

Implementar un sistema de adquisición de imágenes mediante el SK de Microsoft:

Desde la primera entrega se trabajó en la configuración del SK con el computador y el

programa compilador de manera que capture cualquier imagen en su entorno con sus dos

cámara y sea capaz de guardarla en el equipo y procesarla inmediatamente con las siguientes

etapas después de haber perfeccionado toda la configuración se usó en todas y cada una de

las actividades de investigación.

Segmentar imágenes y aplicar otros métodos de procesamiento: Después de obtener la

imagen comenzamos a procesarla aplicándole varios métodos de procesamiento que van

desde separar las imágenes de acuerdo al plano de profundidad en que se encuentran,

etiquetar el número de objetos encontrados, hallar las propiedades morfológicas de estos

objetos, pasarla a escala de grises, suavizar sus bordes, quitar ruidos o imágenes que no nos

interesan y finalmente recortarla para sepárala y enviarla a la etapa de comparación.

Comparar la imagen adquirida con la base de datos y referencias para establecer si en

las imágenes adquiridas hay una posible víctima: Desde las primeras etapas se

comenzaron a probar varios algoritmos de comparación algunos muy básicos que tenía

Matlab que fueron útiles en las etapas iniciales pero en cuanto se fue avanzando en el

proyecto y había más información para comparar.

Ya que este proyecto y sus objetivos fueron propuestos por el grupo de investigación ROMA

este grupo con cada una de las entregas recibió todo el trabajo detallado y todo el código de

los programas, fue testigo el avance con las actividades orientadas a objetivos y fue

orientando a los investigadores en sus labores de desarrollo.

71

Para esta entrega final se realizó la validación de los dos métodos de identificación por

correlación y por redes neuronales para validar cuales el mejor método para este caso.

Tabla 8. Comparación de valores directos entre la Correlación y la RNA

Como se observa en la tabla 8 el mejor método para detectar una posible víctima es el de la

correlación ya que solo genera un error promedio de 8.75% con respecto a la red de 58.75%.

Correlación

N° de pruebas Total aciertos Total fallas % error

240 219 21 8,75

Tabla 9. Resultado Finales por método de Correlación.

Redes Neuronales

N° de pruebas Total aciertos Total fallas % error

240 99 141 58,75

Tabla 10. Resultados Finales por método RNA

En las tablas 9 y 10 se muestra los resultados obtenidos al probar el programa con los dos

métodos de identificación donde se evidencia que la red neuronal artificial responde mejor

en los casos en los que la información presenta ruido o es poco clara.

PRUEBAS REALIZADAS

N° de pruebas

Estatura m

N° de aciertos

N° de fallas

Distancia m aprox.

Métodos de detección

% error

30 1,75 21 9 1 Correlación 30

30 1,7 22 8 1 Correlación 26,6

30 1,75 9 21 1 Redes 70

30 1,7 10 20 1 Redes 66,6

30 1,75 29 1 1,5 Correlación 3,3

30 1,7 30 0 1,5 Correlación 0

30 1,75 15 15 1,5 Redes 50

30 1,7 14 16 1,5 Redes 53,3

30 1,75 30 0 2 Correlación 0

30 1,7 30 0 2 Correlación 0

30 1,75 13 17 2 Redes 56,6

30 1,7 16 14 2 Redes 46,6

30 1,75 29 1 2,5 Correlación 3,3

30 1,7 28 2 2,5 Correlación 6,6

30 1,75 10 20 2,5 Redes 66,6

30 1,7 12 18 2,5 Redes 60

72

CONCLUSIONES

El programa desarrollado cumple con todas las expectativas y los objetivos propuestos por

el grupo de investigación, esto podemos apreciarlo en los porcentajes de éxito que aparecen

en las tablas de resultados.

EL mejor método para realizar la detección para este caso es con la correlación ya que solo

genera un 8.75 % de error frente al reconocimiento por red que genera un error de 58.75%

bajo las misma condiciones de operación.

En el transcurso de desarrollo de actividades investigativas se encontraron varios retos que

obligaron a trabajar bajo ciertos parámetros que no se habían contemplado al inicio.

El programa desarrollado es una herramienta que sea de gran utilidad para el grupo de

investigación pues una de sus necesidades en cuando a su línea de desarrollo de sistemas

sensoriales es resuelta, se entregan todos los programas comentaríados, desarrollados y

explicados paso a paso en cada una de las actividades y sirven de base importante para la

actividad del grupo. Pues partiendo de este proyecto con su documentación completa se

pueden lograr avances increíbles en sistemas de visión artificial.

Una de muestras más grandes dificultades fue trabajar con el sensor de profundidad del

Kinect ya que no existe mucha documentación en la web o libros acerca de cómo procesar

los datos obtenidos de este y necesita un procesamiento matemático de buen nivel, también

fue un reto hallar un algoritmo de comparación lo suficientemente robusto como para hacer

la comparación e identificación de los objetos en las imágenes con una gran base de datos.

Se realizó la caracterización del Kinect como dispositivo de adquisición de imágenes en

diferentes entornos y con diferentes usuarios, lo que nos llevó a ver la necesidad de tener

espacios controlados (luz, distancia y objetos) aunque inicialmente se pensara que el SK se

podría usar en cualquier escenario.

MEJORAS A FUTURO

Ya que el proyecto fue solicitado por un grupo de investigación que está en constante

actualización se recomienda:

Usar la nueva versión del SK [23.] que ahora viene con algunas mejoras que serán

interesantes para mejorar el proyecto en todos sus aspectos.

Para mejoras de movilidad del proyecto podría implementarse sobre una tarjeta

embebida que pudiere acoplarse a un robot pequeño y así ahorrarse el computador.

Sería interesante probar el proyecto con dos sensores kinect al tiempo pues esto

ampliaría el campo de visión al doble

73

REFERENCIAS

1. M. C. José Jaime Esqueda Elizondo. 2002. FUNDAMENTOS DE

PROCESAMIENTO DE IMÁGENES.

2. Pujol López, María del Mar. 2000. Incorporación de características en la función de

energía para segmentación de imágenes con CAM.

3. La Evolución del Kinect y la Importancia Real de Microsoft Research

https:\\m.xatakawidows.com

4. Kinect Xbox 360: www.microsoft.com

5. Características de Sensor Kinect de Microsoft

www.fayerwayer.com/2010/06/especificaciones-tecnicas-de-kinect/

6. Especificaciones Matlab es.mathworks.com/products/matlab/features.html

7. Villanueva Espinoza María del Rosario. 2010. Las Redes Neuronales y Su

importancia en Toma de Decisiones.

8. Freeman, James A., Skapura, David M. 1993. Redes Neuronales. Algoritmos,

aplicaciones y técnicas de programación. Addison-Wesley Iberoamericana,

9. José R. Hilera. Victo J. Martínez. 1994. Redes Neuronales Artificiales, Fundamentos,

modelos y aplicaciones. Addison-Wesley Iberoamericana,

10. Link de Descarga Microsoft Visual Studio (www.visualstudio.com/es-

es/downloads/download-visual-studio-vs.aspx)

11. Link de Descarga Software Kinect.

(www.microsoft.com/enus/download/details.aspx?id=40276.)

12. Curso Kinect: https://www.youtube.com/watch?v=ZNxIzcM435E

13. Matlab Como si estuviera en primero

www.fiwiki.org/wiki/Archivo:Aprenda_Matlab7como_si_estuviera_en_primero.pdf

14. Introducción a Matlab

www.unavarra.es/personal/victor_dominguez/LibroMatlabWEB.pdf

15. Matlab PDI http://asignatura.us.es/imagendigital/Matlab_PID_1314.pdf

16. Matlab Interfaz Gráfica http://www.matpic.com/esp/matlab/interfaz_grafica.html

17. Matlab Procesamiento De Imágenes

http://www.matpic.com/esp/matlab/procesamiento_de_imagenes.htmlhttp://www.mat

pic.com/esp/matlab/procesamiento_de_imagenes_2.html

18. Redes neuronales para le reconocimiento de patrones geométricos:

www.youtube.com/watch?v=0L6OdG1afDA

19. OCR (Optical Carácter Recognition): www.matpic.com/esp/matlab/ocr.html

20. Detección y conteo de formas geométricas con visión artificial en Matlab:

www.youtube.com/watch?v=3d1_s92CzY0

21. Reconocimiento de formas con Matlab www.youtube.com/watch?v=fj_DLBPVsYw

22. Implementación de Redes Neuronales Artificiales

https://www.youtube.com/watch?v=0L6OdG1afDA

23. Características de Kinect 2

http://www.kinectfordevelopers.com/es/2014/01/28/caracteristicas-kinect-2/