Programa de Procesamiento de Imágenes Adquiridas por Medio el Sensor Kinect para Determinar La Posibilidad una Víctima en Determinada Zona
Texto completo
(2) PROGRAMA DE PROCESAMIENTO DE IMÁGENES ADQUIRIDAS POR MEDIO DEL SENSOR KINECT PARA DETERMINAR LA POSIBILIDAD UNA VÍCTIMA EN DETERMINADA ZONA. EDWIN MONSALVE LESMES COD.: 20111283038. LEONARDO LADINO AGUDELO COD.: 20111283017. MONOGRAFÍA PARA OPTAR POR EL TÍTULO DE INGENIERO EN CONTROL. DIRECTOR: M.SC. RICARDO PÉREZ PEREIRA. UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS” FACULTAD TECNOLÓGICA INGENIERÍA EN CONTROL BOGOTÁ D.C. 2016 2.
(3) Contenido INTRODUCCIÓN .......................................................................................................... 8 PLANTEAMIENTO DEL PROBLEMA ......................................................................... 9 Descripción ................................................................................................................... 9 Identificación ................................................................................................................ 9 Formulación .................................................................................................................. 9 OBJETIVOS ................................................................................................................... 10 Objetivo General......................................................................................................... 10 Objetivos Específicos ................................................................................................. 10 MARCO DE REFERENCIA ......................................................................................... 11 PROCESAMIENTO DIGITAL DE IMÁGENES (PDI) ........................................... 11 Fundamentos Del PDI ................................................................................................ 11 Definiciones ................................................................................................................ 11 Color ....................................................................................................................... 11 Espacio de Color ..................................................................................................... 11 Mapa de Color ........................................................................................................ 12 Histograma de una Imagen ..................................................................................... 12 Relaciones entre Pixeles ......................................................................................... 12 Conectividad ........................................................................................................... 13 Distancia ................................................................................................................. 13 Resolucion Optica ...................................................................................................... 14 Resolucion Interpolada ........................................................................................... 15 Distancia Focal ....................................................................................................... 15 Sensibilidad a la Luz .............................................................................................. 15 La Exposicion ......................................................................................................... 15 Compresion............................................................................................................. 15 Resolucion .............................................................................................................. 15 MARCO TEORICO ....................................................................................................... 16 KINECT ..................................................................................................................... 16 Historia ....................................................................................................................... 16 Arquitectura Kinect .................................................................................................... 17 Funcionamiento .......................................................................................................... 18 Driver .......................................................................................................................... 19 Requerimiento de Hardware y Software ................................................................... 20 MATLAB ................................................................................................................... 21 Historia ....................................................................................................................... 22 Caracteristicas ............................................................................................................. 24 REDES NEURONALES ARTIFICIALES ................................................................ 26 Ventajas de las Redes ............................................................................................. 28 Descripcion ............................................................................................................. 30 Conectividad ........................................................................................................... 31 TIPO DE REDES ....................................................................................................... 32 Redes Monocapa .................................................................................................... 33 Redes Multicapa ..................................................................................................... 34 3.
(4) Redes Recurrentes .................................................................................................. 35 Funcionamiento ...................................................................................................... 35 Correlacion ................................................................................................................. 36 DISEÑO E IMPLEMENTACION DE LA SOLUCION ............................................... 37 Metodologia Aplicada ............................................................................................ 37 DESARROLLO DE LAS ACTIVIDADES DE INVESTIGACION......................... 38 Actividad 1 ................................................................................................................. 38 Analisis de Resultados 1 ............................................................................................. 46 Producto Actividad 1 .................................................................................................. 47 Actividad 2 ................................................................................................................. 47 Analisis de Resultados 2 ............................................................................................. 51 Producto Actividad 2 .................................................................................................. 56 Actividad 3 ................................................................................................................. 52 Analisis de Resultados 3 ............................................................................................. 54 Producto Actividad 3 .................................................................................................. 54 Actividad 4 ................................................................................................................. 55 Analisis de Resultados 4 ............................................................................................. 56 Producto Actividad. 4 ................................................................................................. 56 Actividad 5 ................................................................................................................. 57 Analisis de Resultados 5 ............................................................................................. 67 Producto Actividad 5 .................................................................................................. 68 Actividad 6 ................................................................................................................. 65 Analisis de Resultados 6 ............................................................................................. 70 Producto Actividad 6 .................................................................................................. 71 CONCLUSIONES .......................................................................................................... 72 MEJORAS FUTURAS ................................................................................................... 72 REFERENCIAS ............................................................................................................. 73. 4.
(5) INDICE DE TABLAS. Tabla 1. Pruebas realizadas con archivos de imagen_____________________________ 48 Tabla 2. Pruebas realizadas con imágenes tomadas del SK._______________________ 49 Tabla 3. Vector con las salidas de la red para el entrenamiento_____________________ 55 Tabla 4. Matriz para el entrenamiento de la red neuronal__________________________58 Tabla 5. Resultados obtenidos con una red con una capa oculta y variando la velocidad de convergencia____________________________________________________________ 66 Tabla 6. Resultados obtenidos con una red con dos capas ocultas y variando la velocidad de convergencia____________________________________________________________ 66 Tabla 7. Separación de planos ______________________________________________ 68 Tabla 8. Comparación de valores directos entre la Correlación y la RNA_____________71 Tabla 9. Resultados finales del método por correlación___________________________71 Tabla 10. Resultados finales del método por Redes Neuronales____________________ 71 _. 5.
(6) ÍNDICE DE FIGURAS. Figura 1. Imagen de 16 pixeles [1] ________________________________________ 11 Figura 2. Vecindad N4 [1] ______________________________________________ 12 Figura 3. Vecindad ND [1] ______________________________________________ 13 Figura 4. Distancia euclidiana para una imagen de 5 por 5. [1] __________________ 13 Figura 5. Distancia Manhattan para una imagen de 5 por 5. [1] _________________ 14 Figura 6. Distancia Tablero de ajedrez [1] __________________________________ 14 Figura 7. Numero de bits necesarios representar un píxel de cada color [3] ________ 17 Figura 8. Sensor Kinect [4]______________________________________________ 17 Figura 9. Partes del Kinect [3] ___________________________________________ 18 Figura 10. Estructura del Kinect [3] _______________________________________ 19 Figura 11. Arquitectura del Kinect [3] _____________________________________ 20 Figura 12. Distribución del infrarrojo (Archivo del Autor) _____________________ 21 Figura 13. Puntos de articulaciones que reconoce la función Skeleton. [4] _________ 23 Figura 14. Flujo de información entre el Kinect y las aplicaciones [3] ____________ 24 Figura 15. Red neuronal artificial [3] ______________________________________ 26 Figura 16. Red Neuronal Mono capa [9] ___________________________________ 27 Figura 17. Red neuronal Multicapa [9] ____________________________________ 28 Figura 18. Red Neuronal Recurrente [9] ___________________________________ 29 Figura 19. Representación graf. Fun. Escalón o Umbral con su notación [7] _______ 29 Figura 20. Representación gráf. Fun Lineal Identidad con su notación [7] _________ 30 Figura 21. Representación gráf Fun Lineal y Mixta con su notación [7] ___________ 30 Figura 22. Representación graf Fun Sigmoidal con su notación [7] ______________ 31 Figura 23. Representación graf Fun Gaussiana con su notación [7] ______________ 31 Figura 24. Características del Computador en que se desarrolla el proyecto ________ 38 Figura 25. Aplicaciones Instaladas para trabajar con Visual Sudio y Kinect ________ 39 Figura 26. Programa Color Basic Kinect Tool (Archivo del Autor) ______________ 40 Figura 27. Programa Background Removal Basic Del Kinect Tool ______________ 40 Figura 28. Programa Skeleton Basic Del Kinect Tool (Archivo del Autor) ________ 41 Figura 29. Programa captura RGB compilado en Visual Basic. _________________ 42 Figura 30. Programa Visor de Profundidad compilado en Visual Basic. ___________ 42 Figura 31. Resultado al ejecutar el comando imaqhwinfo en Matlab. _____________ 43 Figura 32. Resultado del comando supportPackageInstaller en Matlab ____________ 43 Figura 33. Variables en Workspace de Matlab (Archivo del Autor) ______________ 43 Figura 34. Opciones de la cámara RGB del SK (Archivo del Autor) _____________ 44 Figura 35. Opciones de la cámara de profundidad del SK (Archivo del Autor) _____ 45 Figura 36. Captura de imagen RGB con Matlab (Archivo del Autor) _____________ 46 Figura 37. Imágenes para la creación de la base de datos (Archivo del Autor) ______ 46 Figura 38. Resultado de delimitar cada figura (Archivo del Autor) _______________ 45 Figura 39. Interfaz gráfica de la segunda entrega (Archivo del Autor) ____________ 48 Figura 40. Ventana para cargar la imagen de un archivo (Archivo del Autor) ______ 50 Figura 41. Programa una imagen de la cámara RGB y procesándola _____________ 57 Figura 42. Programa de reconocimiento de fig geométricas con la cámara de profundidad del SK ______________________________________________________________ 53 6.
(7) Figura 43. Siluetas hecha en Paint para la creación de la base de datos ___________ 55 Figura 44. Programa que identifica siluetas humanas en un espacio abierto ________ 55 Figura 45. Imágenes para realizas en Paint para el entrenamiento de la red. ________ 57 Figura 46. Guide del programa realizado para el entrenamiento de la red) _________ 58 Figura 47. Entrenamiento de la red1 ______________________________________ 58 Figura 48. Patrones para el entrenamiento de la Red Neuronal Artificial ___________59 Figura 49. Entrenamiento de la RNA2 _____________________________________ 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.
(8) INTRODUCCIÓN. El grupo de investigación ROMA de la Universidad Distrital trabaja en el desarrollo de varias plataformas robóticas, sistemas sensoricos, muchos algoritmos de planificación de movimientos y tareas, el grupo de investigación orienta sus principales actividades de investigación en el estudio de la robótica de servicio y todo lo que ello implica para el mejoramiento de la sociedad, conservar la vida natural (vida humana/animal/vegetal) del Distrito Capital y toda la ciudad-región. Para ello, el grupo de investigación plantea dentro de sus actividades de investigación procesos de formación de investigadores, formulación y ejecución de proyectos de investigación, apropiación social del conocimiento y transferencia de resultados a la sociedad en general y la industria en particular. El grupo trabaja con robots para búsqueda y rescate de víctimas, para ello es muy importante la visión artificial del robot que es muy limitada con una cámara convencional, la propuesta de investigación e innovación contempla el estudio del comportamiento del Sensor Kinect de Microsoft proyectado a usarse para la detección de victimas en zonas de desastre. El proyecto de investigación en innovación se desarrolló con un plan de trabajo el cual contempla tareas o actividades orientadas a objetivos que se irán trabajando desde el más básico hasta el más complejo. Para el desarrollo de este proyecto se cuenta con todo el conocimiento adquirido a lo largo de la carrera, adicionalmente toda la información consultada de internet. El resultado principal será un programa que use la adquisición de imágenes por medio del Sensor de Kinect que procese e identifique si en estas imágenes hay una probable víctima. El Indicador del resultado será la capacidad del programa junto al sensor para detectar posibles víctimas humanas en las imágenes capturadas teniendo en cuenta las limitaciones tanto del sensor como las de la capacidad de procesamiento.. 8.
(9) PLANTEAMIENTO DEL PROBLEMA Descripción En la época actual se presentan diversas catástrofes de tipo natural y artificial: terremotos, inundaciones, huracanes y terrorismo, entre otros. En estas situaciones de emergencia se despliegan diferentes grupos de personas (policía, bomberos, paramédicos, etc.) que cooperan para preservar la vida humana, proteger infraestructuras y evacuar víctimas. En estas circunstancias, los grupos de rescate (incluyendo perros especializados) deben tomar decisiones rápidas bajo presión e intentar salvar víctimas (a menudo bajo su propio riesgo), determinando el estado de las víctimas o la estabilidad de las estructuras tan rápido como sea posible; por fortuna, la tecnología también está jugando un papel importante, apoyando algunas tareas que los seres humanos y los perros, por sí solos, no pueden hacer.. Identificación Para suplir la necesidad de un sistema de visión robusto que pueda identificar víctimas en una serie de imágenes capturadas por el Sensor Kinect de Microsoft. ROMA en su línea de investigación Desarrollo de Sistemas Sensoriales ha optado por solicitar un solución que use un sensor que logre capturar imágenes digitales y por medio de un ordenador procesarlas e identificar si hay una posible víctima en ellas. Esta solución se basa en al igual que otras en la un sistema de visión artificial el cual usa una cámara digital que captura imágenes, las procesa para buscar la información que requiera en ellas y finalmente las compara con una base datos por medio de un algoritmo que determina y publica si corresponden a lo que se está buscando.. Formulación Diseñar e implementar un programa capaz de capturar y procesar las imágenes adquiridas por medio del Sensor Kinect y determinar si se puede detectar una posible víctima en las imágenes capturadas.. 9.
(10) OBJETIVOS. Generales. Desarrollar e implementar un aplicativo, capaz de obtener los datos del Sensor Kinect de Microsoft y procesarlos para identificar si en estas imágenes digitales hay involucrada una posible víctima.. Específicos. Desarrollar cada uno de los 3 componentes principales del aplicativo (adquisición, procesamiento de imágenes y presentación de los datos). . Implementar un sistema de adquisición de imágenes mediante el sensor Kinect de Microsoft. Aplicar varios métodos de procesamiento y tratamiento a las imágenes adquiridas. Comparar las imágenes procesadas con la base de datos y referencias para establecer si en las imágenes adquiridas hay una posible víctima.. 10.
(11) MARCO DE REFERENCIA PROCESAMIENTO DIGITAL DE IMÁGENES (PDI) Fundamentos del (PDI). Definiciones Visión por computadora.- Consiste en la adquisición, procesamiento, clasificación y reconocimiento de imágenes digitales es un Campo de la Inteligencia Artificial enfocado a que las computadoras puedan extraer información a partir de imágenes, ofreciendo soluciones a problemas del mundo real. Píxel.- Elemento básico de una imagen (picture element). Imagen.- Arreglo bidimensional de píxeles con diferente intensidad luminosa (escala de gris).. Figura 1. Imagen de 16 pixeles [1]. Si la intensidad luminosa de cada píxel se representa por n bits, entonces existirán 2n escalas de gris diferentes. Matemáticamente, una imagen se representa por r f (x, y), donde r es la intensidad luminosa del píxel cuyas coordenadas son (x,y). Matemáticamente, un sistema para procesar imágenes se representa como g(x, y) Tf (x, y). Color.- El color se forma mediante la combinación de los tres colores básicos rojo, azul y verde (en inglés RGB). A continuación se presentan algunas definiciones básicas para comprender los espacios de color: Brillo.- Indica si un área está más o menos iluminada. Tono.- Indica si un área parece similar al rojo, amarillo, verde o azul o a una proporción de ellos. Luminosidad.- Brillo de una zona respecto a otra zona blanca en la imagen.. 11.
(12) Croma.- Indica la coloración de un área respecto al brillo de un blanco de referencia. Mapa de color El mapa de color es una matriz de n x 3, donde cada renglón es una tripleta de colores. El primer renglón corresponde al valor mínimo del eje de color y el último renglón al máximo. Al definir diferentes distribuciones de intensidad de los tres colores básicos, se crean diferentes mapas de color. Algunos de los mapas de color predeterminados en MATLAB son: hsv, cool, hot, jet, gray, flag. Histograma de una imagen. El histograma de una imagen es una representación del número de píxeles de cierto nivel de gris en función de los niveles de gris. Relaciones entre píxeles Un píxel p con coordenadas (x,y) tiene cuatro vecinos horizontales y verticales, cuyas coordenadas son: (x+1, y), (x-1,y), (x,y-1), (x,y+1). A este conjunto de píxeles se llama vecindad 4 o 4 vecinos de p y se denota por N4 (p), ver la figura 3. Nótese que para cada uno de estos píxeles hay una distancia de 1 de p y que en los bordes de la imagen algunos de estos píxeles quedarán fuera de la imagen.. Figura 2. Vecindad N4 (p). [1]. Existen también 4 vecinos diagonales de p con coordenadas: (x+1,y+1), (x+1,y-1), (x-1,y-1), (x-1,y-1) y se les denota por ND(p), ver la figura 4. N4 (p) y ND(p) juntos forman la vecindad 8 denotada por N8(p).. 12.
(13) Figura 3. Vecindad ND (p).[1]. Conectividad La conectividad es un concepto importante utilizado para establecer los límites de objetos en regiones dentro de una imagen. Para determinar si dos píxeles están conectados se determina si son adyacentes en algún sentido (ND (p), N4 (p) por ejemplo) y si sus niveles de gris satisfacen un criterio de similaridad (por ejemplo si son iguales). Por ejemplo, en una imagen binaria con valores de 1 y 0, dos píxeles pueden ser vecinos N4 (p), pero se dice que están conectados solo cuando tienen el mismo valor. Distancia La distancia o transformada de distancia proporciona una medición de la separación existente entre dos puntos dentro de una imagen. Dados tres píxeles, p, q y z, con coordenadas (x, y), (s, t) y (u, v), respectivamente, se puede definir una función de distancia D si se cumple: Dp, q0,Dp,q0, si p q Dp, qDq, p Dp, z≤Dp, qDq, z Las funciones de distancia comúnmente usadas son: distancia euclidiana, distancia Manhattan o de cuadra y distancia tablero de ajedrez. Distancia euclidiana entre p y q: D p qx sy tE , −2 −. En la figura 5 se muestra la distancia euclidiana para una imagen de 5 por 5.. Figura 4. Distancia euclidiana para una imagen de 5 por 5. [1]. 13.
(14) Distancia Manhattan: se toman solamente en cuenta los vecinos de orden 4, es decir: D x −s y −t. En la figura 6 se muestra la distancia Manhattan de una imagen de 5 por 5.. Figura 5. Distancia Manhattan para una imagen de 5 por 5. [1]. Distancia tablero de ajedrez: es similar a la distancia Manhattan, en donde se observa que los 4-vecinos están a una distancia unitaria del píxel central; si se desea que los 8-vecinos estén a la misma distancia se toma: Dp, qMaxx −s, y −t. . Figura 6. Distancia tablero de ajedrez. [1]. Resolución óptica e interpolada Resolución óptica: La resolución óptica es la que conforma la verdadera imagen, la que proporciona el número real de sensores de la matriz de la cámara digital. La resolución óptica de una cámara digital o escáner está determinada por el número real de sensores de imagen o foto elementos que producirán la imagen dando origen a los píxeles. Para incrementar la resolución real de la 14.
(15) imagen digital en ciertos límites, la resolución óptica puede aumentarse usando un software. Este proceso, es la resolución interpolada. La resolución interpolada: La resolución interpolada es la que conforma una imagen que se obtiene mediante un software con la adición artificial de píxeles a una imagen digital real. La resolución interpolada agrega píxeles a la imagen para aumentar el número total de los mismos, para hacer esto el software evalúa aquellos píxeles que rodean a cada uno de los píxel para determinar de qué color que debería adoptar para ser el mismo. Es importante tener presente que la resolución interpolada no agrega nueva información a la imagen, sólo agrega píxeles y hace el archivo más grande. Distancia focal: Uno de las características más importantes de cualquier lente es su distancia focal. La distancia focal es la que determina el campo de visión de una lente, si es gran angular, normal, o telefoto. Estas distancias focales se indican en milímetros (mm) y de terminan la cantidad de la escena que es proyectada sobre el sensor. Una cámara que posea un zoom digital usa una parte de la imagen normal proyectada sobre el sensor y almacena esa parte tal como es recibida, para luego ampliarla para llenar el sensor. Hace esto agregando nuevos píxeles a la imagen original y luego utiliza la interpolación para completar la imagen. Esta imagen interpolada no tiene tantos píxeles únicos como una tomada con un zoom óptico y por lo tanto es de inferior calidad. Sensibilidad a la luz Las cámaras digitales pueden tener más de una graduación de ISO, por lo que se puede aumentar la sensibilidad del sensor amplificando electrónicamente la señal obtenida. Algunas cámaras incluso aumentan la ganancia automáticamente. La exposición: Las cámaras digitales tienen dos retrasos, el primero es el retraso de régimen de refresco, ocurre porque la cámara borra la imagen del sensor, ajusta el equilibrio de blanco para corregir los colores, calcula la exposición, enfoca la imagen, y captura la foto y el segundo es el del tiempo de reciclado, ocurre cuando la imagen ya capturada es procesada y almacenada en el dispositivo de almacenamiento. Estos retrasos pueden variar en cada fabricante y modelo de cámara. Compresión Durante la compresión, los datos duplicados o que no tienen un valor específico se eliminan o se guardan en una forma más simplificada de almacenamiento, por lo que se reduce el tamaño del archivo de la imagen resultante en gran medida. Existen dos tipos de compresión que son compresión sin pérdidas o con pérdidas, y la fotografía digital utiliza ambas formas. 15.
(16) Es muy importante tener en cuenta que para la selección de la cámara la compresión que esta le haga a la imagen captada debe ser mínima y que dicha compresión le agregue la menor cantidad de pérdidas. Resolución La profundidad de bits, también llamada profundidad del píxel o profundidad del color, mide los valores posibles que puede tener cada uno de los píxeles que forman la imagen. A mayor profundidad de bits, (más bits de información por píxel), la imagen tiene más colores disponibles y puede representar su color de forma más precisa. A mayor profundidad de bits, mayor será el tamaño del archivo de la imagen. La resolución interpolada es la que conforma una imagen que se obtiene mediante un software con la adición artificial de píxeles a una imagen digital real. La resolución interpolada agrega píxeles a la imagen para aumentar el número total de los mismos, para hacer esto el software evalúa aquellos píxeles que rodean a cada uno de los píxel para determinar de qué color que debería adoptar para ser el mismo. Es importante tener presente que la resolución interpolada no agrega nueva información a la imagen, sólo agrega píxeles y hace el archivo más grande.. Figura 7. Numero de bits necesarios para representar un píxel de cada color [3]. MARCO TEORICO KINECT Historia Kinect (originalmente conocido por el nombre en clave «Project Natal» El 13 de junio de 2010),es «un controlador de juego libre y entretenimiento» creado por Alex Kipman, desarrollado por Microsoft para la videoconsola Xbox 360, y desde junio del 2011 para PC a través de Windows 7 y Windows 8.3 Kinect permite a los usuarios controlar e interactuar con la consola sin necesidad de tener contacto físico con un controlador de videojuegos 16.
(17) tradicional, mediante una interfaz natural de usuario que reconoce gestos, comandos de voz y objetos e imágenes. El dispositivo tiene como objetivo primordial aumentar el uso de la Xbox 360, más allá de la base de jugadores que posee en la actualidad. En sí el Kinect compite con los sistemas Wii mote con Wii MotionPlus y PlayStation Move, que también controlan el movimiento para las consolas Wii y PlayStation 3, respectivamente. [3]. Figura 8. Sensor Kinect [4]. Arquitectura del Kinect El sensor Kinect está constituido por (4) cuatro partes fundamentales: 1. 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.
(18) Figura 9. Partes del Kinect [3]. Estos 4 elementos son fundamentales pero además de estos hay otro que los describimos. Motor Inclinación monitorizada que permite ajustar la cámara hacia arriba o hacia abajo hasta 27º. Cámara RGB Se emplea para capturar la resolución espacial, es decir las coordenadas X, Y. Posee una resolución de 8-bit VGA (640 x 480 Pixeles) que opera a través de un sensor CMOS con un filtro de Bayer lo cual hace posible capturar la imagen a color y envía datos a una frecuencia de actualización de 30 cuadros por segundo.. Sensores 3D de profundidad compuesto de dos partes, un proyector de rayos infrarrojos y un sensor CMOS monocromático. El sensor que percibe los rayos infrarrojos puede capturar datos de video en 3D bajo cualquier condición de luz. Este, además opera en resolución VGA (640 x 480) con 16-bit de profundidad a 30 cuadros por segundo, provee 2048 niveles de sensibilidad. Proyector de profundidad mediante rayos infrarrojos (retícula izquierda), Sensor CMOS monocromático (retícula derecha), se calcula la distancia en función del tiempo que tarda en reflejar la luz. [5]. Micrófono Multi-array de cuatro micrófonos ubicados a los extremos del sensor, cada canal procesa 16-bit y un rango de muestreo de 16kHz. Estos micrófonos son la única razón por la cual el sensor es tan ancho y se monta como un solo micrófono y se usa para reconocimiento de voz y charlas.. Y aunque no visibles a simple vista, Kinect también posee:. 18.
(19) Chip PRIMESENSE PS1080 Este chip sirve para reconstruir la captura del movimiento 3D de la escena que este ubicada frente al Kinect el chip captura su entorno en tres dimensiones y transforma esas capturas en imágenes sincronizadas en 3D. Memoria RAM.- de 512 Mb Acelerómetro.- para estabilizar la imagen cuando se mueve. Ventilador.- no está encendido continuamente para no interferir con los micrófonos. Data Streams (Flujo de datos) •320 × 240 a 16 bits de profundidad @ 30fps •640 × 480 32-bit de color @30fps •Audio de 16-bit @ 16 kHz. Figura 10. Estructura del Kinect [3]. Funcionamiento El sensor actúa como un sonar, la operación no es teóricamente complicada, si se conoce el tiempo de cada salida y llegada de la luz tras reflejarse en un objeto, sabiendo la velocidad absoluta de la luz, se puede tener la distancia a la cual se encuentra ese objeto. En un amplio 19.
(20) campo visual con objetos, la cámara Kinect trata de reconocer a qué distancia están los objetos, distinguiendo el movimiento en tiempo real. Kinect puede llegar a distinguir la profundidad de cada objeto con diferencias de 1 centímetro, su altura y anchura con diferencias de 3 milímetros. El hardware de Kinect está compuesto por la cámara y el proyector de luz infrarroja, añadido al firmware y a un procesador que utiliza algoritmos para procesar las imágenes tridimensionales. [3] Se puede dividir el funcionamiento de Kinect en tres partes:. Figura 11. Arquitectura del Kinect. RECONOCIMIENTO DE IMÁGENES La configuración óptica permite el reconocimiento de imágenes en tiempo real. Kinect no usa tecnología compleja, de hecho la tecnología usada está disponible desde hace 15 años, pero Microsoft ha conseguido efectos y funciones que antes estaban disponibles solamente con un gran costo.. 20.
(21) Podemos dividir dos partes principales, el proyector y la cámara de infrarrojos VGA. El rebote de los haces de laser por todo el campo de juego es lo que permite que la cámara capte al profundidad de los diferentes objetos. Para conocer la distancia a la que se encuentra cada píxel de la imagen de profundidad se emite una constelación de puntos con el emisor infrarrojo:. Figura 12. Distribución del infrarrojo. Entonces la cámara infrarroja detecta esta constelación y Kinect calcula la disparidad para cada píxel (la diferencia entre donde estaba el punto al proyectarlo a donde está en la proyección). A esto se le llama cámara de luz estructurada. Con estos datos Kinect ejecuta una serie de filtros con la intención de calcular que es una persona y que no lo es. El sistema utilizará directrices como “una persona tiene una cabeza, dos piernas y dos brazos” para diferenciarla del sofá o de algún otro elemento que pueda haber en el campo de juego. También es capaz de distinguir si se usa ropa ajustada o si tiene el pelo largo.. 21.
(22) Figura 13. Puntos de articulaciones que reconoce la función Skeleton. [4]. A partir de esta información, se ordena y convierte la identificación de las partes del cuerpo en un esqueleto. Kinect tiene precargadas más de 200 posiciones comunes del ser humano por lo que en caso de que alguna acción tape alguna parte del esqueleto a la cámara, Kinect llenará el vacío automáticamente, se generan varios esqueletos pero se elige uno basándose en la experiencia. El sistema hace todo esto continuamente a una velocidad de 30fps y hay que estar a una distancia de unos dos metros para poder ser reconocido. RECONOCIMIENTO DE VOZ El mayor problema del reconocimiento de voz era que tenía que ser sensible a voces de hasta cinco metros de distancia además de ignorar los ruidos ambientales, otro sonido y el eco fue lo que menciono Alex Acero en una entrevista realizada por Xataka, la revista Gamespot. Para solucionarlo Microsoft puso en doscientas cincuenta viviendas dieciséis micrófonos para tomar una serie de grabaciones con el objetivo de determinar cuál es el mejor posicionamiento del micrófono. Como resultado se tiene una colocación específica que hace que el Kinect sea tan ancho como es con un micrófono boca abajo, uno en la izquierda y tres en la derecha. Esta forma es la mejor para recoger las voces desde la distancia, el ruido asociado es cancelado por la unidad de procesamiento y se utiliza un sistema software que usa la cámara para calcular de donde viene el sonido y así crear un burbuja de sonido alrededor del usuario, de esta manera se 22.
(23) separa el sonido de la voz y se hace caso omiso a las otras personas que se encuentren alrededor de los jugadores. Al igual que el reconocimiento de imágenes, el reconocimiento de sonido está funcionando continuamente. EL MOTOR Tras investigaciones para ver las diferentes configuraciones de espacios de vida en toda América, Europa y Asia, Microsoft llego a la conclusión de que era necesario dotar la cámara del Kinect la posibilidad de moverse hacia arriba o hacia abajo con el objetivo de calibrar cada espacio concreto. El motor es capaz de mover la unidad hacia arriba o hacia abajo 27º, por lo que la altura óptima está recomendada en uno o dos metros. El motor también opera la cámara, él es quién activa la función de zoom, que permite ampliar el espacio de juego DRIVER PARA KINECT. El sensor Kinect posee un puerto USB 2.0 para la conexión con la consola de videojuegos XBOX 360. El protocolo con el que se comunica el sensor con la consola no fue protegido con ningún tipo de cifrado, lo que facilito enormemente la creación de controladores que permitieron el uso del sensor a través de una computadora. Dado que es relativamente fácil generar un controlador propio para el Kinect, se pueden encontrar gran cantidad de estos disponibles en internet al igual que tutoriales para la implementación de los mismos. Sin embargo, existen dos que logran destacarse a la hora del uso para el desarrollo de aplicaciones: OpenKinect y OpenNI. OpenKinect: Es una librería que se ha venido desarrollando mediante técnicas de ingeniería inversa del protocolo utilizado por el Kinect por parte de una gran comunidad de desarrolladores que colaboran con este proyecto. Esta librería es de código abierto y ofrece control sobre la mayoría de los dispositivos de hardware del sensor, más no ofrece facilidades en cuanto a algoritmos especializados para el procesamiento de imágenes. OpenNI: Se trata de un framework desarrollado por la empresa PrimeSense que ofrece gran facilidad para el desarrollo de aplicaciones utilizando el sensor Kinect. Al igual que OpenKinect ofrece control sobre la mayoría de los dispositivos de hardware del Kinect, además, posee compatibilidad con la librería NITE de PrimeSense que contiene algoritmos para el procesamiento de imágenes, detección y seguimiento de individuos. Sin embargo, el código de esta librería no es abierto. Al ver que otras empresas generaban controladores y que tenía éxito, provocó que Microsoft decidiese publicar la SDK oficial de Kinect. El SDK está orientado a la investigación académica principalmente aunque también a programadores particulares con el objetivo que experimenten con la creación de interfaces naturales de usuario. El SDK permite:. Kinect. 23.
(24) El SDK incluye:. Figura14. Flujo de información entre el Kinect y las aplicaciones [3]. Se recomienda usar el SDK oficial de Kinect para el desarrollo de aplicaciones para la consola Xbox 360, debido a las diferencias arquitectónicas, de mantenimiento y de funcionamiento son distintas en Windows que en Xbox360. Para programación sobre Xbox se recomienda usar el Xbox desarrollo kits (XDK). Los lenguajes utilizados por el SDK son C#, C++, Matlab y Labview.. MATLAB MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es una herramienta de software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M). Está disponible para las plataformas Unix, Windows, Mac OS X y GNU/Linux. Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (Toolbox); y las de Simulink con los paquetes de bloques (Blockset). Es un software muy usado en universidades y centros de investigación y desarrollo. En los últimos años ha aumentado el número de prestaciones, como la de programar directamente procesadores digitales de señal o crear código VHDL. [6] 24.
(25) Historia Fue creado por el matemático y programador de computadoras Cleve Moler en 1984, surgiendo la primera versión con la idea de emplear paquetes de subrutinas escritas en Fortran en los cursos de álgebra lineal y análisis numérico, sin necesidad de escribir programas en dicho lenguaje. El lenguaje de programación M fue creado en 1970 para proporcionar un sencillo acceso al software de matrices LINPACK y EISPACK sin tener que usar Fortran. En 2004, se estimaba que MATLAB era empleado por más de un millón de personas en ámbitos académicos y empresariales. [2]. Características principales . Lenguaje de alto nivel para cálculos de ingeniería y científicos.. . Entorno de escritorio afinado para la exploración, el diseño y la solución de problemas de manera iterativa.. . Gráficos para visualizar datos y herramientas para crear gráficos personalizados.. . Apps para ajustar curvas, clasificar datos, analizar señales y muchas otras tareas relacionadas con dominios concretos.. . Toolbox complementarias para una amplia variedad de aplicaciones de ingeniería y científicas.. . Herramientas para crear aplicaciones con interfaces de usuario personalizadas.. . Interfaces para C/C++, Java®, .NET, Python®, SQL, Hadoop® y Microsoft® Excel®.. . Opciones de despliegue sin coste en concepto de derechos de licencia para compartir programas de MATLAB con los usuarios finales.. ¿Por qué MATLAB? MATLAB es el software más sencillo y productivo para ingenieros y científicos. Ya tenga que analizar datos, desarrollar algoritmos o crear modelos, MATLAB ofrece un entorno que invita a la exploración y el descubrimiento. Combina un lenguaje de alto nivel con un entorno de escritorio adaptado a los flujos de trabajo iterativos de la ingeniería y la ciencia. [6] REDES NEURONALES. Redes neuronales artificiales EL principio de las redes neuronales se dio en los años 40 con las investigaciones de Warren McCulloch y Walter Pitts quienes propusieron un modelo matemático para describir el 25.
(26) comportamiento de las neuronas del cerebro humano, el cual proponía que cada neurona está dotada de una conjunto de entradas y salidas, y cada entrada es afectada por una conexión o peso, la activación de la neurona está determinada por la suma de sus conexiones y la salida está determinada por la función de transferencia de la neurona.. Figura 15. Red neuronal artificial. En 1958, Rosenblat desarrolló el Perceptrón simple, y en 1960 Widrow y Hoff desarrollaron el ADALINE[8], estas fueron las primeras redes neuronales artificiales, las cuales tenían limitaciones ya que solo resolvían problemas linealmente separables, fue hasta los años 80 cuando apareció la red de Hopfield desarrollada por el John Hopfield, y en especial, al algoritmo de aprendizaje de retro propagación (BackPropagation) ideado por Rumelhart y McClellan en 1986 que fue aplicado en el desarrollo de los perceptrones multicapa[9] se logra resolver este inconveniente, logrando con esto un sin fin posibilidades a esta nueva área de conocimiento. Algunas de las principales aplicaciones en la que se utilizan actualmente son reconocimiento de patrones, reconocimiento de caracteres en imágenes, reconocimiento de fonemas en voz, predicción de series temporales (demandas, etc.), identificación y control de sistemas y compresión de imágenes y reducción de dimensionalidad. Las ventajas que ofrecen las redes neuronales son: . Aprendizaje adaptativo: Después de haber entrenado la red, esta puede responder a patrones que no se le hubieran presentado en la etapa de entrenamiento, es decir puede modificarse constantemente con el fin de adaptarse a nuevas condiciones. Auto-organización: La red puede organizar la información en toda sus neuronas y generalizar patrones e información, esto es útil en el caso de que la información este incompleta o que se a poco clara. Tolerancia fallos: Como las redes neuronales guardan la información en forma distribuida y con un alto grado de redundancia si alguna parte de la red se daña esta puede seguir. 26.
(27) . funcionando sin problemas, además si la información presenta ruido, distorsión o esta incompleta la red tiene la capacidad de generalizar la información y responder adecuadamente. Operación en tiempo real: La red trabaja en forma paralela y no secuencial como los computadores, además se pueden implementar sobre hardware lo cual hace que su respuesta sea en tiempo real. Fácilmente implementables en hardware: Usando matrices de diodos que representen las conexiones de las neuronas, las redes mono capas pueden utilizarse en circuitos eléctricos ya que debido a su topología son adecuadas para ser implementas en hardware.. Descripción El principio de funcionamiento de las redes neuronales, se le muestra un conjunto de entradas a la red y se verifica la salida de esta, si la salida no corresponde con la que se desea, se ajustan los pesos de las neuronas hasta lograr la salida deseada. TIPO DE REDES Redes Mono capa Las redes mono capa son redes con una sola capa. Para unirse las neuronas crean conexiones laterales para conectar con otras neuronas de su capa. Las redes más representativas son la red de Hopfield, la red BRAIN-STATE-IN-A-BOX o memoria asociativa y las maquinas estocásticas de Botzmann y Cauchy, y su salida está dada por la suma de sus conexiones y su función de transferencia.. Figura 16. Red Neuronal Mono capa [9]. Entre las redes neuronales mono capa, existen algunas que permiten que las neuronas tengan conexiones a sí mismas y se denominan auto recurrentes. 27.
(28) Redes Multicapa Estas redes tienes capas ocultas entre las capas de entrada y salida y generalmente son capaces de aprender funciones que una red mono capa no puede aprender, por lo que ofrecen mejores capacidades computacionales, como es resolver problemas que no son linealmente separable, las redes más representativas son el Perceptrón Multicapa, Adaline, Madaline y Backpropagation .. Figura 17. Red neuronal Multicapa [9]. Redes Recurrentes A diferencia de las redes mono capa o multicapa que transmiten su información hacia las neuronas posteriores, estas transmiten información también hacia las neuronas de la misma capa y hacia atrás por lo que la complejidad de este tipo de redes es más alto, sus salidas están determinadas por sus entradas y salidas previas por lo que se asocian más a la memoria de corto plazo de los seres humanos.. 28.
(29) Figura 18. Red neuronal Recurrente [9]. Funciones de Activación o Transferencia Las funciones de activación como su nombre lo indica determinar si una neurona se activa o inhibe es decir si aporta información o no, entre las principales funciones de activación están Función Escalón, Función Lineal o Identidad, Función Lineal y Mixta, Función sigmoidal y Función Gaussiana. Función Escalón o Umbral Esta función es utilizada generalmente es las redes que tiene salidas binarias, la salida de la neuronal se activa si supera cierto umbral. Esta puede estar desplazada sobre los ejes, generalmente poco se usa.. Figura 19. Representación grafica de la Función Escalón o Umbral con su notación [7]. 29.
(30) Función Lineal o Identidad La salida de esta función está dada por su entrada. Figura 20. Representación gráfica de la función Lineal Identidad con su notación [7]. Función Lineal y Mixta Esta función está obligada a permanecer en un rango de valores reales predeterminados. Figura 21. Representación gráfica de la Función Lineal y Mixta con su notación [7]. Función Sigmoidal Esta función es muy importante ya que esta función es derivable y cercana a cero y su valor máximo esta cuando x toma valores cercanos a cero.. 30.
(31) Figura 22. Representación grafica de la Función Sigmoidal con su notación [7]. Función Gaussiana Los centros y la anchura de esta función son adaptables lo cual consigue generalmente con dos capas ocultas.. Figura 26. Representación grafica de la Función Gaussiana con su notación [7]. La Regla delta generalizada (Backpropagation) La Regla Delta o LMS era una regla de aprendizaje que se utilizaba para entrenar un PE o una capa de PE, pero como se ha visto en algún ejemplo anterior, es posible que para resolver ciertos problemas necesitásemos añadir a la estructura alguna capa oculta. En ese caso, la Regla Delta no serviría para el entrenamiento de la estructura: • Conocemos la salida deseada para cada patrón de entrenamiento. • No conocemos la salida deseada para los PE de las capas ocultas. La Regla Delta Generalizada o Backpropagation fue creada para generalizar la Regla Delta sobre Redes Neuronales de múltiples capas y funciones de transferencia no lineales y diferenciables. El aprendizaje es también Supervisado. Su utilización consiste en ajustar pesos y bias tratando de minimizar la suma del error cuadrático. Esto se realiza de forma continua, cambiando dichas variables en la dirección contraria a la pendiente del error. Esto se denomina Técnica del Gradiente Descendente. 31.
(32) Redes Neuronales entrenadas mediante esta regla, dan razonables respuestas cuando al sistema se le presentan entradas que no ha visto nunca. Típicamente a una nueva entrada, le hará corresponder una salida similar a la salida obtenida para un patrón de entrenamiento, siendo éste similar al patrón presentado a la red. Una de las grandes propiedades de este tipo de estructuras es su capacidad de Generalización. [8] Funcionamiento Básico 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.
(33) Todo implica que:. De tal manera que los pesos en la capa de salida se modificarán de la siguiente manera:. Condición necesaria: f debe ser derivable. Dos casos:. Sea:. NOTA: Si se desea que la Regla Delta Generalizada funcione igual que la Regla Delta o mínimos cuadrados, NO se debe cambiar los pesos hasta que se presenten todos los patrones de entrenamiento al menos una vez. Se acumularía el error de cada uno de ellos y se trabajaría con él al modificar los pesos. El error que se estaría minimizando sería: n. Eminimizado E p p1. Capas Ocultas. Ep está relacionado con la salida de los PE en capas ocultas de la siguiente manera: 33.
(34) Por otra parte:. De tal manera:. Con lo que:. Las actualizaciones de los pesos en la capa oculta dependen de todos los términos de errores de la capa de salida. Esto es a lo que se refiere uno con el nombre de propagación hacia atrás.. Entonces:. Los términos de error de las unidades ocultas, se calculan antes de que hayan sido modificados los pesos de las conexiones con las unidades de la capa de salida.. Consideraciones Prácticas Datos de entrada (entrenamiento) En general se pueden emplear todos los datos disponibles para entrenar la red. Con cierta frecuencia, lo único que se necesita es un pequeño subconjunto de datos que cubran todo el espacio de los mismos. La BPN admite bien la Generalización: Dados varios vectores de entrada, pertenecientes a la misma clase, aprenderá la similitud existente entre ellos.. 34.
(35) Por otro lado, la BNP no extrapola bien es decir, que si la red se entrena mal o insuficientemente, las salidas pueden ser imprecisas. Hay que asegurarse que los datos de entrenamiento cubran todo el espacio de entradas esperadas. La red se debe de entrenar seleccionando patrones de manera aleatoria, es mala técnica de entrenamiento presentar primero los patrones de una clase y luego los de otra: la red se olvidaría del entrenamiento inicial. [9]. Dimensionamiento de la Red No existe una respuesta sencilla para resolver esta cuestión. En general 3 capas son suficientes, pero en ciertos casos, un problema se puede resolver de manera más fácil añadiendo más capas ocultas (nos referimos a que el aprendizaje se realiza de forma más rápida).. Control de Convergencia En las técnicas de gradiente descendente es conveniente avanzar por la superficie de error con incrementos pequeños de los pesos. Esto se debe a que tenemos una información local de la superficie y no se sabe lo lejos o lo cerca que se está del punto mínimo. Con incrementos grandes, se corre el riesgo de pasar por encima del punto mínimo sin conseguir estacionarse en él. Con incrementos pequeños, aunque se tarde más en llegar, se evita que ocurra esto. [3] El elegir un incremento adecuado influye en la velocidad con la que converge el algoritmo. Sabemos que este control lo podemos realizar mediante el parámetro denominado ganancia Normalmente se le asigna un valor pequeño (0,05-0,25) para asegurar que la red llegue a asentarse en una solución. Otra manera de incrementar la velocidad de aprendizaje, consiste en utilizar otro parámetro llamado Momento, cuando se calcula el cambio de peso se le añada una fracción del cambio anterior. Con ello también se trata de que la red no se estabilice en un mínimo local, aunque esto algunas veces no puede ser conseguido. Un último aspecto a tener en cuenta es la posibilidad de convergencia hacia alguno de los mínimos locales que pueden existir en la superficie de error del espacio de pesos. No se puede asegurar en ningún momento que el mínimo que se encuentre sea global. Una vez que la red se asienta en un mínimo, sea local o global, cesa el aprendizaje, aunque el error siga siendo demasiado alto, si se ha alcanzado un mínimo local. Si se alcanza un mínimo local y el error es satisfactorio, el entrenamiento ha sido un éxito, si no sucede así, puede realizarse varias acciones para solucionar el problema:. •. Cambio de arquitectura (más capas ocultas o más PE). •. Modificación de parámetros de aprendizaje.. •. Emplear un conjunto de pesos iniciales diferentes.. •. Modificar el conjunto de entrenamiento o presentar los patrones en distinta secuencia. 35.
(36) Procedimientos para incrementar la velocidad de aprendizaje. En este apartado se describirá diferentes procedimientos que permiten incrementar la velocidad de aprendizaje manteniendo intacto la propiedad de localidad que tienen este tipo de redes, referido a que la computación de un PE está solamente influenciado por aquellos pesos que están físicamente conectados con él. Heurística 1: Cada parámetro ajustable de la red que determina la función de coste debería tener su propio parámetro de control de velocidad de aprendizaje. Esta heurística reconoce el hecho de la posible existencia de diferentes ganancias para cada conexión ajustable de la estructura. Heurística 2: Cada parámetro de control de velocidad debería variar de un paso a otro. Normalmente la superficie de error tiene diferentes formas en un mismo espacio. En función de dichas diferencias, esta heurística establece que así como cambia la forma del error, debería cambiar la velocidad de aprendizaje. Heurística 3: Cuando la derivada de la función error (coste) con respecto a una conexión determinada, tiene el mismo signo algebraico durante varios pasos del algoritmo, el parámetro ganancia para dicha conexión debería ser incrementado. Esta heurística, establece que en las condiciones mencionadas anteriormente, el número de pasos requeridos para moverse en una cierta parte de la superficie de error, puede ser reducido, incrementando convenientemente la ganancia. Heurística 4: Cuando el signo algebraico de la derivada de la función error con respecto a una particular conexión cambia durante pasos consecutivos, la ganancia para el peso en cuestión debería decrecer. El cambio de signo en pasos consecutivos viene a significar la existencia de picos y valles. En orden de tratar de localizar el punto mínimo del valle y así evitar esas oscilaciones, la ganancia debería ser reducido (ajuste de pesos más fino). CORRELACIÓN En probabilidad y estadística, la correlación indica la fuerza y la dirección de una relación lineal y proporcionalidad entre dos variables estadísticas, es decir la dependencia que existe entre las dos variables que intervienen en una distribución bidimensional. Se considera que dos variables cuantitativas están correlacionadas cuando los valores de una de ellas varían sistemáticamente con respecto a los valores homónimos de la otra: si tenemos dos variables (A y B) existe correlación si al aumentar los valores de A lo hacen también los de B y viceversa. La correlación entre dos variables no implica, por sí misma, ninguna relación de causalidad. Se aplica a diversas áreas de la ingeniería como radar, sonar, comunicaciones digitales, geología, etc. La correlación se calcula con la siguiente formula: 36.
(37) Donde: r = coeficiente de correlación n = número de pares ordenados x = variable independiente y = variable independiente La correlación tiene las siguientes propiedades: El coeficiente de correlación no varía al hacerlo la escala de medición. El signo del coeficiente de correlación es el mismo que el de la covarianza. Si la covarianza es positiva, la correlación es directa. o 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.
(38) DESARROLLO DE ACTIVIDADES DE INVESTIGACIÓN Actividad 1 Objetivo: Pruebas básicas para familiarización con el Sensor, pruebas de programas básicos, estudio de su código, ventajas y desventajas del uso del Sensor Kinect que de ahora en adelante será llamado SK. Se estudiaran dos programas para el desarrollo del proyecto el Microsoft Visual Studio y Matlab.. Tiempo de ejecución: Un Mes, Mes 1 Entregada (29/09/2015) Para la ejecución de este se proyectó se usó el Sensor Kinect de Microsoft proporcionado por el Grupo Roma de La Universidad Distrital F.J.D.C. que de ahora en adelante será llamado SK. Para el desarrollo de este proyecto se evaluaron las herramientas Kinect SKD que es el lenguaje nativo del SK de Microsoft y Matlab con su Toolbox para Kinect. El proyecto se desarrolló sobre un portátil SONY VAIO con las siguientes características:. Figura 24. Características del Computador en que se desarrolla el proyecto. Pruebas con Kinect SDK La página de Microsoft permite la descarga del Kinect Studio y el Kinect Windows Developer Toolkit. Todas las librerías clases y objetos del sistema SKD son soportadas por Visual Studio 2013 de Microsoft [10] así que todo el código se compila y ejecuta sobre este Software que tiene una versión de estudiantes para Windows 8.1. Se realizó la instalación de los siguientes programas necesarios para el correcto funcionamiento de los programas de ejemplo: Developer Toolkit Browser v1.8.0 (Kinect 38.
(39) for Windows) y Kinect Studio v1.8.0, descargados desde la página de Microsoft. [11]. Figura 25. Aplicaciones instaladas para trabajar con Visual Studio y kinect SDK. La primera prueba que se hace es conectar el SK al adaptador USB computador y a su vez conectar el adaptador a su alimentación eléctrica. Luego se verifica que el computador haya detectado el Sensor, generalmente publica un mensaje como cuando se conecta una memoria USB, sin embargo se verifica en el administrador de dispositivos que el dispositivo no tenga ningún problema de drivers o configuración. Seguidamente se abre el Programa Kinect Windows Developer Toolkit, que contiene una serie de programas ejemplo acerca de los usos básicos y avanzados del sensor Kinect de Microsoft. Allí se abren algunos programas y de esta forma se puede comprobar si está funcionando el Sensor Kinect de forma correcta o si tiene algún problema de configuración en el computador en el que se ha conectado. Se realizan pruebas básicas de los Micrófonos, cámara RGB, Cámara infrarroja. La página no entrega el código de los programas que presenta pero si da una documentación y explicación de las clases y objetos usados en el desarrollo de los programas. Por otro lado se hacen pruebas con el programa Matlab 2014a el cual también tiene varias herramientas para trabajar con el Kinect, como este programa no cuenta con una herramienta para hacer pruebas directas hay que hacer un pequeño programa por medio del cual se realizan pruebas de funcionamiento básico. Pruebas del SK en el programa Kinect Windows Developer Toolkit A continuación se muestran pruebas realizadas con el sensor Kinect para varios programas predeterminados en la herramienta Kinect Windows Developer Toolkit se seleccionan los programas que más se acerquen a los objetivos de nuestra investigación:. 39.
(40) Programa Color Basic 2d. Figura 26 Programa Color Basic Kinect Tool. Este programa publica el video que se adquiere con la cámara RGB del Kinect y permite capturar fotografías por medio del accionar de un botón. Podría ser el programa base del proyecto ya que lo primero que se requiere inicialmente es la adquisición de imágenes.. Programa Background Removal Basic. Figura 27. Programa Background Removal Basic Del Kinect Tool. Este programa hace la captura básica de video por medio de la cámara RGB del Kinect y lo publica en una ventana cambiando el fondo por medio de una herramienta del SKD que es lo que se usa actualmente en varios juegos. Como solo toma la silueta de la persona para ponerla sobre el fondo es un programa interesante con limitación ya que tiene un rango reducido de 40.
(41) acción, la distancia de la persona al Kinect debe estar entre 100 y 350 cm. Programa que sería de gran aporte a los objetivos del proyecto. Programa Skeleton Basic. Figura 28. Programa Skeleton Basic Del Kinect Tool. Este es quizá una de las aplicaciones más interesantes que se puedan trabajar con el Kinect pues hace un trazado del esqueleto humano y así puede identificar detalla mente que parte del cuerpo es la que está en movimiento. Esta función nos resulta muy atractiva pues queremos detectar humanos en un área determinada y esta función fue diseñada para detectar siluetas humanas en posición vertical. Estudiando y ejecutando estos programas se puede tener una buena idea de los alcances, limitaciones del sensor y los programas con los que se pueden trabajar. Programas básicos con código compilados en Microsoft Visual Studio. Con unos conocimientos básicos de programación, la ayuda de varios documentos y tutoriales en internet [3], se pudo llegar a compilar el código de los siguientes programas. Programa que se implemento es el de poder visualizar el video de la cámara RGB del Kinect en una ventana permita capturar una fotografía y guardarla en el destino deseado. Este programa es muy importante ya que será la base de nuestro programa final porque en este se aprendió a interactuar con el SK activar, desactivar su cámara, capturar una foto y guardarla en el momento que se desee, para después procesarlas.. 41.
(42) Captura de imágenes con la cámara RGB. Figura 29. Programa captura RGB compilado en Visual Basic. Programa que nos permite visualizar la profundidad con diferentes colores. Este es un programa de gran interés para el proyecto pues toma las profundidades medidas por el sensor infrarrojo y las proyecta como una imagen en una gama de colores donde dependiendo de la profundidad varía el tono del color, con la ayuda de unas librerías que nos facilita el SKD de Kinect. De esta forma podemos tomar imágenes procesarlas e identificar lo que necesitemos de la captura. (También hay otra aplicación que da un color distinto al objeto que este en movimiento lo cual sería muy útil para la detección de sobrevivientes).. Figura 30. Programa Visor de Profundidad compilado en visual Basic.. Como podemos ver en la figura el color verde representa la distancia más cercana, el color rojo representa la distancia desconocida, el color azul representa la distancia más lejana. 42.
(43) Pruebas con Sensor Kinect en el programa Matlab 2014A Gracias a que ya se realizaron pruebas satisfactorias con el SK y el programa Kinect Windows Developer Toolkit se puede asegurar de que el sensor está en perfecto funcionamiento ahora se procede a revisar la configuración del programa Matlab para que detecte el Sensor y pueda adquirir información del él. Investigando en Internet se encuentran ejemplos claros de cómo desarrollar un GUIDE o interfaz gráfica para usuario para una interacción más sencilla con el usuario final, hacer la captura de la imagen, guardarla, procesarla y publicar los resultados. [12] Lo primero que se hace es abrir el programa Matlab 2014a y en la consola de comandos ingresar la orden Imaqhwinfo y pulsar enter, con esta orden el programa nos da la información de los adaptadores de video que tiene instalados Matlab, si todo está bien nos debe salir la siguiente información [13]. Figura 31. Resultado al ejecutar el comando imaqhwinfo en Matlab .. Generalmente Matlab tiene instalado por defecto el “WinVideo” pero este no basta para trabajar con el SK para este propósito debemos descargar el adaptador de video para Kinect entonces ejecutamos el comando “supportPackageInstaller” y de esta forma instalamos el programa para el adaptador de video Kinect de Microsoft, una vez instalado comenzamos a hacer pruebas básicas del sensor.. Figura 32. Resultado al ejecutar el comando supportPackageInstaller en Matlab. 43.
(44) Ejecutando los siguientes comandos en Matlab se pueden acceder a las propiedades del SK de la cámara de profundidad y de la RGB desde el Workspace. VideoDepth = videoinput ('kinect', 2, 'DEPTH_640x480'); PropiedadeDepth = getselectedsource (VideoDepth); VideoRGB = videoinput ('kinect', 1, 'RGB_640x480'); PropiedadeRGB= getselectedsource (VideoRGB); En la ventana del Workspace de Matlab se abre el PorpiedadeDepth. Figura 33. Variables en Workspace de Matlab. Al dar clic sobre PropiedadeDepth o PropiedadeRGB se despliegan las opciones respectivamente de cada cámara.. 44.
(45) Figura 34. Opciones de la cámara RGB del SK.. Figura 35. Opciones de la cámara de profundidad del SK.. Con estas herramientas se pueden controlar algunas características del SK, Como puede ser la inclinación de la cámara, si se enciende el infrarrojo y la postura que reconocerá, sentada o de pie. [14] Estas opciones también son configurables desde línea de comandos como se muestra a continuación: Algunas opciones para la cámara RGB del SK por líneas de comandos.. set(PropiedadeRGB, 'BacklightCompensation' , 'LowLightsPriority'); set(VideoRGB,'FramesPerTrigger',1); set(VideoRGB,'TriggerFrameDelay',25); set(PropiedadeRGB, 'CameraElevationAngle' , 5);. Algunas opciones para la cámara de profundidad del SK por líneas de comandos. set (PropiedadeDepth,'DepthMode','Near'); set(PropiedadeDepth, 'CameraElevationAngle' , 5);. 45.
(46) set (PropiedadeDepth,'BodyPosture','Standing');. Se realizó un programa en Matlab para inicializar la cámara de profundidad y RGB del SK.. Figura 36. Captura de imagen RGB con Matlab. En este programa se inicializa la cámara de profundidad y RGB del SK para luego dividir la información suministrada de profundidad o distancia para dividirla en objetos muy cerca “rojo”, cerca “verde” y lejos “azul”. En esta parte se toma los datos de la cámara de profundidad y se verificada cada pixel para mirar su valor, la información suministrada por la cámara de profundidad es de un valor entre 0 y 4000 cm donde 4000 cm es la distancia más larga que puede reconocer el SK la cual es de 4 metros. El programa verifica si el valor del pixel es menor que 100 cm genera un pixel en esa posición de color rojo, si el valor esta entre 1001 y 2000 cm lo crea de color verde y si es mayor 2001 cm lo crea de color azul. Análisis de Resultados Actividad 1 . La herramienta más poderosa del SK es su sensor infrarrojo pues nos permite tener una visión de profundidad de la zona en la que se está trabajando y la distancia a la que se encuentran los objetos desde el SK. Se comprobó por método práctico que la cámara de infrarrojo del sensor Kinect no reconoce temperaturas y para el reconocimiento de objetos se puede utilizar con oscuridad. La única resolución del SK está limitada a 640x480 ya sea la de profundidad o la RGB. Del SK que es un excelente sensor de movimiento se aprovecha su sensor de profundidad. En ocasiones tiene problemas para trabajar con alta exposición a la luz solar pues la cámara de profundidad se afectada por el espectro infrarrojo de esta luz. Todo el procesamiento se realiza por software en Pc, esto genera retrasos y problemas de movilidad. 46.
Figure
Documento similar
(1886-1887) encajarían bien en una antología de textos históricos. Sólo que para él la literatura es la que debe influir en la historia y no a la inversa, pues la verdad litera- ria
Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),
Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas
Desde esa concepción, el Derecho es considerado como algo que puede ser completamente objetivado y observado sin ningún tipo de parti- cipación (puede ser casi «fotografiado»).
En este sentido, puede defenderse que, si la Administración está habilitada normativamente para actuar en una determinada materia mediante actuaciones formales, ejerciendo
En la parte central de la línea, entre los planes de gobierno o dirección política, en el extremo izquierdo, y los planes reguladores del uso del suelo (urbanísticos y
La empresa presentaba algunos problemas en el proceso administrativo como: no tenían establecido los objetivos del año, ni las estrategias para cumplir con los objetivos;
Para recibir todos los números de referencia en un solo correo electrónico, es necesario que las solicitudes estén cumplimentadas y sean todos los datos válidos, incluido el