1 programa de procesamiento de imágenes adquiridas por medio

Transcripción

1 programa de procesamiento de imágenes adquiridas por medio
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
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
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
2
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
3
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
4
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
_
5
Í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
6
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 _____________________________________
Figura 50. Grafica de Error en la RNA2 ___________________________________
Figura 51. Entrenamiento de la RNA3 _____________________________________
Figura 52. Grafica de Error en la RNA3 ___________________________________
Figura 53. Entrenamiento de la RNA4 _____________________________________
Figura 54. Grafica de Error en la RNA4 ___________________________________
Figura 55. Entrenamiento de la RNA5 _____________________________________
Figura 56. Grafica de Error en la RNA5 ___________________________________
Figura 57. Entrenamiento de la RNA6 _____________________________________
Figura 58. Grafica de Error en la RNA6 ___________________________________
Figura 59. Entrenamiento de la RNA7 _____________________________________
Figura 60. Grafica de Error en la RNA7 ___________________________________
Figura 61. Programa que identifica formas Humanas(Archivo del Autor) _________
Figura 62. Diagrama de Flujo del programa final (Archivo del Autor) ____________
Figura 63. Separación de planos por distancia (Archivo del Autor) ______________
7
60
61
61
62
62
63
63
64
64
65
65
66
67
67
69
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.
8
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.
9
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.
10
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) Tf (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.
11
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).
12
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:
Dp, q0,Dp,q0, si p q
Dp, qDq, p
Dp, z≤Dp, qDq, 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 qx sy tE , −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]
13
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:
Dp, qMaxx −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
14
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.
15
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
16
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.
2.
3.
4.
Servomotor.
Una cámara RGB
Una cámara de Profundidad o Sensor 3D
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]
17
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:
18
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
19
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.
20
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.
21
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
22
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.
23
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]
24
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
25
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
26


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.
27
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.
28
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]
29
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.
30
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.
31
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
123456-
Se aplica un vector de entrada y se calculan sus correspondientes salidas.
Se determina una medida de error.
Se determina en qué dirección se deben cambiar los pesos para minimizar dicho error.
Se determina la cantidad en que es preciso cambiar cada peso.
Se modifican los pesos.
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.
32
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:
n
Eminimizado   E p
p1
Capas Ocultas
Ep está relacionado con la salida de los PE en capas ocultas de la siguiente manera:
33
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.
34
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.
35
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:
36
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
o
Si la covarianza es negativa, la correlación es inversa.
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.
37
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
38
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:
39
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
40
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.
41
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.
42
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
43
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.
44
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);
45
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.
46
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.
47
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
48
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
49
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.
Figura
Cuadrado
Rombo
Circulo
Estrella
Cruz
Triangulo
Derecha
Izquierda
Derecha
Arriba
Abajo
Pentagono
Hexagono
Imágenes de Archivos
Cantidad
% Acierto Promedio % Error promedio
10
100
0
10
100
0
10
100
0
10
100
0
10
100
0
10
100
0
10
100
0
10
100
0
10
100
0
10
100
0
10
100
0
10
100
0
10
100
0
Tabla 1. Pruebas realizadas con archivos de imagen
50
Figura
Cuadrado
Rombo
Circulo
Estrella
Cruz
Triangulo
Derecha
Izquierda
Derecha
Arriba
Abajo
Pentagono
Hexagono
Imágenes Tomadas del SK
Cantidad
% Acierto Promedio % Error promedio
10
80
20
10
90
10
10
90
10
10
70
30
10
70
30
10
80
20
10
80
20
10
70
30
10
90
10
10
90
10
10
90
10
10
80
20
10
70
30
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.
51
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.
52
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.
53
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.
54
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]
55
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,
56
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
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
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.
57
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.
58
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.
59
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
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
60
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
61
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
62
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
63
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
64
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
65
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
1 capa ocultas
Numero de pruebas
% acierto
% error
Vel de convergencia
30
30
70 1.5
30
40
60 2.5
30
10
90 3.5
Tabla 5. Resultados obtenidos con una red con una capa oculta y variando la velocidad de convergencia
2 capas ocultas
Numero de pruebas % acierto % error Vel de convergencia
30
50
50 1.5
30
60
40 2.5
30
20
80 3.5
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.
66
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
67
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Rango
1000-1300
1300-1600
1600-1900
1900-2200
2200-2500
2500-2800
2800-3100
3100-3400
3400-3700
3700-4000
1000-1600
1300-1900
1600-2200
1900-2500
2200-2800
2500-3100
2800-3500
3100-3700
3400-4000
Tabla 7. Separación de planos
68
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.
69
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.
70
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.
N° de
pruebas
30
30
30
30
30
30
30
30
30
30
30
30
30
30
30
30
Estatura N° de
m
aciertos
1,75
1,7
1,75
1,7
1,75
1,7
1,75
1,7
1,75
1,7
1,75
1,7
1,75
1,7
1,75
1,7
PRUEBAS REALIZADAS
N° de
Distancia m
fallas
aprox.
21
9
1
22
8
1
9
21
1
10
20
1
29
1
1,5
30
0
1,5
15
15
1,5
14
16
1,5
30
0
2
30
0
2
13
17
2
16
14
2
29
1
2,5
28
2
2,5
10
20
2,5
12
18
2,5
Métodos de
detección
Correlación
Correlación
Redes
Redes
Correlación
Correlación
Redes
Redes
Correlación
Correlación
Redes
Redes
Correlación
Correlación
Redes
Redes
%
error
30
26,6
70
66,6
3,3
0
50
53,3
0
0
56,6
46,6
3,3
6,6
66,6
60
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.
71
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
72
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/eses/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/
73

Documentos relacionados