Autorizada La Entrega Del Proyecto Del Alumno: Miguel Barquero

   EMBED

Share

Preview only show first 6 pages with water mark for full document please download

Transcript

Autorizada la entrega del proyecto del alumno: Miguel Barquero del Pozo EL DIRECTOR DEL PROYECTO Alejandro García San Luis Fdo: Fecha: 10/06/2009 Vº Bº del Coordinador de Proyectos Eduardo Alcalde Lancharro Fdo: Fecha: 26/06/2009 UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO TÉCNICO EN INFORMÁTICA DE GESTIÓN PROYECTO FIN DE CARRERA PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA AUTOR: MIGUEL BARQUERO DEL POZO MADRID, JUNIO DE 2009 Es el triunfo el que crea al gran hombre. El triunfo no es vencer siempre, sino nunca desanimarse. NAPOLEÓN BONAPARTE i A mi Familia y la Universidad Pontificia Comillas de Madrid, las instituciones que me han enseñado que los valores que mejor guían la vida de los hombres son aquellos que perduran en el tiempo. ii Agradecimientos Gracias a mi familia, esas personas tan queridas para mí que me han apoyado durante los momentos tan duros que se han sucedido estos últimos años, pero que también han sabido compartir la dulzura de los momentos de triunfo que he vivido y para los que me he preparado. A mis amigos, con los que he crecido y desarrollado mi personalidad durante toda mi vida. Gracias por esos momentos de risas tan refrescantes que me han permitido oxigenar mis ideas y tomar las mejores decisiones. Por último, gracias a la Universidad Pontificia Comillas, una institución que me ha enseñado que las relaciones entre las personas deben ser a la vez profesionales y emocionales, y que buscar en cada momento una proporción equilibrada de esta dualidad es un aspecto esencial en el desarrollo de la personalidad de todos los seres humanos. iii Resumen El presente proyecto estudia las características de los sistemas de vigilancia basados en la inteligencia artificial. A lo largo de la memoria del proyecto se recorren las distintas fases que componen la vigilancia con inteligencia artificial y se analizan los algoritmos que se emplean en ella. El objetivo de este proyecto es ampliar las funcionalidades de los sistemas de vigilancia actuales; se pretende cambiar los sistemas mecánicos y predecibles por un nuevo tipo de sistema más orgánico y con un rango de funciones más completo, además de dar cabida a la inteligencia artificial dentro del mercado real y, en última instancia, permitir que el conjunto de la sociedad se beneficie de la inteligencia artificial, no solamente los sectores más especializados. Se han analizado los distintos filtros de imagen que se pueden aplicar a las imágenes de las cámaras de vigilancia, incluidos los filtros de puntos y espaciales y se han desarrollado los algoritmos que permiten integrar estos filtros de imagen dentro de la aplicación. Se han analizado los algoritmos que se utilizan como herramientas de análisis de video y se han desarrollado otros algoritmos que permiten delimitar los bordes de las siluetas de los elementos que se encuentran en el objetivo de la cámara. Además de analizar las herramientas disponibles para el análisis de las imágenes de los vídeos de vigilancia, se ha diseñado e implementado una secuencia de análisis que permite localizar y estudiar el movimiento de los elementos que se encuentren bajo el objetivo de las cámaras de vigilancia. Como parte práctica del trabajo se exponen los resultados obtenidos después del análisis ejecutado por el prototipo de la aplicación diseñado y desarrollado; además, se analizan estos resultados con el fin de evaluar los objetivos alcanzados y comprobar el alcance de la aplicación en un futuro. iv Por último, se exponen los problemas encontrados durante el desarrollo de la aplicación así como aquellos problemas que impiden la evolución de la consola de análisis; sin embargo, junto con estos problemas se proponen soluciones que puedan paliar estos problemas o incluso métodos que puedan llegar a solucionarlos pero que no han sido implantados en la consola final. Como anexo a esta memoria se presentan estudios corolarios del tema principal de la video vigilancia, como el reconocimiento de caras mediante algoritmos de reconocimiento facial o la implementación del sistema desarrollado en entornos con cámaras de vigilancia dinámicas. v Video vigilance system prototype The present final-year project studies the characteristics of the video vigilance systems based on artificial intelligence, which includes studying the main stages of the video vigilance or analyzing the most important algorithms which are used during the automatic analysis also. The different image filters used during the automatic analysis have been studied along this document; these filters include functions point to point and the special transformations. The algorithms which allow outlining the figure of the elements inside the pictures are also analyzed along this final-year project. Moreover, some algorithms have been designed and proposed in order to solve this problem. Besides analyzing the mathematical tools which can be used to analyze an image, in this document is proposed a sequence designed in order to locate, identify and make decisions from the artificial intelligence point of view. The results of the application are included as a practical part of this final-year project; these results have been recorded after the analysis of the test videos by the application developed. Furthermore these results are analyzed in order to check the functionality of the application and evaluate the goals reached by the application. Finally, problems reached during the evolution of the application are exposed and also the problems which have stopped the development of this artificial intelligence system. However, the explanation of these problems is followed by a theoretical solution; in some cases this solution may decrease the problem, in other case the solution may solve the problem completely but it has not been implemented in the application yet. The annex of this final-year project is composed by the investigation of corollary aspects of the main theme of this document. Aspects like human face recognition with mathematical algorithms or the implementation of this application in settings with dynamic video cameras are some examples of themes studied in the annex. vi TABLA DE CONTENIDOS Capítulo 1: Introducción 1 Motivación del proyecto 7 Objetivos 10 Capítulo 2: Estado del arte Estudio de la tecnología y técnicas existentes 12 13 Tecnología actual 13 Técnicas actuales 15 Tecnologías y recursos utilizados 17 Los Bitmaps y el lenguaje de programación C# 20 La programación orientada a objetos 23 Capítulo 3: Metodología Empleada 25 Características de la Metodología Extrema 27 Las fases de desarrollo 29 Manipulación de video mediante aplicaciones software 30 Análisis de imágenes digitales 34 Análisis de las secuencias de video 36 vii Capítulo 4: Desarrollo del prototipo 39 Introducción 40 Configuración del sistema 46 Soporte de las imágenes 49 Acceso a memoria 55 Tratamiento de las imágenes 57 La escala de grises 60 La función de contraste 65 Posterización 66 La función umbral 68 Pixelado 71 Análisis de las imágenes 77 Filtrado con la imagen de referencia 77 Filtrado con la imagen inmediatamente anterior 80 Mejora de los filtros mediante el pixelado 82 Identificación de categorías 86 Establecimiento de los criterios comunes de clase 86 Identificación de los criterios de clase 88 Estudio del movimiento 89 Seguimiento del centro del objeto 91 El método de correlación de centros 93 viii Capítulo 5: Resultados 96 Método de captación de las imágenes 98 Filtros de imagen 99 Escala de grises 99 La función de contraste y el ecualizado 100 La función umbral 102 Posterización y pixelado 103 Análisis de las imágenes 105 Filtrado con la imagen de referencia 105 Filtrado con la imagen inmediatamente anterior 106 Identificación de categorías 108 La posterización y la segmentación por zonas 108 Identificación de formas geométricas sencillas 110 Estudio del movimiento 113 Seguimiento del centro del objeto 113 El método de correlación de centros 115 Capítulo 6: Anexos Planificación 117 118 La fase de documentación 119 El desarrollo de la aplicación 120 La elaboración de la memoria 120 ix Estimación del coste económico del proyecto 122 Coste de los recursos humanos 122 Costes Software 123 Costes Hardware 124 Conclusiones 126 Apéndices 128 Sistemas con cámaras de vigilancia dinámicas 128 El reconocimiento facial 134 Bibliografía 140 Libros 140 Proyectos de fin de carrera y tesis doctorales 141 Ensayos 142 Otras referencias 145 x ÍNDICE DE IMÁGENES, ECUACIONES Y TABLAS Imágenes Capítulo 1: Introducción 1 Figura 1.1: Componentes de la visión artificial 4 Capítulo 2: Estado del arte 12 Figura 2.1: Secuencia de captura de las imágenes Figura 2.2: Recorrido de la información Figura 2.3: Análisis de un Bitmap Figura 2.4: Filosofía de la programación orientada a objetos 18 19 21 23 Capítulo 3: Metodología Empleada 25 Figura 3.1: Comparativa de las dos metodologías de desarrollo de aplicaciones 27 Figura 3.2: Descomposición del problema principal 29 Figura 3.3: Diagrama de Gantt de la planificación 30 Figura 3.4: Objetivos de la primera fase del desarrollo 30 Figura 3.5: Vista del interfaz de la consola durante la primera fase de desarrollo 31 Figura 3.6: Comunicación con el interfaz del programa 31 Figura 3.7: Navegación dentro del equipo para la selección del video 32 Figura 3.8: Detalle del flujo de datos en la fase de carga 32 Figura 3.9: Salida por pantalla del primer frame del video seleccionado 33 Figura 3.10: Objetivos de la segunda fase 34 Figura 3.11: Salida inicial de la aplicación en la segunda fase 34 Figura 3.12: Detalle del flujo de datos de la segunda fase 35 Figura 3.13: Resultados de la segunda fase 35 Figura 3.14: Objetivos de la tercera fase de desarrollo 36 Figura 3.15: Detalle del flujo de datos del programa 37 Figura 3.16: Flujo de datos de la aplicación final 38 xi Capítulo 4: Desarrollo del prototipo 39 Figura 4.1: Comparativa de imágenes Figura 4.2: Flujo de información Figura 4.3: Uso de la memoria según el formato Figura 4.4: Almacenamiento de una imagen Figura 4.5: Histograma de un retrato Figura 4.6: Histograma de un plano general Figura 4.7: Filtro de la escala de grises Figura 4.8: Diagrama de flujo del algoritmo de escala de grises Figura 4.9: Aplicación del filtro de escala de grises Figura 4.10: Análisis para el filtro de contraste Figura 4.11: Análisis de la posterización Figura 4.12: Flujo de datos del proceso de posterización Figura 4.13: Análisis del filtro de la función umbral Figura 4.14: Binarización de la imagen original Figura 4.15: Flujo de datos del proceso de binarización Figura 4.16: Aplicación del filtro de pixelado Figura 4.17: Esquema conceptual del filtro de pixelado Figura 4.18.1: Flujo de datos en la fase de acumulación del proceso de pixelado Figura 4.18.2: Flujo de datos en la fase de carga del proceso de pixelado Figura 4.19: Aplicación del filtrado píxel por píxel Figura 4.20: Comparación de dos fotogramas consecutivos Figura 4.21: Secuencia de análisis de los fotogramas Figura 4.22: Secuencia de análisis de un fotograma con pixelado Figura 4.23: Secuencia de almacenamiento de una imagen pixelada Figura 4.24: Secuencia de localización de los elementos de las imágenes Figura 4.25: Función umbral de una imagen de objetos en movimiento Figura 4.26: Secuencia de cálculo del método de seguimiento del centro Figura 4.27: Resultados del método de seguimiento del centro Figura 4.28: Secuencia de cálculo del método de correlación de centros Figura 4.29: Resultados del método de correlación de centros 40 41 50 55 58 58 61 63 64 65 66 67 69 69 70 72 73 74 75 78 80 81 82 83 84 86 91 92 93 94 Capítulo 5: Resultados 96 Figura 5.1: Conexión del equipo con la cámara mediante un stream Figura 5.2: Resultados reales de la escala de grises Figura 5.3: Análisis de los resultados de la función de contraste Figura 5.4: Análisis de los resultados del ecualizado Figura 5.5: Análisis de los resultados de la función umbral Figura 5.6: Resultados de la posterización 98 99 101 101 102 103 xii Figura 5.7: Comparación de la imagen actual con la imagen de referencia Figura 5.8: Comparación con la imagen inmediatamente anterior Figura 5.9: Resultados del filtro por zonas Figura 5.10: Diseño conceptual del filtro de reconocimiento de objetos Figura 5.11: Ejemplos de otros algoritmos Figura 5.12: Secuencia de estudio del método de correlación de centros Figura 5.13: Resultados del método de correlación de centros 105 107 109 110 112 114 115 Capítulo 6: Anexos 118 Figura 6.1: Planificación del proyecto Figura 6.2: Funcionamiento de las cámaras de vigilancia móviles Figura 6.3: Biblioteca de imágenes de referencia de una cámara móvil Figura 6.4: Cálculo del vector de movimiento de las cámaras móviles Figura 6.5: Comparación de caras mediante la biometría Figura 6.6: Comparación de las facciones faciales con fines de entretenimiento Figura 6.7: Posibles aplicaciones del reconocimiento facial en el marketing Figura 6.8.1: Salida de las pruebas de posterización Figura 6.8.2: Pruebas del filtro de zonas 118 129 130 132 134 136 137 138 139 Ecuaciones Capítulo 4: Solución desarrollada 39 Ecuación 4.1: Aplicación de un filtro Ecuación 4.2: Descomposición del sistema RGB Ecuación 4.3: Aplicación del filtro de escala de grises Ecuación 4.4: Aplicación del filtro de contraste Ecuación 4.5: Aplicación del filtro de posterización Ecuación 4.6: Fórmula de la función umbral Ecuación 4.7: Aplicación del filtro de pixelado 59 61 62 65 67 68 72 Capítulo 7: Anexos Ecuación 6.1: Ecuación de búsqueda en cámaras móviles 131 xiii Tablas Capítulo 6: Anexos 117 Tabla 6.1: Costes asociados a los elementos de recursos humanos Tabla 6.2: Costes software del proyecto Tabla 6.3: Costes hardware del proyecto Tabla 6.4: Costes finales del proyecto 122 123 124 125 xiv PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Capítulo 1 1 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Introducción Este proyecto de final de carrera investiga cómo mejorar, mediante las técnicas de programación, los recursos y tecnologías disponibles, el rendimiento de los sistemas de seguridad privados basados en la video vigilancia del entorno. La seguridad de las personas físicas y de sus pertenencias materiales es un tema que preocupa a la sociedad actual; por este motivo, el avance tecnológico en este campo es un activo de utilidad general que puede ser explotado. La mejora estudiada en este proyecto de fin de carrera se basa en implementar ciertos aspectos característicos de la visión animal en un prototipo de sistema de visión artificial. La visión artificial es una disciplina basada en el proceso y adquisición automático de imágenes. Es un campo que actualmente se encuentra en pleno auge y está alcanzando un gran desarrollo tanto en los métodos usados para el análisis de las imágenes como en la potencia de los sistemas de procesamiento de datos. Sus aplicaciones son múltiples, en entornos de muy distinta índole, como científico, civil, militar o industrial. Los sistemas de visión artificial son de gran ayuda en la automatización de tareas repetitivas que resultan difíciles de realizar para un operario, por lo que se consigue una operación continua y eficiente con un menor coste. También son de gran utilidad en el ámbito científico para la investigación de mecanismos [MERY04], [RODR08] y [CORR09], visión foveal y periférica [PARD96], presentes en la visión en humanos. 2 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Para el desarrollo de una aplicación que mejore las prestaciones de los sistemas de vigilancia artificial se ha hecho un estudio comparativo sobre las características de los dos sistemas de visión que influyen en este proyecto, el sistema de visión orgánico o humano y el sistema de visión artificial. Las principales ventajas de cada sistema son: Sistema humano:  Reconocimiento de objetos.  Adaptación a situaciones imprevistas.  Utilización de conocimiento previo.  Destaca en las tareas de proceso de alto nivel. Sistema artificial:  Mide mejor magnitudes físicas.  Facilidad en la realización de tareas rutinarias.  Destaca en tareas de proceso de bajo nivel. El proyecto desarrollado evalúa cuáles son las mejores alternativas para integrar aquellas características que son mejores en los sistemas de visión orgánicos dentro del sistema de visión artificial; gracias a la inclusión de estas características se espera mejorar los resultados de los componentes de los sistemas de visión artificial. Para determinar cuáles son aquellos elementos de los sistemas de visión artificial susceptibles de ser mejorados se han analizado los componentes de estos sistemas. 3 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Un sistema de visión artificial está compuesto por los siguientes elementos:  La fuente de luz: Es una parte importante en el sistema ya que la capacidad de extracción de los rasgos de los elementos de una determinada escena por parte del sistema depende de la intensidad de ésta.  Cámara: Se encarga de recoger la imagen luminosa sobre un soporte sensible, transformándola en señales eléctricas.  Sistema de procesamiento: Es la parte física donde se aloja la aplicación. Sus características dependen directamente de las funciones planificadas para la aplicación.  Algoritmos de análisis: Son los componentes de la parte central del sistema inteligente. Realizan las transformaciones necesarias de las imágenes para extraer la información de interés para los usuarios. Figura 1.1: Componentes de la visión artificial 4 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA El número de aplicaciones relacionadas con la Visión Artificial aumenta cada día; debido al alcance de esta disciplina son muchos los campos donde este sector de la ciencia tiene aplicación. En el sector de la producción (tanto industrial como agrícola).  Inspección de productos (papel, aluminio, acero,...).  Control de soldaduras.  Identificación de piezas.  Inspección de circuitos impresos.  Control de calidad.  Control de calidad de los alimentos.  Agricultura.  Control de plantaciones. En el control de elementos externos e internos de la sociedad.  Astronomía.  Meteorología.  Control de tráfico.  Tráfico viario.  Interpretación de fotografías aéreas.  Reconocimiento de caracteres.  Control de cheques, inspección de textos, etcétera.  Etiquetados (fechas de caducidad, descripción contenido).  Matrículas de coches. 5 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA En la ingeniería civil.  Aplicaciones biomédicas (Resonancias magnéticas, tomografías, genoma humano).  Análisis de imágenes tomadas mediante microscopio (Bacterias, células, proteínas).  Vigilancia por satélites.  Exploración del Espacio.  Guiado de robots (vehículos no tripulados).  Seguridad y vigilancia. Por otra parte hay que tener en cuenta los avances tecnológicos en los dispositivos de vigilancia, la facilidad de producción y el amplio catálogo de la oferta en este sector, avances que han permitido que la mayoría de las comunidades posean su propio sistema de seguridad. Si se unifican los avances en los dos campos de estudio, la mejora de los sistemas de vigilancia mediante la implementación de mejores algoritmos de análisis de imagen es un paso hacia la meta final de la sociedad, que es que todos sus integrantes se beneficien de compartir sus conocimientos y motivaciones. 6 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Motivación del proyecto La motivación que impulsó el desarrollo de este proyecto fue sobre todo la posibilidad de finalizar la carrera de técnico en informática estudiando un campo innovador como es la inteligencia artificial. Además, este proyecto de video vigilancia se integra dentro del campo de la visión artificial, un campo que por su naturaleza del estudio de la geometría y la mecánica suscita un gran interés particular. El alcance de los proyectos en el campo de estudio de la visión artificial se encuentra todavía en una fase inicial, lo cual permite realizar un estudio que realmente extienda el alcance del conocimiento sobre este campo. Realizar un proyecto sobre un tema de actualidad siempre es motivo para redoblar los esfuerzos para obtener resultados que muestren un avance en ese campo. El diseño, desarrollo e implantación de un sistema de video vigilancia con base en inteligencia artificial puede llegar a ser un hito dentro del mundo de la visión artificial ya que es posible crear un sistema que sea atractivo para los demás miembros de la comunidad, tanto los académicos como los profesionales del sector o incluso los responsables de aprobar los presupuestos de los proyectos. El objetivo de este proyecto es ampliar las funcionalidades de los sistemas de vigilancia actuales; se pretende cambiar los sistemas mecánicos y predecibles por un nuevo tipo de sistema más orgánico y con un rango de funciones más completo, además de dar cabida a la inteligencia artificial dentro del mercado real, y en última instancia, permitir que el conjunto de la sociedad se beneficie de la inteligencia artificial, no solamente los sectores más especializados. Este proyecto es revolucionario ya que tiene como objetivo unificar todos los conocimientos, técnicas y tecnología desarrolladas en el campo de la video vigilancia; esto incluye desarrollar algoritmos que permiten analizar las imágenes tomadas de un entorno y realizar una serie de operaciones que permitan obtener y analizar 7 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA información concreta sobre el estado de los objetos de la imagen y cómo interactúan entre ellos. La gran peculiaridad de este sistema es que está diseñado para que la mayoría de cálculos y operaciones las haga la consola, pero en términos ejecutivos serán los operarios que estén manejando el sistema quienes evaluarán la situación y tomarán las decisiones sobre las acciones a emprender. El fin de este proyecto es propiciar la creación de una consola de video vigilancia que se convierta en una herramienta innovadora y práctica dentro del mundo de la seguridad. Además, el sector de la seguridad se está beneficiando actualmente de un crecimiento espectacular, así que realizar este proyecto en este momento es una buena oportunidad de negocio. Este proyecto busca no solamente generar una nueva herramienta que permita realizar las tareas de vigilancia de una forma más fácil y sencilla, sino que busca ofrecer al mercado una herramienta que dé origen a una nueva serie de dispositivos que hagan la vida mucho más cómoda al conjunto de la sociedad. Por último, este proyecto está motivado por la necesidad de preservación de las personas y los bienes de la sociedad. Todos los integrantes de la sociedad que tienen alguna posesión desean conservarla del hurto o de que alguien le cause desperfectos; y el objetivo principal de este proyecto es proporcionar un servicio de calidad que asegure la integridad física tanto de los elementos materiales como de las personas. Por este motivo, este proyecto está enfocado no solamente hacia el uso en el marco profesional de la seguridad privada, sino que también se ha tenido en cuenta que es posible que algún particular decida instalarlo en su casa. Por tanto, es posible que el sistema no vaya a estar manejado por un técnico cualificado, de modo que será el mismo sistema el que deba ser capaz de llegar a sus propias conclusiones y tomar decisiones en base a sus cálculos. 8 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Esto se traduce en la necesidad de un mejor diseño de la inteligencia artificial del prototipo de la consola. Pese a que en el ámbito profesional, donde las especificaciones del producto indicarán que es importante una supervisión humana constante para el mejor rendimiento del sistema, serán los técnicos los que proporcionarán ayuda al sistema para la toma de decisiones. Sin embargo, en el ámbito doméstico es posible que los usuarios no mantengan este nivel de vigilancia; no obstante, la falta de supervisión humana no debe frenar en modo alguno las tareas de vigilancia del sistema. 9 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Objetivos Este sistema de seguridad con apoyo de inteligencia artificial tiene como objetivo prioritario proporcionar una seguridad mejorada en cualquier entorno, ya sea en el marco de una empresa privada o bien en un entorno residencial. El objetivo de este proyecto es diseñar y desarrollar un prototipo de un sistema de vigilancia con inteligencia artificial integrada que en un futuro sea una opción económica y técnicamente rentable; una opción de seguridad que tenga las mismas prestaciones que los sistema de seguridad de gamas más altas, pero con los precios que tienen los sistemas más convencionales. Otro objetivo de este sistema, que aunque no es el principal sí se revela como necesario en su cumplimiento, es proporcionar este servicio de una forma sencilla y de fácil manejo, lo que implica que el diseño debe estar adaptado a cualquier usuario. Entre otras cosas, esto implica la utilización de un interfaz de usuario amigable, fácil de usar y que se adapte a las necesidades y recursos de cada usuario, ya sea un técnico entrenado en la vigilancia o bien un particular interesado en mantener una vigilancia constante sobre su casa de forma individual. Para que el interfaz del usuario sea sencillo y de fácil manejo, las funciones de la consola deben estar bien definidas. De este modo los usuarios pueden conectar el modo de acción de la consola que más les convenga; además, gracias a esta descripción de los elementos es más fácil desarrollar el proyecto siguiendo un cauce concreto. Estas funciones principales serán tres: identificación del movimiento, análisis del movimiento e identificación de los objetos en movimiento. La consola que se ha desarrollado tiene la capacidad de detectar el movimiento dentro de su campo de acción, esto incluye filtrar aquellos movimientos que sean superfluos (como el balanceo de las hojas de los árboles); la inteligencia artificial de la 10 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA aplicación final debería ser capaz de detectar los movimientos repetitivos como el parpadeo de los semáforos. Además de detectar los objetos que se encuentran en movimiento, el prototipo de la aplicación debe analizarlos y clasificarlos según su naturaleza. En principio, este objetivo sólo abarca la diferenciación de los objetos entre tres naturalezas posibles, objetos no-humanos, personas y vehículos. Por último, una vez la consola detecte el objeto en movimiento, la consola debe establecer una estimación sobre la dirección y velocidad de los objetos detectados. Desde el punto de vista económico, el objetivo principal es que el coste de implantación de este sistema no sea muy elevado, permitiendo así la llegada del producto a todo el abanico de posibles clientes del mercado de la seguridad. Se ha procurado diseñar un sistema que sea totalmente funcional y que cumpla con las expectativas de cualquier usuario pero que no suponga una inversión excesiva para los usuarios finales; esto implica que la base física del sistema esté compuesta por productos comunes en el mercado que sean de fácil acceso y económicamente viables. Además, este objetivo restringe la complejidad del sistema, ya que este dispositivo debe ser lo suficientemente sencillo como para que los operarios del sistema no necesiten instrucción para dominar su manejo. 11 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Capítulo 2 12 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Estado del arte Como el estudio realizado en este proyecto se basa en el desarrollo de programas que mejoren los resultados de dispositivos y técnicas ya desarrolladas e implementadas, a continuación se presentan estos sistemas de vigilancia ya desarrollados así como los componentes que los hacen ser sistemas de vigilancia eficaces. Estudio de la tecnología y las técnicas existentes Tecnología actual Durante el proceso de documentación del proyecto, se estudiaron los distintos dispositivos de vigilancia disponibles en el mercado. Este estudio reveló que los sistemas de vigilancia disponibles para el sector civil habían sido desarrollados hace tiempo y no presentaban avances significativos en el concepto de sistemas de seguridad; no obstante, sí que ha habido un avance significativo en el desarrollo de nuevos dispositivos de vigilancia. En este aspecto, todos los sistemas de seguridad, independientemente del su nivel de sofisticación, se componían de elementos de seguridad superpuestos; cada uno de estos elementos estaba diseñado e instalado para suplir las carencias del resto de los elementos. Los dispositivos convencionales disponibles para la gran mayoría de los ciudadanos son las alarmas sonoras, los sensores volumétricos, las cámaras de video, e incluso micrófonos [WIKI01]. Estos elementos nunca fueron diseñados para actuar como un único elemento de seguridad; es decir, estos dispositivos no se diseñaron con 13 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA la intención de ser utilizados conjuntamente, si no que se diseñaron por separado, pero se pueden utilizar en conjunto. Sin embargo, uno de los sistemas de seguridad más avanzados del momento sí que utiliza toda la información de los sensores instalados de forma conjunta; de esta forma se implementa un sistema con funcionalidades que podrían darse en un sistema con inteligencia artificial [WEB001]. Este dispositivo de vigilancia se activa si alguno de los sensores volumétricos capta la intromisión de algún elemento externo; en ese momento, las cámaras empiezan a grabar y envían la señal a la centralita donde se encuentran aquellos agentes que deben tomar las decisiones pertinentes para atajar la amenaza; el envío de la información sirve para que los técnicos evalúen la amenaza y ofrecer una respuesta con mayor precisión y eficacia. De este modo se genera una sinergia entre los elementos de seguridad instalados; ésta es una de las funcionalidades características del sistema de este proyecto. Otro dispositivo de vigilancia, instalado en las casas cuartel de la Guardia Civil y las comisarías de Policía, permite la identificación de elementos sospechosos en el entorno del edificio con el fin de atajar la amenaza si se diera el caso. Este sistema funciona analizando el entorno que vigila; en el caso de que un coche o furgoneta estacione cerca del edificio, el sistema de vigilancia generaría una alarma y reconfiguraría la posición de la cámara de vigilancia, centrando el foco de la cámara sobre la nueva amenaza detectada. Este control de los dispositivos de vigilancia por parte de los elementos de la inteligencia artificial es una funcionalidad que no está incluida dentro del alcance de este proyecto; sin embargo, es una idea que debe ser desarrollada en el entorno de la visión artificial; si los seres vivos centran el foco de su visión sobre los elementos, los elementos artificiales también deberían hacerlo [CORR09]. 14 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Estos dispositivos de vigilancia han probado su eficacia, pero su estructura es todavía muy mecánica y predecible. Sin embargo, este proyecto propone que el sistema de video vigilancia artificial desarrollado sea orgánico y reentrante, es decir, que se nutra de la información que va generando además de la que los sensores externos van capturando. Técnicas actuales En el otro campo que interviene en este proyecto, el campo de la visión artificial, empezó a ser investigado en la última década del siglo XX, y desde entonces se han desarrollado múltiples avances. A mediados de los años 90, un estudio estableció cuáles eran los parámetros que un sistema dedicado al análisis del movimiento debía tener en cuenta [CÉDR95]. En este estudio se desarrollo un sistema que podía captar el movimiento de uno o varios objetos de forma simultánea, para después analizar y caracterizar el movimiento de cada objeto, además de la propia estructura y composición del objeto. Años más tarde, los científicos estudiaron la forma en que los seres humanos identifican los objetos de su entorno y descifraron las tareas que realiza el cerebro humano para obtener una imagen mental del entorno. Gracias a este estudio, los investigadores pudieron implementar un sistema artificial que se asemejase bastante a la visión humana [VINC06]. Los estudios realizados en este campo dieron pie al desarrollo de algoritmos de análisis de imágenes; algunos de estos algoritmos se especializaron en el estudio del movimiento no-rígido, como por ejemplo el estudio de plantillas deformables [YUIL92], splines activos [CURW92], o el estudio de superficies activas [COHE92]. 15 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Otro de los campos de estudio en este sector es el análisis de las técnicas de flujo óptico, que consisten en el análisis por parte de un ordenador de series de pares de imágenes [BEAU95], [RODR08]. La técnica del flujo óptico se basa en estudiar el movimiento que se percibe entre dos imágenes consecutivas, gracias a las diferencias entre éstas se puede analizar la velocidad o la distancia de los objetos. Además del estudio del movimiento de los objetos, este proyecto integra los algoritmos de reconocimiento de objetos. Los algoritmos pueden estudiar los objetos de 2D [BAND08], el reconocimiento de patrones [LIU07]. Otras técnicas que se desarrollaron para la identificación de los objetos del entorno se basan en el estudio de los colores como fuente de información; el trabajo principal de estos algoritmos se basa en el análisis de los colores y de su variación como consecuencia del aumento o disminución de la fuente de luz [CUEV06]. Estos algoritmos se desarrollaron con el fin de capturar el movimiento de los objetos y de estudiar después el movimiento o la naturaleza de estos. Esta dinámica supone un problema en el campo de la vigilancia ya que para mantener una seguridad de calidad, el servicio prestado por el sistema de video vigilancia artificial debe ser capaz de trabajar en tiempo real, lo cual implica que los resultados deben obtenerse en el tiempo de respuesta de un ser humano, así que deben de estar entre un cuarto y medio segundo. Sin embargo, las técnicas de flujo óptico implican un problema añadido, al estar basadas en el análisis de dos imágenes consecutivas implica un ligero retardo ya que se trabaja con dos imágenes; sin embargo, el cálculo de distancias y velocidades es un objetivo principal del proyecto, de modo que estos algoritmos han sido modificados para que tengan unas mejores prestaciones. 16 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Uno de los artículos estudiados tiene como objetivo estudiar el movimiento de las manos dentro del entorno de la interpretación del lenguaje de signos [YANG08]. Este artículo aúna los criterios de reconocimiento de patrones que se persigue en el proyecto de seguridad por video vigilancia junto con los criterios de análisis del movimiento de los objetos dentro del campo de visión. Tecnologías y recursos utilizados Este proyecto se centra sobre el análisis de imágenes de video mediante una inteligencia artificial, por lo tanto, una gran parte de la elaboración de este proyecto ha consistido en la selección de los sistemas periféricos de video. Estos equipos son las cámaras de vigilancia convencionales, las cámaras usb y las cámaras IP. Al tratarse de un proyecto enfocado hacia la creación de un sistema de video vigilancia a partir de cualquier equipo que pudiera poseer el cliente con anterioridad, el desarrollo del proyecto no se ha focalizado sobre una cámara de video específica, sino que la mayor parte del proyecto se ha trabajado sobre video ya grabados seleccionados con el fin de desarrollar una funcionalidad concreta de la consola. Las cámaras de vigilancia convencionales no envían la información digitalizada sino que la envían con formato analógico. La señal generada por estas cámaras es un flujo continuo de información, mientras que el sistema está diseñado para recibir las imágenes de video de una en una; por esto es necesario incluir un transformador de señal para que la señal analógica se digitalice y pueda utilizarse en la consola de seguridad. En cuanto mejor sea este convertidor de señal, más óptimo será el sistema ya que la información en bruto proporcionada por las cámaras podrá ser refinada con más tiempo. 17 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 2.1: Secuencia de captura de las imágenes Sin embargo, no todos los dispositivos generan información analógica, hay equipos periféricos de video que generan información digital; los dispositivos de este tipo más comunes son las cámaras usb, cámaras que mediante un puerto usb se conectan al ordenador y gracias a cualquier aplicación de video con enlaces a puertos usb puede mostrar al usuario el video que están capturando. Esta información está íntegramente en formato digital, con lo cual puede empezar a tratarse mucho antes que la información proporcionada por las antes mencionadas cámaras de vigilancia, pues no es necesario pasar por el proceso de transformar el tipo de la señal. Las cámaras usb son la mejor opción para este sistema de seguridad para una empresa que esté muy localizada (que trabaje dentro de un único edificio o complejo y que utilice un único servidor para tratar toda la información) ya que estas cámaras son de fácil instalación y tienen un muy buen rendimiento en distancias cortas Además de las cámaras usb, hay otro tipo de dispositivos que también procesan directamente la información que generan en el ordenador sin necesidad de un transformador, estos dispositivos son las Webcams. Sin embargo, hay otra opción para aquellas empresas que tengan varias zonas que vigilar y deseen vigilarlas desde un único punto, estos dispositivos permiten la instalación de un puesto de vigilancia remoto y centralizado. 18 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Las cámaras IP permiten recibir la señal digitalizada desde cualquier ordenador con acceso a Internet. La instalación de estas cámaras es muy sencilla con la salvedad de que la empresa que las instale debe configurar unos permisos para acceder a la información proporcionada por estas cámaras. Esto da la opción a las empresas de recibir información simultánea sobre varios puntos geográficos distintos, y en última instancia permite mantener la vigilancia sobre distintas zonas con la misma consola de pantallas (como la consola de vigilancia de la D.G.T., que recibe la información desde las cámaras de las distintas autovías, A-1, A-2, A-3, etcétera pero se reciben todas en la consola central). Sea cual sea el género de las cámaras de vigilancia instaladas en el sistema, toda la información que generen las cámaras debe ser recibida en última instancia en formato digital; este requisito es vital para el funcionamiento óptimo del sistema debido a que éste funciona analizando el stream de video que generan estas cámaras; es decir, el sistema funciona analizando Figura 2.2: Recorrido de la información información la de las 19 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA cámaras bajo un prisma digital. Un stream de video es una secuencia de frames, este es el nombre técnico de las imágenes que componen las secuencias de video; su sinónimo en el formato analógico sería una diapositiva. La consola de vigilancia se basa en el análisis de estas imágenes individualmente primero y como una secuencia completa después, por lo tanto el único modo de poder aplicar la inteligencia artificial de la consola es que ésta reciba las imágenes una por una. Las cámaras usb y las cámaras IP son vitales para este sistema de vigilancia artificial ya que proporcionan streams de video que pueden ser analizados directamente, mientras que las cámaras de vigilancia convencionales proporcionan una señal que debe ser convertida para ser recibida en un ordenador, lo que baja el rendimiento del sistema. Los Bitmaps y el lenguaje de programación C# Gracias a que la tecnología ha avanzado y ahora se pueden generar imágenes digitales. Este nuevo recurso informático ha provocado que los lenguajes de programación de alto nivel, en concreto los lenguajes de programación orientada a objetos, como C# han incluido entre las clases de sus bibliotecas clases que permiten trabajar con Bitmaps dentro de un entorno de programación [WEB002]. Un Bitmap está compuesto por una serie unos y ceros que se agrupan para formar los píxeles de las imágenes (series de bytes que generan el color de un punto dentro de la imagen); cuanto más largas sean las series de unos y ceros más matices tendrán los tonos de grises o habrá más colores en las imágenes. Por ejemplo, una imagen con un formato de píxel de dos bits (aunque los formatos suelen ser múltiplos de un byte, esto es sólo un ejemplo) podrá mostrar hasta dos tonos de gris (dos bits permiten cuatro combinaciones distintas de colores), uno de blanco y otro de negro, mientras que un píxel con formato de 1 byte podrá mostrar hasta 256 tonos de grises o colores diferentes [WIKI02]. 20 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Uno de los atributos principales de los Bitmaps es su resolución, que es el tamaño en píxeles de la imagen; normalmente la calidad de las fotografías se determina por este valor ya que representa la potencia con que se ve la imagen, correspondiendo con el número de puntos digitales que hay en un centímetro cuadrado de la imagen. Cuanto mayor sea este número, mayor será la precisión con que se mostrará la imagen. Además de la resolución, otro atributo importante de los Bitmaps es el formato de los píxeles; los píxeles tienen asignada una determinada cantidad de bits para representar el color de los puntos de la imagen, de modo que en cuanta más cantidad de bits tengan asignada para representar el color en un punto de la imagen, más matrices y tonos de color se podrán representar en esta imagen digital. Esta cantidad de color es conoce como paleta de colores de la imagen. Los formatos de las imágenes se suelen representar en bpp, esta unidad representa los bytes por píxel que hay en la imagen. Figura 2.3: Análisis de un Bitmap 21 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA En C# la clase Bitmap contiene algunos métodos específicos para agilizar operaciones de manipulación de los Bitmaps como son el método LockBits, que permite acceder directamente a la zona de memoria donde está alojado el Bitmap y manipular los datos de la imagen mucho más rápido, o el método GetPixel, que mediante la introducción de las coordenadas del píxel que se quiere analizar se obtiene el valor numérico del color del píxel. Pero no sólo hay métodos específicos para las imágenes digitales, sino que también se incluyen propiedades (atributos propios de cada clase) que gestionan información útil a la hora de procesar un Bitmap, propiedades como PixelFormat, que contiene el formato de los píxeles de la imagen, o Width y Height, propiedades que contienen el ancho y la altura de la imagen, muy útiles en el caso de querer recorrer el Bitmap para analizar la información. Una de las propiedades que ha sido básica para el desarrollo de este proyecto es ColorPalette, una propiedad que almacena y muestra la paleta de color que utiliza la imagen; gracias a esta propiedad se puede configurar esta paleta de colores desde dentro del programa con un sencillo bucle. De este modo se implementó la paleta de colores de las imágenes para que éstas pasaran de ser en color a ser representaciones en escala de grises. Gracias a estos métodos es posible trabajar con la información contenida dentro de las imágenes y realizar gracias a ella un proceso que analice la imagen en búsqueda de objetos. En términos prácticos, ahora la información de imágenes o videos es tan fácil de utilizar desde un programa como la información de cualquier fichero. 22 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA La programación orientada a objetos El vehículo que utiliza este proyecto para poder parametrizar y manipular los objetos que la consola detecta es la Programación Orientada a Objetos. Gracias a los entornos de desarrollo que permiten trabajar con esta filosofía de programación se pueden diseñar programas que ayudan al programador a reconocer fácilmente las entidades que se interrelacionan en el programa. La Programación Orientada a Objetos se basa en la creación de clases (objetos) que son modelos de la realidad diseñados para representar un objeto real dentro de un entorno de programación [WIKI03]. Figura 2.4: Filosofía de la programación orientada a objetos Estos modelos incluyen atributos y métodos, los atributos describen objetos del modelo y los métodos representan las acciones que puede realizar el modelo dentro de su entorno; es de vital importancia que tanto los atributos como los métodos disponibles para las distintas clases capten lo mejor posible las funciones del objeto real que modelan. De este modo es fácil realizar un algoritmo que capte un modelo de la realidad y trabaje con él de forma sencilla; en este caso, ajustar los atributos y los métodos de los objetos correctamente se traduce en conseguir hacer un modelo de la realidad en tiempo real, lo cual es vital cuando el entorno donde se trabaja es el campo de la seguridad. 23 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Gracias a la programación orientada a objetos se puede mantener la atención del programa sobre distintos elementos de la imagen sin que la eficacia de éste se vea mermada, ya que el diseño de estos lenguajes de programación les hace mantener su potencia aunque tengan que manejar grandes cantidades de objetos al mismo tiempo. La ventaja más importante de la programación orientada a objetos es la sencillez con la que se invocan los métodos de los objetos; gracias a este diseño simple pero efectivo los programadores pueden acceder a la información de una forma más intuitiva y fácil de programar. 24 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Capítulo 3 25 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Metodología Empleada Para asegurar el éxito en el desarrollo de una aplicación, es necesario aplicar técnicas que permitan planificar, organizar y controlar las actividades que dan forma al conjunto del proyecto. Estas técnicas de desarrollo y control son diferentes y cada metodología presenta una forma particular de utilizarlas, así como sus propios métodos y técnicas. La metodología más extendida en la actualidad es la metodología estructurada, que define el desarrollo de un proyecto como una serie de pasos consecutivos que se conoce como ciclo de vida del sistema; una vez realizados estos pasos ya no se repiten durante todo el proyecto. Durante cada fase del ciclo de vida se analizan al máximo todos los matices del proyecto relacionados con el tema de estudio que se desarrolla en la fase antes de pasar al siguiente paso, de tal manera que los resultados generados en cada paso se conviertan en la información de entrada para la siguiente fase del ciclo de vida. La finalidad de las metodologías de desarrollo software es orientar a los desarrolladores de aplicaciones mediante una serie de pasos para generar un producto software de calidad que requiera el menor número posible de revisiones o nuevas versiones; es decir, cada metodología pretende automatizar la forma de generar aplicaciones software el máximo posible. Mientras que la metodología estructurada pretende generar el producto final mediante un único ciclo de estudio, la metodología extrema descompone el problema inicial en una serie de problemas más pequeños con una complejidad inferior para cada una de las cuales se desarrollará una solución; de este modo el producto final se compone de una serie de aplicaciones más pequeñas integradas durante el desarrollo del proyecto. 26 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Características de la Metodología Extrema Aunque la metodología estructurada es la guía más común para el desarrollo de productos software, este proyecto ha sido confeccionado mediante la metodología extrema o metodología XP. La metodología extrema aplica los mismos pasos que la metodología estructurada, pero repite todo el ciclo de vida más de una vez. Con cada iteración el alcance del estudio del problema aumenta de forma exponencial, en vez de tratar de llegar a la solución final con una única iteración. Este sistema de estudio hace que esta metodología sea conocida también como metodología ligera o metodología liviana, ya que cada fase de la secuencia de estudio tiene una duración inferior en esta metodología que en la metodología estructurada; de este modo se puede repetir la secuencia de estudio más de una vez, añadiendo mayor profundidad al estudio con cada iteración. Además, esta metodología repite el ciclo de vida del sistema, de modo que las reuniones de seguimiento del avance del producto son constantes, lo que implica que el intercambio de información debe ser fluido; esta característica de la metodología extrema no hace sino aumentar la agilidad del desarrollo de la aplicación. Figura 3.1: Comparativa de las dos metodologías de desarrollo de aplicaciones 27 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Como con la metodología extrema el alcance del proyecto se divide en varias fases de desarrollo, los objetivos globales del producto final deben acotarse de forma que se puedan alcanzar mediante la iteración de las fases de estudio; este método implica que primero se cumplan los objetivos más sencillos y básicos de la aplicación, dejando para las iteraciones finales aquellos objetivos que sean críticos. Este sistema ofrece una ventaja importante ya que siguiendo esta metodología es posible obtener resultados visibles desde las fases iniciales del desarrollo. Otra ventaja de la metodología extrema con respecto de la metodología estructurada es que los desarrolladores y analistas del producto tienen un mayor conocimiento del funcionamiento de éste con cada iteración; de modo que con cada iteración su trabajo es más preciso, lo que implica que los objetivos críticos se desarrollen e implementen con una mayor calidad. Además, gracias al desarrollo iterativo, se pueden modificar los objetivos iniciales durante el transcurso del desarrollo así como ajustar las funcionalidades del programa a los deseos del cliente y de los usuarios finales gracias a un análisis de los requisitos actualizado con cada ciclo de estudio, lo que hace que la metodología extrema sirva para desarrollar aplicaciones muy sensibles a las necesidades de los clientes y los usuarios finales. 28 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Las fases de desarrollo La metodología extrema permite descomponer el problema total en problemas más pequeños que pueden ser abordados por separado. Al plantear la estrategia para obtener los resultados necesarios que requería este proyecto se dividió el problema principal en varios problemas secundarios de forma que los resultados obtenidos al solucionar un problema secundario se obtuviera a la vez la información necesaria para ejecutar el siguiente paso. Figura 3.2: Descomposición del problema principal Gracias a la descomposición del problema se obtuvieron tres fases de estudio que debían ser desarrolladas durante el proyecto para que la aplicación final generase los resultados deseados. Para el desarrollo de cada una de estas fases se planificó un calendario mediante un diagrama de Gantt con el cual guiar el desarrollo de la aplicación. Los diagramas de Gantt permiten planificar las fases de desarrollo de una aplicación e incluso descomponer estas fases generales en sub-fases más concretas; además, las técnicas empleadas en este diagrama permiten relacionar las fases entre ellas según los criterios lógicos de desarrollo, creando una secuencia de elaboración de del proyecto y estableciendo una jerarquía entre las fases que lo componen, de modo que la creación del producto final se desarrolla de forma guiada. 29 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 3.3: Diagrama de Gantt de la planificación Manipulación de video mediante aplicaciones software La primera de las fases que se desarrollaron en el proyecto fue la fase de generación del proceso de carga del video dentro de la consola; este proceso tenía que abrir, identificar el formato del archivo, generar el soporte correspondiente para las imágenes del video y mostrar por pantalla los frames de los videos. Al ser la primera fase del proyecto, durante esta parte del desarrollo también se diseñó la mayor parte del interfaz de la consola con el usuario. En esta fase inicial, el interfaz del programa era bastante sencillo, se componía de una ventana de selección donde sólo había un recuadro de texto y un botón de selección. Figura 3.4: Objetivos de la primera fase del desarrollo 30 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 3.5: Vista del interfaz de la consola durante la primera fase de desarrollo Gracias a este interfaz la consola era capaz de solicitar los datos de entrada que requería para el proceso de carga del archivo de video. Una vez localizados los datos, la parte del interfaz se los enviaba al procesador del programa para que éste hiciera un análisis del archivo y generase una salida que el usuario pudiese identificar. Figura 3.6: Comunicación con el interfaz del programa Mediante el botón de selección la aplicación permitiría al usuario navegar dentro de su equipo para seleccionar el archivo de video que quisiera analizar. Esta forma de selección de archivos aceleraría el proceso ya que el usuario se evitaba tener que conocer y escribir en el recuadro de texto la ruta de acceso al archivo de video para que la aplicación pudiera procesarlo. 31 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 3.7: Navegación dentro del equipo para la selección del video Para obtener los resultados que se esperaban se consultaron diversas fuentes web [MSDN06] y [WEB005]. Gracias a estas fuentes se pudieron comprender los sistemas necesarios para cargar un fichero de video dentro de un sistema, para manipular archivos desde las aplicaciones hacen falta procesos de manipulación de archivos multimedia y gestores especializados de archivos de video; estos procesos necesitan bibliotecas de formatos de archivos para que los archivos de video puedan descomponerse en imágenes. Figura 3.8: Detalle del flujo de datos en la fase de carga 32 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Los gestores especializados analizan el formato del archivo multimedia que le ha sido enviado para obtener información acerca de las imágenes contenidas en el video, leyendo de los datos de la cabecera el tamaño o la calidad de las imágenes. De este modo es posible que los gestores de archivos inicialicen las imágenes de tipo bmp con la anchura y altura requeridas, para después volcar la información de las imágenes del video pixel por pixel, de modo que descomponen todo el vector de información del archivo de video en vectores de información más pequeños que contienen los valores del color de cada pixel. Una vez cargada la información del primer pixel dentro de un archivo de tipo bmp, el proceso envía este archivo al gestor del programa para que lo incluya dentro del contenedor correspondiente del interfaz. Figura 3.9: Salida por pantalla del primer frame del video seleccionado Gracias al proceso desarrollado durante la primera fase se pudieron introducir archivos de video dentro de la consola y ésta era capaz de descomponerlos para tratarlos como una secuencia de imágenes independientes. Una vez se pudieron identificar y manipular las imágenes de forma separada, se procedió a desarrollar la segunda fase del proyecto; en esta fase se aplicarían los distintos filtros para analizar las imágenes. 33 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Análisis de imágenes digitales Durante esta fase del desarrollo del proyecto se estableció como objetivo principal desarrollar un proceso que fuera capaz de aplicar los distintos tipos de filtros de análisis de las imágenes. Para ello el usuario seleccionaría un archivo de tipo bmp que el sistema recibiría utilizando el mismo interfaz que se desarrolló en la primera fase del proyecto. Figura 3.10: Objetivos de la segunda fase Figura 3.11: Salida inicial de la aplicación en la segunda fase Para analizar las imágenes mediante la consola de la aplicación, era necesario abrir los archivos bmp desde el más bajo nivel. Esto implicaba utilizar procesos que manejaran punteros para el acceso a las zonas de memoria donde se encontraba la información de las imágenes; una vez abierto el archivo de imagen se podrían aplicar los distintos filtros diseñados y desarrollados para analizar las imágenes. 34 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 3.12: Detalle del flujo de datos de la segunda fase Una vez desarrollada por completo esta fase, la consola sería capaz de aplicar los distintos filtros desarrollados y devolver una imagen transformada a partir de la imagen original. Figura 3.13: Resultados de la segunda fase Una vez desarrollada esta fase por completo, había que unir los dos programas desarrollados para generar una aplicación que pudiera analizar una secuencia de video completa. 35 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Análisis de las secuencias de video Gracias a las dos fases de desarrollo anteriores se generaron dos programas que podían abrir y descomponer un archivo de video y aplicar una transformación a un archivo de tipo bmp. Por lo tanto, en la tercera fase de desarrollo había que implementar las funcionalidades de ambos programas dentro de una única aplicación y añadir la inteligencia artificial que analizaría el movimiento de los objetos dentro del video. Figura 3.14: Objetivos de la tercera fase de desarrollo La implementación de las funcionalidades desarrolladas en las fases anteriores en una misma aplicación dio origen a un recorrido que debía seguir las imágenes obtenidas del video; el video era directamente enviado desde el interfaz al gestor de archivos a través del gestor del programa para ser analizado y que se generasen las imágenes que lo componían. Una vez generadas estas imágenes, éstas se reconducirían a través del gestor de archivos al gestor de imágenes para ser analizadas; el gestor de imágenes almacenaría las imágenes resultantes en una zona de la memoria hasta finalizar el análisis del video por completo. Una vez generadas todas las imágenes transformadas, el gestor de imágenes pasaría el control del programa al gestor del programa, el cual accedería al almacén de imágenes del programa para extraer todas las imágenes del video y abrir una conexión con el gestor de archivos. A través de esta conexión el gestor de archivos recibiría las imágenes transformadas con las cuales generaría el archivo de video que se devolvería al usuario. 36 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 3.15: Detalle del flujo de datos del programa Una vez integradas en el mismo programa las funciones desarrolladas en las dos primeras fases, la aplicación era capaz de generar video con imágenes transformadas. En este punto se desarrolló la inteligencia artificial que permitía analizar las imágenes generadas relacionando las imágenes entre ellas, hasta ahora el análisis de las imágenes sólo implicaba el uso de una de ellas. Para implementar esta funcionalidad a la inteligencia artificial de la aplicación se añadió un bucle en el gestor de imágenes, este bucle establecía que el gestor de imágenes debía acceder al Almacén de imágenes una vez finalizara el análisis inicial de las imágenes. Este segundo acceso permitiría al Gestor de imágenes comparar las imágenes transformadas según los algoritmos desarrollados y generar imágenes que modelarían el movimiento de los objetos de la secuencia de video original. 37 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 3.16: Flujo de datos de la aplicación final Finalmente, la aplicación genera podía analizar un video descomponiéndolo en imágenes individuales, aplicando a cada una de estas imágenes una serie de filtros con el fin de realzar la información que se buscara en cada fase del análisis, relacionando estas imágenes por parejas para obtener información sobre el movimiento de los objetos seleccionados en el video y finalmente generando un video de salida que contuviera la información generada por la consola sobre los objetos capturados en la secuencia de video. 38 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Capítulo 4 39 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Desarrollo del prototipo Introducción Este proyecto tiene como objetivo crear el prototipo de un sistema de vigilancia híbrido; este sistema estará operado por un usuario humano, pero las tareas de vigilancia más repetitivas (como el seguimiento de individuos que hayan entrado en escena o la comprobación del entorno en busca de objetos que hayan cambiado de posición o que hayan sido depuestos con anterioridad por parte de algún individuo) serán resueltas por la consola. Evitando la mecanización de la actividad laboral de los técnicos de seguridad se espera que los resultados de la vigilancia sean más satisfactorios que con los sistemas de vigilancia convencionales. Las tareas de supervisión de una pantalla de Figura 4.1: Comparativa de imágenes video vigilancia no requieren una gran dosis de 40 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA concentración pero son extremadamente repetitivas, creando así una rutina en la que los vigilantes de seguridad se ven inmersos. Para adaptarse a esa rutina, los vigilantes de seguridad desarrollan de manera instintiva técnicas de vigilancia mecánicas, las cuales ponen en peligro la integridad del sistema ya que el nivel de vigilancia se vuelve insuficiente. Mediante el procesado de las imágenes por parte del ordenador se espera liberar del trabajo más repetitivo al vigilante; el objetivo de este filtrado de la información por parte del ordenador es que la mente de este sujeto mantenga la alerta durante la totalidad de su turno de servicio pero se desgaste el mínimo posible durante todo ese tiempo. Para facilitar la labor de los vigilantes de seguridad, se ha desarrollado una aplicación que permita distinguir los elementos de la imagen proporcionada por una cámara de video, y resaltar las características e identificar aquellos objetos que sean más importantes. Este hecho permitirá por lo tanto mantener un nivel de calidad óptimo durante más tiempo en lo que refiere a las decisiones que deberá tomar el responsable de seguridad. Como este sistema de vigilancia es un prototipo, el sistema es capaz de definir las acciones de los objetos que sean captados por las cámaras de vigilancia, pero con un alcance muy inferior al que debería tener en caso de ser una herramienta profesional. La función de definir los objetos que están dentro de una zona, que a priori es una tarea muy amplia, se descompone en varias subtareas más pequeñas, fácilmente identificables y que en última instancia generan una sinergia positiva entre ellas y permiten una vigilancia global superior; de cualquier modo, todas estas subtareas deben complementarse. Estas subtareas son el análisis de los objetos de la imagen, la Figura 4.2: Flujo de información identificación de estos objetos y el análisis de las acciones de los objetos capturados en la imagen. 41 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Gracias al desarrollo y la implementación de estos tres elementos principales de la vigilancia en la aplicación, se espera que la consola de este primer prototipo tenga un nivel de respuesta aceptable. El diseño de este sistema de vigilancia se ha basado en un análisis piramidal de las imágenes proporcionadas por un stream de video. En una primera aproximación, la consola analiza las imágenes individualmente en busca de los objetos que la componen para luego analizar estos objetos e identificarlos y definir su naturaleza; finalmente, en la última etapa del análisis, se aplica la inteligencia artificial de la consola para evaluar las posibles acciones de estos objetos y lanzar los avisos que correspondan a los vigilantes de seguridad. La primera de estas tareas es la identificación de objetos en movimiento dentro de la imagen principal del la cámara que se esté analizando. Esta subtarea se ocupa de analizar la imagen de las cámaras para diferenciar cuales son las zonas de la imagen donde se encuentran los objetos móviles y cuáles son las zonas de la pantalla que representan el paisaje. El alcance de esta subtarea en este proyecto es sencillo, se espera que la consola sea capaz de localizar cualquier objeto que se esté desplazando por la imagen y generar una ocurrencia por cada uno de los objetos que haya localizado y definir la naturaleza del elemento que ha generado esta ocurrencia; además, se espera que la consola sea capaz de filtrar el movimiento superfluo de los elementos, ya sean elementos significativos o no (se espera que la consola sea capaz de filtrar el movimiento de las hojas de los árboles debido al viento o eliminar los cambios de color debidos al cambio de posición del Sol durante el día). Otra subtarea de la que se compone la vigilancia es la identificación de los objetos que hayan sido localizados dentro de la imagen. Esta subtarea es responsable de definir la naturaleza de los objetos dentro de la imagen con el fin de recopilar la mayor cantidad posible de información para los usuarios de nivel superior. Sin embargo, un requisito indispensable en este punto es asegurar que la información que 42 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA se suministre a los niveles superiores sea totalmente fidedigna; en un entorno de vigilancia automatizado, es mejor no establecer ningún elemento de juicio sin tener una certeza absoluta antes que trabajar con un falso positivo. De modo que cuando un sistema de vigilancia se encuentre operando en modo automático debe ser capaz de mantenerse a la espera para asegurar una identificación que se acerque lo máximo posible al 100%. En el caso de una vigilancia compartida (una vigilancia compartida es aquella en la cual la consola tiene el apoyo de un operario de seguridad) la consola lanzará un mensaje de identificación parcial cuando la identificación alcance un porcentaje predefinido, y será el técnico que esté supervisando el sistema el que determine si la identificación es positiva o no, estableciendo un nuevo perfil más completo para el sujeto recientemente identificado. De este modo el usuario podrá interactuar con la aplicación y ser parte activa en la vigilancia, ya que gracias a sus intervenciones, la aplicación podrá definir antes la naturaleza de los objetos que haya capturado dentro de la imagen. El alcance de esta subtarea en este proyecto es modesto, la consola debe analizar cada objeto localizado dentro de la imagen y a ser posible identificarlo como perteneciente a una de estas categorías: género humano, objeto o vehículo. Sin embargo, la identificación de los objetos es un campo de difícil automatización. Todos los seres humanos tenemos características comunes, esto hace complicada la diferenciación de un humano de otro por parte de una máquina, a excepción de las máquina con hardware especializado (como los lectores de huellas dactilares o los lectores de retina). Por otra parte, incluso dos objetos iguales (un par de mochilas de colegio, por ejemplo) son difíciles de identificar como idénticos por parte de una máquina debido a que hay variables que difieren de un objeto a otro (la orientación, la incidencia de la luz o los pliegues de la tela). 43 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA No obstante, es posible definir la naturaleza de los objetos capturados por las imágenes siempre que las clases donde se incluirán estos objetos no sean muy específicas. La definición de la naturaleza de los objetos es una parte crucial de la video-vigilancia; gracias a este paso, el sistema se puede tratar con una mayor precisión a cada tipo de objeto que se identifique en la imagen. Al identificar un objeto o individuo como tal dentro de una imagen, el sistema debe ser capaz de añadir una entrada en su base de datos de objetos activos dentro de la imagen; una vez completado el análisis inicial de la imagen, el sistema también debe ser capaz de recorrer estos registros y actualizar el estado de los objetos en función de la información que haya recogido durante el análisis. Si el análisis de la imagen fuera difícil porque la imagen se encontrase saturada de objetos, sería posible dejar el análisis en el estado en el que estuviera y retomarlo en la siguiente iteración de análisis. De este modo se iría completando el análisis de los objetos en su totalidad hasta que ya no quedaran nuevos objetos dentro del entorno de análisis del sistema. La ampliación de las funcionalidades de esta subtarea tiene muchas posibilidades; por ejemplo, en cuanto a la identificación de los seres humanos, es posible que la consola identifique a cada persona individualmente, de modo que se pueda tener un seguimiento de todos los empleados de la plantilla de una empresa al completo. Del mismo modo, los vehículos también pueden ser de nuevo categorizados por su naturaleza (motos, utilitarios o camiones). Finalmente, la última subtarea de este sistema de video-vigilancia es el seguimiento de los objetos durante su recorrido dentro de la pantalla o en el entorno que se establezca la vigilancia; esta subtarea permite lanzar avisos externos al sistema para notificar de comportamientos extraños a los vigilantes encargados de la supervisión de las pantallas de control del sistema. 44 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Los avisos lanzados por los procesos de este nivel serán más precisos ya que gracias a la clasificación de los objetos se registra y analiza la información sobre estos objetos de una forma más concreta, y por lo tanto, las decisiones que se toman acerca de ellos tienen una base con mayor fundamento. Esto implica que es necesario definir para cada clase un comportamiento común y una batería de acciones que no son habituales; en el caso de que la aplicación identifique a un objeto realizando una de estas acciones no-comunes la aplicación lanzará un mensaje de aviso al encargado de seguridad de la consola de vigilancia. El alcance de esta subtarea está definido por el cálculo de vectores de desplazamiento de los objetos y de la toma de decisiones sencillas por parte de la inteligencia artificial de la consola acerca de la interactuación de estos vectores con el medio (discernir cuando un camión estaciona o cuando una persona deposita un objeto en el entorno y de este modo modifica el entorno), pudiendo dar una idea aproximada sobre la velocidad o la dirección del objeto que se muestra por pantalla. 45 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Configuración del sistema La recepción de las imágenes se tramitará en el dispositivo final a través de una cámara de video; gracias a esta cámara de video se recibe un stream de video en formato digital. Un stream de video es un tipo de conexión digital que envía desde la cámara a la consola principal una serie de imágenes que muestran los elementos que está enfocando la cámara de vigilancia. Al tener un formato digital es posible tratar la información de las cámaras directamente desde la aplicación; la consola recibe las imágenes directamente y las convierte a un formato con el que es posible trabajar desde el entorno de programación, el formato de Bitmap, con lo cual puede empezar a trabajar con la información directamente con las herramientas que se han diseñado e incluido en el entorno de programación que están incluidas en la clase Bitmap de la plataforma C# (como los métodos y los atributos de la imagen digital). Gracias a esta conexión la consola puede recibir información en tiempo real sobre el entorno que debe vigilar con un formato que se puede manipular. Gracias a los métodos de la clase Bitmap, se puede acceder a la información de la imagen para realzar aquellos aspectos de la imagen que sean más importantes para el análisis o para optimizar el consumo de memoria (cambiar el contraste para perfilar mejor los elementos de la imagen o cambiar el formato de la imagen para que esta no tenga colores pero ocupe menos espacio en la memoria). Además de configurar las imágenes para que faciliten el procesamiento de la información que contienen, la conexión entre la aplicación y la cámara de video puede configurarse para que se ajuste a las necesidades del sistema que se desea implementar. Si la velocidad de procesamiento de la consola es un poco baja, es posible disminuir el ritmo con el que el stream de video vuelca las imágenes en la zona de memoria reservada para guardar las imágenes que se analizarán; con esta desaceleración se pretende disminuir la cantidad de información que tendrá que 46 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA procesar la consola y así liberar al procesador del sistema de toda la carga computacional posible. Al variar el ritmo de entrada de las imágenes se varía también la precisión del sistema ya que con un ritmo de captura más bajo, la vigilancia es menos constante, lo cual puede suponer que la actualización de los indicadores de la imagen se dé en intervalos más amplios, en vez de obtener una serie de imágenes donde los indicadores siguen a los objetos de forma fluida. No es necesario que el sistema analice todas las imágenes que la cámara de vigilancia es capaz de generar; el ojo humano es capaz de analizar 25 frames por segundo (un frame es la media con la que se expresa el número de imágenes que tiene un segundo de video), en el caso de analizar un stream con una cantidad mayor de frames se estaría sobresaturando inútilmente el sistema ya que la diferencia no es apreciada por el ser humano. Esto implica que si se analizaran todas las imágenes, el sistema tendría cuatro décimas de segundo para el ciclo de análisis de la imagen; no obstante, se puede omitir el análisis de varios intervalos para lograr varios objetivos. El primero de ellos es que si se obvian varios intervalos, el tiempo resultante para el análisis del intervalo más grande es proporcionalmente mayor (es la suma de los intervalos más pequeños). El segundo beneficio que se obtiene de analizar intervalos más distanciados en el tiempo es que el movimiento de los objetos es más fácil de identificar; mientras que las diferencias entre dos frames seguidos (en un stream de 25 frames por segundo o más) es imperceptible, esta diferencia se intensifica a medida que los frames están separados por más tiempo. De modo que con intervalos de análisis más amplios el sistema tiene más tiempo para analizar las imágenes, pero además la diferencia entre las imágenes es más grande, lo que ayuda con notoriedad al análisis de la imagen. 47 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Para conseguir un sistema de vigilancia lo más parecido al sistema ocular humano en cuanto a localización, clasificación, identificación y predicción de los movimientos de los objetos del entorno, el sistema tendría que ser capaz no solamente de localizar e identificar el movimiento de los objetos dentro de su entorno de vigilancia; si no que además, el sistema debería ser capaz de analizar el histórico de movimientos del objeto y junto a una correlación con su naturaleza, hacer un predicción de su comportamiento futuro. Además, tanto el análisis como el cálculo de la predicción deberían ser en tiempo real, utilizando tan solo las cuatro décimas de segundo que hay entre dos frames seguidos en un stream de 25 frames por segundo. Algunos estudios intentan automatizar ciertos aspectos de la visión humana, como por ejemplo el seguimiento de los objetos [CORR09] o la identificación de objetos mediante la descomposición en objetos más sencillos [BAND08], [PINT08]. Durante este proyecto se ha implementado un prototipo de sistema de vigilancia artificial que contiene estas funcionalidades; sin embargo, la información recibida para el análisis proviene de archivos de video que se encuentran dentro del equipo de pruebas. En posteriores fases de desarrollo se podrían codificar procesos de diálogo con los dispositivos de entrada de archivos visuales, no obstante, como el objetivo principal de este proyecto era desarrollar una inteligencia artificial que fuera capaz de desarrollar tareas de procesamiento de imágenes de alto nivel, estos proceso de diálogo se han obviado. 48 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Soporte de las imágenes Gracias a la ampliación de las bibliotecas de los lenguajes de programación orientada a objetos con clases como la clase ‘Bitmap’ para C#, es posible para los programadores interpretar y procesar imágenes desde aplicaciones de informática. Gracias a este avance, es posible diseñar aplicaciones que simulen el campo de visión humano para después ser integradas en aparatos robóticos con los que desarrollar actividades con el apoyo humano indispensable o aplicaciones de video vigilancia automatizada. Para trabajar con imágenes en C#, los diseñadores del lenguaje han desarrollado la clase Bitmap, una clase que está compuesta por métodos y atributos que resultan muy útiles al trabajar con imágenes. Los Bitmaps son el componente principal de los videos de seguridad y en este caso son la materia prima que se refina para obtener resultados tangibles. Gracias al rango tan variado de métodos con los que trabajar, es posible desarrollar procesos que manipulen diversos aspectos de la información que se encuentra dentro de una imagen; uno de estos atributos que pueden ser manipulados es el formato de los Bitmaps. El formato de los píxeles de los Bitmaps puede variar enormemente, puede ir desde 1 bpp (los bpp son los bits por píxel; el bpp es una metida que relaciona la cantidad de bits de memoria que se emplean en el sistema para representar un píxel, que es como se llama a los puntos de las imágenes), que permite tener imágenes en blanco o negro; hasta la el formato del sistema HDMI, que utiliza en su última versión un formato de 48 bpp (con un orden de billones de colores). Sin embargo, en este proyecto el formato de píxel más extenso con el que se trata es el de 32 bpp, una ampliación del 24 bpp o RGB estándar, un formato que permite almacenar y procesar imágenes en color. 49 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA El formato de los píxeles de una imagen determina la cantidad de memoria que ocupa una imagen; esta cantidad de memoria que se ocupa se puede utilizar para representar más colores dentro de la propia imagen o difuminar los colores ya existentes en sucesivos tonos del mismo color. Figura 4.3: Uso de la memoria según el formato En cuantos más bytes de memoria se hayan asignado a cada píxel, más se tardará en acceder a la memoria ocupada por un píxel y por lo tanto más se tardará en analizar la información de la imagen completa. El formato de los píxeles representa por tanto la definición de cada punto de la imagen, la precisión con que se puede alcanzar cada color real mediante los medios de que se disponen en el equipo, y hacer un buen uso del formato de un Bitmap implica poder trabajar con la suficiente información dentro de un programa sin comprometer la velocidad de procesamiento del programa. A continuación se presenta un pequeño repaso de las posibilidades de los formatos que los programadores tienen a su disposición; los formatos que han sido incluidos dentro de la aplicación tienen una explicación adicional con el fin de introducir al lector a su uso dentro de la consola. 50 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA - 1 bpp: Este formato genera imágenes en blanco y negro, con un bit para cada píxel; 0 para el negro y 1 para el blanco. Estas imágenes sencillas pueden servir para hacer un negativo de las imágenes reales con la información más vital de estas. En este proyecto se ha utilizado este formato no para generar imágenes como tal sino para generar un modelo de las mismas, de modo que se pueda trabajar con las siluetas modeladas de los objetos encontrados en las imágenes con formato superior, esta técnica ya ha sido utilizada en otros proyectos con finalidades similares [LEE08], [LAND08]. De este modo se puede representar la información vital para los niveles de análisis superiores con imágenes que ocupen un espacio mínimo y que por lo tanto no comprometen ni el espacio en memoria ni la velocidad de procesamiento de la consola. - 8 bpp: Este formato permite generar un rango de 256 colores distintos, lo que permite a los ordenadores representar imágenes a color con una paleta de colores sencilla con pocos matices. Además, gracias a un proceso sencillo, este formato puede ser configurado para que la paleta de colores esté compuesta únicamente por grises, creando así una escala de grises con una gran profundidad (256 matices de gris). Este proyecto se basa en gran medida por la utilización de este formato, sobre todo mediante la variante de la escala de grises. Esta opción permite transformar imágenes a color que consumen más memoria (32 bpp o 24 bpp) en imágenes que consumen una cantidad de memoria notoriamente menor (8 bpp, lo que es al menos una tercera parte de la ocupación de memoria original). 51 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Sin embargo, este formato permite mantener una cantidad importante de información de la imagen inicial en lo que se refiera a las siluetas de los objetos de la imagen, lo que permite identificar las poses y los movimientos característicos de los elementos de las imágenes. Además, pese a la pérdida de información relativa al color de los objetos, las 256 tonalidades de gris permiten analizar la imagen y caracterizar los objetos también por su color, no sólo por su forma. - 16 bpp: Este formato está compuesto por dos bytes, de modo que las opciones de configuración son amplias; a priori se pueden utilizar como la opción de 8 bpp con una precisión superior (el doble de bits por píxel permiten elevar al cuadrado la precisión de la imagen), pero además se dispone de una opción adicional. Se pueden utilizar los dos bytes por separado, uno para generar una paleta de colores exactamente igual a la del formato de 8 bpp (en color o en escala de grises), y los ocho bits restantes se pueden utilizar para dar matices a los colores, para difuminar los colores con 256 tonalidades distintas. Aunque este formato no se utiliza en este proyecto porque los resultados serían muy parecidos a los obtenidos con el formato de 8bpp, sería interesante estudiar el desarrollo de una ampliación de la consola con este formato para la implementación de cámaras con tecnología HDMI; de este modo se podrían desarrollar procesos que requiriesen mayor precisión en la imagen, como por ejemplo un proceso que realizara un zoom sobre zonas concretas de la pantalla (como por ejemplo para identificar los números de una matrícula). 52 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA - 24 bpp: Es el formato que se utiliza para el sistema RGB; con 24 bits se obtienen 3 bytes, cada uno de estos bytes se asigna a uno de los colores del RGB, azul, verde o rojo y a partir de la mezcla de los tres se obtiene el color real de la imagen. Este formato es el formato estándar que se utiliza en las conexiones de medios audiovisuales, por lo tanto es de suponer que los servicios de vigilancia ya implementados trabajen con este formato, salvo los equipos más especializados. - 32 bpp: Cuatro bytes por píxel es un formato que se utiliza para generar imágenes que además de soportar el sistema RGB incluyen un byte para representar el brillo del píxel, lo que redunda en una mayor profundidad en los matices de los colores generados por el sistema RGB. - 36+ bpp: Estos formatos generan imágenes con un rango de colores inmenso, para el formato de 36 bpp más de 68 000 millones de colores y para el formato de 48 bpp más de 281 billones de colores. Estos formatos se utilizan en la tecnología HDMI, pero de momento no son funcionales en el análisis de la tecnología artificial por su carga computacional. No obstante, es de suponer que los nuevos sistemas de vigilancia, trabajando sobre procesadores más potentes, incluyan en su software procesos que trabajen con este formato de imagen digital. 53 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Este proyecto está diseñado para recibir y devolver imágenes con formatos 24 bpp y 32 bpp, ya que son los más comúnmente utilizados en la actualidad en lo que se refiere a captura de imágenes. Estos son formatos que proporcionan toda la información del análisis. Sin embargo, no se puede realizar este análisis con imágenes de este formato ya que se podría comprometer la velocidad de procesado de la información. Por este motivo, dentro de la consola sólo se trabaja con imágenes en formato 8bpp o inferior. Al captar una imagen con formato superior a 8bpp, inmediatamente se lanza un método que transforma las imágenes con este formato en su réplica en formato 8bpp, ganando una reducción del consumo de memoria de un 300% o 400%, lo cual permite disponer de más tiempo para implementar más niveles de análisis para la secuencia de imágenes. Esta transformación de las imágenes permite trabajar con un formato definido y establece un estándar dentro del programa para trabajar con los filtros que se irán aplicando sucesivamente a las imágenes. Tanto individualmente como por separado, los Bitmaps son analizados píxel por píxel, esto es posible únicamente si se descompone la imagen por completo. La descomposición de la imagen implica que se debe trabajar con el nivel de la memoria para saber la información que contienen los píxeles y a la vez poder trabajar con ella. 54 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Acceso a memoria La memoria de un ordenador es una serie finita de casillas que está ordenada como un vector lineal donde guardar la información. Toda la información con la que se trabaja en un ordenado reside dentro de su memoria, almacenada en transistores biestables (pueden almacenar el estado 0 ó 1) conocidos como bits; los bits se organizan en series de ocho bits, estas zonas son conocidas como bytes o palabras. Estas palabras son series de unos y ceros ordenados de tal manera que mediante procesos informáticos se puede recomponer una traducción de la información analógica en formato digital. Figura 4.4: Almacenamiento de una imagen 55 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA El sistema operativo de los ordenadores tiene mecanismos que protegen la memoria de la manipulación incorrecta durante la ejecución de los programas; sin embargo, los programas tienen implementados ciertos métodos que les permiten acceder a la memoria del sistema para satisfacer las necesidades del programador. Gracias a estos métodos es posible manipular la memoria de las imágenes de forma segura, sin borrar ni sobrescribir información vital que estuviera alojada cerca de la zona de memoria donde se encuentren las imágenes. Gracias al método LockBits se puede acceder a las zonas de memoria donde se encuentran almacenados los bytes que representan la información de los píxeles de las imágenes. De no utilizar este método, los programadores no podrían acceder a la memoria de las imágenes directamente; sin embargo, gracias a este método se puede acceder a la información bit a bit, independientemente de la extensión del archivo de imagen. Esto permite a los desarrolladores trabajar con la información desde la aplicación, no como un conjunto indisoluble, sino como una serie de parcelas de información que pueden ser procesadas por separado. Mientras que una fotografía o imagen sobre un soporte físico como el papel o sobre una pantalla puede ser fácilmente reconocible por cualquier persona, cuando se guarda una de estas imágenes en formato digital esta facilidad a la hora de identificar elementos se pierde. En memoria, las imágenes son fragmentadas en parcelas de información más pequeñas denominadas píxeles y almacenadas en la memoria del ordenador como si se tratara de una serie de pequeñas diapositivas. Por este motivo el desarrollador del programa debe diseñar e implementar unos algoritmos con los cuales se pueda acceder a la zona de memoria donde se encuentra la imagen, reorganizar la información de la memoria y recomponer la imagen. 56 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Tratamiento de las imágenes Al acceder directamente a la información se puede trabajar con ella al nivel más bajo, utilizando punteros que señalen directamente las zonas de memoria de los píxeles, pudiendo trabajar incluso con el valor numérico de los píxeles, esto permite al programador trabajar con los píxeles como si fueran una variable numérica, no como una variable que está guardando un color. Sólo de esta forma ha sido posible aplicar los filtros de imagen necesarios para analizar las imágenes. El acceso a la memoria ocupada por una imagen se hace gracias al método LockBits, método que proporciona un vector con todos los bytes de la imagen, lo que permite acceder a la información de la imagen desde un entorno de programación. Como hemos visto en el punto anterior, la presentación de la información con este vector podría dificultar al programador el diseño de los filtros que quisiera aplicar a la imagen ya que las imágenes no están guardadas en memoria como lo están en el formato analógico, esto es una gran diferencia con respecto a la vida real ya que en el formato digital la aplicación de estos filtros es mucho menos intuitiva. Sin embargo, gracias a los atributos de altura y anchura del Bitmap, se puede analizar la imagen como un mapa de bits, una cuadrícula que atraviese uniformemente la imagen transversal y longitudinalmente; la imagen se puede representar por una función del siguiente estilo: f(x,y) donde x e y son las coordenadas del píxel el resultado f(x,y) de la función es el valor del color del píxel Gracias al acceso píxel a píxel de la imagen, es posible realizar una serie de mediciones que permiten evaluar ciertas características de la imagen que se está procesando. El histograma de una imagen es la herramienta más completa para evaluar la calidad de una imagen y por tanto valorar cuales son las transformaciones más oportunas que se deben aplicar a la imagen para que ésta sea más fácil de analizar [WEB003]. 57 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA El histograma de una imagen contiene la distribución de los niveles de gris de la imagen, gracias al cual se pueden calcular la intensidad Figura 4.5: Histograma de un retrato media o la dispersión de los valores de gris de la imagen. El objetivo es conseguir una imagen con un valor de dispersión lo más grande posible, lo que se traduce en unos valores de gris distribuidos uniformemente. Los histogramas de estas dos fotografías son muy diferentes, en la primera, el histograma es bastante plano, con los niveles de gris repartidos a lo largo de la escala. Sin embargo, en la segunda imagen el histograma Figura 4.6: Histograma de un plano general es unimodal, con la mayoría de los niveles de gris acumulados alrededor de un único valor. Mientras que la primera imagen es candidata a seguir con el proceso de análisis, la segunda debe ser refinada para optimizar su análisis. El objetivo del cálculo del histograma de una imagen no es otro que obtener un elemento de referencia que permita a la inteligencia artificial determinar si la materia con la que va a trabajar está en óptimas condiciones o si por el contrario debe ser procesada, tanto para su uso por parte del sistema mismo o por parte del técnico en seguridad que supervisará la consola. 58 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA En el caso de que la imagen esté en óptimas condiciones para ser analizada, se aplicarán entonces una serie de filtros con los que se obtiene una información concreta; por el contrario, si el análisis del histograma así lo aconseja, se aplicarán otra serie de filtros para pulir la imagen y así obtener información de mejor calidad. Al procesar una imagen puede que sea necesario o útil refinar antes la imagen para obviar detalles que no sean importantes o agrupar la información para que sea más fácil al ordenador resaltar los objetos más importantes. Para refinar la información de imágenes se aplican los filtros de imágenes, estos filtros o efectos son operaciones matemáticas que se aplican a los valores numéricos de los bytes de los píxeles. Un filtro es una función matemática que se aplica a una imagen gracias a la descomposición de la imagen en la función f(x,y). La operación del filtro se puede representar por la siguiente operación: Ecuación 4.1: Aplicación de un filtro Los filtros se pueden dividir en dos grandes grupos de filtros, los filtros de punto o los filtros espaciales [WEB003], esta distinción entre los grupos hace referencia al modo de calcular el valor del color de los píxeles de la imagen. Los filtros de punto requieren conocer únicamente el valor de la intensidad de un solo píxel a cada paso, la transformación se aplica píxel por píxel; una vez aplicada esta transformación al píxel, éste ya no es necesario en el algoritmo. El otro gran grupo de filtros está formado por los filtros espaciales, estos filtros tienen como objetivo modificar la composición de la imagen en función de las distintas 59 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA agrupaciones de los píxeles; es decir, el color de un píxel se obtiene en función del valor de sus vecinos. A continuación se presentan aquellos filtros que han sido desarrollados y se utilizan en la consola del proyecto. Aunque estos filtros se aplican siguiendo una secuencia concreta dentro de la consola, en este capítulo sólo se presentan los efectos de los filtros sobre las imágenes y los algoritmos desarrollados e implementados dentro del prototipo. La escala de grises La escala de grises es un concepto que se emplea para definir a las imágenes en blanco y negro; puede que haya más o menos tonalidades, pero los colores siempre son derivados del gris. Gracias a este filtro, es posible generar imágenes que mantengan la información básica de las imágenes originales; se mantiene la silueta de las personas y los objetos que hay dentro de la imagen, pero sin el color de la imagen original. Una de las mayores ventajas que ofrece el filtro de escala de grises es que permite reducir considerablemente la cantidad de memoria que ocupa una imagen. Mientras que una imagen con color ocupa al menos 24 bpp, que con una resolución normal de 320 x 240 píxeles, implica un peso de 230400 bytes por imagen; sin embargo, una imagen de 8 bpp del mismo tamaño ocupa 76800 bytes, tres veces menos. Este ahorro de memoria es todavía mayor si el formato es de 32 bpp, lo cual implicaría una reducción del 400% de la ocupación de la memoria. El formato de 24 bpp genera una secuencia única de 16 777 216 valores posibles para los colores de la imagen; no obstante, el sistema RGB está basado en la generación de una imagen a partir de la superposición de los colores azul, verde y rojo; Estas imágenes pueden descomponerse en tres funciones que acotan los valores de los colores azul, verde y rojo entre 0 y 256. 60 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Ecuación 4.2: Descomposición del sistema RGB Para aplicar el filtro de escala de grises a la imagen sólo se deben recorrer los bytes del vector de forma lineal, es decir, no hace falta saber cuáles son los píxeles que están cerca de píxel que se está analizando. La única consideración que hay que tener es el formato de entrada de los datos; las imágenes de entrada pueden ser de formato 24 bpp o 32 bpp, esta diferencia de un byte es relevante así que se debe tener en cuenta a la hora de calcular el valor en gris del color del píxel ya que de tener un formato de 32 bpp, habría que saltar la casilla de memoria que contuviera la información del nivel de alfa del píxel. Figura 4.7: Filtro de la escala de grises A continuación se presenta la fórmula para transformar una imagen en color a una de escala de grises. Como el acceso a los bytes de la memoria es secuencial, aplicarla no es problemático ya que sólo hay que acceder a la memoria de la imagen original tres veces por cada píxel, el siguiente acceso a la memoria será el acceso al byte azul del siguiente píxel y este paso define el comienzo de la siguiente iteración. En 61 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA caso de que el formato sea de 32 bpp, entonces hay que hacer un salto adicional para obviar la información que hay en ese byte. Ecuación 4.3: Aplicación del filtro de escala de grises El algoritmo implementado en el prototipo de la aplicación transforma las imágenes con formato Format24bppRgb o Format32bppArgb; para ello, al recibir la imagen de mapa de bits, el proceso lee la cabecera del archivo y crea un archivo bmp con formato 8bbIndexed y dos punteros, un puntero con el cual selecciona la zona de memoria donde se encuentra almacenado el vector que contiene la información de los píxeles y otro que apunta al a zona de memoria vacía de la nueva imagen generada. Dentro del bucle análisis, el sistema lee los tres primeros bytes con el puntero (en caso de que la imagen tuviera un formato el sistema haría saltar un byte al puntero) y acumula los valores leídos en una única variable, al finalizar la iteración, el proceso divide el valor acumulado por tres y lo inserta en la zona de memoria a la que apunta el segundo puntero, inmediatamente después, éste avanza una posición dentro del vector de memoria de la nueva imagen. De esta forma se genera una nueva imagen con escala de grises sin desechar la imagen original. 62 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 4.8: Diagrama de flujo del algoritmo de escala de grises Gracias a la aplicación de este filtro se consigue un ahorro de memoria teórico del 300% o del 400% en el mejor de los casos ya que se transforma una información que inicialmente ocupa en espacio de 24 bpp o 32 bpp a un tamaño de 8 bpp, lo cual es un tamaño muy inferior. Esta reducción del tamaño no sólo implica que se pueda 63 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA trabajar con un mayor número de cámaras de forma simultánea, sino que además significa que el procesador tardará menos tiempo en terminar de analizar la imagen. Figura 4.9: Aplicación del filtro de escala de grises 64 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Función de contraste El contraste de una imagen es la diferencia niveles claros entre de y gris niveles oscuros; la técnica de realce del contraste se basa en dividir el rango de niveles en tres grupos de valores, los grises claros, los grises intermedios Figura 4.10: Análisis para el filtro de contraste y los grises oscuros y aplicar a cada uno de estos grupos una transformación que proviene de una función lineal diferente para cada grupo. Ecuación 4.4: Aplicación del filtro de contraste Gracias a la aplicación de esta técnica, es posible expandir la dispersión de los niveles de gris a lo largo del histograma consiguiendo una imagen con unos colores más definidos. 65 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Esta transformación genera imágenes con más calidad, además, las transformaciones necesarias son ejecutadas por la inteligencia artificial si los parámetros de lectura del histograma así lo determinan. Posterización La posterización consiste en separar todos los niveles de grises de la imagen en una serie limitada de zonas planas de valor constante. La asignación del valor de un píxel a una u otra zona depende de su intensidad en la imagen original. El objetivo de este filtro es limitar el número de tonos que puede alcanzar en la nueva imagen, haciendo más evidentes las superficies de la imagen, limitando de tal manera el nivel de pueden detalle que alcanzar las Figura 4.11: Análisis de la posterización imágenes. Gracias a la posterización las facciones de los individuos y las líneas que definen los contornos de los objetos son más nítidas, de modo que identificar la naturaleza de los objetos que se encuentran en la imagen se vuelve más sencillo. Esta técnica puede especialmente útil en entornos donde el nivel de luz no influye demasiado, como en el interior de los edificios; gracias a la delimitación de estas zonas, se pueden determinar los rasgos de la cara de una persona y por lo tanto llegar incluso a identificarla, como veremos más adelante. Sin embargo, en el exterior, 66 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA la eficacia de esta técnica puede ser mermada por la rápida variación del brillo de la luz en las superficies y por la distorsión que esta variación genera. Ecuación 4.5: Aplicación del filtro de posterización El algoritmo implementado en el prototipo del sistema genera una imagen nueva y dos punteros que apuntan inicialmente al principio de la zona de memoria de cada una de las imágenes. Un puntero recorre todo el vector de información de la imagen para acceder al valor de gris de cada píxel para luego calcular el estrato de gris correspondiente. Una vez calculado este valor, el sistema lo asigna a la zona de memoria a la cual apunta el segundo puntero generado por el proceso, que recorre la imagen nueva en paralelo al Figura 4.12: Flujo de datos del proceso de posterización puntero que apunta a la imagen original. 67 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Función Umbral Una de las transformaciones más sencillas que podemos aplicar a una imagen es la función umbral. El método genera una imagen en dos tonos (blanco y negro) a partir de otra con múltiples niveles de gris, es decir, la salida es binaria. Puede afirmarse que la umbralización es en realidad un caso extremo de ampliación de contraste ( x1 = x2 ; y0 = y1 = 0 ; y2 = y3 = L-1 ). La expresión matemática de esta transformación es: Ecuación 4.6: Fórmula de la función umbral El umbralizado transforma el histograma de la imagen original en un histograma de dos puntos, con valores sólo para el negro y el blanco. El valor de umbral B es el que sirve a la consola para calcular cuales son píxeles que cumplen las condiciones de transformación. La elección de B es uno de los mayores problemas de la función umbral, puesto que no se pueden dar unas reglas a seguir para calcularlo, cada imagen tendrá uno o varios valores válidos para B según sea la segmentación que se desee conseguir. La función umbral es una de las más importantes y sencillas técnicas de segmentación, puesto que en muchas aplicaciones de procesado de imágenes se desea dividir una imagen de grises en subregiones; sin embargo, en este proyecto el umbral no se ha definido de forma tradicional, sino que se ha implementado para ser utilizado en complemento de la función de posterización. 68 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 4.13: Análisis del filtro de la función umbral La función de posterización delimita una serie de zonas de colores planos, el algoritmo diseñado identifica los cambios de color entre estas zonas y dibuja un punto blanco en cada pixel donde haya identificado un cambio de color. De este modo se genera una imagen con la delimitación de las zonas del mismo color. Figura 4.14: Binarización de la imagen original 69 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Para implementar este algoritmo se desarrolló un proceso que recorriera la imagen original generando dos punteros situados sobre zonas de memoria consecutivas y un tercer puntero que recorriera la imagen nueva en paralelo al puntero menos avanzado de los otros dos. Si al comparar los valores de las zonas de memoria los valores no son iguales, el puntero que apunta sobre la zona de memoria de la nueva imagen escribe el valor correspondiente al blanco absoluto sobre el píxel donde se encuentra. Esta comparación no se realiza si el puntero más avanzado apunta a la primera posición de una línea de la imagen. Figura 4.15: Flujo de datos del proceso de binarización 70 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Algunos algoritmos espaciales [WEB003] tienen una fuerte carga computacional, en concreto aquellos algoritmos que sirven para definir con mayor precisión el contorno de los objetos de las imágenes. Debido a que esta precisión no es necesaria para el desarrollo de este proyecto y que la carga computacional que implica la implementación de estos algoritmos es muy pesada, por lo que sólo se ha incluido un único filtro espacial. Sin embargo, hay que tener en cuenta que la implementación de estos algoritmos pueden ser el siguiente escalón para incorporar cámaras con tecnología HDMI en los procesos de vigilancia en tiempo real ya que permiten compensar y definir mejor la información captada por las cámaras de HDMI, estas cámaras pueden alcanzar un nivel de detalle que sobrepasa al alcance de este proyecto. Pixelado El único filtro espacial que ha sido desarrollado en este proyecto es el filtro de pixelado. Los filtros espaciales se basan en los valores de los píxeles que tiene a su alrededor el píxel que se está procesando para calcular el valor resultante. Estos filtros tienen una carga computacional muy importante y los resultados ofrecen una precisión que no es requerida para el desarrollo de este proyecto, por este motivo, el filtro del pixelado ha sido el único filtro para el cual se ha desarrollado el código que lo implemente en el prototipo del sistema. El filtro del pixelado permite obtener una imagen difusa con respecto a la imagen original, no obstante, la imagen resultante mantiene el contorno básico de los objetos de la imagen original. Este filtro permite analizar los elementos más comunes de la imagen original, y aplicado a las imágenes de una secuencia, permite calcular los movimientos más básicos de los objetos. 71 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 4.16: Aplicación del filtro de pixelado Además, este filtro permite reducir la cantidad de información que se debe almacenar en memoria ya que el filtro del pixelado calcula el valor medio de gris de una zona de la imagen. Si el área de pixelado es de 5x5 píxeles, entonces sólo hace falta almacenar un valor por cada 25 píxeles de la imagen que se mostrará. Ecuación 4.7: Aplicación del filtro de pixelado 72 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA El algoritmo desarrollado para implementar el filtro de pixelado dentro de las funcionalidades del prototipo accede a la información de la imagen suministrada y genera otra con un tamaño más reducido. Para calcular la media de los valores de las áreas se emplea un vector con un tamaño igual al número de píxeles de la imagen que se va a generar y dos punteros, uno apuntando hacia la primera posición de memoria de la imagen suministrada y otro apuntando hacia la segunda imagen, la imagen que será el resultado del filtro. Figura 4.17: Esquema conceptual del filtro de pixelado La codificación de este filtro requirió desarrollar dos fases dentro del proceso, en la primera se acumulan los valores de los píxeles de la imagen y en la segunda fase se calculan y se cargan estos valores dentro de la imagen resultante. 73 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 4.18.1: Flujo de datos en la fase de acumulación del proceso de pixelado 74 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 4.18.2: Flujo de datos de la fase de carga del pixelado En la primera fase del proceso dos bucles consecutivos que recorren los vectores donde se encuentra almacenada la información, gracias a estos bucles los punteros apuntan sobre las zonas de memoria correctas, además se controla que los punteros no salgan de la zona de memoria con la que se trabaja. 75 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Mientras que el primer bucle sirve para acumular el valor de los píxeles por columnas, el segundo de estos bucles añade a los valores ya acumulados los valores de las filas correspondientes, terminando así la acumulación de los valores de los píxeles de la misma área. Durante la segunda fase del filtro se recorre el vector generado en la primera fase; mediante otros dos bucles, esta vez anidados, se pueden cargar los valores almacenados en el vector (previamente se calcula el valor medio de cada píxel dividiendo el valor almacenado por el área que se pretende ocupar con cada megapíxel del pixelado) dentro del píxel correspondiente (cada uno de los bucles conserva la cuenta de las coordenadas del píxel en la imagen final). Gracias a los filtros de imagen se puede refinar cualquier frame del video para que el resultado sea una imagen que realce la información que se quiere analizar. Una vez aplicados estos filtros, lo que podría denominarse como la primera capa de la inteligencia artificial, se procede a aplicar la segunda capa de inteligencia, un proceso según el cual se procesa la información con una finalidad más concreta, como detectar el movimiento de los objetos, evaluar dicho movimiento, o identificar los objetos de la imagen. 76 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Análisis de las imágenes Una vez se ha completado el refinamiento de la imagen recibida por la consola, se procede a su estudio desde el punto de vista de una secuencia de imágenes; es decir, se relaciona la imagen que se está estudiando con el resto de las imágenes del stream que recibe la consola. El análisis de la imagen actual se divide en dos, primero se analiza la imagen actual con respecto a una imagen de referencia establecida por la configuración del sistema, y más adelante con respecto a la imagen inmediatamente anterior de la imagen actual; estas dos imágenes servirán como referencia para establecer cambios en el instante actual con respecto a los instantes pasados y estudiar los movimientos de los objetos que originaron estos cambios. Filtrado con la imagen de referencia El registro de una imagen que sirva de referencia es vital para la video vigilancia automatizada; estas imágenes establecen una referencia para el análisis del resto de las imágenes del video. Estas imágenes corresponden con el fondo de imagen que se pretende vigilar; es decir, representan el entorno que se desea vigilar sin objetos adicionales como personas o vehículos. La finalidad de capturar una imagen de referencia es establecer un filtro para las siguientes imágenes; gracias a este filtro se pueden obtener imágenes que contengan únicamente aquellos objetos que se encuentren en movimiento en la escena sujeta a la vigilancia. Esta detección es posible mediante la comparación de la imagen que se desea analizar con respecto a la imagen que se ha tomado como referencia. Se compara las imágenes píxel por píxel descartando aquellos que no han cambiado, gracias a este proceso, se consigue una imagen donde únicamente se 77 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA mantienen los píxeles correspondientes con la representación de los objetos que hayan incurrido en la escena. Figura 4.19: Aplicación del filtrado píxel por píxel Esta técnica presenta diversos problemas de implantación; el más importante de ellos es la variación del brillo de las superficies debido a la variación de la luz. A lo largo del día, la luz solar varía en potencia y en ángulo de incidencia ya que la Tierra está en constante movimiento alrededor del Sol. Este fenómeno implica que la luz no es constante durante todo el día, lo cual hace variar los colores que capta la cámara. Como la comparación de las imágenes se basa en comparar directamente los 78 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA píxeles de las imágenes, estas variaciones en el brillo de las superficies pueden implicar que el color captado para un mismo píxel sea distinto por la mañana y por la tarde, mientras que la superficie que lo refleja sigue siendo la misma. Este problema puede solucionarse de dos formas distintas; mediante la implementación de un margen de filtrado en la consola o la actualización constante de la imagen de referencia. El margen de filtrado permite obviar las ligeras variaciones del color. Si durante el análisis de todos los píxeles de la imagen, se establece un rango de tonos alrededor del nivel de gris del píxel de la imagen de referencia, y el color del píxel de la imagen actual de la cámara se encuentra dentro del rango de tonos cercanos al color de su par en la imagen de referencia, entonces este píxel se establecerá como no variante. El método de actualizar la imagen de referencia se basa en que el fenómeno de variación de la luz durante el día es muy lento; las variaciones que se puedan dar en un lapso de tiempo pequeño pasarán desapercibidas en la consola. Si la consola actualiza constantemente la imagen de referencia que tiene del entorno que vigila, entonces las variaciones en la luz a lo largo del día no afectarán en gran medida y no contaminarán el análisis de las imágenes. El refresco constante de la imagen de referencia conlleva un peligro inherente, puesto que si la cámara no tiene disponible una imagen parecida a la imagen inicial (debido a que un coche haya estacionado dentro del entorno o que alguien haya depuesto un objeto en un entorno interior) la imagen que se capturará no corresponderá completamente con la imagen de referencia que se tomó inicialmente. 79 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Filtrado con la imagen inmediatamente anterior El estudio de la imagen actual con respecto a la imagen inmediatamente anterior permite a la consola actualizar y calcular con mayor precisión los movimientos de estos objetos. El estudio de la imagen actual con respecto de la imagen inmediatamente anterior añade matices a la descomposición del movimiento de los objetos. Inicialmente, la consola puede comparar la imagen actual con la imagen de referencia para estudiar de forma básica el movimiento de los objetos, pero el análisis de la imagen anterior permite captar el movimiento de las partes en movimiento de los objetos. Mientras que la comparación de la imagen con la imagen de referencia siempre define el elemento en movimiento como un único objeto indivisible, la comparación de la misma imagen con respecto del fotograma inmediatamente anterior proporcionará una imagen donde sólo se mantendrán aquellas partes del elemento que se encuentren en movimiento. De este modo la consola tendrá la información suficiente para identificar los matices del movimiento de los elementos en desplazamiento. Figura 4.20: Comparación de dos fotogramas consecutivos 80 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA La operación de comparar dos fotogramas consecutivos genera una imagen que a priori parece incompleta puesto que no todos los píxeles que variaron con respecto de la imagen de referencia se mantienen en esta nueva imagen. Esto se debe a que normalmente la superficie de los objetos suele ser de colores homogéneos y a que el tiempo entre cada fotograma es mínimo; por lo tanto, aunque esta superficie se mueva por el espacio las variaciones del color en un lapso de tiempo tan pequeño sólo son registradas en los bordes de la superficie en movimiento. Figura 4.21: Secuencia de análisis de los fotogramas 81 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA El ser humano no percibe los cambios entre dos imágenes consecutivas en una secuencia de 24 fotogramas por segundo; sin embargo, una máquina sí puede analizar las imágenes y calcular la diferencia entre los valores de los píxeles que hayan cambiado. Los resultados de este proceso serán el punto de partida para el análisis del movimiento de los elementos de la imagen. Mejora de los filtros mediante el pixelado Gracias a la comparación píxel por píxel de las imágenes con la imagen de referencia y la imagen inmediatamente anterior se pueden obtener imágenes que contengan aquellos objetos que se encuentran en movimiento dentro de la imagen. No obstante, antes de trabajar directamente con la información se debe procesar ésta para que su análisis sea más fácil para la consola. Figura 4.22: Secuencia de análisis de un fotograma con pixelado 82 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Al aplicar el filtro del pixelado se agrupan los píxeles por áreas, de este modo los resultados son más evidentes y más fáciles de interpretar para el ojo humano. Además, las imágenes generadas de este modo pueden ser vectorizadas, lo que implica una reducción del uso de la memoria, haciendo que el uso de estas imágenes por la memoria sea más rápido. Cada píxel de una imagen normal ocupa un bit, sin embargo, gracias al pixelado, los píxeles de la misma área de pixelado comparten el mismo valor de gris. Por lo tanto, si se aplica un algoritmo que permita registrar el valor de un área de la imagen dentro de un vector de bits, se puede almacenar una imagen gracias a un vector de bits que tenga unas dimensiones más reducidas que las dimensiones de una variable Bitmap estándar. En el caso de almacenar una imagen pixelada en áreas de 5 píxeles de longitud, se obtiene una Figura 4.23: Secuencia de almacenamiento de una imagen pixelada reducción del 2500%, ya que sólo se almacena un píxel de cada 25. 83 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Gracias a este filtro, se almacena la información en un espacio de memoria más reducido, lo que permite tener acceso más rápido a la información, lo que redunda en la posibilidad de aplicar más filtros a las imágenes que hayan sido pixeladas y mejorar así los resultados de procesamiento. Además, el uso del pixelado permite obtener información preliminar sobre el estado de los objetos de la imagen, gracias al pixelado se puede enmarcar aquellos objetos de la imagen que se encuentren en movimiento, haciendo más evidente su posición en la imagen. Figura 4.24: Secuencia de localización de los elementos de las imágenes Una vez el objeto en movimiento ha sido localizado dentro de la imagen, la consola genera una ocurrencia dentro de la base de datos con la información referente al objeto. Esta información puede incluir datos básicos como la posición del objeto o el nivel de color medio de la superficie; de este modo la consola puede identificar el objeto durante una secuencia de imágenes, no sólo en una única imagen. 84 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Aunque este proceso permite lanzar mensajes a los operarios acerca de la localización de los elementos en movimiento, los resultados que se pretenden alcanzar con la consola son más ambiciosos ya que los objetivos de este proyecto incluyen el desarrollo de la inteligencia artificial necesaria para analizar las imágenes de una secuencia y estudiar el movimiento de los objetos que se localicen. 85 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Identificación de categorías Una vez localizados los elementos dentro de las imágenes, la consola inicia el proceso para el reconocimiento de estos objetos con el fin de discriminarlos para poder determinar su posible comportamiento dentro de un rango más concreto de acciones. El diseño y desarrollo de un sistema de inteligencia artificial que permita analizar y evaluar la naturaleza de los elementos de las fotografías es una tarea compleja; establecer los parámetros que definen la naturaleza de cada categoría y desarrollar aquellos algoritmos que permitan identificar estos elementos característicos son las dos dificultades de esta fase de desarrollo. Establecimiento de los criterios comunes de clase Este proyecto se desarrolló con el objetivo inicial de diseñar un sistema que pudiera analizar una imagen e identificar los objetos en movimiento. Esta identificación debía ser efectiva para tres grupos distintos de elementos que pudieran encontrarse dentro del objetivo de la cámara de vigilancia; estas tres categorías son los las personas, los objetos, y dentro de la categoría de objetos, separar los vehículos del resto de objetos comunes. A priori, la categoría que resultó ser más fácil de definir mediante la implantación de criterios comunes para todos los elementos de esa categoría fue el grupo de los vehículos. Este grupo de objetos tiene varios elementos en común; las ruedas y las luces son elementos constantes que se incluyen en todos los vehículos que se desean incluir en esta categoría. Además, gran parte de estos vehículos tienen otros elementos en común, pero que dependen de la categoría específica a la que pertenecen; las 86 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA furgonetas, los camiones y los coches, todos los vehículos con la carrocería cerrada, tienen el parabrisas como elemento común. La matrícula depende de la categoría a la que pertenezca el vehículo; las motocicletas sólo tienen una placa en la parte posterior del vehículo, mientras que los vehículos con cuatro ruedas o más tienen dos placas, una en la parte frontal y otra en la parte posterior. En lo que respecta a la categoría de personas, ésta categoría es mucho más difícil de definir ya que las personas pueden adoptar una gran cantidad de posturas y aspectos que puede entrar en conflicto con la definición de una ley estricta. Por ejemplo, si nos centramos en la simetría de la anatomía humana (el cuerpo humano tiene dos piernas, dos brazos, etcétera), estos criterios sirven para identificar los elementos de esta clase sólo si la cámara de vigilancia capta al individuo de frente, sin embargo, si la cámara capta únicamente el perfil del individuo, entonces estas reglas se vuelven inefectivas; por este motivo no se han desarrollado reglas específicas para identificar a las personas con este sistema de vigilancia. Por último, para la tercera categoría, tampoco se han desarrollado reglas específicas ya que este grupo incluye a todos los objetos; esta categoría agrupa tanto los objetos comunes en sí (bolsas, libros, etcétera) como aquellos elementos que todavía no han sido analizados o que no han dado una identificación positiva para una clase. Al registrar un objeto porque éste se encuentra en movimiento se almacena en la base de datos como integrante de la categoría de objetos comunes; este sistema permite mantener la información sobre los objetos que se han obtenido mediante al análisis sin que por ello se clasifiquen en una categoría incorrecta. Los elementos que se encuentren en la categoría de objetos comunes sólo abandonarán esta categoría si durante su análisis la consola determina con total certeza o mediante la ayuda de un usuario del sistema que el objeto analizado pertenece a otra categoría. 87 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Identificación de los criterios de clase La inteligencia artificial de la consola se basa en el establecimiento de una serie de reglas que definan cada categoría y la conjunción de estos elementos para formular hipótesis sobre la naturaleza de los objetos captados en la imagen. Si durante el análisis se cumplen varias de las reglas que definen una categoría, entonces la consola deberá consultar su configuración y si las reglas que se cumplen son suficientes para declarar que un objeto pertenece a una categoría concreta con total seguridad, entonces la consola actualizará el registro asignado al elemento. En este instante, el objeto dejará de estar considerado como un objeto común para ser identificado como una persona o un vehículo. Sin embargo, si al analizar un objeto la consola determina que las reglas que se cumplen no son suficientes para determinar que un objeto pertenece a una categoría, entonces la consola lanzará un mensaje de confirmación al usuario para que éste determine si la naturaleza del elemento analizado corresponde con aquella que la consola le propone. 88 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Estudio del movimiento Las imágenes obtenidas a partir de la comparación con la imagen de referencia y la imagen inmediatamente anterior y refinadas mediante el filtro del pixelado, contienen toda la información necesaria para la consola; además, la información está almacenada de una forma intuitiva y fácil de manejar, lo que redunda en una mayor facilidad para diseñar los algoritmos que tendrán que procesarla para el estudio del movimiento de los objetos. Además de los filtros ya mencionados, para realizar ciertos cálculos sobre las imágenes se generan replicas de estas mediante el filtro de la función umbral como parte de la operación del proceso. Gracias a este filtro se obtiene una imagen en blanco y negro puro de la imagen original. Esta imagen tiene un tamaño de memoria muy reducido con respecto al resto de imágenes ya que la precisión del formato es básica, cada píxel se representa únicamente mediante un bit; en conjunción con método el de almacenamiento de la vectorización, el filtro binario reduce el Figura 4.25: Función umbral de una imagen de objetos en tamaño en memoria al movimiento mínimo. 89 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Aunque la definición de la función umbral establece que el umbral puede ser un valor comprendido entre 0 y 255, en este proyecto el valor fijado para el umbral es 0, el negro absoluto, ya que éste es el valor asignado a aquellos píxeles que no representan píxeles de objetos en movimiento. De este modo se obtienen imágenes que contienen únicamente la silueta de los elementos en movimiento y además que ocupan el espacio en memoria imprescindible. Gracias a los procesos anteriormente descritos, es posible generar marcas en las imágenes que tracen el movimiento de los objetos durante todo su desplazamiento. A partir de la localización de los objetos en cada imagen se puede analizar el movimiento de los elementos durante toda la secuencia de imágenes analizando la evolución de las marcas a lo largo del tiempo. Al identificar la posición de un elemento, se registra una ocurrencia de este en la base de datos; este registro contiene la información esencial de cada elemento. Aunque los datos que se guarden pueden modificarse, los datos principales son la posición del elemento dentro de la pantalla y el valor de gris de la superficie que ocupa en la imagen. Para estudiar e movimiento de los objetos dentro de una secuencia de imágenes se han desarrollado dos métodos distintos. El primero es el estudio del movimiento mediante el seguimiento del centro del objeto durante la secuencia de imágenes; el segundo de los métodos es la correlación del centro del objeto y el centro de su zona en movimiento. 90 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Seguimiento del centro del objeto El primer método desarrollado para el estudio del movimiento de los objetos dentro de la secuencia de imágenes se basa en comparar la posición de un objeto dentro de la imagen durante toda la secuencia de imágenes en las que este objeto aparece. Figura 4.26: Secuencia de cálculo del método de seguimiento del centro 91 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Este método se basa en relacionar la posición de un objeto dentro de la imagen con el centro del mismo objeto en la imagen inmediatamente anterior. A partir de la diferencia entre los puntos se puede obtener una magnitud que exprese la velocidad con la que se mueve el objeto y a través del cálculo de la diferencia entre las coordenadas de los puntos se puede establecer la dirección que está siguiendo el objeto. Figura 4.27: Resultados del método de seguimiento del centro Gracias a este método se pueden obtener resultados a partir de un único análisis de la imagen ya que se basa en comparar dos imágenes generadas mediante el método de comparación con la imagen de referencia. 92 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA El método de correlación de centros En el punto anterior se definía el método de seguimiento de centros, que se basa en el método de comparación con la imagen de referencia. El método de correlación de centros utiliza los resultados del método de comparación con la imagen de referencia y la comparación con la imagen inmediatamente anterior como base para calcular el movimiento de los objetos de la imagen. El método de correlación de centros obtiene el centro de los objetos resaltados mediante el método de comparación con la imagen de referencia para establecer el punto central del objeto en movimiento. Para calcular el movimiento de este sólido, el sistema calcula también el centro de la zona del objeto resaltada mediante el método de comparación con la imagen inmediatamente anterior. Figura 4.28: Secuencia de cálculo del método de correlación de centros 93 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Gracias a este método el análisis del movimiento es más rápido; el método de seguimiento de centro utiliza como datos de entrada las imágenes de dos instantes consecutivos, mientras que el método de correlación de centros necesita dos imágenes de un mismo instante. Esto implica que gracias a al método de correlación de centros se puede calcular el movimiento de un objeto más rápidamente. Figura 4.29: Resultados del método de correlación de centros Estos métodos de cálculo del movimiento permiten a la consola procesar las imágenes originales y devolver una imagen donde se representa la trayectoria y la velocidad de los elementos de la imagen; gracias a esta representación los usuarios de este sistema puede identificar fácilmente aquellos objetos que están en movimiento. 94 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Gracias a estos mensajes, los usuarios de este sistema de vigilancia identificarán con mayor rapidez la trayectoria de los objetos que se encuentren en movimiento. De este modo serán capaces de evaluar las situaciones comprometidas con una mayor anticipación, lo que facilitará su labor y mejorará sus resultados. 95 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Capítulo 5 96 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Resultados Durante el desarrollo del proyecto se han analizado algunos videos con los algoritmos explicados en el capítulo anterior; a lo largo de esta serie de pruebas, los algoritmos han sido analizados y se ha llegado a algunas conclusiones acerca de ellos. Los algoritmos que han sido analizados con mayor profundidad son aquellos que transforman la imagen original mediante un filtro como la escala de grises, la función umbral o el pixelado. La mayor parte de este análisis se ha centrado en la secuencia en que se debían aplicar los filtros para que los resultados fueran lo más satisfactorios posible. Además de los algoritmos de filtrado se han analizado los métodos de cálculo del movimiento; el análisis de estos filtros se ha basado en evaluar los resultados obtenidos y comparar los resultados entre los distintos algoritmos. De este modo se ha llegado a algunas conclusiones que se expresan en el capítulo siguiente. Estas conclusiones sirvieron para reconducir la dirección de las investigaciones en algunos casos, y en otros dan pie a nuevas hipótesis sobre el desarrollo de los sistemas de vigilancia con base en inteligencia artificial. 97 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Método de captación de las imágenes Las imágenes con las que se ha trabajado a lo largo de este proyecto provienen de la descomposición en fotogramas de los vídeos seleccionados para las pruebas. De este modo se podían analizar los algoritmos sin que ello implicase la instalación de una cámara de video usb. Pese a las diferencias que esto pueda representar con respecto del sistema real, el objetivo de este proyecto es diseñar algoritmos que permitan analizar imágenes dentro de secuencias de video, por lo que el origen de las secuencias de vídeo tiene menos importancia en el desarrollo de este proyecto. En una situación real, el sistema de vigilancia se alimentará de imágenes provenientes de las cámaras de vigilancia mediante la configuración de una conexión llamada ‘stream’; esta conexión entre la cámara de vigilancia y el nodo de procesamiento del sistema se establecerá desde el programa, permitiendo la recepción por parte de la Figura 5.1: Conexión del equipo con la cámara mediante un stream consola de las imágenes generadas por la cámara. Esta conexión almacenará las imágenes en la zona de memoria especificada por el programador en la configuración de la conexión; del mismo modo, la aplicación desarrollada separa los fotogramas de los videos y almacena las imágenes en una zona de memoria accesible al programa. En ambos casos, los procesos lanzados por la consola toman la información con la que trabajan de la memoria principal. 98 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Filtros de imagen A lo largo de este proyecto se ha desarrollado varios algoritmos que permiten a la consola transformar los fotogramas de un video de tal modo que el resultado sea una imagen fácil de analizar, ya sea porque la información es más resumida y por lo tanto el menor rango de opciones permite a la consola calcular los resultados mejor o bien porque el tamaño de las imágenes es menor y por lo tanto el procesador consume menos ciclos en analizarla. Escala de grises Los resultados esperados para este algoritmo eran que la imagen resultante ocupase un espacio de memoria 3 veces más pequeño, sin embargo el resultado fue diferente. Estos dos archivos provienen de la zona de pruebas de la memoria destinada a la consola. El archivo ‘18_move’ corresponde con la imagen filtrada del fotograma 18 de un video de pruebas con el Figura 5.2: Resultados reales de la escala de grises formato ‘8bppIndexed’ y el archivo ‘18_move24’ corresponde con la misma imagen pero con el formato ‘24bppRGB’, el formato de salida de la consola. Como se puede apreciar en la imagen, los dos archivos tienen un tamaño parecido, la diferencia de tamaño del archivo apenas supera un kilobyte; por lo tanto, el resultado real no es el resultado esperado. 99 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Este cambio en el resultado es sin duda provocado por el hecho de que además de la información de las imágenes, estos archivos contienen información propia de este tipo de archivos guardada en la cabecera lo que implica que aunque la información específica de cada archivo tenga un tamaño diferente, los formatos de este tipo de archivos contienen información que ocupa un tamaño mínimo para cualquier archivo. Para modificar este hecho y llegar al resultado esperado se podría haber diseñado una clase propia para almacenar los Bitmaps. En esta nueva clase habría de guardarse únicamente aquella información que fuera absolutamente necesaria para el desarrollo de los procesos de la consola. Además del vector de bytes que contiene la información sobre la imagen, habría que incluir aquellos métodos y atributos que resultaron necesarios durante el desarrollo de los procesos. Sin embargo esta nueva clase no se desarrolló porque los resultados obtenidos con la clase predefinida eran más que satisfactorios. La función de contraste y el ecualizado La función de contraste y la función de ecualizado son funciones que se utilizan para mejorar la percepción visual de la imagen capturada, son filtros para ver más nítidamente aquellos elementos de los fotogramas; aunque estas dos funciones tienen el mismo objetivo y trabajan con los mismos datos, no funcionan de la misma manera. Mientras que las dos funciones trabajan con el histograma de la imagen que reciben, la función contraste necesita de unos argumentos de entrada para transformar la imagen inicial y que los resultados obtenidos sean óptimos; y la función de ecualizado sólo necesita el histograma para generar los resultados. 100 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA La función de contraste depende de una función compuesta por tres funciones lineal para generar la transformación, los argumentos que generan tres estas funciones se obtienen a partir del análisis del histograma Figura 5.3: Análisis de los resultados de la función de contraste Sin función embargo, de de la imagen. la ecualizado realiza su transformación de forma automática, y aunque el cálculo automático de la función de transformación es una ventaja con respecto a la función de contraste, los resultados parecidos original. son a la muy imagen Figura 5.4: Análisis de los resultados del ecualizado Aunque a priori los resultados de los filtros podrían ser útiles para el desarrollo del proyecto, los resultados obtenidos en las pruebas ponían de manifiesto que la implementación de estos algoritmos, que conllevaba el desarrollo de un proceso de cálculo del histograma además del desarrollo del programa que implementar el filtro, 101 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA disparaban el tiempo de desarrollo y de proceso sin por ello asegurar un mejor rendimiento de la consola. Por este motivo la implementación del ecualizado o la función de contraste no han sido llevadas a cabo. La función umbral Gracias al filtro de la función umbral se han podido generar imágenes que resaltaran la silueta de los objetos en movimiento usando el mínimo espacio de memoria; estas imágenes se utilizan como los datos de entrada de la mayoría de los procesos de análisis de la consola, así que son una herramienta indispensable de este proyecto. Figura 5.5: Análisis de los resultados de la función umbral Estas imágenes con las siluetas dibujadas permiten a la consola centrar el foco del proceso sobre las zonas resaltadas y realizar procesos complejos a partir de datos sencillos sobre zonas concretas de la imagen, lo que implica evitar ciclos de procesamiento superfluos. 102 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Por lo tanto, resultados obtenidos por el filtro de la función umbral han correspondido con las expectativas generadas durante el diseño del filtro ya que se esperaba que fueran la plataforma sobre la cual girase el análisis de las imágenes de la consola. Posterización y pixelado Las pruebas realizadas con el filtro de la posterización combinado con la función de pixelado revelaron que las imágenes procesadas mediante combinación eran más fáciles de analizar. Figura 5.6: Resultados de la posterización Aunque la función de escala de grises permitía trabajar con imágenes de fácil acceso, la aplicación de la combinación de la función de la posterización y de la de pixelado refinaba estas imágenes de tal modo que permitía la extracción de la información mediante procesos sencillos. 103 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Los dos filtros perseguían el mismo objetivo aunque su ejecución fuera diferente; el filtro de la posterización permitía agrupar la información de tal manera que las diferencias entre los tonos de los grises resaltaban de forma más evidente, y el filtro del pixelado permitía agrupar localmente esta información, de modo que la delimitación de los cambios en las figuras de los elementos era más sencillo y evidente. La conjunción de estos filtros permite maximizar las posibilidades de las dos funciones siendo el resultado final más contundente que los resultados parciales de cada función. No obstante, aunque a priori los resultados de la función de posterización fueran excelentes, éstos podrían haber sido mejores. Como veremos más adelante, la función de posterización podría haber tenido otra aplicación más dentro de la aplicación; sin embargo, debido a la complejidad de las funciones de identificación de los elementos de la imagen, esta otra aplicación no se llevó a cabo. 104 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Análisis de las imágenes Filtrado con la imagen de referencia Los resultados obtenidos gracias a la comparación de la imagen actual con la imagen de referencia son exactamente los esperados al diseñar este filtro. Figura 5.7: Comparación de la imagen actual con la imagen de referencia Sin embargo, la dificultad de este filtro se manifestó al establecer los criterios que servirían para determinar de forma automática el momento de almacenamiento de una imagen como imagen de referencia. 105 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Las alternativas planteadas para el diseño de los mecanismos que llevarían a cabo esta tarea son diseñar un proceso que evalúe la imagen analizada, y si esta imagen es similar a la imagen de referencia entonces refrescar la imagen de referencia tomando la imagen analizada como nueva imagen de referencia. Las similitudes entre las dos imágenes deben ir en el sentido de que no tienen ningún elemento diferente pero sin embargo sí varían algunos tonos de gris por cuestión del brillo de la luz sobre las superficies. La otra alternativa se basa en diseñar un proceso que evalúe los elementos que se encuentran en memoria. Este proceso debe determinar si los elementos de la imagen que han sido almacenados se encuentran detenidos llevan detenidos el suficiente tiempo como para considerarlos parte del trasfondo de la imagen. Si este fuera el caso, entonces la consola debería recortar su silueta y añadir a la imagen de referencia de forma artificial o tomar una imagen donde este elemento fuera el único elemento diferente con respecto de la imagen original; gracias a este proceso, en las sucesivas comparaciones con la imagen inicial este elemento será tomado como parte del fondo de la imagen y así no será causa de falsos resaltados. Filtrado con la imagen inmediatamente anterior Los resultados obtenidos gracias a la comparación de la imagen actual con respecto de la imagen anterior fueron muy difíciles de interpretar en primera instancia. Este método generaba imágenes donde la silueta de los objetos representados en la imagen original era desdibujada, sólo se representaban algunos píxeles, pero siempre se representaban aquellos píxeles que estaban situados en el contorno de los elementos que se encontraban en movimiento. 106 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 5.8: Comparación con la imagen inmediatamente anterior Aunque los resultados obtenidos mediante la aplicación de la comparación con la imagen inmediatamente anterior eran difíciles de interpretar, el resultado después de añadir la aplicación del filtro del pixelado a la secuencia fueron mucho mejores. Por este motivo se puede decir que los resultados iniciales de este método fueron desconcertantes, pero que después de analizar los resultados y plantear una solución para mejorarlos, éstos correspondieron con los resultados esperados en un primer momento. 107 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Identificación de las categorías de objetos En este punto se iban a describir y analizar los resultados obtenidos al implementar en la consola los criterios y los procesos que debían reconocer los elementos de las imágenes e incluirlos dentro de una de las categorías que servirían para clasificar los objetos de los vídeos de vigilancia. No obstante, no hay resultados correspondientes a estos procesos ya que no han sido desarrollados en este proyecto. Debido a la complejidad de los procesos que se han diseñado, además de que algunos de estos criterios estuvieran incompletos, ha propiciado que no se haya desarrollado ninguno de los procesos correspondientes con este aspecto de la video vigilancia que fueron inicialmente propuestos. Aún así, se expondrán algunos de los avances que se alcanzaron durante el diseño de estos procesos; aunque en la práctica estos métodos no fueron puesto a prueba, el desarrollo teórico de estos elementos también forma parte de este proyecto, y su inclusión en este documento parece pertinente ya que pueden plantear algunos problemas y soluciones sobre este punto en particular. La posterización y la segmentación por zonas de color En puntos anteriores se presentaron los resultados obtenidos por mediante la aplicación del filtro de la posterización y cómo estos resultados eran mejorados mediante la combinación de este filtro con la función de pixelado de la imagen. No obstante, el filtro de pixelado podría tener unas aplicaciones con mayor alcance en la fase de identificación de los elementos en movimiento dentro de la imagen. Gracias a este filtro, las siluetas de los objetos en la imagen son resaltadas con mayor claridad, y la elección correcta del número de niveles de gris representa la 108 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA posibilidad de identificar aquellos detalles que pueden permitir a la consola identificar aquellos parámetros que identifiquen la categoría de un elemento. Durante el desarrollo de la consola se diseñó e implementó un filtro que dibujaba la línea que separaba las zonas de la imagen que tuvieran un tono de gris distinto. Este filtro se diseñó con el fin de poder identificar figuras geométricas dentro de las imágenes que permitieran identificar los componentes de las distintas categorías (las ruedas como círculos, las matrículas como rectángulos, una nariz como un triángulo). Figura 5.9: Resultados del filtro por zonas Las imágenes superiores muestran una imagen filtrada mediante la función de posterización, la segunda imagen muestra el mismo instante de la secuencia de video filtrado por la función que separaba las zonas de gris; el objetivo inicial de esta prueba fue crear el entorno ideal para que el ordenador pudiera reconocer un círculo dentro de la bola de billar en movimiento. 109 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Identificación de formas geométricas sencillas El algoritmo para el reconocimiento de figuras geométricas sencillas (círculos, rectángulos y triángulos) dentro de la imagen se basaba en comparar los puntos del contorno de una figura generada e insertada artificialmente por la consola en el punto central del elemento en movimiento con los puntos del contorno del elemento real. Figura 5.10: Diseño conceptual del filtro de reconocimiento de objetos Aunque los diseños conceptuales sugerían que el desarrollo del filtro sería rápido y sencillo (se debía desarrollar un proceso que tomase la distancia en píxeles de las medidas de la silueta del objeto en la imagen binaria y después generar e insertar artificialmente en la imagen la figura geométrica mediante las instrucciones desarrolladas por la plataforma de desarrollo C#), durante las pruebas del método con imágenes reales generaban dudas acerca de la eficacia del sistema. Los problemas que aparecieron durante las pruebas del sistema con imágenes reales fueron de dos tipos diferentes; en la realidad las figuras sencillas se deforman y generan formas geométricas que evolucionan con el tiempo, lo cual las hace difíciles 110 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA de identificar durante una secuencia completa mediante un sistema automatizado. El otro problema proviene del hecho de que los objetos de la realidad no están compuestos por elementos geométricos sencillos, sino por formas geométricas complejas. Durante una secuencia de video los objetos que se identifiquen mediante la inteligencia artificial de la consola pueden modificar su forma debido a su movimiento. Estos cambios en las formas de los objetos implican que el método desarrollado para reconocer figuras geométricas sea incompleto ya que éste no está diseñado para identificar estos cambios en las formas de los objetos reales; el método compara los objetos reales con figuras sencillas, si un círculo se transformase en la secuencia de imágenes en una elipse (el caso que se daría al analizar la rueda de un coche durante un giro) el sistema no sólo sería incapaz de identificar la nueva forma del objeto anteriormente captado, sino que además dejaría de identificar el elemento en movimiento con la figura original. En una imagen real, donde los elementos en movimiento están compuestos por distintas partes móviles, el método de comparar las siluetas con formas geométricas sencillas se mostró ineficaz para identificar aquello objetos que contienen una mayor cantidad de partes móviles. La composición de estos elementos es tan compleja que la comparación de su silueta con una única figura geométrica resulta insuficiente. 111 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Sin embargo, algunos métodos de descomposición de los elementos naturales son capaces de descomponer los elementos complejos en una serie de múltiples figuras geométricas con el fin de evitar esta fluctuación de las formas de los elementos de la imagen [ZHAO08] y [HSIE08]. Figura 5.11: Ejemplos de otros algoritmos 112 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Estudio del movimiento El estudio del movimiento ha sido el punto central del trabajo desarrollado en este proyecto de final de carrera. Las vías de desarrollo que se han seguido para generar la inteligencia artificial que controle la consola han basado sus cálculos en los resultados obtenidos al calcular el centro geométrico de los diferentes elementos de las imágenes. Seguimiento del centro del objeto El método de seguimiento del centro del objeto calcula el centro del objeto a lo largo de la secuencia de imágenes donde es captado por la cámara. Gracias a esta secuencia de imágenes es posible determinar su posición en la imagen y calcular el centro de gravedad del objeto; al comparar el centro de gravedad del objeto en un fotograma con el centro del fotograma consecutivo se obtiene una diferencia en el punto central del objeto, esta diferencia en las coordenadas se utiliza para mostrar por pantalla el vector de movimiento del elemento. Aunque los resultados de este método cumplen con las expectativas generadas inicialmente, los resultados obtenidos en algunos casos concretos revelaron que el método no era perfecto ya que los resultados obtenidos no correspondían exactamente con la realidad. Los resultados obtenidos mediante este método revelan que el método de cálculo de centros, aplicado en los objetos situados en los laterales, obtenía una posición incorrecta del centro del objeto en movimiento. 113 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA En el caso de los objetos en el borde de la pantalla, los datos para realizar los cálculos para obtener el vector de movimiento eran incompletos, ya que mientras el objeto no estuviera por completo dentro de la escena, la consola tomaba el borde de la imagen como el contorno del objeto, provocando una falsa percepción de la silueta del objeto. Figura 5.12: Secuencia de estudio del método de correlación de centros Debido a los resultados obtenidos en estos casos concretos, se desarrolló otro sistema de cálculo del movimiento basado en el análisis de una única imagen, de este modo se minimiza el efecto del corte de la silueta del objeto por el borde de la imagen, 114 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA ya que el contorno del objeto no es la única información que utiliza el método de correlación de centros. El método de correlación de centros Gracias a los resultados obtenidos por la aplicación del método de seguimiento en los casos del marco de las imágenes se reveló que basarse en el contorno de los objetos en movimiento era insuficiente para obtener resultados fidedignos. El método de correlación de centros es una evolución del método de seguimiento del centro de objetos ya que utiliza parte del sistema de cálculo de posiciones utilizado en el método anterior pero se basa en otros datos de entrada para obtener el vector de movimiento del objeto; al trabajar sobre un único instante de la secuencia de movimiento para obtener el vector de movimiento se minimiza el fallo resultante de la imprecisión de la información sobre el contorno del objeto. Aunque este método tampoco trabaja con la información completa de la silueta del objeto, al comparar el centro de la silueta con el centro de la zona en movimiento se minimiza la influencia que ejerce el error en el Figura 5.13: Resultados del método de correlación de centros resultado final. 115 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Los resultados obtenidos por este método avalan las mejoras realizadas en el método de seguimiento de centros. Gracias al nuevo sistema de cálculo del vector de posición se dispone de un método que puede modelar el movimiento de un objeto de forma más fidedigna. Además de obtener mejores resultados en momentos concretos del análisis, el método de correlación de centros es complementario al método de seguimiento de centros. Aunque la información obtenida mediante el método de correlación de centros se ciñe más a la realidad, el tiempo de proceso de este método es mayor que el tiempo que se tarda en calcular los resultados mediante el método de seguimiento de centros, por lo tanto, es recomendable utilizar el método de seguimiento de centros como método principal de estudio del movimiento y el método de correlación de centros como método secundario ya que de este modo se optimiza el uso del procesador de la consola. 116 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Capítulo 6 117 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Anexos Planificación A lo largo de este proyecto se han sucedido distintas etapas durante las cuales naturaleza de las tareas realizadas ha variado desde la documentación sobre el campo de estudio al desarrollo de procesos en lenguajes de programación en alto nivel, pasando por etapas de aprendizaje de lenguajes de programación o el diseño de soluciones. A continuación se presenta una relación de la distribución del tiempo aplicado al desarrollo de este proyecto de fin de carrera durante el curso 2008-2009 con las tareas desempeñadas. Figura 6.1: Planificación del proyecto 118 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA La fase de documentación Para asegurar el máximo éxito posible del proyecto es importante informarse sobre los avances más recientes en los distintos campos de conocimiento que puedan incluirse dentro del alcance del proyecto. Hay distintas fuentes que pueden ser consultadas, las fuentes comunes como Internet o las bibliotecas. Además de estas fuentes se pueden consultar otras más especializadas como las bibliotecas de artículos de las universidades u otras comunidades; los tutoriales de las prácticas y los apuntes de las asignaturas de las universidades pueden ser también vías con las que comprender mejor el campo de estudio. Además de los apuntes de las asignaturas de las universidades, las referencias de este proyecto provienen de ScienceDirect, una biblioteca de artículos generados por la comunidad científica. Gracias a los artículos de esta comunidad se han podido comprender los métodos empleados para el estudio de la visión artificial y ciertos aspectos del estudio del movimiento de los objetos. 119 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA El desarrollo de la aplicación El desarrollo de la aplicación se ha realizado mediante la metodología extrema, una metodología basa el desarrollo de aplicaciones en el diseño de prototipos. Esta metodología basada en descomponer el desarrollo total en prototipos más pequeños pero funcionales optimiza el uso del tiempo disponible para desarrollar la aplicación. Al generar un prototipo al inicio del desarrollo, y después ampliar las funcionalidades de este prototipo durante el desarrollo, se pueden obtener resultados paulatinamente, y de este modo se puede ejercer un control sobre el desarrollo del proyecto; mientras que con la metodología escalonada, el tiempo de desarrollo de la aplicación puede verse comprometido por retrasos en las fases anteriores, lo cual puede resultar en una falta total de resultados prácticos si los plazos de entrega no pudieran ampliarse. Por este motivo si se dispone de poco tiempo para el desarrollo del proyecto, la metodología extrema es la mejor opción para planificar el desarrollo de la aplicación ya que permite al programador obtener resultados desde las fases iniciales y adaptar la solución a medida que se analizan los resultados de las fases anteriores. La elaboración de la memoria Para asegurar la máxima fidelidad en la transcripción de las ideas desarrolladas en el proyecto es importante que el autor confeccione unos esquemas con los puntos más importantes del proyecto para ampliar su explicación en el desarrollo del proyecto. Es importante transcribir las ideas desarrolladas completamente una vez se han estudiado todos los puntos del esquema antes de comenzar con el desarrollo de otros puntos de interés del proyecto. 120 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Durante la elaboración de la memoria es importante establecer hitos con los cuales asegurar el control del desarrollo de la información escrita. Es importante también que estos hitos establezcan fechas límite de objetivos realizables, de este modo tanto el cumplimiento de los objetivos como la no realización de éstos pueden representar una motivación importante durante el desarrollo del proyecto. Algunos de los hitos que se establecieron para controlar el documento escrito fueron los siguientes: - 10 de Abril 2009: 1º chequeo del proyecto (15% del escrito final). - 25 de Abril 2009: 2º chequeo del proyecto (30% del escrito final). - 10 de Mayo 2009: 3º chequeo del proyecto (60% del escrito final). - 17 de Mayo 2009: 4º chequeo del proyecto (90% del escrito final). - 20 de Mayo 2009: 5º chequeo del proyecto (100% del escrito final). Durante el desarrollo de la memoria del proyecto se establecieron los hitos de forma gradual ya que de este modo se establece un sistema de trabajo con el cual se pueden transcribir las ideas desarrolladas cumpliendo los objetivos establecidos desde el principio de la elaboración de la memoria y de este modo adquirir fluidez en la explicación de los puntos del estudio con las partes de la memoria más sencillas para después explicar con más soltura y mejor estilo los puntos más complejos de la memoria. 121 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Estimación del coste económico del proyecto Coste de los recursos humanos Para el desarrollo de este proyecto hizo falta invertir tiempo en un curso de iniciación a C# y manejo de bases de datos con SQL, así como realizar trabajo de documentación, análisis y programación. Tanto los cursos de iniciación como las fases de desarrollo de la aplicación fueron sufragados mediante la beca de colaboración con la entidad externa a la universidad; sin embargo, las horas de trabajo con la entidad externa están limitadas y se tuvieron que emplear horas extras a las convenidas en la beca. Los costes inherentes a estas fases se especifican en la siguiente tabla: Tabla 6.1: Costes asociados a los elementos de recursos humanos 122 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Costes software Durante el desarrollo de este proyecto se utilizaron distintos recursos software, recursos como la plataforma de desarrollo Visual Studio 2008 o la suite Microsoft Enterpise 2007. Al ser productos del mercado cuyo usufructo está acotado en el tiempo de dos formas posibles, se ha especificado la naturaleza del uso de los programas. Los costes imputables a estos productos pueden representar el coste de la licencia del programa por un año o la amortización proporcional relacionada al uso del producto durante un año si el pago de éste implica su uso durante un periodo superior a un año. En el caso de las licencias para más de un año, se ha establecido que el tiempo de amortización del programa es de cinco años ya que los programas software suelen beneficiarse de un reciclaje constante por parte de los proveedores, lo que implica que la renovación de los activos de una empresa con fines de lucro es una medida adoptada por la mayoría de la empresas del mercado. La descripción detallada del coste imputable a los productos software utilizados durante el proyecto son los siguientes: Tabla 6.2: Costes software del proyecto 123 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Costes hardware Para el desarrollo de este proyecto se utilizaron distintos recursos tangibles; los recursos hardware, tanto para el diseño de los programas de la aplicación como para la elaboración de la memoria, su almacenado y su impresión, o los recursos consumibles de oficina como cuadernos de notas, hojas donde imprimir los cursos de aprendizaje o los escritos de los proyectos de investigación. Al igual que los recursos software, los recursos tangibles tienen un tiempo de consumo acotado. Los consumibles de oficina tienen una duración de un año, por lo que la amortización imputable de estos productos es directamente su coste en el mercado, mientras que los equipos como los portátiles o las impresoras pueden durar más tiempo y por lo tanto su coste se reparte en un lapso de tiempo mayor, dividiendo su coste en amortizaciones anuales de cuantía inferior. Tabla 6.3: Costes hardware del proyecto La suma total de los costes de recursos humanos, los recursos software y los costes de los recursos hardware pueden dar una idea aproximada del coste total del proyecto, aunque este valor no es la cuantía exacta del coste del proyecto ya que en el desarrollo de esta aplicación no se han imputado ciertos elementos como las cámaras 124 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA de vigilancia o las infraestructuras de la empresa colaboradora. No obstante, el coste total estimado del proyecto se puede ver en la tabla xxx. Tabla 6.4: Costes finales del proyecto Como se puede apreciar en la tabla xxx, el coste del desarrollo del proyecto hasta la fecha asciende hasta los 5500 €, la mayor parte de este coste se imputa a los recursos humanos; sin embargo, si este proyecto se hubiera realizado sin una beca, el coste del mismo proyecto hubiera sido muy superior (el salario de una hora de trabajo para un becario es casi una décima parte del coste imputado por el trabajo de un programador en nómina). La estimación del porcentaje del proyecto final comercializable se encuentra en torno al 45 %, lo que implicaría que la aplicación final costaría alrededor de 12000 €, un precio muy razonable teniendo en cuenta que la aplicación final sería a media y podría implementarse en sistemas de seguridad para realizar una vigilancia semiautomática. 125 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Conclusiones Durante el desarrollo del proyecto de fin de carrera se aplican todos los conocimientos adquiridos a lo largo de los años de la carrera; el proyecto de fin de carrera es ante todo un trabajo con una función integradora de todas las asignaturas que se han estudiado durante la carrera, por este motivo el alumno debe cuidar al máximo cada aspecto del trabajo. Para el desarrollo de este proyecto se han aplicado principalmente los conocimientos adquiridos en las asignaturas de programación, tanto en las asignaturas de programación con lenguajes de alto nivel como Java como con los lenguajes de bajo nivel como C, ya que durante el desarrollo del proyecto se han utilizado básicamente punteros para el manejo de la información. Sin embargo, para completar el proyecto también se han utilizado algunos conocimientos adquiridos durante las etapas iniciales del mismo. Hay etapas del proyecto que son muy diferentes entre sí, etapas como la fase de documentación, en la cual el alumno debe extraer y comprender estudios y avances realizados por otros profesionales especializados, o la etapa de diseño, donde su iniciativa y sus capacidades creativas le permitirán diseñar una solución original que sea funcional o la etapa del desarrollo, durante la cual el alumno debe demostrar su disciplina a la hora de desarrollar nuevas soluciones para los problemas establecidos. Para garantizar el éxito en el desarrollo del proyecto se han establecido una serie de hitos mediante los cuales se podía controlar el desarrollo de la aplicación y de la memoria del proyecto. El establecimiento de estos puntos de control ha sido una parte compleja del proceso de creación del proyecto ya que los hitos tienen en realidad una doble función; principalmente sirven para controlar el desarrollo del proyecto, pero además permiten evaluar el criterio del alumno sobre la capacidad de juzgar tanto el trabajo realizado como el ritmo de trabajo. 126 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Sin embargo, algunos de los puntos del desarrollo escaparon a la clasificación, algunas etapas del desarrollo presentaron dificultades. La primera gran dificultad que se afrontó durante el desarrollo fue el establecimiento de los filtros de imagen. Para aplicar estos filtros la consola del prototipo debía acceder a la zona de memoria de cada imagen, lo cual era sencillo una vez se descomponía la imagen y se utilizaban los métodos proporcionados por la plataforma de desarrollo de C#. Sin embargo, los resultados obtenidos gracias a estos métodos no cumplían con los requisitos establecidos para el prototipo, el tiempo de respuesta era muy superior al tolerable ya que la consola se mantenía en espera mientras se aplicaba el filtro. Por este motivo se tuvieron que cambiar los métodos de acceso a la cabecera del archivo y acceder directamente mediante punteros a la zona de memoria de la imagen. Gracias a este cambio en el proceso de acceso a la imagen se mejoraron los tiempos de procesado ya que la consola pasó a ser capaz de aplicar varios filtros sobre una imagen y generar una nueva imagen durante un lapso de tiempo inferior a décimas de segundo, el tiempo esperado y gracias al cual se podían cumplir el resto de especificaciones del prototipo del sistema de vigilancia. Una vez solventados los problemas de desarrollo, el prototipo de la aplicación estaba operativo. Una vez desarrollado por completo, la consola podía abrir un video, descomponerlo en imágenes y aplicar una serie de filtros sobre las imágenes por separado y además relacionar las imágenes dentro de una secuencia para obtener resultados sobre el movimiento de los objetos presentes en el video original. Estos resultados se presentaban en otro archivo de video con un tiempo de respuesta aceptable. 127 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Apéndices En este punto del capítulo de los anexos se presentan temas relacionados con el tema principal del estudio del proyecto que han sido incluidos por su relativa cercanía al tema principal o su interés general. Los dos temas que se tratan en esta parte son la implementación de la aplicación desarrollada en sistemas con cámaras de vigilancia móviles, donde se especificarán las características de estos sistemas y sus dificultades inherentes para la instalación del sistema desarrollado; el otro tema que se aborda en este punto de la memoria son los sistemas de reconocimiento facial, estos sistemas artificiales permiten reconocer las caras de las personas y por lo tanto su implementación en los sistemas de vigilancia puede representar un avance importante en la eficacia de los sistemas de este campo. Sistemas con cámaras de vigilancia dinámicas Los sistemas de seguridad con cámaras de vigilancia integradas disponen de unos dispositivos que vigilan el entorno mediante una rotación programada del foco de la cámara. Estos sistemas permiten optimizar el uso del dispositivo ya que la misma cámara de vigilancia permite disponer de una visión más amplia del entrono. Sin embargo, estos sistemas tienen un problema inherente a su naturaleza, el movimiento de estas cámaras provoca que se creen lagunas de información de momentos concretos de la vigilancia que son conocidas como “ángulos muertos”. Estos “ángulos muertos” tienen su origen en una alineación concreta de las cámaras de vigilancia durante un corto lapso de tiempo, durante ese tiempo, los focos de las cámaras no vigilan una zona del entorno, creando una brecha en la seguridad que pudiera ser registrada y utilizada por elementos externos al sistema. 128 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 6.2: Funcionamiento de las cámaras de vigilancia móviles Aunque las cámaras de vigilancia tienen estas desventajas, conviene recordar que de este modo se puede optimizar la utilización del dispositivo empleando un único elemento de seguridad para dar cobertura a una zona de terreno más amplia. Además, el problema de las lagunas de información puntuales puede solucionarse acelerando el ritmo con que la cámara rota sobre su eje. Sin embargo, existen otras soluciones con las que paliar este problema; si la cámara de vigilancia C2 de la figura xxx tuviera implementado un sistema que le permitiera generar un ritmo de rotación y un acotamiento del entorno aleatorios, entonces los “ángulos muertos” del sistema variarían constantemente, impidiendo a los elementos hostiles al sistema explotar la pauta de los fallos del sistema. Además de la pequeña inteligencia artificial mencionada en el punto anterior, los sistemas de video vigilancia con cámaras móviles pueden integrar la aplicación desarrollada a lo largo de este proyecto, sin embargo habría que incluir algunas variaciones para los algoritmos desarrollados. 129 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Aunque los algoritmos de más bajo nivel, como los de procesado de la imagen, no se verían afectados por el cambio del tipo de cámara de vigilancia, los algoritmos que emulan una tenue inteligencia sí se verían afectados y por lo tanto tendrían que ser remodelados; los algoritmos de filtrado por la imagen de referencia y filtrado por la imagen inmediatamente anterior serían los principales afectados, pero también los algoritmos de detección de movimiento. En el caso del algoritmo de filtrado por la imagen de referencia habría que reconfigurar el algoritmo para que no tuviera una única imagen de referencia, sino toda una serie de imágenes que representaran el entorno a lo largo del recorrido completo de la cámara. Una vez se hubiera construido la biblioteca de las imágenes del recorrido de la cámara, la consola podría comparar la imagen del momento actual en función de la fracción de segundo en la que se encontrara el video. Figura 6.3: Biblioteca de imágenes de referencia de una cámara móvil 130 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Gracias a biblioteca de imágenes sería posible introducir un proceso que determinara cual sería la imagen de referencia que corresponde con la imagen actual de la cámara de vigilancia. Este proceso debería determinar mediante una ecuación la imagen de referencia que utilizaría el filtro por imagen de referencia para comparar las dos imágenes. Para implementar este algoritmo dentro de un proceso de la consola, habría que descomponer el video de referencia en una secuencia con un número entero de frames. Además, habría que inicializar un contador para cada una de las cámaras de referencia que almacenara el valor del frame actual para poder compararlo con el número de frames totales almacenados en la biblioteca y entonces obtener la imagen de referencia con la que finalmente sería comparado. Ecuación 6.1: Ecuación de búsqueda en cámaras móviles Esta fórmula tiene dos variaciones porque las cámaras móviles tienen dos estados posibles, el primero es el estado durante el cual la cámara se dirige desde la posición inicial hasta la posición final de vigilancia, el segundo estado es el que vive la máquina cuando vuelve desde la posición final hasta la posición inicial. En la figura xxx el estado inicial estaría comprendido entre el momento t0 y el t1 y el segundo estado se ubicaría entre el momento t1 y t0 del ciclo. Una vez implementados estas fórmulas en los algoritmos, el algoritmo de filtrado mediante la imagen de referencia tendría la información necesaria para 131 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA elaborar los mismos resultados que en el caso de una cámara de vigilancia estática. Sin embargo, la biblioteca de imágenes de referencia no tendría ninguna utilidad en el caso del filtro mediante la imagen inmediatamente anterior. El filtro de la imagen inmediatamente anterior sería muy difícil de implementar en este caso ya que la relación entre las dos imágenes consecutivas no es directa como en el caso de las cámaras de vigilancia estáticas. En este caso, habría que desarrollar un algoritmo que modelara las variaciones en la relación de las imágenes consecutivas y relacionar los píxeles de las dos imágenes mediante estos algoritmos para descartar aquellos píxeles que corresponden con los píxeles de la imagen anterior traslados mediante los vectores resultantes de este algoritmo. Figura 6.4: Cálculo del vector de movimiento de las cámaras móviles Para implementar este algoritmo habría que desarrollar un proceso que localizara puntos concretos en las imágenes para después buscar los puntos obtenidos en la imagen anterior y calcular el vector de movimiento de las parejas de puntos. En cuantos más vectores fueran calculados, mayor precisión se obtendría en la estimación de la posición de píxel de la siguiente imagen y por lo tanto mayor sería la verosimilitud de los resultados obtenidos. Mediante la implementación de estos dos procesos, los métodos de filtrado de la imagen podrían reutilizarse en este tipo de cámaras de vigilancia; no obstante, habría que realizar una última modificación a los algoritmos del sistema. En el caso de 132 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA los algoritmos de cálculo de movimiento, habría que reutilizar el algoritmo de compensación de movimiento explicado en el punto anterior. Gracias al cálculo realizado por el algoritmo de compensación del movimiento de la cámara, sería posible reducir las impresiones en el cálculo del movimiento median los algoritmos desarrollados para la consola. Debido al movimiento de la cámara, el cálculo del movimiento podría dar un resultado impreciso, no obstante, este resultado podría refinarse si se eliminaran las imprecisiones sumando el vector de movimiento obtenido al vector de movimiento de la cámara que corresponda. 133 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Reconocimiento facial Actualmente existen distintos programas relacionados con el reconocimiento facial de los individuos mediante el procesamiento de una secuencia de video [DANS09]. Estos dispositivos se desarrollaron con el fin de proporcionar un nivel adicional de seguridad adicional a los entornos sensibles. Estos programas buscan los puntos de referencia de la cara y otras zonas del cuerpo para generar marcadores con los que medir las distancias entre estos puntos. La ciencia que estudia la localización de estos puntos de referencia y la medición de las distancias entre ellos se llama Biometría y su finalidad es establecer unos estándares de medición de las variables del cuerpo humano (establecer relaciones entre tamaño, altura, peso sexo, edad, etcétera). Gracias a la comparación de los resultados con los registros almacenados en las bases de datos, los programas pueden realizar una estimación sobre la identidad de la persona que se está analizando. Figura 6.5: Comparación de caras mediante la biometría Las aplicaciones de estos programas en el ámbito de la seguridad exigían unos requisitos de acierto muy elevados, pero además los requisitos establecían la dificultad añadida de que estos resultados se debían obtener mediante el análisis de secuencias de video. Este requisito en particular es muy difícil de implementar ya que si la persona analizada se encuentra de perfil, la información suministrada por las cámaras de vigilancia es incompleta, y por lo tanto el acierto total es casi imposible. 134 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Los resultados obtenidos gracias a los programas desarrollados no fueron tan espectaculares como se esperaban (las identificaciones correctas sólo suponían un 53% de las caras procesadas); estos mediocres resultados fueron causados por que los sistemas de reconocimiento eran incapaces de procesar las imágenes en movimiento que generaban los videos de vigilancia. No obstante, cuando el ámbito de aplicación de estos programas cambió, su rendimiento se mejoró considerablemente. Los programas desarrollados para el reconocimiento facial en la vigilancia fueron aplicados a sistemas comerciales, sistemas que tienen un nivel inferior de requisitos que cumplir, y que por lo tanto el bajo rendimiento demostrado en labores de vigilancia no influía en su aplicación en otros mercados. Una de las aplicaciones de estos programas es el reconocimiento facial para permitir a un usuario de un ordenador registrarse en su máquina y empezar una sesión con ella. Toshiba es una de las marcas de fabricantes que ya ha implementado este sistema de reconocimiento facial en sus ordenadores [WEB003]. Otras empresas del sector han desarrollado sus propios programas de reconocimiento facial, y aunque a priori las funcionalidades de éstos deberían ser las mismas, las empresas desarrolladoras los utilizan de modo distinto. Picasa I, la aplicación desarrollada por Google, analiza las imágenes almacenadas en servidores para determinar si las caras de las personas que salen en las fotos coinciden con la cara de los famosos en algún rasgo; sin embargo, para utilizar este programa hay que registrarse y relacionar a la persona de la fotografía con una dirección email. 135 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 6.6: Comparación de las facciones faciales con fines de entretenimiento iPhoto es la opción de Apple, este programa permite analizar las fotos de un usuario sin que éstas deban estar almacenadas en un servidor externo a la máquina del usuario; además, tampoco debe relacionarse la cara procesada con una dirección de correo electrónico. Las diferentes vías de utilización de un producto con las mismas funcionalidades a generado ciertas dudas sobre la legitimidad del reconocimiento facial puesto que si éste es utilizado de manera incorrecta, se podría dar el caso de generar una besa de datos con personas que no fueran usuarias de los productos de Google. 136 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Aún así, la tecnología de reconocimiento facial ha sido desarrollada por otras firmas también [MUÑO09]; Yahoo se ha asociado con Comel para desarrollar una aplicación que permita analizar los rasgos de los individuos para generar anuncios personalizados. Esta tecnología lleva el marketing hasta un horizonte mucho más amplio ya que de este modo es posible asegurar un mayor éxito con el lanzamiento de cada anuncio. Figura 6.7: Posibles aplicaciones del reconocimiento facial en el marketing La utilización de estas aplicaciones dentro del marketing implica la invasión de los derechos de intimidad de las personas, por este motivo es necesario crear un organismo internacional que regule el límite de estas aplicaciones. Es importante asegurar que las nuevas tecnologías no sean fuente de desconfianza por parte de los usuarios finales. Una buena política, adoptada por el sistema desarrollado por YahooComel, es borrar la imagen almacenada después de emitir el anuncio y sin embargo, almacenar la edad y el sexo de la persona para un posterior uso de la información mediante técnicas estadísticas. Para cumplir con los objetivos establecidos al principio del desarrollo de este proyecto, se realizó un intento de desarrollar un proceso que identificara los objetos captados por la inteligencia artificial en la pantalla. 137 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 6.8.1: Salida de las pruebas de posterización Para conseguir con éxito este objetivo se desarrolló un filtro que se utilizaría junto con el filtro de posterización para definir las zonas existentes en la pantalla. Este filtro realza las líneas de división entre los distintos tonos de gris de las imágenes del filtro de posterización. La finalidad de este filtro consistía en obtener una imagen con las figuras sencillas que compusieran la imagen real; de este modo se podría analizar la imagen generada para estudiar la composición de las figuras y obtener los patrones que compusieran las figuras más complejas. 138 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Figura 6.8.2: Pruebas del filtro de zonas Tal y como se puede apreciar en las imágenes figura 6.8.1 y figura 6.8.2, la combinación de los dos filtros proporciona una imagen en la cual se intuye la información original; no obstante, los intentos de analizar estas figuras mediante logaritmos aplicables mediante los procesos de la consola no dieron resultados positivos ya que la información final era demasiado voluble como para establecer los patrones que definirían los algoritmos de estudio. 139 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Bibliografía Libros: [FOXA07] El libro de Visual C# 2005 James Foxall, Ediciones Anaya Multimedia , 2007 [BARR01] Metodología del análisis estructurado de sistemas , 2ª Edición Jesús Barranco de Areba, Publicaciones de la Universidad Pontificia Comillas, Madrid, 2001 140 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Proyectos fin de carrera y tesis doctorales: [OTE02] Juan José Otero Gómez Director: D. Darío Maravall Gómez-Allende Modelo interpolativo punto- superficie para calibrado de cámaras en Visión Artificial Departamento de Inteligencia Artificial, Universidad Politécnica de Madrid. [PFC01] Nodo IP de visión para la vigilancia remota de eventos contaminantes en tiempo real. Este proyecto presenta un software capaz de vigilar un entorno e identificar elementos agresivos para este entorno como el fuego o la polución. [MERY04] Domingo Mery Visión por Computador Departamento de Ciencia de la Computación, Universidad Católica de Chile, Santiago de Chile. [GONZ06] Grupo de Investigación EDMANS Ana Gonzalez Marcos, Francisca Javier Martínez de Pisón Ascacíbar, Alpha Verónica Pernía Espinosa, Fernando Alba Espinosa, Manuel Castejón Limas, Joaquín Ordieres Meré, Eliseo Vergara González. Técnicas y algoritmos básicos de visión artificial Universidad de la Rioja, 2006. 141 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Ensayos: [CORR09] J.A. Corrales, P. Gil, F.A. Candelas y F. Torres. Diseño de una mini-cámara motorizada para el seguimiento de objetos. Grupo de automática, robótica y visión artificial, Universidad de Alicante, España. [CÉDR95] C. Cédras y M. Shah. Motion-based recognition: a survey. Image and Vision Computing, 1995. [VINC08] Markus Vincze, Michael Zillich, Wolfgang Ponweiser, Vaclav Hlavac, Jiri Matas, Stepan Obdrzalek, Hilary Buxton, Jonthan Howell, Kingsley Sage, Antonis Argyros, Christophe BERST, Gerald Umgeher. Integrated vision system for the semantic interpretation of activities where a person handles objects, 2006. Viena University, Czech Technical University, University of Sussex, Foundation for Research and Technology Hellas (FORTH) and PROFACTOR Austria. [YUIL92] A. Yuille y P. Hallinan. Deformable Templates. In Active Vision The MIT Press, A. Blake y A. Yuille (eds.), 1992. [CURW92] R. Curwen y A. Blake. Dynamic Contours: Real-time Active Splines. The MIT Press, A. Blake y A. Yuille (eds.), 1992. [COHE92] I. Cohen, L.D. Cohen y N. Ayache. Using deformable surface to segment 3d images and infer differential structures. The 2nd European Conference on Computer Vision, pp. 648-652, 1992. 142 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA [BEAU95] S.S. Beauchemin y J.L. Barron. The Computation of Optical Flow. ACM Computing Surveys, 27(3):443-465, 1995. [RODR08] J.A. Rodriguez, A. Garcia, C. Urdiales, A. Bandera y F. Sandoval. Detección y seguimiento de objetos en entornos dinámicos mediante estimación predictiva del Flujo Óptico. Dpto. de Tecnología electrónica de la Universidad de Málaga, Spain. [BAND08] A. Bandera, C. Urdiales, F. Arrebola y F. Sandoval. Introducción de algoritmos genéricos en sistemas de reconocimiento de objetos 2D. Dpto. de Tecnología electrónica de la Universidad de Málaga, Spain. [LIU08] Hong Liu, Ze Yu, Hongbin Zha, Yuexian Zou y Lin Zhang. Robust human tracking base don multi-clue integration and meanshift. National lab on machine perception, Pekin University, China. [CUEV06] E.Cuevas, D.Zaldivar, R. Rojas, E. Tapia, M.Perez, A. de la Mora, R.Cardenas. Visión artificial: Segmentación difusa de color. División de electrónica y computación, Universidad de Guadalajara, México. Institut für Informatik, Freie Universität Berlin, Deutchland, 2006. [YANG08] R.Yang and S. Sarkar. Coupled grouping and matching for sign and gesture recognition. Computer science and Engineering, university of Florida, USA, 2008. [PINT08] Dr. Raúl Pinto Elías Aplicaciones de la Visión Artificial Cenidet (Centro Nacional de Investigación y Desarrollo Tecnológico) 143 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA [LEE08] Chan-Su Lee, Ahmed Elgammal Dynamic shape outlier detection for human locomotion Department of Electronic Engineering, Yeungnam University, Korea Department of Computer Science, Rutgers University, NJ 08854, USA [LAND08] Jose-Luis Landabaso , Montse Pardàs , Josep Ramon Casas Shape from inconsistent silhouette Telefonica I+D (TID), Barcelona, Spain Technical University of Catalunya (UPC), Barcelona, Spain [ZHAO08] Qi Zhao , Hai Tao A motion observable representation using color correlogram and its applications to tracking Department of Computer Engineering, University of California, USA [HSIE08] Jun-Wei Hsieh, Yung-Tai Hsu Boosted string representation and its application to video surveillance Department of electrical engineering Yuan Ze University, Taiwan 144 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA Otras referencias: [WIKI01] es.wikipedia.org/wiki/Categor%C3%ADa:Dispositivos_de_seguridad En esta página web se hace un recorrido por 14 dispositivos de seguridad que han sido desarrollados para su uso en nuestra sociedad. [WIKI02] es.wikipedia.org/wiki/BMP En esta página se explican las principales características de los Bitmaps, así como su procedencia además de otros formatos para imágenes digitales. [WIKI03] es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos Gracias a esta página se puede profundizar más sobre el concepto de programación orientada a objetos desde un punto de vista más convencional. [WEB001] proton.ucting.udg.mx/expodec/sep98/memoria/e01/e01.html En esta página web se expone el resumen de un proyecto que pretende instalar en una casa un dispositivo que genere alertas a móviles a partir de la información que recibe de unos sensores. [WEB002] www.des.udc.es/~adriana/TercerCiclo/CursoImagen/curso/web/Intro.html En esta entrada web se analizan profundamente cuales son las transformaciones más pertinentes para analizar automáticamente una imagen según sus características. [WEB003] http://es.computers.toshiba-europe.com/innovation/NEWSARCHIVE/ archived_news_article.jsp?service=ES&ID=RecoFacial_U400 En esta página Toshiba hace publicidad sobre su sistema de reconocimiento facial. 145 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA [WEB004] www.codeproject.com En esta web se ofrecen distintas soluciones software para problemas de programación en todas las plataformas de desarrollo conocidas. [MSDN06] http://msdn.microsoft.com/es-es/default.aspx Esta es la página oficial de Microsoft Visual Studio, en ella se almacenan soluciones para los lenguajes de programación de Microsoft, así como la API de .NET. [DANS09] www.enriquedans.com/2009/02/misma-funcion-distintas-implicaciones.html Reconocimiento facial: misma función, distintas implicaciones En esta página web se publica una entrada sobre la función de reconocimiento de caras desarrolla por dos empresas distintas, Apple y Google. En ella se expresa la duda que generan los diferentes usos de de dos aplicaciones con las mismas funcionalidades. Enrique Dans, Investigación y opinión de los Sistemas y Tecnologías de la Información, 28 de febrero de 2009. [PARD96] tapec.uv.es/pardo/doctorado/curso_pardo/tesis.ppt Fernando Pardo Carpio Directores: Bart Dierickx y Gregorio Martín Quetglás Sensor Retínico Espacio Variante Basado en Tecnología CMOS Dpt. Informática y Electrónica- Universidad de Valencia. [MUÑO09] http://www.htcmania.com/showthread.php?p=376663 Yahoo y Comel crean un método de reconocimiento facial para usar en publicidad Julio Muñoz el 16 de Mayo del 2009 146 PROTOTIPO DE UN SISTEMA DE VIDEO VIGILANCIA 147