Sie sind auf Seite 1von 136

PROYECTO FIN DE CARRERA

Captacin, Anlisis y Tratamiento de Imgenes Orientado a la Videovigilancia

Autor: Juan Diego Mures Trujillo Tutor: Jos Ramn Cerquides Bueno
Departamento de Ingeniera Electrnica Universidad de Sevilla Escuela Superior de Ingenieros

Proyecto Fin de Carrera

INDICE

1.- Introduccin 2.- Tecnologa ActiveX 2.1.- VideoOCX 2.2.-Mtodos utilizados de VideoOCX 2.2.1.- Seleccin del driver para VideoOCX 2.2.2 .- Inicializacin del control VideoOCX 2.2.3.- Cierre del control VideoOCX 2.2.4.- Llamada al mtodo Start del control VideoOCX 2.2.5.-Llamada al mtodo Stop del control VideoOCX 2.2.6.-Activar el modo de captura del control VideoOCX 2.2.7.-Obtencin del Handle de la imagen 2.2.8.-Liberacin del Handle de la imagen 2.2.9.-Llamada al mtodo Capture del control VideoOCX 2.2.10.- Obtencin del puntero a la imagen capturada 2.2.11.-Visualizacin de la imagen del manejador 2.2.12.-Obtencin del tamao del fotograma 3.- Divisin Funcional 3.1.- Bloque funcional de adquisicin o captura de la imagen 3.2.- Bloque funcional de calculo de estadsticos para el nivel de disparo 3.3.- Bloque funcional de procesamiento de la imagen 3.4.- Bloque funcional de aplicacin para Windows 3.5.- Bloque funcional de disparo de la alarma

6 10 12 13 13 14 14 14 15 15 16 16 17 18 19 19 20 20 21 23 24 25

Indice

Pgina 2

Proyecto Fin de Carrera 4.-Fundamentos del Sistema de Vigilancia 4.1.- Anlisis por igualdad 4.2.- Anlisis por similitud 5.- Diagrama de Flujo del Sistema 6.- Clculo Estadstico para el Nivel de Disparo 6.1.- Fundamentos 6.2.- Funciones de densidad de probabilidad 6.3.- Probabilidad de falsa alarma y nivel de disparo 6.4.- Obtencin del nivel de disparo 6.5.- Representacin de datos frente a nivel de disparo 7.- Algoritmo de deteccin por igualdad 7.1.- Diagrama de flujo 7.2.- Diagrama de flujo. Calculo de la media 7.3.- Diagrama de flujo. Diferencia de fotogramas 8.- Algoritmo de Deteccin por Similitud 8.1.- Diagrama de flujo 8.2.- Diagrama de flujo. Clculo de correlaciones 9.- Desarrollo de la Aplicacin Software 9.1.-Introduccin 9.1.1.- Programacin Orientada a Objetos 9.1.2.- Gestin de eventos 9.1.3.- Programacin de una interfaz grfica 9.2.- Consola de la aplicacin de vigilancia 9.3.- Diagrama de Objetos de la Aplicacin 9.4.- Men de la aplicacin 26 28 29 32 33 33 35 41 44 48 50 51 53 54 56 57 59 64 64 64 67 69 70 72 74

Indice

Pgina 3

Proyecto Fin de Carrera 9.4.1.- Men Inicio 9.4.1.1.- Iniciar Control Actives 9.4.1.2.- Comenzar procesamiento 9.4.1.3.- Finalizar procesamiento 9.4.1.4.- Finalizar control ActiveX y salir. 9.4.2.- Men Vigilancia 9.4.2.1.- Deteccin por igualdad 9.4.2.2.- Deteccin por similitud 9.4.2.3.- Nivel de disparo 74 75 75 76 77 78 78 79 79

9.4.3.- Men Configuracin 9.4.3.1- Resolucin 9.4.3.2- Zona de deteccin 9.4.3.3- Tiempo de preprocesamiento 9.4.3.4.-Probabilidad de falsa alarma 9.4.3.5.- Seleccionar driver 9.4.3.6.- Mostrar ventana de informacin

81 82 84 88 90 92 93

9.4.4.- Men Guardar 9.4.4.1.- Guardar estadsticos en ficheros 9.4.4.2.- Guardar imagen de intruso 9.4.4.3.- Guardar config. en archivo de texto 9.4.5.- Men Acerca de ...

95 96 97 99 100

10.- Carga Computacional Del Sistema 10.1.- Descripcin de la prueba

101 101

Indice

Pgina 4

Proyecto Fin de Carrera 10.2.- Grfico de CPU para deteccin por igualdad 10.3.- Grfico de CPU para deteccin por similitud 102 103

11.- Simulaciones 11.1.- Escenario de Simulacin 1 11.1.1.- Escenario de Simulacin 1. Deteccin por igualdad 11.1.2.-Escenario de Simulacin 1. Deteccin por similitud 11.2.- Escenario de simulacin 2 11.2.1.- Escenario de simulacin 2. Deteccin por igualdad 11.2.2.- Escenario de simulacin 2. Deteccin por similitud 11.3.- Escenario de simulacin 3 11.3.1.- Escenario de simulacin 3. Deteccin por igualdad 11.3.2.- Escenario de simulacin 3. Deteccin por similitud 11.4.- Escenario de simulacin 4 11.4.1-. Escenario de simulacin 4. Deteccin por igualdad 11.4.2.- Escenario de simulacin 4. Deteccin por similitud 11.5.- Escenario de simulacin 5 11.5.1.- Escenario de simulacin 5. Deteccin por igualdad

105 105 105 108 111 111 113 117 117 119 122 122 124 127 127

11.5.2.- Escenario de simulacin 5. Deteccin por similitud. 129 11.6.- Conclusiones de las simulaciones 12.- Multicmara 13.- Conclusiones 132 133 135

Indice

Pgina 5

Proyecto Fin de Carrera

1.- INTRODUCCIN

Estamos presenciando una autentica revolucin tecnolgica, este avance de la tecnologa se nos presenta en todos los aspectos de nuestra vida cotidiana y ya no podemos concebir nuestra labor diaria sin que en ella intervengan todos los aspectos de esta revolucin. Cada vez menos nos extraamos de que las maquinas nos ayuden en tareas de nuestro trabajo, en labores domsticas, en los momentos que dedicamos al ocio. Ponemos en manos de ordenadores nuestra seguridad en la conduccin, en los largos viajes de aviacin y en las peligrosas travesas de navegacin; pero esta implantacin de la tecnologa, hasta fechas muy recientes, no ha tenido la misma relevancia en la seguridad del hogar. Parece que los fabricantes de cmaras y los diseadores de software han tenido la misma reflexin anterior , y a da de hoy si ponemos la palabra SEGURIDAD en cualquier buscador web se nos llena la pantalla de multitud de entradas sobre pginas relacionadas con la seguridad domestica. Tambin hay que decir en esta lnea que cada vez ms los bancos y las empresas de seguridad muestran mayor inters en confiar su seguridad a sofisticados sistemas que requieren menor nmero de personas para su monitorizacin. Es en este mundo donde podemos incluir este proyecto que tiene como finalidad la elaboracin de una aplicacin de videovigilancia mediante herramientas de software genrico y software especfico para el tratamiento de imgenes para as completar en cierto modo las materias impartidas en los cursos de mi titulacin. Este proyecto viene a avanzar en la misma lnea en la que ya se han desarrollados otros proyectos del departamento pero intentando siempre mejorar aquellos aspectos que consideramos importantes e interesantes para estas herramientas de vigilancia. La lnea de trabajo seguida fue en un principio plantearnos cual era la necesidad que los programas de vigilancia necesitan, y se llegaron a las siguientes conclusiones: A.Un sistema de vigilancia tiene que poder trabajar en tiempo real. Esta condicin que se planteo como fundamental al comienzo del proyecto, ha hecho necesaria la bsqueda de soluciones que han pasado desde abordar la programacin en ensamblador del micro BT878 , cerebro de la placa de captura y digitalizacin de AVERMEDIA; hasta el uso de controles Actives en entorno de Visual C++, pasando por el intento de realizacin de la captura de la imagen atacando las dlls del sistema por medio driver de la placa de captura.

Introduccin

Pgina 6

Proyecto Fin de Carrera Al final por facilidad en la programacin se opt por la realizacin del proyecto en el entorno de desarrollo de VISUAL STUDIO 6.0, con el lenguaje de programacin Visual C++, y se us la versin estudiante de un ActiveX soportado por dicha plataforma de programacin para la captura del frame de la imagen.

Con esta eleccin se dio solucin a la necesidad prioritaria de que nuestro sistema funcione en tiempo real, y se dot al sistema de una gran funcionalidad. Parte de esta funcionalidad se ha explotado en esta versin del proyecto pero espero que al igual que yo otro compaero retome mi trabajo y pueda an exprimir ms todas las capacidades y posibilidades que nos ofrece esta combinacin de componentes de software tanto para la videovigilancia como para cualquier otro campo del tratamiento de imagen. B.Relacionado con lo anterior la aplicacin debe de ser capaz de no acaparar toda la capacidad de procesamiento de la CPU, para ello he hecho especial hincapi en la optimizacin de los algoritmo de procesamiento a nivel de pxel. Esto se ha hecho con la idea de que pueda ser posible lanzar diversos procesos de videovigilancia de forma concurrente, y ello sea posible desde un PC como el que todo tenemos en nuestra casa que ahora har la veces de consola de videovigilancia. No hay que entender que la versin que se presentar en la defensa del proyecto pueda ser una aplicacin comercial, sino que con ella sentamos las bases de cmo realizar el tratamiento de la imagen de forma rigurosa de igual forma que se hace en las aplicaciones comerciales, pero que carezco de la experiencia en la programacin de la API como para considerar que dicha aplicacin se pueda presentar a concurso o comercializar de algn otro modo. No obstante, no cierro la puerta a la posibilidad de dedicarme a la programacin de aplicaciones en mi inminente futuro profesional, para el cual considero este proyecto un primer contacto con la programacin de forma rigurosa y con la filosofa existente en el campo de los programadores de software. C.En ultimo lugar pero no menos importante se concluye que hemos de dotar a nuestro programa de no poca fiabilidad. Toda empresa que decide implantar un sistema de videovigilancia basado en deteccin de intrusismo mediante software ha de confiar que en un muy elevado porcentaje de las alarmas lanzadas por dicho software haya la presencia de riesgo para la integridad de sus bienes o se ponga en peligro la propia seguridad de las personas. Es por esto que el sistema ha de ser extremadamente fiable y no se debe escatimar trabajo en conseguir dicha finalidad. Esta ltima caracterstica se convierte en especialmente importante en aquellos sistemas de seguridad donde la alarma de este primer sistema de deteccin activa todo un dispositivos de seguridad en el cual pueden estar inmersos los cuerpos de proteccin civil, bomberos, hospitales, etc. Este proyecto ha dado lugar a una herramienta sencilla diseada a partir de una cmara digital con conexin al PC mediante puerto USB, un PC que en principio tiene como nicos requerimientos una frecuencia de CPU igual o superior a 200 MHz y una RAM igual o superior a 32 MB, y un software de observacin personal que permita,

Introduccin

Pgina 7

Proyecto Fin de Carrera aparte de una cierta auto-configuracin propia de diversos parmetros dependientes del escenario, tambin la eleccin de distintos parmetros por parte del usuario o persona encargada de la supervisin del sistema. La idea que subyace detrs de la vigilancia o deteccin de intrusismo a nivel de software es captar que es lo que le ocurre a una imagen a nivel estadstico de pxel cuando en la secuencia de imgenes hay movimiento o cierta variacin en los fotogramas. Esto nos permite introducir un elevado grado de automatizacin en la eleccin de lo que realmente puede ser considerado una amenaza de lo que no lo es; no obstante siempre es aconsejable que una persona supervise estos disparos de alarmas, y es que estos sistemas no pretenden, al menos en la fase en la que nos encontramos, sustituir a la persona encargada de la vigilancia pero si liberarla de trabajo y de que tenga que pasar toda su jornada laboral observando unos monitores sin quitar la vista de ellos. A parte de las ya mencionadas existen otras ventajas de este sistema en comparacin con los ya antiguos sistemas de vigilancias basados en cmara analgicas que volcaban su imagen en multitud de monitores para que la persona encargada de la seguridad pudiese monitorizar el sistema mediante la observacin de dichos monitores. A continuacin se muestran algunas de estas ventajas: Posibilidad de trabajo en segundo plano o background, al ser reducidos los recursos que el PC emplea por cada uno de los hilos de videovigilancia de la aplicacin. Este nmero de hilos de procesamiento depende de diversos parmetros que como ya se ver son entre otros el tamao de la imagen a procesar. La aplicacin de tcnicas de fotogramas por segmentos que nos proporciona la misma eficacia de vigilancia que el anlisis de la imagen completa pero con un considerable ahorro de recursos y la libertad que nos da definir expresamente la zona, objeto o lugar que vigilar. Este es un aspecto muy importante de nuestro sistema de videovigilancia pues en muchas ocasiones no es necesario vigilar todo el escenario captado en el fotograma sino que solo son importantes determinados puntos de ese escenario, como por ejemplo si vigilamos un pasillo slo nos podra interesar si hay movimiento en las puertas o si monitorizamos la planta de un edificio si hay entrada y salida de gente en las puertas de los ascensores. Esto anterior, aparte de suponer un considerable ahorro de tiempo en comparacin con el procesamiento completo de la imagen, dota a los algoritmos de deteccin de mayor eficacia pues los cambios en los estados de los pxeles son ms significativos (tienen un mayor peso estadstico) cuando el nmero total de estos pxeles es ms reducido. Los sistemas convencionales basados en cmara y grabador de VHS necesitan almacenar imgenes durante todo el tiempo en que se realiza la vigilancia, es decir, se necesita almacenar en VHS las 24 horas del da ( tomando fotogramas cada cierto tiempo en torno a los 4 segundos ) durantes semanas, meses e incluso aos. En contraposicin a esto podemos configura nuestro sistema para que slo almacenes en una base de datos la secuencia de frames donde se detecta intrusismo o incluso un nico fotograma que nos permita identificar al culpable de la infraccin. Por tanto la

Introduccin

Pgina 8

Proyecto Fin de Carrera aplicacin de tcnicas digitales a la vigilancia tambin avanza en la direccin de ahorro de soporte para el almacenamiento de informacin por diversos mtodos, reduciendo el nmero de fotogramas a almacenar solamente a aquellos en los que se detecto intrusismo como anteriormente ya se ha dicho o aplicando tcnicas de compresin ya que estamos tratando con informacin digital. Una ventaja que puede ser resumen de las anteriores es que mediante la tcnica de procesamiento digital se obtiene un sistema de vigilancia dotado de una mayor funcionalidad a un menor coste. Este conjunto de caractersticas es lo que hace que estos sistemas se estn imponiendo a los anteriores y que cada vez ms empresas sustituyan sus antiguos sistemas de VHS por sistemas de vigilancia de nueva generacin.

A continuacin se explicar la realizacin del proyecto y el resultado obtenido de forma muy tcnica; si en algn momento el lector se pierde en consideracin sobre la tecnologa usada para la programacin no debe olvidar cual es la finalidad de todo este trabajo, captura o mapeado de la imagen en memoria del sistema y posterior procesamiento para vigilancia; teniendo esto como finalidad de todas las operaciones que se realizan, la lnea de trabajo seguida se muestra como el nica natural y rigurosa.

Introduccin

Pgina 9

Proyecto Fin de Carrera

2.-TECNOLOGA ACTIVEX

Para la realizacin del proyecto y dar solucin a la necesidad de que nuestro sistema funcionase en tiempo real se adopt como solucin la combinacin de un lenguaje de programacin rpido, como Visual C++, con la tecnologa ActiveX. A grandes rasgos, ActiveX es una tecnologa de desarrollo creada por Microsoft, la cual consiste en guardar el cdigo binario en un formato tal que programas ajenos al creador del mismo puedan reconocer, permitiendo llamar con una interfase similar la misma funcin desde varios entornos de desarrollo diferentes, por ejemplo, un mismo ActiveX puede ser usado con la misma interfaz en el entorno Visual C++, Visual Basic, FOXPRO... Los antecedentes de la tecnologa ActiveX se remontan a la tecnologa Object Linking and Embedding (OLE versin 1.0 y 2.0), que se puede traducir por Objetos Vinculados e Incrustados. Naci a partir de lo que se denominaba DDE, Dynamic Data Exchange o Intercambio dinmico de Datos, la cual se implemento en aplicaciones de Microsoft (Excel, Access, etc). El principal beneficio de ActiveX es encapsular de una manera efectiva, procesos, objetos, o clases, creando un modo simple de reutilizar los conocimientos de otros lenguajes, de manera transparente al usuario. Para un programador de C++, ActiveX es el nombre de un nuevo tipo de clase que soporta encapsulamiento, funciones de tipo friend o public, metodos constructores de objetos, as como llamadas a punteros (de manera relativa) . Un objeto ACTIVEX es un archivo, que tiene una interfase determinada que puede obtenerse por procedimientos standard. Suelen ser de tres tipos: Tipo InProcess Caractersticas Se ejecutan dentro del rea de proceso del programa que los llama. Por su naturaleza y extensin, son los ms fciles de ocultar. Extensin *.DLL

Se ejecutan en un rea diferente de memoria, y suelen tener una finalidad en si mismos. Ejemplo, WORD y EXCEL versiones OutProcess *.EXE Office 97. Por su naturaleza, son los primeros que busca un usuario promedio. Control Su finalidad solo es aparente a un programador, y son procesos que no pueden ejecutarse a menos que se incluyan en un *.OCX programa que instruya sobre las formas de proceso. Son los ms fciles de copiar, porque rara vez requieren instalacin

Tecnologa ActiveX

Pgina 10

Proyecto Fin de Carrera La idea bsica de todas estas tecnologas es disear aplicaciones que puedan intercambiar datos y compartir cdigo, de forma que sean accesibles unas desde dentro de otras. En concreto los controles ActiveX actan en forma de pequeos mdulos de aplicaciones, listos para ser incluidos por los programadores en aplicaciones finales, de los cuales sabemos como utilizarlos pero no sabemos como realizan su trabajo, internamente. En resumen, si un cdigo compila con un lenguaje ActiveX, puede enlazarse con cualquier otro lenguaje que permita integrar objetos ActiveX. En modo de resumen veamos en que se centran las caractersticas de trabajo de los ActiveX: Se centran en un mdulo de cdigo programado en un lenguaje, normalmente de bajo nivel, como C/C++. Se implementan propiedades (algo as como variables, bien referentes a su apariencia externa o de conjuntos de datos) y mtodos de acceso, definicin y procesamiento de esas propiedades.

Los mdulos tienen unas caractersticas de autonoma propia. Con ello, deben ser cdigo binario (compilado) que sea capaz de definir cuando iniciar y cuando terminar su ejecucin.

El cdigo generado ha de tener la capacidad de interactuar con otros mdulos ActiveX y/o ejecutables finales. Esto es, recibir entradas de ellos y podr enviar datos de salida hacia ellos. En la relacin de la aplicacin contenedora y el ActiveX existen dos niveles: servidor y cliente. El servidor, en nuestro caso el modulo ActiveX, es aquel que recibe peticiones de la aplicacin contenedora del control, ejecuta las operaciones pertinentes y devuelve datos procesados. La aplicacin contenedora que acta como cliente puede acceder a los datos de la aplicacin servidora y gestionar su informacin como si de datos propios se trataran.

La actualizacin del cdigo de un control ActiveX no debe suponer una reprogramacin de las aplicaciones clientes (aquellas que lo utilicen), debe mantenerse una compatibilidad con versiones anteriores, de forma que las mejoras afecten al cmo se procesa la informacin, pero no al mtodo de acceder a ella ni cmo se devuelve a los clientes.

Una diferencia sustancial entre los controles OCX (controles OLE) tradicionales y los nuevos controles ActiveX se refiere a la seguridad para el usuario. Los controles ActiveX deben ser oficialmente certificados por Microsoft (Authenticode) o mediante algn mtodo de autentificacin, del que el usuario final sea consciente del nivel de seguridad (o riesgo, como quiera verlo) que asume al utilizarlo, o permitir que lo utilicen aplicaciones que ejecuten.

Tecnologa ActiveX

Pgina 11

Proyecto Fin de Carrera

2.1.- VideoOCX
En este proyecto, como ya se ha dicho antes, se usa la combinacin de Visual C++ con la versin estudiante de un control ActiveX denominado VideoOCX. Este control contiene implementado en su ncleo ( en cdigo ya compilado) las funciones que se comunican con el driver de la cmara para realizar la captura del fotograma y su posterior transferencia a nuestra aplicacin cliente. El diver que se utiliz para control de la cmara fue: Microsoft WDM Image Capture (Win32), Versin: 5.0.2195.2672 Este driver es genrico y normalmente el que se usa para las webcam, por lo que para utilizar nuestra aplicacin de vigilancia en cualquier PC nicamente tenemos que tener este driver instalado (o en caso de tener otro driver, seleccionar este como driver activo para VideoOCX, esto es un cuadro de eleccin en la aplicacin) y hacer correr la aplicacin de videovigilancia. VideoOCX es un control ActiveX que permite a los programadores la fcil integracin de funcionalidades de captura de video y procesamiento de imagen dentro de su software de aplicacin. El control utilizado es la versin estudiante que se puede conseguir en la web www.videoocx.de , que pertenece a la casa alemana de desarrollo de software Marvelsoft ( para ms informacin sobre la empresa se puede remitir a la direccin web www.videoocx.de/company.htm ). El control es compatible con la mayora de los dispositivos Video-for-Windows (VFW), tanto del tipo de cmaras USB (webcams) como del conjunto formado por la conexin de tarjeta capturadora (digitalizadoras de video) con cmaras CCD. A parte de los ya mencionados VideoOCX tiene los siguientes rasgos funcionales: Soporta la mayora de los dispositivos de captura de Video-for-Windows con formato PAL/NTSC. Captura a elevada velocidad fotogramas de video y los mapa en memoria del sistema (puede alcanzar velocidades de 25 fps de 768x576 pxeles) y conversin al vuelo de los fotograma a escala de grises. Completa libertad de acceso a la imagen RGB a nivel de pxel. Soporta secuencias AVI.

Aunque el control presenta multitud de mtodos, aqu slo se comentarn los que han sido ms importantes para la realizacin de este proyecto.

Tecnologa ActiveX

Pgina 12

Proyecto Fin de Carrera

2.2.-Mtodos utilizados de VideoOCX


Veamos cuales han sido los mtodos de VideoOCX ms importantes que se han utilizado para la realizacin del proyecto. Como primer paso haba que realizar la captura del flujo de fotogramas en tiempo real y para ello se utilizaron varios de los mtodos del control ActiveX que posteriormente comentaremos; pero como ya se ha dicho antes, estos mtodos slo pueden ser utilizados si hemos incluido en nuestra aplicacin un objetos de VideoOCX. Para el resto de esta memoria, la instancia que hace referencia al control es m_VideoOCX ; el nombre de la clase es CVideoOCX y el identificador del control ActiveX en la aplicacin es IDC_VIDEOOCXCTRL.

2.2.1.- Seleccin del driver para VideoOCX

Obedece a la siguiente sintaxis:

m_VideoOCX.ShowDriverDlg()

Esta funcin se ejecuta cuando se pulsa el botn de seleccin de driver. Construye un dialogo de titulo Driver Selection, en el que podemos seleccionar cual es el driver del dispositivo que ser fuente de nuestras imgenes digitales, y con el que el ActiveX realizar la conexin si este no se encuentra ya en funcionamiento. En el manual de funcionamiento del ActiveX VideoOCX el lector puede observar la existencia de otros mtodos relacionados con la seleccin del driver, que en esta versin del proyecto no ha sido necesario su utilizacin.

Estos mtodos son:

m_VideoOCX.GetDriverCount()

Que se usa para obtener el numero del driver que se est usando n ese momento cuando en el sistema hay varios drivers con los que podra conectar el ActiveX. String str = m_VideoOCX.GetDriverName(long drivernum) Recibe como parmetro del entrada en nmero identificativo del driver utilizado en el sistema y nos devuelve en una cadena cual es el nombre de ese driver.

Tecnologa ActiveX

Pgina 13

Proyecto Fin de Carrera

2.2.2 .- Inicializacin del control VideoOCX

Obedece a la siguiente sintaxis :

m_VideoOCX.Init()

Inicializa y conecta el control a la fuente de imagen especificada. Es imprescindible inicializar el control antes de llamar a cualquier otro mtodo, ya que este no se encuentra cargado en memoria antes de la inicializacin, es como si an no existiera el objeto y se llame a su constructor. Esta funcin de inicializacin devuelve un valor lgico de true si la inicializacin ha concluido con xito, o false si ha habido algn problema en la conexin con el dispositivo o si este estaba ya en uso. Intenta conectarse al driver especificado como activo en el dialogo a tal efecto, este driver puede ser la conexin a cmaras (como es nuestro caso), pero tambin ha tarjetas capturadoras, o cualquier dispositivo que sea la fuente de imgenes digitales para nuestra aplicacin.

2.2.3.- Cierre del control VideoOCX

Obedece a la siguiente sintaxis:

m_VideoOCX.Close()

Slo tiene sentido llamar a esta funcin una vez que se haya inicializado el control mediante la llamada a Init(). Cierra la conexin con el driver del dispositivo fuente de fotogramas o de la secuencia de imgenes. Esta funcin de inicializacin devuelve un valor lgico de true si el cierre del flujo de imgenes se lleva a cabo con xito, y devuelve false en caso contrario, es decir si ha habido algn problema al intentar cerrar la conexin con el driver o con el flujo de imgenes.

2.2.4.- Llamada al mtodo Start del control VideoOCX

Obedece a la siguiente sintaxis:

m_VideoOCX.Start()

La llamada al mtodo Start se utiliza para activar el inicio del lazo de captura. Este lazo de captura ser llevado a cabo en background mediante un hilo que se dedique a capturar y procesar la secuencia de fotogramas. Este mtodo devuelve un valor lgico de true si no hay ningn tipo de problema para inicializar el lazo de captura y devuelve false en caso contrario. De modo que la forma de usar este mtodo es introducirlo como condicin en un if, de tal modo que si no hay ningn tipo de problema se pueda comenzar el lazo de captura y

Tecnologa ActiveX

Pgina 14

Proyecto Fin de Carrera si lo hay aparezca un mensaje de error y se corte la ejecucin de la aplicacin. El lazo se captura se define dentro de una funcin de C++ que hace arrancar un nuevo hilo de ejecucin, esta funcin es : UINT CaptureThread(LPVOID pParam) que se explicar entrando en mayor grado de detalle ms adelante, de momento hasta este punto slo quiero hacer notar que slo una vez que el mtodo Start devuelva true comenzar la captura y procesamiento de los fotogramas.

2.2.5.-Llamada al mtodo Stop del control VideoOCX

Obedece a la siguiente sintaxis:

m_VideoOCX.Stop()

La llamada a este mtodo slo tiene sentido una vez que antes se haya ejecutado Start(). Es el que hace finalizar el proceso de captura interna, y al igual que muchos de los anteriores devuelve un valor lgico de true cuando el proceso de captura interno se finaliz con xito, y false en otro caso. Tengo que hacer notar aqu que la llamada a este mtodo no es el que termina con el lazo de captura implementado por un bucle dentro de la funcin CaptureThread(), sino que para finalizar este lazo tenemos que actuar de forma externa al control haciendo mediante una variable lgica que se salga del lazo de captura. Lo que s finaliza el mtodo Stop es el proceso de captura interno al control, es decir, el proceso arrancado por el mtodo Capture (que se explica ms adelante).

2.2.6.-Activar el modo de captura del control VideoOCX

Obecede a la siguiente sintaxis:

m_VideoOCX.SetMode(bool mode)

Donde el parmetro mode de entrada puede ser 0 si queremos activar el modo VFW (Video-For-Windows) o 1 si activamos el modo AVI que es cuando el flujo de entrada est formado por imgenes en formato AVI. Para la realizacin del proyecto se us el modo 0. En relacin con la propiedad mode tenemos tambin el mtodo m_VideoOCX.GetMode() que devuelve el modo que est activado en el control en ese momento.

Tecnologa ActiveX

Pgina 15

Proyecto Fin de Carrera

2.2.7.-Obtencin del Handle de la imagen

El handle o manejador de la imagen es donde el ActiveX guarda la referencia de donde ha alojado la imagen capturada, en realidad es la referencia del contenedor donde se va a ir almacenando los distintos fotogramas que se vayan capturando, tiene relacin con la cantidad de memoria necesaria para almacenar un fotograma. Debido a que el control VideoOCX nos permite la captura de la imagen tanto en color como en escala de grises existen diferentes manejadores para estos distintos formatos de imgenes, y estos Obedecen a las siguientes sintaxis: long m_Image = m_VideoOCX.GetGrayImageHandle() long m_Image = m_VideoOCX.GetColorImageHandle() Tambin existen mtodos para construir un manejador de la imagen a nuestro gusto, es decir podemos obtener un contenedor para una imagen que no tenga las medidas estndar de ancho y largo sino las medidas que nos haga falta en cada momento; para ello usamos los siguientes mtodos: long m_Image long height) = m_VideoOCX.CreateGrayImageHandle(long width,

long m_Image = m_VideoOCX.CreateColorImageHandle(long width, long height) Estos mtodos permiten alojar una imagen con distintas dimensiones que aquellas que llegan de la fuente de video.

2.2.8.-Liberacin del Handle de la imagen

Obedece a la siguiente sintaxis: m_VideoOCX.ReleaseImageHandle(long imagehandle) Este mtodo libera la zona de memoria donde se alojan las imgenes y que se ha creado con los mtodos del punto 2.2.7. En nuestra aplicacin el manejador es reutilizando en cada pasada del bucle de captura y cuando ya ha concluido el proceso de captura y procesamiento se libera para no acaparar memoria del sistema que no volver a usar de no ser liberada, ya que una nueva inicializacin del sistema obtendr otro manejador distinto.

Tecnologa ActiveX

Pgina 16

Proyecto Fin de Carrera

2.2.9.-Llamada al mtodo Capture del control VideoOCX


Obedece a la siguiente sintaxis: m_VideoOCX.Capture(long imagehandle) Se usa este mtodo para capturar una imagen de la fuente de video. Hay que pasarle un imagehandle o manejador de la imagen que ha tenido que ser inicializado con los mtodos GetGrayImageHandle() o GetColorImageHandle() antes de la primera llamada al mtodo capture. En cada llamada se capturar una imagen en color o en escala de grises dependiendo de que tipo de manejador se le este pasando, tambin, dependiendo del tamao del manejador de la imagen, se capturar uno u otro tamao de la imagen. La conversin de una imagen en color a escala de grises relentiza al mtodo capture en tiempo de ejecucin en la mayora de los hardware aptos para trabajar con imagen en color en los que VideoOCX tiene que convertir cada imagen de color a escala de grises de forma separada. Este mtodo se utilizar dentro de un bucle de captura y procesamiento de la imagen que ser el que se ejecute en nuestra aplicacin en rgimen permanente; adems este bucle estar dentro del hilo lanzado para la captura y eso hace que la sintaxis usada dentro de este hilo no se corresponda exactamente con la anteriormente mostrada sino que, hay que acceder a la variable m_VideoOCX y imagehandle por medio de un puntero al dialogo contenedor de ambas variables. Por la estructura con la que se ha construido el bucle de captura la velocidad con la que se captura fotogramas (fotogramas por segundo) est definida por el nmero de veces que en un segundo pase el bucle por el mtodo Capture; quiero decir con esto que no podemos considerar como un dato de partida para la aplicacin que todos los fotogramas que la cmara sea capaz de transferir van a ser adquiridos por la aplicacin ya que hay un tiempo en el bucle, que ser dependiente tanto del tipo de procesamiento como de la zona a procesar de la imagen, que pondr un limite al nmero de fotogramas que se capturaran. Lo que si limita la cmara es el nmero mximo que en el mejor caso pueda adquirir la aplicacin, es decir el hilo de captura capturar como mximo la mxima tasa de fotogramas que sea capaz de dar la cmara. El mtodo Capture aloja una imagen en un manejador, pero esta imagen an no est accesible a nivel de pxel, sino que sobre este manejador hay que aplicar otra funcin para que sea accesible mediante un puntero clsico de C. Esta forma de acceder slo es necesaria cuando queremos ver, comparar, modificar o realizar cualquier otra operacin con el nivel que toma el pxel, si nuestra intencin es solamente mostrar lo que se captura no es necesario el acceso a los pxeles. A continuacin se muestra el mtodo que me hace accesible con un puntero la imagen.

Tecnologa ActiveX

Pgina 17

Proyecto Fin de Carrera

2.2.10.- Obtencin del puntero a la imagen capturada.


Como ya se ha mencionado en el punto anterior mediante el manejador de la imagen no podemos realizar un procesado de los fotogramas porque estos no permite ser accedidos a nivel de pxel; para ello es necesario obtener un puntero a lo almacenado en el manejador es decir obtener un puntero a la imagen capturada. Para realizar esto usa un mtodo del control VideoOCX. Este obedece a la siguiente sintaxis: (BYTE *)data = (BYTE *)m_VideoOCX.GetDataPointer(long m_Image)

Donde m_Image en el manejador que acoge la imagen a la que se quiere hacer apuntar el puntero y data es el puntero que se hace apuntar a dicha imagen. Ahora usando el puntero data si tenemos acceso a los pxeles y podemos realizar operaciones con el valor que estos toman en cada uno de los fotogramas. En esto se basa la deteccin de movimiento en la secuencia de imgenes, en que se detecte diferencia en el valor que toman los pxeles de fotogramas consecutivos. Esto ser explicado ms adelante cuando se muestren los distintos algoritmos que se han utilizado para dicha deteccin de movimiento. Notar que la llamada de este mtodo devuelve un puntero a BYTE, pues una variable de tipo BYTE tomo los valores de un unsigned char es decir cada uno de los pxeles de la imagen van a estar comprendidos entre los valores 0 255, donde 0 es ausencia total de luminosidad (negro) y 255 es saturacin total de luminosidad (blanco). Pero este mtodo tambin devuelve un puntero a una imagen de color si el manejador utilizado se inicializ con el mtodo GetColorImageHandle(), en ese caso el manejador contendr una imagen en color y el puntero acceder a una imagen cuyos pxeles estarn definidos por tres bytes (B,G,R); cada uno de estos bytes define el valor de cada uno de los tres colores del pxel (B: Nivel de color azul; G: Nivel de color verde; R: Nivel de color rojo). Al igual que capture, este mtodo aparece dentro del bucle de captura y hay que invocarlo por medio del puntero al dialogo que lo contiene, de forma que la sintaxis que el lector podr encontrarse en el cdigo fuente no es exactamente la mostrada anteriormente sino que usa ese puntero al dialogo antes mencionado.

Tecnologa ActiveX

Pgina 18

Proyecto Fin de Carrera

2.2.11.-Visualizacin de la imagen del manejador.

Obedece a la siguiente sintaxis: m_VideoOCX.Show(long m_Image) Donde m_Image es el manejador de la imagen que se quiere visualizar en el control. Notar que si accedemos a la imagen a nivel de pxel y modificamos el nivel de estos, los cambios se van a reflejar en la imagen almacenada en el manejador de modo que cuando queramos visualizar dicha imagen modificada tenemos que pasarle al mtodo Show() el manejador de la imagen que es como el contenedor dentro del cual se le han realizado las modificaciones a la imagen. De igual modo que en los mtodos anteriores tambin se accede a Show() mediante un puntero al dialogo contenedor ya que la invocacin a este mtodo se encuentra dentro del hilo de captura.

2.2.12.-Obtencin del tamao del fotograma.

Para realizar operaciones de procesamiento sobre los pxeles de la imagen, en muchas ocasiones, es necesario conocer cual es la dimensin de la imagen. Esto se obtiene mediante la invocacin a la siguiente funcin: int size = m_VideoOCX.GetImageDataSize(m_Image) Toma como parmetros el manejador de la imagen de la cual se quiere conocer su dimensin y devuelve un entero que es el nmero de pxeles de la imagen. El mismo resultado puede ser obtenido mediante la invocacin de mtodos que devuelven por separado el alto y el ancho de la imagen. Al igual que los anteriores es accedida mediante un puntero al dialogo contenedor al encontrarse dentro del hilo de captura. Se han explicado con brevedad algunos datos de inters sobre los controles ActiveX, y se han introducido caractersticas del control OCX utilizado para la realizacin de este proyecto. VideoOCX tiene mucha ms funcionalidad de la que aqu se ha considerado; no obstante se ha introducido aqu este resumen de sus mtodos con vistas a que el lector pueda entender con mayor facilidad como se ha realizado en el proyecto las labores de captura y procesado de la imagen.

Tecnologa ActiveX

Pgina 19

Proyecto Fin de Carrera

3.- DIVISIN FUNCIONAL

La forma de abarcar los proyectos software es, al igual que con otro tipo de proyectos de ingeniera, hacer una previa planificacin para que el programa cumpla toda la funcionalidad para la que es diseado, pero en el caso de este tipo de proyectos, en ocasiones los rboles no nos dejan ver el bosque y es conveniente hacer una divisin conceptual de las funciones que se intentan cubrir y adjudicar dichas funciones a distintos bloques funcionales que cumplen una misin diferenciada en el cdigo. De este modo se consigue tener una visin ms clara de aquello que realiza el cdigo, y que es difcil de obtener con slo una ojeada al cdigo fuente. Los bloques funcionales no explican ms que aquello que se ha implementado en cdigo fuente pero a nivel conceptual si entrar en aquellos detalles que son secundarios para entender sus partes por separado. Aunque otra divisin, usando otro tipo de criterio y agrupando distintas funcionalidades en distintos bloques, sera igualmente valida incluso dando un nmero distintos de bloques funcionales. En la divisin que aqu presentar existen bloque con un elevado nmero de lneas de cdigo y en contra posicin otros bloque funcionales cuyo tamao en cdigo es muy reducido pero cuya funcionalidad es tan importante como los anteriores de modo que no se puede considerar integrados en ellos. Aqu considero que el proyecto podra dividirse en 5 bloques de funcionalidad claramente diferenciada, estos bloques se presentan a continuacin:

3.1.- Bloque funcional de adquisicin o captura de la imagen

Este bloque tiene una funcionalidad clara y muy importante para el buen funcionamiento de los siguientes bloques, su funcin es presentar a los siguientes bloques una interfaz de acceso fcil y rpida hacia los datos, es decir este bloque dar como resultado de salida una imagen en escala de grises ubicada en un contenedor que responde al nombre de un determinado manejador ( imagehandle ) y es accesible a nivel de pxel por un puntero a BYTE. Tambin se considera dentro de este bloque la funcionalidad llevada a cabo por el driver que es el que se encarga de solucionar los problemas de comunicacin entre la cmara y la aplicacin. Parte de la funcionalidad interna del control VideoOCX puede considerarse que est inmersa en este bloque funcional de adquisicin de la imagen pues este ActiveX presenta la opcin de elegir cualquier driver instalado en el sistema compatible con Video for Windows (VFW) y hacer que este driver sea la fuente de

Divisin Funcional

Pgina 20

Proyecto Fin de Carrera adquisicin de fotogramas para la aplicacin en la que el control VideoOCX est encajado o hace uso de l. Es esto mencionado anteriormente unos de los aspectos que dotan de gran funcionalidad al sistema, ya que si hacemos correr hilos distintos de la misma aplicacin y seleccionamos en cada uno de estos hilos fuente distintas de imgenes ( tanto drivers distintos como dispositivos distintos que pueden ser distintas cmaras digitales, tarjetas digitalizadoras o cualquier perifrico de adquisicin de imgenes compatible con VFW ) podemos tener varios procesos de videovigilancia concurrentes en la misma mquina cuyos problemas de comunicacin con los distintos dispositivos de adquisicin vienen solventados por los distintos drivers.

Dependiendo del ruido adquirido en este bloque se condicionaran los valores estimados por los siguientes bloques para el nivel a partir del cual disparar la alarma. Puede ser este un factor muy importante a la hora de llevar a cabo un diseo de una aplicaciones de vigilancia, pues un ruido extremadamente elevado puede reducir de forma considerable la resolucin de un sistemas de estas caractersticas. Esto anterior describira la situacin por la que un nivel elevado de ruido elevara tambin el nivel de disparo de la alarma estimado y lo dejara por encima de aquellos valores que ciertas acciones de intrusismo pueden producir, las cuales pasaran por el sistema sin ser detectadas por los bloques diseados a tal efecto. En contraposicin si hacemos una estimacin optimista del nivel de ruido de nuestro sistema nos podemos encontrar que en el rgimen permanente de nuestra aplicacin existan alarmas provocadas porque el nivel de ruido supera el umbral estimado para el lanzamiento de la alarma, en este caso estaramos ante un sistema con un elevado nmero de falsas alarmas (elevada Pfa.Probabilidad de falsa alarma ) y por tanto dotado de poca fiabilidad. La solucin de la problemtica mostrada en este prrafo no es competencia de este bloque funcional pero el nivel de ruido, origen del problema anterior, si viene fijado por este bloque y poco podemos hacer para disminuirlo una vez tomada la eleccin de los componentes del sistema. Relacionado con lo anterior se ha de decir que el valor del ruido que se captura con la imagen est sujeto a mltiples factores como pueden ser la calidad de la lente de la cmara utilizada en este sistema, el cable utilizado para la transferencia de los datos de la cmara a la aplicacin, los conectores del cable a la cmara y al puerto USB; adems de estos, que pueden ser considerados factores hardware, existen otros factores que podemos denominar factores software que son tales como el nmero de pxeles total de la imagen, el nmero de pxeles de segmento del fotograma a procesar, si el segmento de vigilancia es horizontal o si por el contrario es un segmento vertical...

Adems de este ruido existe otro ms peligroso que es aquel en entornos donde los vigilado se encuentra inmerso entre movimientos uniformes, un ejemplo de esto sera realizar la vigilancia de un objeto en zona arbolada donde los arbustos y rboles son balanceados por el viento. Estos entornos son especialmente complicados porque pueden dar lugar a niveles de disparos de la alarma que pueden enmascarar alertas reales.

Divisin Funcional

Pgina 21

Proyecto Fin de Carrera

3.2.- Bloque funcional de calculo de estadsticos para el nivel de disparo.

Este es el bloque encargado de solucionar la problemtica mostrada en la seccin 3.1 sobre el efecto daino de una mala estimacin del nivel de ruido del sistema. Tiene como misin dar una referencia para el nivel a partir del cual podemos considerar que tenemos una alerta, tiene por lo tanto, a diferencia del bloque anterior, formas distintas para la deteccin por igualdad y la deteccin por similitud. No obstante, se ha empleado en ambos casos calculo de parmetros estadsticos d de las magnitudes a vigilar para la deteccin, como medias muestrales o desviaciones tpicas muestrales, estas medias y desviaciones sern sobre los datos adquiridos durante el periodo que dedica la aplicacin al anlisis del entorno a vigilar en condiciones de no movilidad y determinarn en gran medida las estimaciones de los niveles de deteccin del sistema, as como, derivado de esto, el comportamiento de fiabilidad del sistema: El sistema ser tanto ms robusto en fiabilidad cuanto mejor sea la estimacin del nivel del ruido. No obstante no se debe pensar que la mayor o menor fiabilidad del sistema slo est sujeta o es dependiente de la estimacin en tiempo real de la media o desviacin tpica muestral; sino que mucha importancia en la estimacin de los niveles de vigilancia la tiene el dimensionamiento de las funciones de densidad de probabilidad de las muestras adquiridas por el sistema de vigilancia. Es decir, las muestras adquiridas en nuestro sistema estn inmersas en un cierto ruido, este ruido dota de cierta importancia al azar a la hora de captura de estas muestras, pero este azar est sujeto a las leyes de la estadstica y probabilidad las cuales nos permiten tener un cierto grado de conocimiento del ruido. En trminos matemticos estas leyes de la estadstica viene enunciada por la funcin de densidad de probabilidad y su mejor o peor dimensionamiento en tiempo de diseo de esta aplicacin ( no en tiempo real ) es lo que nos permitir hacer un ajuste ms o menos fino del nivel de disparo de la alarma. Como se ver ms adelante se observa que estos valores son distintos dependiendo del nmero de pxeles que forma el segmento a vigilancia, de si esta zona es una franja horizontal en la imagen o si es una franja vertical y de si se ha tomado una zona donde el nivel medio de los pxeles es bajo ( baja luminosidad ) o si es alto ( elevada luminosidad ). Puesto que este nivel de la alarma es muy dependiente no slo del entorno que se est vigilando sino tambin dentro de las distintas partes con diferente luminosidad dentro de la misma imagen es muy importante este bloque funcional. Pero tambin tiene una dependencia con un parmetro que se explicar ms adelante (probabilidad de falsa alarma) y que viene a estimar cual ser la seguridad que nos proporcional el sistema ante posibles falsas alarmas, es decir, mediante la introduccin de este parmetro podemos dar cierta robustez al sistema frente a incursiones peligrosas del ruido por encima de su nivel medio estimado en el periodo de observacin y sujeto a las funciones de densidad de probabilidad dimensionadas. El bloque funcional del calculo de estadsticos para el nivel de disparo est sujeto al tiempo que dediquemos a la observacin de las magnitudes que se usarn para dicho calculo, este parmetro ser configurable por el usuario antes de la inicializacin

Divisin Funcional

Pgina 22

Proyecto Fin de Carrera de la captura de fotogramas en el sistema, queremos decir con esto que depender por tanto de la eleccin de usuario que tendr que llegar a un compromiso entre la eficiencia que quiera para estos valores de disparo y el tiempo que quiera dedicar a su estimacin. No obstante no ser una decisin crtica puesto que ste ser un proceso que se realizar fuera del rgimen permanente para el que est diseada la aplicacin. Aunque las lneas de cdigo que se dedican a este bloque no son muy numerosas, he considerado diferenciar stas en un bloque funcional porque detrs de ellas subsiste un elaborado calculo estadstico que merece ser mencionado. Esto que se ha esbozado en este punto se desarrollar con ms detalle en otra seccin dedicada expresamente a justificar las elecciones tomadas a la hora del dimensionamiento de las funciones de densidad de probabilidad, no obstante sirva este punto de introduccin y destaque la importancia que la estadstica ha tenido en la realizacin de este proyecto.

3.3.- Bloque funcional de procesamiento de la imagen.

Este bloque funcional puede ser considerado como el corazn de nuestro sistema de deteccin de movimiento pues se dedica a medir mediante la estimacin de estadsticos el movimiento de un objeto en la imagen. Este movimiento captado en un fotograma se traduce a nivel matemtico en el cambio de estado de los valores de los pxeles que componen la matriz de la imagen. Por tanto este bloque pretende determinar cual es la variacin matemtica / estadstica en el estado de los pxeles cuando hay una variacin en el escenario vigilado. Es el encargado de realizar los clculos sobre la zona de vigilancia de los fotogramas capturados en tiempo real. Los clculos realizados sobre estos fotogramas son la media de las diferencias entre las zonas de deteccin de fotogramas consecutivos y la correlacin de la zona de deteccin de fotogramas consecutivos. Estos bloques los componen ciertos algoritmos que incluyen bucles de procesamiento de la imagen accedindola a nivel de pxel. Se ha intentado realizar la optimizacin del cdigo para minimizar el tiempo de calculo de estos algoritmos mediante varios mtodos: La primera optimizacin, fundamental en cualquier proyecto software, es minimizar el nmero de bucles aprovechando al mximo la utilizacin de aquellos que son realmente necesarios. Esta optimizacin nos lleva a concentrar la funcionalidad de este bloque en aquellos bucles que la optimizacin no puede eliminar; es por esto que el cdigo concentra el mayor nmero de llamadas a las funciones dentro de estos bucles y as traslada la realizacin de esta funcionalidad a las distintas funciones. En segundo lugar se ha llevado otra optimizacin que nos permite la idea de deteccin que se est implementando. Esta idea consiste en que no es necesario procesar todo el rea de la imagen que se est capturando sino que dentro de esta imagen slo procesar aquel rectngulo o segmento en el que estamos interesados en detectar movimiento. Este rectngulo ser en el que se encuentre el objeto a vigilancia. Con esta

Divisin Funcional

Pgina 23

Proyecto Fin de Carrera segunda optimizacin no reducimos el nmero de bucles sino el nmero de iteraciones dentro del bucle, ahora este nmero de iteraciones es dependiente del tamao del formato de captura pero tambin del tamao del segmento donde se encuentra el objeto que hemos de vigilar o aquella zona que estamos interesados en controlar. Todo esto de la zona rectangular de deteccin se explicar con ms detalle ms adelante, en este apartado nicamente quiero que se entienda que funcionalmente se ha de diferencial todo un bloque que accede a la imagen para detectar que cambia a nivel estadstico en el valor de los pxeles cuando hay un movimiento recogido por la cmara en la zona de deteccin. Los algoritmos que se implementan para dar su funcionalidad a este bloque estn inspirados en tcnicas de tratamiento digital de seales y de imgenes cuyo buen comportamiento est comprobado, y es su trasfondo matemtico lo que le da fiabilidad a su uso.

3.4.- Bloque funcional de aplicacin para Windows

Este bloque es el encargado de dotar de la forma a nuestra aplicacin, es decir de dotar a nuestra aplicacin de una interfaz de usuario similar a las interfaces que usar todos los programas que corren sobre un sistema operativo visual como es Windows.

Recordemos que una de las finalidades de la elaboracin de este proyecto era la de la realizacin de una aplicacin para Windows de un sistema de vigilancia, la particularidad de que sea para Windows implica la programacin de lo que es llamado la API de Windows ( Interfaz de programacin de aplicaciones para Windows ). Para la realizacin de este proyecto se ha usado la API Win32 y el resultado ha sido una aplicacin que corre sobre Windows y que en la plataforma de desarrollo de Visual Studio 6.0 pertenece a la modalidad de aplicaciones denominadas: Aplicaciones basadas en dilogos. Quiere esto decir que la interfaz visual de salida y entrada de datos est constituida por un conjunto de dilogos cuyo diseo y funcionalidad internas estn incluidas dentro de este bloque funcional. Estos dilogos actan como consola de videovigilancia sustituyendo en los sistema analgicos a un elevado nmero de monitores de televisin. Ahora el sistema lo constituye una ventana donde aparece la imagen de aquello que se est vigilancia y un conjunto de dilogos o ventanas que sirven para la configuracin de los parmetros del sistema de vigilancia. Se ha intentado que el diseo del entorno grfico de la aplicacin sea lo ms parecido posible al de todos los programas diseados para Windows y as obtener una ventana, que a su vez hace las veces de consola de videovigilancia, que sea familiar para el usuario de la aplicacin.

Divisin Funcional

Pgina 24

Proyecto Fin de Carrera

3.5.- Bloque funcional de disparo de la alarma

Para la concesin de la existencia de este bloque funcional para el disparo de la alarma hay que entender que este sistema de videovigilancia estara al principio de todo ese proceso que se pondra en marcha para conseguir la seguridad de una determinada zona o cosa, y que en caso de que este sistema diese la alarma se tendra que disparar unos sistemas para conseguir la seguridad. Se ha considerado todo un bloque funcional para el disparo de la alarma puesto que sera en este bloque la conexin con otros sistemas encargados de la seguridad y que su diseo no estara contemplado en este proyecto sino que habra que entenderlos como posibles ampliaciones, cuya realizacin sera objeto de trabajo de otro proyecto completo. Este bloque es el encargado de detectar si los niveles de alarma calculados por el bloque de calculo estadstico son sobrepasados por los niveles de medias de diferencias o nivel de correlacin de fotogramas consecutivos. En este caso anterior se considera alarma y se activa el mecanismos de aviso a la persona que monitoriza el sistema de vigilancia o mediante una interfaz automatizada lanzar los eventos necesarios para que se lleve a cabo el plan de prevencin diseado para activar en estos casos. Con relacin a lo anterior si se muestran en este proyecto ciertas ideas de cuales seran las lneas de trabajo que habran de seguir aquellas personas encargadas de disear los sistemas de seguridad basados en este sistema de deteccin. No obstante, estas lneas de trabajo no se cierran con las que se mencionarn en esta memoria sino que estn abiertas a todas aquellas que la tecnologa vaya haciendo viable y la imaginacin de aquellas personas contemple. Espero que al lector le haya servido este punto para tomar una idea, de lo que se va a encontrar desarrollado en los siguientes apartados de esta memoria, tambin espero que haya sido una divisin conceptual de utilidad para aquellas personas encargadas de realizar algo similar en el futuro o quienes estn interesados en ampliar este proyecto. Ahora lo que nos queda es el desglose de estos bloques funcionales en lneas de cdigo y toda la casustica posible que nos podamos encontrar y para la cual se pueda usar este proyecto.

Divisin Funcional

Pgina 25

Proyecto Fin de Carrera

4.- FUNDAMENTOS DEL SISTEMA DE VIGILANCIA

En primer lugar partiremos desde cero para explicar los fundamentos tericos necesarios y que hacen posible la videovigilancia de forma automatizada por cmaras digitales. No olvidemos que el concepto de intrusismo, vigilancia, movimiento son ideas de fcil entendimiento para el ser humano, pero que la concepcin de estas por mquinas no dejan de ser la simulacin mediante software de las mismas, es por esto la razn que la deteccin de un simple movimiento para una persona se convierte en un problema no exento de dificultad para una maquina. En relacin con lo anterior cabra realizarse las siguientes preguntas: Qu cambia en la memoria de la computadora cuando se realiza un cambio de la imagen a nivel visual? Qu ve un ordenador cuando nosotros estamos visualizando una fotografa, una pelcula o en definitiva una secuencia de imgenes? En la respuesta a estas preguntas se encuentra tambin el fundamento de nuestro sistema de vigilancia. Para entender las respuestas a las preguntas anteriores hay que entender como se realiza el almacenamiento de la imagen en la computadora; este almacenamiento se lleva a cabo dividiendo la imagen en unidades fundamentales denominadas pxeles. Estos pxeles representan cada uno de los puntos de la imagen y su almacenamiento en la memoria del ordenador son de forma independiente. Por lo tanto a la pregunta de qu es lo que ve un ordenador cuando tenemos una imagen tiene como respuesta que es un conjunto de pxeles que en conjunto constituyen la imagen. Si la imagen es en color el pxel ha de guardar informacin sobre tres niveles de color ( Rojo, Verde, zul ). Hay distintos formatos para la representacin del color en los pxeles, uno de los ms utilizados es el formato conocido como RGB24, este formato utiliza 8 bits para cada uno de los colores que en ingles son Red, Green y Blue; si juntamos la primera letra de cada uno de los colores en ingls y sumamos el nmero de bits utilizados en total en cada pxel obtenemos el nombre del formato. Puesto que cada uno de los colores utiliza un Byte para ser representado, en cada pxel se puede tener por lo tanto 256 niveles de luminosidad (de 0 a 255) por cada uno de los colores. Si la imagen no es en color se denomina en escala de grises, estas utilizan un Byte por cada pxel y en el se representa la luminosidad que va desde 0 ( negro o falta total de luminosidad ) hasta 255 ( blanco o mximo de luminosidad ). Tambin est relacionado con los pxeles lo que se denomina la resolucin de la imagen; la resolucin de la imagen es el nmero de pxeles que constituyen una imagen y se suele dar como el ancho por el largo del fotograma en nmero de pxeles; por ejemplo una resolucin con la que he trabajado en el proyecto ha sido 320x240, que significa que el fotograma tiene un ancho de 320 pxeles y 240 pxeles de alto, en total la imagen ocupa en memoria 76800 pxeles. Estos son datos que hay que tener en cuenta cuando se quieren hacer capturas y transferencias de imgenes puesto que constituyen elevadas cargas de datos que limitan la captura en tiempo real de fotogramas y ocupan mucho ancho de banda al ser transferidas. El nmero de pxeles tambin constituyen una limitacin considerable a la hora de procesar la imagen en

Fundamentos del Sistema de Vigilancia

Pgina 26

Proyecto Fin de Carrera tiempo real, por lo que la resolucin tambin es un parmetro importante en el diseo de una aplicacin que se han de ejecutar en tiempo real. Por lo antes mencionado se debe deducir que para una misma resolucin una imagen en escala de grises ocupa tres veces menos memoria que una imagen en RGB24, adems si estamos interesados en procesar la imagen, como es el caso en este proyecto, tambin resulta ms rpido las imgenes en escala de grises que en color. A veces, cuando es necesario procesar imgenes y disponemos de estas en formato RGB24, se suele realizar un preprocesado de la imagen que extraiga un byte por cada pxel y se obtenga una imagen en una sola tonalidad ( rojo, verde o azul segn sea el byte que se extraiga de la imagen original ). Llegados a este punto ya disponemos de los conocimientos para responder a la pregunta de qu cambia en la memoria de la computadora cuando se realiza un cambio de la imagen a nivel visual; la respuesta es que cambia el estado de los pxeles. Centrmonos en el caso de las imgenes en escala de grises, en este caso cada pxel se almacena en un byte en memoria cuyo estado puede estar comprendido entre 0 y 255; cuando hay un cambio en la imagen, los pxeles situados en la zona de la imagen donde se ha realizado dicho cambio sufren una variacin en su estado, es decir, almacenan otro valor comprendido entre los lmites. Si el pxel pasa de almacenar un valor a almacenar un valor ms elevado, este pxel se ilumina y si por el contrario pasa a almacenar un valor ms bajo entonces este pxel se oscurece; de este modo es como el cambio en una imagen, que en definitiva es un cambio en la luminosidad de los puntos que la constituyen se traducen en cambios de los pxeles que codifican dichos puntos. El movimiento no deja de ser un cambio en el valor de luminosidad almacenado en los pxeles, quiere esto decir que cuando hay un movimiento en una imagen este se produce porque el cuerpo que experimenta el movimiento se va desplazando sobre los pxeles que constituyen la imagen provocando sobre estos pxeles un cambio de estado. Llegados a este punto ya se puede entender como se procesa una imagen digital para detectar movimiento, lo nico que tenemos que hacer es detectar cambios en el nivel de los pxeles y cuantificar este cambio para discriminar si es debido a un movimiento captado en la imagen o a oscilaciones del nivel del pxel debidas al ruido introducido por el sistema. Por lo tanto a modo de resumen de este apartado podemos decir que: para una computadora la imagen constituye un nmero ms o menos elevado de bytes almacenados en memoria, cada byte se corresponde en escala de grises con un pxel y este nmero de pxeles es lo que se denomina la resolucin de la imagen. Cuanto mejor sea la resolucin mayor es este nmero de pxeles y mejor es la calidad visual de la imagen. Los pxeles almacenan un valor comprendido entre 0 y 255 que se corresponde con los valores de menor y mayor luminosidad respectivamente. Los cambios en la imagen constituyen cambios en los niveles de los pxeles y son ms acentuados cuanto mayor sea el cambio en la imagen. Este nivel de cambio ha de ser detectado por la aplicacin que a su vez ha de discriminar si dicho cambio es consecuencia de movimiento debido a intrusismo o debido al ruido introducido por el sistema. Del tamao de la imagen y de la zona de esta sobre la que actan los algoritmos de

Fundamentos del Sistema de Vigilancia

Pgina 27

Proyecto Fin de Carrera deteccin dependen otros parmetros de la aplicacin como es, por ejemplo, el nmero de fotogramas capturados por segundo. No obstante, estas limitaciones se han intentado minimizar con la optimizacin del cdigo.

A continuacin se explicar cual es el fundamento terico de los mtodos de deteccin de movimiento que se codificarn en algoritmos.

4.1.- Anlisis por igualdad

Se ha denominado mtodo por igualdad a aquel que lleva a cabo la deteccin del movimiento comparando pxel a pxel fotogramas consecutivos de la imagen. La comparacin de estos fotogramas se lleva a cabo a travs de la resta de los valores de los pxeles, es decir, calculando la diferencia natural del valor de los pxeles, por tanto cuanto ms prxima a cero sea esta diferencia ms igualdad existe entre fotogramas consecutivos. El algoritmo no distingue la diferencia de los pxeles por exceso o por defecto, sino que se queda con el valor absoluto de esta diferencia y sobre esta realiza la media que ser el parmetro de comparacin. Previamente al inicio de la simulacin se realiza un clculo estadstico para la estimacin del umbral de disparo, en l se hacen observaciones en ausencia de ruido y se aplica el mismo algoritmo descrito anteriormente con el que estimar en cuanto repercute el ruido en la media de la diferencia de los pxeles. Durante el proceso de diseo de los algoritmos que implementan este mtodo se baraj la posibilidad de realizar la comparacin de los pxeles mediante un XOR de cada unos de los bits que componen el byte que almacena el valor de los pxeles que ocupan la misma posicin en fotogramas consecutivos de la imagen; este mtodo se descart porque la operacin binaria del OR Exclusivo no devuelve la diferencia natural entre los pxeles que ocupan la misma posicin en fotogramas consecutivos, sino que devuelven el error binario entre los bytes que almacenan el valor de los pxeles. Puesto que el calculo de los niveles de deteccin se realizan partiendo de la diferencia natural de los pxeles el mtodo de XOR se descarta por si slo. Posteriormente en esta memoria se llevar a cabo la explicacin de los algoritmos que implementan este mtodo de anlisis entrando en detalles de diseo de dichos algoritmos, tambin se mostrarn ejemplos de videovigilancia llevadas a cabo por medio de este mtodo de anlisis y se mostrarn las conclusiones comparativas entre los dos mtodo implementados. Es necesario por lo tanto especificar en que consiste este segundo mtodo de calculo de movimiento como a continuacin se muestra.

Fundamentos del Sistema de Vigilancia

Pgina 28

Proyecto Fin de Carrera

4.2.- Anlisis por similitud


Se ha denominado mtodo o anlisis por similitud a aquel que lleva a cabo el clculo de movimiento mediante la correlacin de fotogramas consecutivos. Siempre que se pretende buscar un grado de similitud entre dos funciones unas de las opciones siempre a considerar es la correlacin . En la definicin de correlacin se indica que es el grado de similitud que presentan dos funciones, este es el motivo por el que usar este mtodo para analizar en que medida un fotograma se ha diferenciado del fotograma que le antecede. El grado de similitud o en su defecto el grado de diferenciacin de dos fotogramas consecutivos se mostrar en la diferencia que exista entre la correlacin que se vaya calculando frente a uno, siempre por defecto. Para que esto quede ms claro veamos de forma detallada cuales son los fundamentos matemticos que describen la operacin de correlacin. La operacin de correlacin se define matemticamente para dos seales X e Y de la siguiente forma:

r XY (l ) = X (l ) Y (l ) =

K =

X (k ) Y (k l ) = X (l k ) Y (k ) = X (l + k ) Y (k )
K = K =

Si se realiza la operacin de operacin sobre la misma seal X se denomina autocorrelacin y se define:

r XX (l ) = X (l ) X (l ) =

K =

X (k ) X (k l ) =

K =

X (l k ) X ( k ) =

K =

X (l + k ) X (k )

La correlacin tiene las siguientes propiedades: 1.2.3.4.5.-

r r

XY

(l ) = r YX (l ) (l ) = r XX (l )
X

XX

Energa

= r XX (0) =

r r

XX

(l )

= r XX (0)
Y

XY

(l )

E E
X

XX

(0) r YY (0)

Es especialmente interesante la propiedad 4 donde se dice que la autocorrelacin de una funcin X siempre es menor o igual que la energa de dicha funcin X. La igualdad se alcanza en el origen, es decir que la autocorrelacin de una seal X coincide con su energa en el origen.

Fundamentos del Sistema de Vigilancia

Pgina 29

Proyecto Fin de Carrera

r XX (0) =

K =

X (k ) X (k ) = E

Pero anterior es para el caso de que tengamos seales deterministas, cosa que no ocurre con las seales con las que se trabaja en este proyecto. Supongamos que estamos procesando una secuencia de fotogramas que no recogen ningn tipo de movimiento aparente (quiere esto decir que no se muestra un movimiento apreciable por el ojo humano), an en este caso dos fotogramas consecutivos no constituyen seales deterministas pues tienen una componente de ruido aditivo que hacen que cada uno de los pxeles de un fotograma no coincida exactamente con el fotograma que le antecede. Es por esta razn anterior que nos vemos obligado a definir la correlacin de otra forma diferente para seales aleatorias. Vamos a considerar que el ruido en nuestros fotogramas introduce una aleatoriedad de forma que el valor exacto de los pxeles en cada instante un nmero aleatorio y que por lo tanto cada imagen capturada puede ser considerada una realizacin de cierto proceso estocstico que viene caracterizado por cierta funcin de densidad de probabilidad. En estas condiciones anteriores no es descabellado pensar que en ausencia de movimiento los pxeles pueden mantener un cierto valor medio. Adems si consideramos que en distintas realizaciones de este proceso, o lo que es lo mismo, en distintos fotogramas los pxeles situados en las mismas posiciones pueden mantener el mismo valor (o muy parecido dependiendo de la actuacin del ruido sobre ellos) ya que estarn iluminando una zona de la pantalla cuya tonalidad debe ser la misma pues es factible considerar que el objeto que se encuentra ocupando esa posicin no cambiar demasiado en fotogramas consecutivos; sino que la variacin del valor de los pxeles ser ms dependiente de la posicin relativa que ocupen estos pxeles en la imagen, es decir ser ms dependiente de la distancias entre esos pxeles que de la posicin que estos ocupan. Esto anterior nos lleva a considerar que se trata de un proceso aleatorio estacionario. En estos casos se define la autocorrelacin como sigue:

XY

(n, m) = E ( X (n) X (n + m)) =

XY

( m)

Por ultimo definamos cual ser la expresin que usemos para el calculo de la correlacin en el proyecto. Esta ser la correlacin normalizada o coeficiente de correlacin normalizado y su expresin matemtica se muestra a continuacin:

XY

(l ) =

K =0 M

X (k ) Y (k l )
M K =0

K =0

X (k ) X (k l ) Y (k ) Y (k l )
Pgina 30

Fundamentos del Sistema de Vigilancia

Proyecto Fin de Carrera

Puesto que solo estamos interesados en detectar el movimiento que ha tenido lugar en la imagen, no nos interesa calcular estos coeficientes de correlacin para los distintos valores de l ya que sera un calculo imposible de hacer en tiempo real debido al tamao de la imagen que estamos manejando. Slo nos interesa el valor de Cxy cuando no exista desplazamiento de un fotograma sobre el anterior y as poder medir cual es la diferencia de las dos imgenes en aquel punto ( l=0 ) donde la correlacin tendra que dar un mximo por similitud entre ambas, esta diferencia con el mximo es debida al movimiento captado entre ambos fotogramas. Llegados a este punto se entender mejor porque se han utilizado estos coeficientes de correlacin y no el valor de la correlacin de ambos fotogramas. La razn es que este coeficiente esta normalizado a 1, es decir que su mximo valor ser 1 cuando ambas imgenes capturadas coincidan exactamente. De este modo si podemos conocer cual es el valor mximo de estos coeficientes tambin podemos conocer la diferencia que estos van teniendo con respecto al mximo, cosa que no sera posible con el valor de la correlacin pues no sabemos cual es el mximo y por lo tanto no se podra calcular la diferencia hasta l. Como se ha justificado anteriormente se calcula el valor para l=0:

C XY (0) =

K =0 M

X (k ) Y (k )
M K =0

K =0

X (k ) X (k ) Y (k ) Y (k )

r r
XX

XY

(0)

(0) r YY (0)

De este modo si las imgenes X e Y coinciden exactamente se obtiene el valor mximo para Cxy=1

Fundamentos del Sistema de Vigilancia

Pgina 31

Proyecto Fin de Carrera

5.- DIAGRAMA DE FLUJO DEL SISTEMA


APLICACIN DE VIDEOVIGILANCIA

INICIAR VENTANA

CONFIGURACIN DE LOS PARAMETROS

INICIALIZACIN DEL CONTROL VideoOCX

VideoOCX INICIALIZADO ?

NO

SI
CAPTURAR SECUENCIA LIBRE DE MOVIMIENTO CALCULO DEL NIVEL DE DISPARO DE LA ALARMA ALGORITMO IGUALDAD o SIMILITUD EN REGIMEN PERMANENTE BLOQUE DE DETECCIN DE LA ALARMA Diagrama de Flujo del Sistema de Vigilancia Pgina 32 ALGORITMO IGUALDAD o SIMILITUD

DATOS PARA EL CALCULO DE ESTADSTICO

DATOS A FICHEROS

Proyecto Fin de Carrera

6.- CALCULO ESTADSTICO PARA EL NIVEL DE DISPARO

6.1.- Fundamentos
Como ya se ha mencionado en otros apartados anteriores el nivel de disparo constituye el umbral a partir del cual se considera que existe suficiente movimiento en la imagen como para hacer lanzar una alarma. Es por lo tanto unos de los parmetros mas importante en un sistema de vigilancia y no debemos escatimar esfuerzos en que su calculo sea todo lo fiable que por nuestros medios podamos conseguir. La herramienta que usemos para la determinacin de este nivel de disparo ser la estadstica y nos apoyaremos en Matlab para la realizacin de clculos que puedan verifican si nuestras hiptesis de partida son validas. Veamos el abanico de posibilidades que nos podamos encontrar en un sistema de vigilancia como el que pretendemos disear: En primer lugar llamaremos movimiento a todo aquello que produzca una variacin del estado de los pxeles suficiente como para que en caso de un buen comportamiento del sistema sea detectado y de lugar a una alarma. Y en segundo lugar, claro est, existen dos posibilidades: que se detecte movimiento en nuestro sistema o que no se detecte movimiento en nuestro sistema. Con la combinacin de los hechos que puedan tener lugar se llega a que existen 4 casos posibles, asignaremos una probabilidad a cada uno de los casos y luego explicaremos cual es el significado de esa probabilidad:

Lo detecto: Existe movimiento

Pd

No lo detecto: Pm Existen 4 posibilidades: Lo detecto: Pfa No existe movimiento No lo detecto: ----

Donde: Pd.- Probabilidad de deteccin. Pm.- Probabilidad de perdida. Pfa.- Probabilidad de falsa alarma.

Clculo Estadstico para el Nivel de Disparo

Pgina 33

Proyecto Fin de Carrera Se denomina probabilidad de deteccin o Pd a la probabilidad de que realmente se den las circunstancias para hacer lazar la alarma y esta se lance, sera el caso del funcionamiento correcto del sistema de deteccin, que cuando se de un nivel de movimiento lo suficiente como para superar el nivel de deteccin realmente este nivel est bien dimensionado y efectivamente se supere, y se de esta deteccin. Adems ste sera el nico caso para el que debera saltar la alarma, cuando existe suficiente movimiento para que esto se d. Se denomina probabilidad de perdida o Pm a la probabilidad de que dndose el suficiente movimiento en la imagen como para hacer saltar la alarma, el nivel de disparo est lo suficientemente elevado como para que este movimiento no lo supere y quede enmascarado como ruido por debajo del nivel de deteccin. Este caso se da cuando se ha estimado un nivel de alarma muy elevado. Existe una relacin ente la probabilidad de deteccin y la probabilidad de perdida: Pd = 1 Pm

Es decir ambas probabilidades son complementarias. Por ltimo se denomina probabilidad de falsa alarma o Pfa a la que se da en caso de que sin existir el suficiente movimiento en la imagen se haga saltar la alarma como si efectivamente existe el movimiento suficiente. Este caso se da en aquellos sistemas en los que el nivel de deteccin es accesible por el nivel de ruido de modo que sin existir un movimiento en la imagen el ruido es capaz de hacer saltar la alarma. En ltimo lugar tambin se dara el caso complementario de la probabilidad de falsa alarma, que sera el caso de que el sistema no diese alarma cuando efectivamente no la hay, sera un caso de buen funcionamiento de nuestro sistema que no tiene mayor inters para el clculo que pretendemos llevar a cabo. Definidas las probabilidades y los distintos casos que nos podemos encontrar es el momento de determinar cuales van a ser esas magnitudes sobre las que hagamos los clculos estadsticos y midamos las probabilidades anteriormente mencionadas. Estas magnitudes han de cumplen ciertas condiciones: En primer lugar han de poder ser calculadas por cada fotograma capturado en rgimen permanente de nuestra aplicacin, es decir, han de poder ser calculadas en tiempo real y por lo tanto deben de ser magnitudes cuyo computo no requiera mucho tiempo de CPU ya que la aplicacin ha de correr en tiempo real y el tiempo de CPU ha de ser repartido en diversas funciones como captura de la imagen, procesamiento, calculo de estadsticos... En segundo lugar estas magnitudes deben ser un reflejo matemtico de la imagen de forma que si tenemos un cambio a nivel de los pxeles de la imagen esta variable sea fiel reflejo matemtico de este cambio y nos permita un anlisis para la determinacin de un nivel de disparo adecuado.

Clculo Estadstico para el Nivel de Disparo

Pgina 34

Proyecto Fin de Carrera Definidas las probabilidades y dadas las caractersticas que han de cumplir las magnitudes a usar, solamente nos queda definir cuales va a ser estas magnitudes: Las magnitudes que se usarn para medir el movimiento en las imgenes sern la media de las diferencias entre las zonas de deteccin de fotogramas consecutivos y la correlacin de la zona de deteccin de fotogramas consecutivos y el dimensionamiento del nivel de disparo se llevar a cabo mediante el uso de la Pfa y no mediante el uso de Pd y Pm ya que es ms fcil el tratamiento experimental de la primera que el de las otras dos. A partir de este momento denominaremos al procesamiento a travs de la media de las diferencias entre zonas de deteccin de fotogramas consecutivos como anlisis por igualdad y al mtodo de correlacin de la zona de deteccin de fotogramas consecutivos como anlisis por similitud. La razn de estos nombres es que cuando estamos midiendo la diferencia entre fotogramas consecutivos y a esta diferencia le calculamos la media, estamos midiendo cuanto de iguales son estos fotogramas y sin embargo cuando realizamos la correlacin entre fotogramas consecutivos lo que medimos es cuanto de similares son. Como ya se ver ms adelante el calculo del nivel de deteccin de movimiento se realiza de formas distintas para la deteccin por igualdad y la deteccin por similitud. No obstante, se van a emplear en ambos casos clculos de parmetros estadsticos de las magnitudes a controlar para la deteccin, como medias o desviaciones tpicas. Estas medias y desviaciones sern sobre los datos adquiridos durante el periodo que dedica la aplicacin al anlisis del escenario a vigilar en condiciones de no movilidad y determinarn en gran medida las estimaciones de los niveles de deteccin del sistema, as como, derivado de esto, el comportamiento de fiabilidad del sistema que vendr caracterizado por el parmetro de probabilidad de falsa alarma.

6.2.- Funciones de densidad de probabilidad


Por lo anteriormente expuesto no se debe pensar que la mayor o menor fiabilidad del sistema slo est sujeta o es dependiente de la estimacin en tiempo real de la media o desviacin tpica muestral tanto en el caso de igualdad como de similitud; sino que mucha importancia en la estimacin de los niveles de vigilancia la tiene una eleccin acertada de las funciones de densidad de probabilidad que se usarn para la estimacin de la probabilidad de falsa alarma y que modelan acertadamente la poblacin de muestras adquiridas por el sistema. Es decir, igual de importante para la eleccin de un adecuado nivel de disparo es la estimacin en tiempo real de los parmetros de la media y desviacin tpica muestral como la eleccin en tiempo de diseo de una funcin de densidad de probabilidad que modele al sistema adecuadamente. Para la eleccin de la funcin de densidad de probabilidad es necesario hacer un estudio de las muestras capturadas por el sistema. Con ayuda del Matlab visualizamos las muestras volcadas por el sistema en ficheros de datos que servirn de entrada para que con Matlab realizar las operaciones pertinentes.

Clculo Estadstico para el Nivel de Disparo

Pgina 35

Proyecto Fin de Carrera A continuacin se muestran dos grficos que representan las muestras tomadas por el sistema; se capturan los fotogramas y se calcula la medias de las diferencias y las correlaciones, estos datos se vuelcan en un fichero y visualizndolos obtenemos:

Fig. 6.1.

Fig. 6.2.

Clculo Estadstico para el Nivel de Disparo

Pgina 36

Proyecto Fin de Carrera Vista las figuras anteriores, comentmoslas: La figura 6.1 es el resultado de una simulacin en que se han capturado 500 fotogramas, el algoritmo de igualdad procesa estos fotogramas capturados calculando la diferencia entre pxeles que ocupan la misma posicin en la seccin de vigilancia en fotogramas consecutivos y haciendo su media, de modo que lo que esta grfica representa es la media de la diferencia de los pxeles de la seccin de vigilancia de un fotograma y su consecutivo en una secuencia de 500 fotogramas. Estas capturas anteriormente mostradas se han realizado en un escenario donde no exista ningn tipo de movilidad, quiere esto decir que en condiciones ideales se debera haber obtenido una grfica constante en el 0 ya que idealmente al no existir ningn movimiento captado por la cmara un fotograma debera tener en idnticas posiciones idntico valor de sus pxeles y por tanto la diferencia entre los pxeles de fotogramas consecutivos sera 0 y de mismo modo su media sera 0. Por tanto podemos afirmar que en las condiciones de no movilidad lo captado por nuestro sistema se corresponde al ruido introducido en el sistema por imperfecciones en la lente de la cmara, por el cable de transferencia de la cmara al PC, por la conexiones del cable, etc. Este ruido se puede estudiar como un proceso aleatorio pues la figura 6.1 no se volver a repetir, sino que en cada realizacin del proceso se obtendr una grfica diferente, pero en lo que si coincidirn ambas ser en la funcin de densidad de probabilidad. En el caso de la figura 6.2 se representa el resultado de una captura tambin de 500 fotogramas pero a los que esta vez se les ha aplicado el algoritmo de similitud. En este caso lo que se hace es calcular la correlacin entre un fotograma y su consecutivo, y esto se usa como una medida del parecido entre fotogramas consecutivos. Por las propiedades de la correlacin se tiene, que en condiciones ideales y cuando no existe movimiento captado, si dos fotogramas consecutivos son exactamente idnticos su correlacin es 1 que es el mximo valor que puede tomar la correlacin. Si observamos la figura 6.3, como no poda ser de otro modo, vemos que la correlacin est siempre por debajo de la unidad y adems muy cercana a sta. Por tanto concluimos que esta desviacin que presenta la grfica respecto de la unidad es debida al ruido introducido por el sistema y que este ruido al igual que en el caso de igualdad tiene un comportamiento aleatorio que ha de obedecer a una funcin de densidad de probabilidad. El resultado que se obtiene al visualizar el ruido es distinto en cada realizacin de este al tratarse como ya se ha comentado de un proceso aleatorio de modo que la forma que tenemos de estudiarlo es mediante la estadstica. A continuacin capturaremos una realizacin del proceso aleatorio y veremos su histograma. Para el histograma que aqu se va a presentar se ha obtenido mediante una funcin en Matlab que nos permite ajustan el intervalo de resolucin del histograma con lo que vamos a obtener grficas con mayor nivel de detalle y nos permitir observar el parecido de estos histogramas resultados de la realizacin con la representacin de funciones de densidad de probabilidad muy usadas en la estadstica Para estas grficas se han capturado 5000 fotogramas, los resultados que se obtiene son los siguientes:

Clculo Estadstico para el Nivel de Disparo

Pgina 37

Proyecto Fin de Carrera

Fig. 6.3.

Fig. 6.4. En la figura 6.3 se observa la realizacin de 5000 muestras captadas en un escenario en ausencia de movilidad procesadas por el algoritmo de igualdad. Si hacemos un calculo de la media y la desviacin tpica muestral se obtiene que:

Clculo Estadstico para el Nivel de Disparo

Pgina 38

Proyecto Fin de Carrera

= 1.6779 = 0.0904 Veamos ahora para una realizacin del proceso de 5000 muestras procesadas con el algoritmo de similitud; los datos obtenidos son los siguientes:

Fig. 6.5.

Fig. 6.6.

Clculo Estadstico para el Nivel de Disparo

Pgina 39

Proyecto Fin de Carrera En la figura 6.5 se muestras las 5000 correlaciones de los 5000 fotogramas capturados en un escenario en ausencia de movilidad, vemos que en algunos casos se ha dado que dos fotogramas consecutivos son totalmente similares y se dan los picos en los que la correlacin alcanza el 1. Para esta realizacin del proceso tenemos que se han obtenido: = 0.999028 = 7.724169 105 En la figura 6.4. se muestra el histograma para los datos de la captura de 5000 fotogramas a los que se les aplic el algoritmo de igualdad y en la figura 6.6 se tiene ese mismo histograma para el caso de aplicar el algoritmo de similitud. Como vemos en ambos casos obtenemos una concentracin de muestras que resultan dar una envolvente con forma muy parecida a la de la campana de Gauss, de forma que aprovechando esta similitud aproximaremos los datos extrados de las secuencias de imgenes con ausencia de movilidad y los aproximaremos por una normal. Como en estos casos en los que capturamos secuencias sin movimiento ya hemos explicado que las observaciones obtenidas, que difieren de 0 en el caso de igualdad y de 1 en caso de similitud, son debidas al ruido, lo que se est haciendo es tomar una aproximacin normal para el modelo de ruido. De esta forma ya tenemos caracterizado el modelo de ruido por una funcin de densidad de probabilidad como la que sigue: X N ( , 2 )
1 e 2 f X ( x) = 2 1 x
2

Donde:

E[X ] = Var [ X ] = 2 Cuya representacin grfica es la siguiente:

Fig. 6.7.

Clculo Estadstico para el Nivel de Disparo

Pgina 40

Proyecto Fin de Carrera En este caso para la construccin de la campana de Gauss en Matlab se le ha dado una media = 0 varianza 2 = 1 y esta ser la forma que tome nuestro modelo de ruido. Con todo lo expuesto anteriormente se ha demostrado que las muestras capturas por nuestro sistema se corresponden a las de un proceso aleatorio de distribucin normal, de modo que demostrado esto veamos como sera el calculo de la probabilidad de falsa alarma que, como ya se ha explicado, ser el parmetro que se usar para el clculo del nivel de disparo.

6.3.- Probabilidad de falsa alarma y nivel de disparo.


Como ya se ha definido en el apartado 6.1 la probabilidad de falsa o Pfa es la que se da en caso de que sin existir el suficiente movimiento en la imagen se haga saltar la alarma como si efectivamente existe el movimiento suficiente. Este caso se da en aquellos sistemas en los que el nivel de deteccin es accesible por el nivel de ruido de modo que sin existir un movimiento en la imagen el ruido es capaz de hacer saltar la alarma. . Veamos ahora cual es la relacin entre la probabilidad de falsa alarma y el nivel de ruido caracterizado por su funcin de densidad de probabilidad antes descrita. Para ello se presentan una grficas donde de dibuja cual sera la probabilidad de falsa alarma para unos determinados niveles de deteccin. En estas grficas slo se han tenido en cuenta los valores de y calculados en el apartado anterior pero las muestras no son las capturadas por la cmara sino las de una realizacin del proceso aleatorio gaussiano en Matlab, de este modo la explicacin queda ms clara y no es necesario hacer una captura con la cmara excesivamente larga.

Fig. 6.8.

Clculo Estadstico para el Nivel de Disparo

Pgina 41

Proyecto Fin de Carrera Para el caso de un procesamiento por el algoritmo de igualdad (que es al que corresponde la situacin que se da en la figura 6.8) resultar que habr ms movimiento entre fotogramas consecutivos cuanto mayor sea la diferencia entre ellos; como en este caso lo que usamos como variable aleatoria es la media de esta diferencia, esta media ser tanto ms elevada cuanto mayor sea la diferencia; es por esta razn, que en el caso de igualdad, la integral de la funcin de densidad de probabilidad a partir de lo que en la grfica se ha denominado Vp es la Pfa pues es la probabilidad de que el ruido sea lo suficientemente alto para rebasar por exceso el umbral Vp. A continuacin se describir analticamente lo que en la figura 6.8 se describe grficamente: Nuestra funcin de densidad de probabilidad es: X N ( , 2 )
1 f X ( x) = e 2 2 1 x
2

Donde: E[ X ] = y

Var [ X ] = 2

Pfa = P( X > Vp ) = 1 P( X < Vp ) = 1

Vp

1 e 2 2

1 x

1 Vp erfc 2 2

Donde erfc(x) es la funcin complementaria del error. Veamos ahora la grfica para el caso de deteccin por similitud:

Fig.6.9

Clculo Estadstico para el Nivel de Disparo

Pgina 42

Proyecto Fin de Carrera Ahora en el caso de la deteccin de movimiento por el algoritmo de similitud se tiene que estamos usando como variable aleatoria la correlacin entre fotogramas consecutivos; de modo que cuanto ms movimiento haya entre un fotograma y su consecutivo ms descender esta variable aleatoria frente a 1. Si este descenso de la correlacin es debida al ruido entonces se producir una falsa alarma, es por esta razn que ahora el clculo de la probabilidad de falsa alarma relacionada con el nivel de disparo sera la integral de la funcin de densidad de probabilidad hasta el valor Vp, pues en caso de no movilidad obtener valores que rebasen por defecto el umbral Vp seran debidos a incursiones del ruido que daran lugar a falsas alarmas. La figura 6.9 viene a describir esta situacin, el anlisis matemtico sera: Nuestra funcin de densidad de probabilidad es: X N ( , 2 )
1 f X ( x) = e 2 2 1 x
2

Donde: E[ X ] = y
1 x
2

Var [ X ] = 2

Pfa = P( X < Vp ) =

Vp

1 e 2 2

dx = 1

1 Vp erfc 2 2

Nuevamente se obtiene una expresin de la probabilidad de falsa alarma en funcin de la funcin complementaria del error. A continuacin se demuestran las expresiones para la Pfa tanto para el caso de igualdad como para el caso de similitud: Partiendo de la funcin de densidad de probabilidad normal X N ( , 2 ) se tiene que para calcular la probabilidad acumulada se ha de resolver: P( X < Vp ) = 1 2
Vp

e
0

1 x 2

dx

Realizando el cambio de variable: Nos queda como sigue:


Vp

t=

1 x 2
Vp 2

dt =

1 dx 2

1 P( X < Vp ) = 2

t 2

1 2 dt =

1 e dt = 1 0
t 2

Vp 2

t 2

dt =

1 Vp = 1 erfc 2 2
Esto sera para el caso de similitud donde la expresin anterior dara lugar a la probabilidad de falsa alarma: 1 Vp Pfa = 1 erfc 2 2

Clculo Estadstico para el Nivel de Disparo

Pgina 43

Proyecto Fin de Carrera Para obtener la expresin en el caso de igualdad solo debemos tener en cuenta que:

P( X > Vp ) = 1 P( X < Vp ) =

1 Vp erfc 2 2

Y por lo tanto la probabilidad de falsa alarma es:

Pfa =

1 Vp erfc 2 2

6.4.- Obtencin del nivel de disparo


En el apartado anterior se ha llegado a las expresiones para la obtencin de la probabilidad de falsa alarma ( Pfa ) en funcin del nivel de disparo Vp. El clculo de la funcin erfc(x) se lleva a cabo por medio de un algoritmo de ajuste pues esta funcin no tiene una expresin analtica que se pueda evaluar. Pero el verdadero problema no est en el clculo de la funcin complementaria del error ni por extensin en el clculo de la Pfa, sino que se encuentra en el clculo de la funcin inversa de la erfc(x); es decir, estamos interesados en el clculo de Vp que es el nivel de disparo a partir del cual se har saltar la alarma, es preciso por lo tanto buscar la forma de invertir la funcin complementaria del error; es decir:
Vp = 2 erfc 1 (2 Pfa ) + Vp = 2 erfc 1 (2 (1 Pfa )) +

En caso de igualdad: En caso de similitud:

Para la resolucin de las expresiones anteriores se ha optado por el diseo de una subrutina que converge al valor de Vp hasta obtener un error con la Pfa menor de Pfa*0.001 . Esta rutina converge siempre al valor de Vp que da lugar a la Pfa introducida (o muy prxima a ella) como parmetro a la aplicacin, gracias a que la funcin acumulativa de probabilidad es montona. Lo que se describe en este prrafo quedar ms claro una vez que se explique el diagrama de flujo para el clculo de Vp:

Inicio iter = 0 cond = true xinf = 0 xsup = 1 xmed = 0 pmed=0

Clculo Estadstico para el Nivel de Disparo

Pgina 44

Proyecto Fin de Carrera

modo=igualdad

SI

xsup=xsup*255

NO

cond=true AND iter < 10000

NO

Devuelve(xmed) SI iter=iter+1 xmed=(xsup+xinf)/2 pmed=intpdf(xmed,vmedia,vdesv)

SI Abs(pmed-pfa)<pfa*0.001

NO Pmed<Pfa NO modo=igualdad SI NO xsup=xmed xinf=xmed NO xinf=xmed modo=igualdad SI

cond=false

SI xsup=xmed

Fin

Clculo Estadstico para el Nivel de Disparo

Pgina 45

Proyecto Fin de Carrera

El algoritmo descrito por el diagrama de flujo anterior nos devuelve un valor de Vp tal que se aproxima a la Pfa introducida por parmetro con un error que est comprendido entre Pfa*0.001, es decir:

Pfa 0.001 Pfa

1 Vp erfc 2 2 1 Vp erfc 2 2

En caso de igualdad

Pfa 0.001 Pfa 1

En caso de similitud

Este algoritmo va calculando la media de dos valores extremos entre los cuales se encuentra el valor de Vp para el que se obtiene la probabilidad de falsa alarma introducida como parmetro a la aplicacin. El mtodo de convergencia es muy simple y se fundamenta en el hecho de que la funcin acumulativa de la probabilidad es montona; cuando se calcula xmed y se evala para obtener pmed, dependiendo del modo de deteccin y comparando con el valor que tiene pfa, sabemos si el valor de Vp est a la derecha o izquierda de xmed y de este modo vamos actualizando los valores de xinf o xsup con xmed segn corresponda. Vemoslo grficamente para el caso de igualdad:

Fig. 6.10. En la grfica se muestra dos iteraciones para calcular el valor de Vp. En este caso Vp coincide con xmed2, resultado de la segunda iteracin del algoritmo. El valor de xmed se obtiene con la media de los valores extremos xinf y xsup ; se evalua la probabilidad de falsa alarma perteneciente a este valor de xmed y se compara con la Pfa introducida como parmetro a la aplicacin. En este caso se ha obtenido en la primera Clculo Estadstico para el Nivel de Disparo Pgina 46

Proyecto Fin de Carrera iteracin de la grafica una pmed mayor que pfa y adems pmed pfa >pfa*0.001, por lo tanto no se dan las circunstancias para detener el algoritmo. Se asigna a xinf el valor de xmed y se realiza una nueva iteracin del algoritmo, se calcula de nuevo la media de xinf y xsup y se obtiene xmed2 que evaluando su probabilidad y comparada con la pfa introducida en la aplicacin resulta que pmed-pfa<pfa*0.001; con lo que se detiene el algoritmo y se devuelve el valor de xmed2 como valor de Vp. Para el caso del algoritmo de igualdad se inicializan del siguiente modo xinf=0 y xsup=255. Veamos una representacin del proceso del algoritmo de clculo de Vp en el caso de procesamiento por similitud. La funcin del algoritmo y su funcionamiento son idnticos a la del caso de igualdad, la nica diferencia radica en la inicializacin de xinf y xsup que en este caso es xinf=0 y xsup=1 puesto que la correlacin est acotada a 1.

Fig. 6.11.

En la grfica se ve como converge xmed hacia Vp, la ejecucin de la ltima iteracin del bucle nos da una xmed cuya probabilidad se acerca a la Pfa con un error menor de 0.001*Pfa que es condicin para que se acabe de ejecutar la rutina de clculo de Vp, de hecho, el valor de xmed2 es lo que se devuelve como valor umbral. A simple vista puede parecer que este algoritmo tiene una convergencia lenta hacia el valor Vp, de hecho sera as si tenemos que ajustarnos al verdadero valor de Vp que da la Pfa que se introduce como parmetro a la aplicacin; pero dando como condicin para salir del bucle que nos aproximemos a la Pfa con un error valido de 0.001*Pfa el nmero de iteraciones del bucle se reduce considerablemente.

Clculo Estadstico para el Nivel de Disparo

Pgina 47

Proyecto Fin de Carrera Para demostrar esto anterior se presenta a continuacin una tabla donde se muestran el nmero de iteraciones necesarias para distintos valores de Pfa y para los dos modos distintos de deteccin, igualdad y similitud:

Pfa

N de iteraciones IGUALDAD 16 21 23 23 20 23 23 22 22

N de iteraciones SIMILITUD 20 23 21 24 25 25 25 22 20

10-1 10-2 10-3 10-4 10-5 10-6 10-7 10-8 10-9

Vemos que para ambos casos de deteccin se obtienen un nmero aproximado de iteraciones, adems la diferencia de iteraciones para distintas Pfa es reducido. No obstante este tiempo no relentiza la aplicacin de videovigilancia ya que el clculo de Vp se realiza antes de que la aplicacin entre en rgimen permanente.

6.5.- Representacin de datos frente a nivel de disparo

En es apartado nos hemos dedicado a desarrollar el fundamento matemtico y estadstico que se ha utilizado para calcular el nivel de disparo Vp a partir del cual se har saltar la alarma del sistema de vigilancia. Pienso que puede ser interesante realizar una representacin grfica de los datos sacados del sistema y los distintos niveles de deteccin Vp para distintas Pfa y ver en la grfica cual es la distancia existente entre los datos y los niveles que hacen saltar la alarma.

Clculo Estadstico para el Nivel de Disparo

Pgina 48

Proyecto Fin de Carrera A continuacin se muestra la grfica para la deteccin por igualdad de las muestras y los distintos niveles de deteccin en funcin de Pfa:

Fig. 6.12. Y por ltimo la grfica para la deteccin por similitud que representa las muestras de correlacin y los distintos niveles de deteccin en funcin de Pfa:

Fig.

6.13.

Clculo Estadstico para el Nivel de Disparo

Pgina 49

Proyecto Fin de Carrera

7.- ALGORITMO DE DETECCIN POR IGUALDAD


Este algoritmo de deteccin por igualdad pertenece al bloque funcional de procesamiento de la imagen que se explic en el apartado denominado como divisin funcional. El mtodo de anlisis denominado por igualdad es aquel que lleva a cabo la deteccin del movimiento comparando pxel a pxel fotogramas consecutivos de la imagen calculando la diferencia natural del valor de los pxeles de dichos fotogramas. El algoritmo no distingue la diferencia de los pxeles por exceso o por defecto, sino que se queda con el valor absoluto de esta diferencia y sobre esta realiza la media que ser el parmetro de comparacin y que va siendo calculado por este algoritmo en tiempo real.

Cmara

Captura ........ T

Fotograma n

Fotograma n+1

Media ( Fotograma n+1 - Fotograma n )

Comparacin ( Nivel de disparo , Media )

Alarma

Algoritmo de Deteccin por Igualdad

Pgina 50

Proyecto Fin de Carrera A continuacin se muestra el diagrama de flujo detallado que describe el algoritmo de la deteccin por igualdad en condiciones de rgimen permanente. Estas condiciones de rgimen permanente se refieren al hecho de que ya se han realizado las labores del algoritmo del calculo estadstico para el nivel de disparo y se est procesando los fotogramas y calculando la diferencia de los pxeles de dos consecutivos y su media para compararla en tiempo real con el nivel de disparo.

7.1.- Diagrama de flujo

Inicio rgimen permanente

med = 0

m_Running = Verdadero

NO

SI Captura (fotograma1)

C=0 SI Captura (fotograma2)

NO

diferencia(fotograma1,fotograma2)

c_media( media, fotograma1 )

med=media[1499]

3 Pgina 51

Algoritmo de Deteccin por Igualdad

Proyecto Fin de Carrera 2 1 3

med > nivel disparo

SI

ALARMA NO

Fin rgimen permanente

Este diagrama de flujo implementa un bucle que se realiza hasta que con un evento de botn se hace que m_Running = false, cuando este evento tiene lugar se finaliza el proceso de deteccin por igualdad. Mientras m_Running = true se van capturando fotogramas y se va calculando la media de la diferencia de los pxeles de dos fotogramas capturados consecutivamente. Existe una diferencia entre la primera pasada del bucle y el resto de ellas, esta primera iteracin viene determinada por el valor de C = 0 y la diferencia consiste que en la primera pasada se capturan dos fotogramas, el que se captura en todas las iteraciones ( Fotograma1 ) y un segundo fotograma que slo se calcula en la primera ( Fotograma2 ) y que sirve para realizar el primer clculo de la diferencia entre fotograma y dar condiciones iniciales al rgimen permanente. El valor de la media en cada iteracin se almacena en el ndice 1499 de la tabla que almacena las medias en el periodo de clculo de estadsticos y es devuelto por la funcin c_media. La funcin que devuelve la resta de dos fotogramas consecutivos se denomina en el diagrama de flujo diferencia y actualiza el fotograma n con el fotograma n+1 y de este modo en rgimen permanente siempre se calcula la diferencia de dos fotogramas consecutivos. Por ltimo, se realiza la comparacin en cada iteracin del bucle del nivel de disparo con la media que se ha calculado en esa iteracin y dependiendo si el valor de la media supera o no el valor del umbral de disparo se hace o no saltar la alarma. Como ya se ha mencionado, en este diagrama no se ha representado el cdigo que da la funcionalidad de clculo de estadsticos y de nivel de disparo a la aplicacin puesto que en este apartado se explica el rgimen permanente del algoritmo de deteccin por igualdad. A continuacin se muestran los diagramas de flujo de las subrutinas encargadas del clculo de las diferencias de los pxeles de dos fotogramas consecutivos y la de clculo de la media de las diferencias:

Algoritmo de Deteccin por Igualdad

Pgina 52

Proyecto Fin de Carrera

7.2.- Diagrama de flujo. Calculo de la media

Inicio c_media

sum = 0 i = x_super j = y_infer

i <=x_infer

NO

SI
i = i+1

NO
j <=y_super

SI
j = j+1 sum = sum + data[ ancho*j+i ]

media[n_init-1] = sum / tam

Fin c_media

Algoritmo de Deteccin por Igualdad

Pgina 53

Proyecto Fin de Carrera Esta funcin calcula la media del valor de los pxeles del fotograma al que apunta el puntero data. A la altura de la llamada a esta funcin el puntero data contiene un fotograma diferencia del fotograma que tena almacenado y del capturado en la iteracin anterior del hilo de captura, de modo que esta funcin devuelve la media del valor de los pxeles de la diferencia que nos da idea del movimiento en la imagen. Esta funcin no devuelve ningn valor sino que modifica el ndice 1499 de la tabla de medias pues este es el lugar de la tabla donde se va almacenando la media calculada en tiempo real, por lo tanto a esta funcin tambin se le pasa como parmetro el valor n_init = 1500. Tambin se le pasa como parmetro el tamao en nmero de pxeles de la zona de vigilancia. A continuacin se muestra diagrama de flujo de la funcin diferencia.

7.3.- Diagrama de flujo. Diferencia de fotogramas

Inicio diferencia

dif = 0 i = x_super j = y_infer

i <= x_infer

NO

SI i = i+1

j <=y_super

NO

SI 1 3

Algoritmo de Deteccin por Igualdad

Pgina 54

Proyecto Fin de Carrera

j = j+1 dif = data[ancho*j+i]-data2[ancho*j+i] data2[ancho*j+i]=data[ancho*j+i]

NO dif > 0 SI data[ancho*j+i]=dif data[ancho*j+i]=-dif

Devuelve ( data )

Fin diferencia

En la funcin diferencia como su propio nombre indica se calcula la diferencia de los pxeles de dos fotogramas capturados consecutivamente que son pasados a la funcin mediante dos punteros: data y data2. En el puntero data se tiene el fotograma de la captura posterior al que est contenido en el puntero data2 y esta misma funcin, adems de realizar la diferencia, carga el fotograma de data en data2 para que esta funcin se comporte igual en la prxima iteracin cuando ya se haya calculado un nuevo fotograma para data.

Algoritmo de Deteccin por Igualdad

Pgina 55

Proyecto Fin de Carrera

8.-ALGORITMO DE DETECCIN POR SIMILITUD


Este algoritmo de deteccin por similitud, al igual que el algoritmo de deteccin por igualdad, pertenece al bloque funcional de procesamiento de la imagen que se explic en el apartado denominado como divisin funcional. Este mtodo de anlisis lleva a cabo la deteccin de movimiento realizando la correlacin de dos fotogramas capturados de forma consecutiva. En este algoritmo, a diferencia del algoritmo de deteccin por igualdad, no es necesario calcular la media pues la correlacin es un parmetro que ya en si mide cuanto de similares son dos fotogramas consecutivos y no es un parmetro que se calcule para cada pxel como sera la diferencia para la cual si es necesario realizar una media de todas las diferencias calculadas, una por cada pxel de la imagen. Para este algoritmo la medida del movimiento capturado se refleja en el valor de correlacin que es el que se compara con el valor umbral de disparo para determinar si hay suficiente movimiento para hacer saltar la alarma o por el contrario el movimiento capturado es slo perteneciente al ruido en tal caso no se sobrepasara el umbral y por lo tanto no se hara saltar la alarma.

Cmara

Captura

....... T

Fotograma n

Fotograma n+1 Correlar (Fotograma n+1,Fotograma n)

Comparacin( Nivel de disparo,Correlacion )

Alarma Algoritmo de Deteccin por Similitud Pgina 56

Proyecto Fin de Carrera

A continuacin se muestra el diagrama de flujo detallado que describe el algoritmo de la deteccin por similitud en condiciones de rgimen permanente. Estas condiciones de rgimen permanente se refieren al hecho de que ya se han realizado las labores del algoritmo del clculo estadstico para el nivel de disparo y se est procesando los fotogramas, calculando la correlacin para dos fotogramas capturados consecutivamente y comparando el resultado de dicha operacin con el nivel de disparo.

8.1.- Diagrama de flujo

Inicio rgimen permanente

p1= Memoria(tam)

m_Running = Verdadero

NO

SI Captura (fotograma1)

P2= Memoria(tam)

p1=correlar (fotograma1, p1, p2,correlacion)

corr = correlacion[1499]

Algoritmo de Deteccin por Similitud

Pgina 57

Proyecto Fin de Carrera

corr < nivel disparo

SI

NO

ALARMA

Fin rgimen permanente

El bucle implementado en el diagrama de flujo del rgimen permanente para el algoritmo de similitud termina cuando m_Running = false y esto ocurre cuando se pulsa el botn de fin de aplicacin. Mientras m_Running = true se van capturando fotogramas y se va calculando la correlacin de dos fotogramas capturados consecutivamente. Existe tambin para este algoritmo de deteccin una diferencia con la primera pasada del bucle y las siguientes: La diferencia consiste que al igual que en el caso del algoritmo de deteccin por igualdad en la primera pasada se han de capturar dos fotogramas mientras que en el resto de iteraciones del bucle slo se calcula un fotograma. Pero esto anteriormente mencionado se realiza de forma distinta que para el caso de deteccin por igualdad ya que ahora la discriminacin de la primera iteracin se lleva a cabo en la funcin correlar y no se tiene en cuenta en el bucle principal; esto es necesario porque inicialmente necesito dos fotogramas para realizar la primera correlacin de dos fotogramas consecutivos y dar condiciones iniciales al algoritmo de deteccin. El valor de la correlacin calculado en cada iteracin se almacena en el ndice 1499 de la tabla que almacena las correlaciones en el periodo de clculo de estadsticos y es devuelto por la funcin correlar. Adems esta funcin tiene como parmetro de retorno el puntero p1 que apunta a uno de los fotogramas que en la prxima iteracin se correlar con el que se capture en esa iteracin. Como ltima instruccin del bucle se realiza la comparacin en cada iteracin del nivel de disparo con la correlacin que se ha calculado en esa iteracin y dependiendo si el valor de la media supera o no el valor del umbral de disparo se puede o no hacer saltar la alarma. Como ya se ha mencionado en esta memoria, en este caso de

Algoritmo de Deteccin por Similitud

Pgina 58

Proyecto Fin de Carrera deteccin por similitud la alarma salta cuando la correlacin es menor que el nivel de disparo ya que cuanta ms diferencia exista entre fotogramas consecutivos ms descorrelados estarn estos fotogramas y menor ser el resultado de su correlacin. En este diagrama no se ha representado el cdigo que da la funcionalidad de clculo de estadsticos y de nivel de disparo a la aplicacin puesto que en este apartado se explica el rgimen permanente del algoritmo de deteccin por similitud; y el clculo estadstico y del nivel de disparo se explican en otros apartados de esta memoria. A continuacin se muestra el diagrama de flujo de la funcin correlar que realiza la correlacin de dos fotogramas consecutivos y devuelve el valor de esta correlacin en un elemento de una tabla.

8.2.- Diagrama de flujo. Clculo de correlaciones.

Inicio correlar

corr = 0 corr_p2 = 0

n_init = 1

NO

SI [ paux ] = 0 i = x_super j = y_infer

i <= x_infer

NO

SI i=i+1

4 Pgina 59

Algoritmo de Deteccin por Similitud

Proyecto Fin de Carrera

NO

j <= y_super SI

j=j+1 p1[ancho_rect*(j-y_infer)+(i-x_super)]=data[ancho*j+i]

p=0 NO p < tam SI p=p+1 [ paux ] = [ paux ]+(p1[p]*p1[p])

corr = [ paux ] /sqrt( [paux]*[paux] ) correlacion[n_init-1] = corr Devuelve ( p1 )

n_init > 1 SI corr = 0 corr_p2 = 0 i = x_super j = y_infer

NO

1 Algoritmo de Deteccin por Similitud

2 Pgina 60

Proyecto Fin de Carrera

i <= x_infer

NO

SI i = i +1

j <= y_super NO SI j=j+1 p2[ancho_rect*(j-y_infer)+(i-x_super)] = data[ancho*j+i]

p=0

p < tam SI

NO

p=p+1 corr = corr +(p1[p]*p2[p]) corr_p2 = corr_p2+(p2[p]*p2[p])

corr = corr / sqrt( [ paux ]*corr_p2) correlacion[n_init-1] = corr Liberar ( p1 ) [ paux ] = corr_p2 Devuelve ( p2 )

Fin correlar Algoritmo de Deteccin por Similitud

Pgina 61

Proyecto Fin de Carrera

Observando el diagrama de flujo de la funcin encargada de realizar la correlacin se observa, como ya se ha dicho anteriormente, que la discriminacin entre la primera pasada y las siguientes se realiza dentro de esta funcin y no en el bucle de captura principal. Esto se debe a que dependiendo de si es el primer fotograma u otro consecutivo la correlacin que se ha de calcular es diferente: Para el primer fotograma, como no tenemos otro con quien correlarlo solamente se realiza la autocorrelacin con si mismo ( que como no puede ser de otro modo dar como resultado la unidad ) y se almacena en una variable puntero ( que en el diagrama se flujo se ha representado como [ paux ] = contenido del puntero paux ) la suma acumulativa del producto de todos los pxeles, que ser un dato a usar en la prxima iteracin. Para el caso de cualquier otro fotograma la correlacin que se calcula es la correlacin cruzada entre el fotograma capturado en esa iteracin y el capturado en la iteracin anterior, y tambin se calcula, puesto que es necesario para esta iteracin y la posterior, la suma acumulativa del producto de todos los pxeles del fotograma calculado en esta iteracin que se vuelve asignar al contenido del puntero paux. Hay que tener claro que la operacin que este algoritmo esta realizando en la que obedece a la expresin matemtica:

XY

(l ) =

K =0 M

X (k ) Y (k l )
M K =0

K =0

X (k ) X (k l ) Y (k ) Y (k l )

De modo que hay que arrastrar de una iteracin a otra el valor de la suma acumulativa del producto de los pxeles del fotograma captado en esa iteracin pues si seguimos la nomenclatura de la formula X e Y seran fotogramas capturados en distintas pasadas del bucle que correspondera a distintas llamadas a la funcin correlar y por esta razn es necesario guardar el valor de los parmetros en variables puntero para que al acabar la funcin no se pierdan los resultados calculados y que se han de usar en la iteracin siguiente. Tambin relacionado con lo anterior se explica el tipo de parmetro devuelto por la funcin correlar: Devuelve como parmetro en la primera iteracin el puntero p1 que almacena el fotograma capturado en esa iteracin y servir para que en la siguiente iteracin se le pase a la funcin correlar como puntero que almacena al fotograma antiguo ya que en la segunda iteracin y sucesivas se devolver el puntero p2 que es el capturado en esta iteracin y que se almacenar en puntero p1 para ser el fotograma antiguo se la siguiente iteracin. Esto es necesario hacerlo as porque estos fotogramas son usados en dos iteraciones consecutivas y no podemos perderlos de una a otra, es necesario por lo tanto que esta funcin devuelva un puntero como parmetro de salida.

Algoritmo de Deteccin por Similitud

Pgina 62

Proyecto Fin de Carrera Tambin es interesante comentar que al tratarse de una funcin compleja que realiza varias operaciones, es necesario que almacene valores en tablas que sean pasadas por referencia ya que es necesario que de una iteracin a otra pasen ms de un dato. Este diagrama de flujo se ha pretendido hacer lo ms claro posible y es por esa razn que se han omitido una serie de parmetros de estrada a la funcin sin los cuales sera imposible su funcionamiento. Uno de estos parmetros importantes es por ejemplo de nmero de iteracin del bucle de captura que aparece con el nombre de n_init o el tamao de la zona a correlar que aparece con el nombre de tam, sin tener en cuenta los parmetros globales de la aplicacin de los que tambin hace uso la funcin.

Algoritmo de Deteccin por Similitud

Pgina 63

Proyecto Fin de Carrera

9.-DESARROLLO DE LA APLICACIN SOFTWARE

9.1.-Introduccin
Como ya se ha mencionado en apartados anteriores de esta memoria, el producto final que se obtendr en el desarrollo de este proyecto fin de carrera ser una aplicacin software de videovigilancia. Todo el fundamento matemtico, estadstico y tcnico que se han explicado en apartados anteriores tienen como finalidad fundamentar el trasfondo de los algoritmos que de desarrollaran en un determinado lenguaje de programacin con el que se obtendr una aplicacin encargada de realizar la videovigilancia de una determinada zona de un escenario. Por lo tanto, en el desarrollo de este proyecto no slo se me han presentado los problemas derivados del anlisis de seal, para los cuales he empleado tcnicas de tratamiento de seal y los conocimientos de matemtica y estadstica adquiridos en la carrera; sino que me he visto obligado a profundizar en el siempre complicado tema de la programacin y ms concretamente en la Programacin Orientada a Objeto (POO). Pero no slo en la POO he tenido que indagar para la realizacin de este proyecto software sino que tambin he tenido que adquirir conocimientos y ponerlos en prcticas en otros aspecto fundamentales de la programacin actual como son: La gestin de eventos y la programacin de una interfaz grfica para mi aplicacin. A continuacin dentro de esta introduccin se llevar a cabo una pequea explicacin de estos tres aspectos enunciados anteriormente y que cuyas caractersticas van a definir en gran medidas muchos de los aspectos de la aplicacin desarrollada en este proyecto tan o en su vertiente estructura como de representacin grfica:

9.1.1.- Programacin Orientada a Objetos


El paradigma de la POO contempla tanto el anlisis del problema a solucionar as como el diseo y la implementacin del programa encargado de solucionar dicho problema; esto es un aspecto nuevo introducido por la POO ya que otros paradigmas de programacin ( como son el funcional, el imperativo,...) solamente tiene en cuenta el aspecto de programacin de los algoritmos sin entrar en diseo ni implementacin de los mismos. En la POO el sistema se va a construir a partir de componentes individuales conocidos como objetos. Un objeto se define como Encapsulacin abstracta de informacin ( atributos ) junto con los mtodos o procedimientos diseados y

Desarrollo de la Aplicacin Software

Pgina 64

Proyecto Fin de Carrera encargados de la manipulacin de esta informacin. Relacionado con el tema de este proyecto, un objeto podra ser un contendor para una imagen y sus atributos seran el ancho y el alto en nmero de pxeles y uno de sus mtodos podra ser una determinada funcin encargada de devolver cual es su tamao o modificarlo en tiempo de ejecucin segn no haga falta ms o menos resolucin ( esto que se ha definido aqu como un ejemplo esta recogido en la aplicacin como un objeto real que se utilizar para el desarrollo del proyecto ). Tambin existe en la POO el concepto de clase que est ntimamente relacionado con el concepto de objeto y que se define como la generalizacin de un tipo especfico de objetos. Es en las clases donde se generaliza las caractersticas propias del tipo de objeto; es decir , siguiendo con el ejemplo anterior si en mi programa necesito utilizar distintos contenedores para fotogramas con distintas caractersticas de resolucin en mi clase defino esta caracterstica como un atributo de la clase y en cada instancia de ella la particularizo para una u otro resolucin. La instancia se define como la concrecin de una clase, es cuando se da un nombre y se reserva memoria para un objeto de una determinada clase en el espacio de memoria de la aplicacin se dice que ese objeto es una instancia o ejemplar de la clase o tambin que dicho objeto se ha instanciado. En nuestro ejemplo una instancia de un objeto de la clase contenedor podra ser un contendor llamado frame1 que ocupase en memoria 320x240 bytes, estara instanciado pues en el podramos almacenar un fotograma capturado por la aplicacin y con resolucin 320x240 pxeles en escala de grises. La comunicacin entre una aplicacin y un objeto se lleva a cabo mediante mensajes y mtodos: Un mensaje se enva a un objeto para solicitar que haga algo, los mtodos seran los mecanismos por los que ese determinado objeto puede llevar a cabo lo solicitado en el mensaje; este es el mecanismo que se ha de llevar a cabo para la comunicacin con los objetos de una clase.

Instancia del Objeto A

mensaje

Otra Instancia del objeto A

Resp=metodo(mensaje)

APLICACIN mens

Instancia del Objeto B Fig. 9.1

Resp=metodo(mens)

Desarrollo de la Aplicacin Software

Pgina 65

Proyecto Fin de Carrera Este sistema de comunicacin mediante mensajes y mtodos es debido unas de las caractersticas ms importantes de la POO como es la encapsulacin de los objetos: Consiste en encerrar dentro de una clase sus mtodos y sus propiedades de forma que slo sean accesibles mediante la interfaz definida por los mensajes que puedan procesar sus mtodos. Otras de las caractersticas de la POO son la abstraccin que consiste en la generalizacin conceptual de un determinado conjunto de objetos y de sus atributos y metodos; se despreocupa de las caractersticas particulares de cada objeto y se abstrae las propiedades comunes de todos los objetos de una clase. Por ultimo la herencia consiste en unas de las propiedades que dota de ms potencia a la POO ya que nos permite reutilizar el cdigo y obtener una estructura jerrquica de las clases:

CLASE A

CLASE B

CLASE C

CLASE D

CLASE E

CLASE F

CLASE G

Fig. 9.2. En la figura anterior se muestra una estructura de clases donde la Clase A es la superclase de la que derivan el resto de clases: Se dice que son subclases de la Clase A. Las clases B, C y D son hijas de la clase A que es padre de ellas. La Clase F es subclase de D y entre ellas existe el mismo parentesco que el existente entre A y D. La herencia nos va a permitir la reutilizacin del cdigo, pues todos los mtodos que utiliza la clase A si se deriva convenientemente se pueden usar en sus clases hijas o en sus clases nietas, y esto es la herencia que dejan las superclases a las subclases de estas. Aunque hay otros factores interesantes en la POO se consideran que estos han sido los ms significativos y los que siempre vamos a tener que considerar cuando se est programando una aplicacin orientada a objeto como ha sido el caso en este proyecto.

Desarrollo de la Aplicacin Software

Pgina 66

Proyecto Fin de Carrera

9.1.2.- Gestin de eventos


Tradicionalmente la programacin ha sido secuencial, es decir, los programa estaban compuestos por una sucesin de instrucciones en memoria que se ejecutaban segn el orden secuencial que marcaba el hilo de ejecucin principal de dicho programa. En estos programas secuenciales, cuando era necesario la interaccin de varios procesos o del proceso con el usuario para salida o entrada de datos era necesario que el programa permaneciese en un bucle infinito esperando que esta interaccin tuviese lugar esto haca que se consumiese tiempo de CPU dentro de bucles de espera y por lo tanto que un programa esperando que se diese dicha interaccin consumiese recursos de CPU sin darles ninguna utilidad. La gestin de eventos ha venido a solucionar el problema que se ha planteado anteriormente y consiste en que cierta parte de cdigo slo se ejecuta si ha tenido lugar cierto evento que el sistema es capaz de reconocer y gestionar por dicha parte de cdigo. Esto soluciona el problema de consumo de tiempo de CPU esperando que se de un evento en el sistema ya que ahora solo se emplean recursos de la CPU cuando este evento ha tenido lugar y no se consumen esperando que ocurra. Un ejemplo de lo anterior sacado del proyecto que se ha desarrollado es que no se comienza la captura de fotogramas hasta que el usuario del sistema no pulsa el botn encargado de inicial la captura, en un programa secuencia esto consumira tiempo de CPU pues tendramos al programa esperando en un bucle infinito a que el usuario pulsase el botn; esto ahora no ocurre ya que el propio Sistema Operativo es el encargado de recoger los eventos y dar cuenta de que estos han ocurrido y nos facilita a los programadores dicha informacin para que con ella decidir que hacer. Por ejemplo, se ha definido que cuando se pulse ese botn el programa pase a ejecutar la rutina de captura de fotogramas; queda de esta forma gestionado el evento de pulsar el botn de inicio de captura. Veamos como Windows lleva a cabo el proceso de gestin de evento sin que ello supongo consumo de tiempo de CPU: Cuando un usuario trabaja con una aplicacin Windows interacta con ella mediante el teclado o el ratn; desplazando una barra de desplazamiento, seleccionando alguna opcin del men, arrastrando la ventana, redimensionando su tamao, etc. La ventana recibe todas estas entradas de usuario en forma de mensaje ( recuerdese lo mencionado anteriormente sobre los mensajes y la forma de comunicacin entre aplicacin e instancias de una clase, cabe pensar que las ventanas de nuestra aplicacin o la misma aplicacin en si son objetos de una clase ...) que son enviados por Windows. Cuando decimos que Windows enva un mensaje a nuestra aplicacin queremos decir que llama a una funcin dentro de nuestra aplicacin y los parmetros de esta funcin describen dicho mensaje. Esta funcin se conoce como procedimiento de ventana y tiene que estar presente en cada aplicacin Windows para poder gestionar los mensajes que nos enva el Sistema Operativo. En contra de la metodologa de programacin MS-DOS, en que era el programador el que realizaba llamadas al sistema operativo, en caso de Windows ocurre precisamente lo contrario, es el Sistema Operativo el que hace llamadas a nuestro Desarrollo de la Aplicacin Software Pgina 67

Proyecto Fin de Carrera programa. Cada ventana que crea un programa tiene asociado un procedimiento de ventana. Windows enva mensajes a una ventana a travs de una llamada al procedimiento de ventana. El procedimiento de ventana gestiona los mensajes que interesa capturar y luego devuelve el control a Windows. La forma en que Windows rene todos los mensajes de entrada y lo coloca en la cola de mensajes del sistema es FIFO (el primero en entrar es el primero en ser procesado). El Sistema Operativo elimina entonces cada mensaje de la cola de mensajes del sistema, examina el mensaje para determinar la ventana a la que va destinado y finalmente lo coloca en la cola de mensajes de la aplicacin. La aplicacin recupera entonces los mensajes que le llega en su cola de mensajes y ha de determinar a cual de todas sus ventanas abierta va destinado este mensaje de Windows. Una vez determinada esta ventana se despacha ( o dirige ) este mensaje al procedimiento de ventana adecuando; despachar este mensaje no es ms que una llamada al procedimiento de ventana de la ventana asociada al mensaje pasando el contenido del mensaje en forma de argumentos que ser procesado por este procedimiento de ventana. Cuando ya se haya procesado este mensaje se devolver el control al bucle de mensajes de la funcin principal de Windows para poder extraer el siguiente mensaje de la cola. Se ha intentando explicar como Windows lleva a cabo el procesamiento de eventos de forma sencilla sin entrar en un nivel de detalle de programacin, no obstante es un procesamiento complicado que se intentar dejar ms claro mediante el siguiente diagrama: Botn de aplicacin mi

Pulsar

evento

Cola de mensajes del sistema Despacha los mens. Aplicacin A

S.O. Windows

Cola de mensajes de aplicacin A

Ventana A1

Proc_Ventana_A2(mens) Despacha los mens. Aplicacin B Ventana A2

Cola de mensajes de aplicacin B Proc_Ventana_B2(mens)

Fig. 9.3.

Ventana B2

Ventana B1

Desarrollo de la Aplicacin Software

Pgina 68

Proyecto Fin de Carrera

9.1.3.- Programacin de una interfaz grfica


Para la realizacin de este proyecto no slo se ha tenido que disear los algoritmos encargados de medir el movimiento captado por la cmara sino que tambin, como ya se ha dicho antes, se ha pretendido construir una interfaz grfica para el usuario del sistema lo ms sencilla posible para su uso. Para el diseo de esta interfaz as como para la construccin de las estructuras de objetos se ha hecho uso del MFC AppWizard (exe) que es el asistente para la construccin de aplicaciones basadas en Microsoft Foundation Class (MFC) que es una biblioteca de clases predefinidas de C++ que se suministran junto con Visual C++ y su entorno de desarrollo en el paquete Visual Studio 6.0 que es el usado en el desarrollo de la aplicacin. El asistente de aplicaciones de MFC nos crear un armazn de programa que despus habr que adecuar, pero para este armazn inicial hay que configurar que tipo de aplicacin queremos crear: Una aplicacin de Windows puede ser (Single Document Interface), MDI( Multiple Document Interface) o basada en dialogos ( Dialog Based ). Single Document es muy similar a Dialog Based, salvo que por defecto Visual C++ le agrega mens y MDI es una aplicacin como por ejemplo Word, con una ventana principal que puede contener a muchas otras en su interior ( como un contenedor ). Para mi proyecto he seleccionado una aplicacin basada en dilogos por lo que por defecto viene hurfana de mens que tendrn que ser diseados a parte y adecuados para mi aplicacin. Otra caracterstica configurable por AppWizard es el uso que debe hacer mi aplicacin de la librera MFC, configuraremos est opcin para que el uso de esta librera sea como DLL, es decir como librera de enlace dinmico que es lo habitual de las aplicaciones que corren bajo Windows, adems si elegimos un uso de la MFC como la librera esttica obtenemos un ejecutable ms grande. A continuacin, en prximos apartados de este punto se explicar como se dise el entorno grfico y la forma de usarlo.

Desarrollo de la Aplicacin Software

Pgina 69

Proyecto Fin de Carrera

9.2.- Consola de la aplicacin de vigilancia

Como producto final de este proyecto se pretende presentar un software de vigilancia que trabaje de forma muy eficiente pero que su uso sea tambin lo simple posible. Para conseguir esto se ha diseado una interfaz de usuario a modo de consola de control para que una persona puede manejar este software sacando todo el provecho y para ello no sea necesario que disponga de los conocimientos de tratamiento de imagen, de estadstica o de programacin que se han empleado para su desarrollo. La consola de control de la aplicacin de vigilancia se ha diseado con la idea de que sea lo ms parecida posible a las interfaces de usuario de cualquier aplicacin diseada para Windows; para ello ha sido necesario, como ya se ha mencionado en el punto anterior, la programacin usando la API de Windows de una aplicacin basada en dialogo a la que hemos tenido que aadir un men cuyo diseo se ha programado para adecuarlo al contexto de videovigilancia sin perder la apariencia de cualquier men al ms estilo Windows. A continuacin se presenta la consola de vigilancia:

Fig. 9.4.

Como vemos en la imagen la consola de control para el software que se ha diseado tiene la apariencia de cualquier ventana de las que aparece en cualquiera de los

Desarrollo de la Aplicacin Software

Pgina 70

Proyecto Fin de Carrera mltiples programas que usamos a diario y que corren bajo el sistema operativo Windows; con esto se ha pretendido hacer una interfaz de usuario con la que cualquier persona que usase el sistema estuviese familiarizada. Esta aplicacin es de la familia de aplicaciones de Windows denominadas aplicaciones basadas en dilogos y tiene la particularidad de que al ser arrancadas dibujan un dialogo en la pantalla; en principio el AppWizard nicamente dota a la aplicacin de un slo dialogo y si barra de men. El men que aparece en la imagen se ha diseado aparte del AppWizard y se ha asociado a la aplicacin para dotar a sta de la posibilidad de configuracin de los parmetros del sistema de vigilancia. Vemos que en el dialogo se va mostrando la imagen del escenario que se est vigilando; la imagen es vista en un contenedor que nos ofrece el control VideoOCX y que se encaja en el dialogo de nuestra aplicacin y dota a esta de toda la funcionalidad de este control OCX. Como vemos la tecnologa de controles OCX y en general de controles ActiveX de Microsoft son una herramienta muy potente para el desarrollo de aplicaciones para la plataforma Windows y hace que el trabajo de programacin sea mucho ms rpido y eficiente. Esto es debido a que en esta tecnologa se hace uso de toda la funcionalidad que pone a nuestro servicio las caractersticas de POO que nos permite la reutilizacin del cdigo de determinados objetos con solo aadir stos a la nueva aplicacin. Otra caracterstica importante de la consola de control de la aplicacin es que se puede abrir una por videovigilancia o por escenario a vigilar y queda en manos del sistema operativo llevar el paralelismo de estas dos aplicaciones abiertas a buen termino. Es decir es posible vigilar mas de un escenario distintos al mismo tiempo; pero existe adems de la limitacin que nos marcar el tiempo de CPU asignado a cada proceso de vigilancia, otra limitacin: es necesario disponer de un driver distinto por cada dispositivo de adquisicin de datos. Si disponemos de varias cmaras y tarjetas capturadoras / digitalizadoras conectadas al PC y queremos procesar todos los flujos de datos provenientes de ellas de forma concurrente se ha de disponer de un driver por cada una de ellas ya que el driver es un recurso asignado a cada proceso de vigilancia que no permite ser compartido por varios dispositivos. Hemos de decir que en la imagen de la ventana de aplicacin no se ha mostrado todos los mens que dotan de funcionalidad al sistema y que sern explicados en puntos posteriores de esta memoria junto a su funcionamiento.

Desarrollo de la Aplicacin Software

Pgina 71

Proyecto Fin de Carrera

9.3.- Diagrama de Objetos de la Aplicacin

Para el desarrollo de este proyecto en su parte software se ha hecho uso de las caractersticas y funcionalidades que pone a nuestro servicio la POO. Por tanto nuestro sistema consta de un conjunto de objetos que interaccionan entre s para lograr la vigilancia. A continuacin se muestra un diagrama que representa al conjunto de objeto que se han utilizado en el desarrollo del proyecto:

CPicture CProyectoApp

CVideoOCX

CProyectoZona

CProyectoDlg

CDialogoAutor CDialogoTiempo

CDialogoNivel

CDialogoResolucion

CDialogoPfa

Fig. 9.5

Desarrollo de la Aplicacin Software

Pgina 72

Proyecto Fin de Carrera En la figura anterior se muestras los objetos que constituyen la aplicacin. Las lneas que se han dibujado entre ellos no representan las lneas de parentesco ellos, sino las dependencias de unos objetos con otros. Es decir que muchos objetos cuelguen del objeto CProyectoDlg significa que el este objeto hace uso de los dems, o que los dems forman parte de ese objeto, ya que el objeto CProyectoDlg hace uso de otros objetos para la configuracin de los parmetros o para mostrar la imagen capturada. A continuacin se expresa muy brevemente la funcionalidad que son estos objetos; una explicacin ms detallada se llevar a cabo un poco ms adelante en este mismo punto.

CProyectoDlg.-

Es el objeto principal al que la aplicacin llama cuando se empieza a ejecutar. Visualmente es lo que hasta ahora hemos llamado la consola de la aplicacin.

CProyectoApp.Es el objeto de la aplicacin, que inicializa la instancia de la aplicacin cuando se empieza a ejecutar. CVideoOCX.Es la clase que se encaja en nuestra aplicacin debido a incluir el control VideoOCX, dota a la aplicacin de la funcionalidad de este control. Es una clase de la que hace uso el control VideoOCX, viene a ser visualmente el marco donde se encaja la imagen. Viene tambin de incorporar el control VideoOCX.

CPicture.-

CDialogoAutor.Es un dialogo que muestra informacin sobre el autor del proyecto. CDialogoNivel.Es el dialogo donde se muestra las opciones para determinar el modo de fijar el nivel de disparo. CDialogoPfa.Es el dialogo donde se fija cual es la probabilidad de falsa alarma con la que el sistema va a trabajar.

CDialogoResolucin.- Es el dialogo donde se configura la resolucin en pxeles con las que va a trabajar el sistema. CDialogoTiempo.- Es el dialogo donde se va a configurar el tiempo de captura en ausencia de movimiento cuyos datos servirn al sistema para la obtencin de estadsticos de ruido. CDialogoZona.Es el dialogo donde se determinar el segmento de la imagen donde se aplicarn los algoritmos de vigilancia, en caso de determinarse por coordenadas en este mismo dialogo se har la introduccin de los datos.

Desarrollo de la Aplicacin Software

Pgina 73

Proyecto Fin de Carrera

9.4.- Men de la aplicacin

Como ya se ha mencionado se ha pretendido disear para la aplicacin objeto de este proyecto un entorno para usuario lo ms parecido posible al de todas las aplicaciones que corren bajo Windows. Para ello se ha insertado un men con diversas entradas que se use para la configuracin de los distintos parmetros de la aplicacin. Realmente es este men el que dota de funcionalidad al entorno de usuario de la aplicacin permitiendo configurar tiempos de deteccin, probabilidades de falsa alarma, etc... A continuacin se pasar a explicar cada una de estas entradas de este men y en aquellos casos en los que corresponda se explicar la funcionalidad del dialogo al que esta entrada del men llame.

9.4.1.- Men Inicio


Inicio constituye la primera entrada del men de la aplicacin; a continuacin se muestra est men y cuales son sus entradas:

Fig. 9.6.

Desarrollo de la Aplicacin Software

Pgina 74

Proyecto Fin de Carrera Como se aprecia en la Figura 9.6. el men Inicio se despliega en cuatro opciones ms que tienen que ver con el Inicio de la actividad del control VideoOCX y del procesamiento de la imagen para llevar a cabo la funcin de vigilancia. Son por lo tanto opciones muy importante para el correcto flujo del hilo de la aplicacin. Se han programado sus eventos para que cualquier incidencia en este o en otro men no pueda producir estados en las variables de control y flags de la aplicacin puedan llevar al sistema a un estado inestable, es decir para que no se produzca lo que vulgarmente se conoce como cuelgue de la aplicacin y que no es ms que el resultado de no haber tenido en cuenta todos las posibles secuencias de eventos que pudiesen darse en el sistema en manos de un usuario que desconozca el funcionamiento interno de la aplicacin. Esto anterior no slo se ha tenido en cuenta en el men inicio sino en el diseo de todos los eventos o secuencia de eventos de la aplicacin. A continuacin se muestra una explicacin de cada una de las entradas del men Inicio:

9.4.1.1.- Iniciar Control ActiveX


Para esta entrada del men Inicio se ha programado el mensaje command de Windows que es el se da cuando hacemos un clic sobre una entrada de un men. Se ha programado que este mensaje sea gestionado por la funcin OnInit del objeto ProyectoDlg ( void CPruebaDlg::OnInit ) cuya misin en inicializar el control VideoOCX para posteriormente comenzar la captura y procesamiento de los fotogramas. Esta funcin aparte de inicializar el control VideoOCX para su uso tambin inicializa los manejadores de la imagen y el modo de funcionamiento del control; para el caso de este proyecto el modo de funcionamiento ser modo 0 que se corresponde con VFW ( Video For Windows ). Tambin se activa una variable de estado global del sistema para que desde cualquier punto del programa sea posible leer si el control est inicializado o no lo est si ellos fuese necesario para el sistema.

9.4.1.2.- Comenzar procesamiento


Esta es la segunda entrada del men Inicio, se ha programado en su mensaje command la funcin OnStart del objeto ProyectoDlg ( void CPruebaDlg::OnStart ). En esta funcin se llama a una funcin global de Visual C++ :

Desarrollo de la Aplicacin Software

Pgina 75

Proyecto Fin de Carrera AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam ) Esta es la funcin que arranca un hilo, en este caso arranca el hilo de captura y procesamiento de la aplicacin. Es necesario pasarle dos parmetros: pfnThreadProc.- Es el primer parmetro de la funcin y representa el proceso del hilo que se quiere iniciar; es decir, estamos interesados en arrancar un hilo que lleve a cabo una labor en nuestro programa pues este parmetro es el nombre del algoritmo que ha de realizar el hilo, en nuestro caso es la funcin donde se engloba todo el trabajo de captura y procesamiento de la imagen. La documentacin de Visual C++ nos aconseja definir esta funcin de hilo antes del trozo de cdigo donde se haga la llamada a la funcin AfxBeginThread. En nuestro proyecto a esta funcin se le ha llamado CaptureThread.

pParam.-

Es el parmetro que hay que pasar a la funcin pfnThreadProc y representa el objeto que da el control al objeto Thread ( hilo ) creado e inicializado por la funcin AfxBeginThread y cuya labor se describe por la susodicha rutina pfnThreadProc. En nuestro caso es el puntero this, que apunta al objeto aplicacin que hasta el momento de crear el hilo tena el control de la aplicacin.

Adems de arrancar el hilo de captura y procesamiento en la funcin CProyectoDlg::OnStart se calcula el ancho y el alto en nmero de pxeles del fotograma que se va a capturar, y que previamente a inicializar el procesamiento se ha tenido que configurar en uno de los mens de configuracin del sistema como ya se ver ms adelante. Tambin se da en esta funcin el valor true a la variable global del sistema que controla que se ejecute el bucle de captura dentro del proceso que ejecuta el hilo ( en nuestro caso el lazo de captura en CaptureThread ). Es decir para iniciar la captura no slo es necesario arrancar el hilo de captura sino tambin activar la variable m_Running a true ;y todo esto se hace en esta entrada del men Inicio.

9.4.1.3.- Finalizar procesamiento


Finalizar procesamiento es la tercera entrada del men Inicio de la aplicacin y como su nombre indica tiene como finalidad acabar con el procesamiento de la aplicacin. En su mensaje command se ha programado la funcin CProyectoDlg::OnStop, en ella se le da el valor false a la variable global que controla que se ejecute el bucle de procesamiento en el hilo de captura ( esta es la misma variable que se activa a true en la entrada de comenzar procesamiento de este mismo men Inicio ). Tambin mediante esta entrada se finaliza el proceso de captura interno de VideoOCX, es necesaria esta accin de finalizar la captura interna si queremos cambiar la resolucin de los fotogramas que estamos capturando sin desactivar el control de la

Desarrollo de la Aplicacin Software

Pgina 76

Proyecto Fin de Carrera aplicacin. Es decir, en esta entrada del men se finaliza el proceso de captura interno del control VideoOCX pero no se desactiva dicho control, esta accin de parar la captura interna es necesaria cuando queremos cambiar algunos de los parmetros de los fotogramas siendo para ello necesario que el control est activo en la aplicacin.

9.4.1.4.- Finalizar control ActiveX y salir.

En el command de esta entrada del men se programa la funcin CProyectoDlg::OnClose(). En esta funcin al contrario del caso anterior se desactiva el control VideoOCX de la aplicacin, pero tambin antes de desactivar el control se finaliza el proceso de captura interno: Esto es necesario para que la aplicacin no entre en un estado inestable si el usuario desactiva el control VideoOCX de la aplicacin antes de finalizar el proceso interno de captura; es por ello necesario cambiar el valor a false de la variable global que controla el lazo de captura dentro del hilo y desactivar el proceso interno de captura para que si en caso de no haberse hecho antes al ejecutar la orden de desactivar el control no se cuelgue la aplicacin. Adems si se pulsa primero la entrada Finalizar procesamiento y luego se pulsa esta entrada del men de Inicio ( que sera el orden natural a seguir ) funciona correctamente a pesar de repetir diversas instrucciones en ambas entradas ya que la repeticin de estas instrucciones no llevan al sistema a un estado de inestabilidad. Tambin en esta funcin se liberan los manejadores de la imagen que se usaron para la captura de esta en tiempo de procesamiento y se cierra el dialogo de la aplicacin de la misma forma que si se pulsase al X de la esquina superior izquierda. No obstante por todo lo dicho anteriormente se desaconseja el uso de la X y se recomienda finalizar la aplicacin primero pulsando Finalizar procesamiento y luego pulsando Finalizar control ActiveX y salir.

Desarrollo de la Aplicacin Software

Pgina 77

Proyecto Fin de Carrera

9.4.2.- Men Vigilancia


Como se puede apreciar en la siguiente imagen el men Vigilancia es un men que tiene a su vez tres entradas estas son : Deteccin por igualdad, Deteccin por similitud y Nivel de disparo.

Fig. 9.7. Este men es de configuracin de los parmetros del modo de vigilancia; a continuacin se muestra la descripcin de las acciones de cada una de las entradas de este men:

9.4.2.1.- Deteccin por igualdad


El command asociado a esta entrada del men hace una llamada a la funcin CProyectoDlg::OnIgual() en la que se activa una variable global del sistema que indica al hilo de captura y procesamiento que se ejecute en el bucle de captura la parte del cdigo correspondiente al algoritmo de deteccin por igualdad, es decir el algoritmo que emplea la tcnica de diferencia de fotogramas para la obtencin del movimiento. Esta funcin slo comprueba que el lazo de captura y procesamiento dentro del hilo no se est ejecutando mediante el test de la variable global que controla esto y si es as est en disposicin de activar el nuevo modo de procesamiento o dejarlo igual; pero en caso de que se est ejecutando el lazo de captura la aplicacin no deja cambiar el modo de deteccin ya que esto podra llevar al sistema a un estado inestable. Si se

Desarrollo de la Aplicacin Software

Pgina 78

Proyecto Fin de Carrera intentase llevar a cabo esta accin se presentara un mensaje de advertencia indicando que no posible tal accin.

9.4.2.2.- Deteccin por similitud


El command asociado a esta entrada hace una llamada a la funcin CProyectoDlg::OnSimil() que implementa un cdigo similar al de la funcin de la deteccin por igualdad salvo que ahora en la variable donde se guarda el modo de procesamiento que se llevar a cabo se activa el modo de procesamiento por similitud o el que emplea tcnicas de correlacin de fotogramas para la obtencin del movimiento en la imagen. Al igual que en el caso anterior para mantener la estabilidad del sistema no se permite el cambio de modo de procesamiento una vez inicializado el lazo de captura.

9.4.2.3.- Nivel de disparo


Esta entrada del men despliega un dialogo de configuracin para las opciones del calculo del nivel de disparo; este men se muestra a continuacin:

Fig. 9.8.

Desarrollo de la Aplicacin Software

Pgina 79

Proyecto Fin de Carrera El dialogo de nivel de deteccin presenta dos opciones para el clculo del nivel de deteccin configurable por el usuario del sistema, estas opciones son:

Fijacin directa del nivel.- Como su nombre indica se hace una asignacin directa del nivel de disparo y no se tiene en cuenta el parmetro de probabilidad de falsa alarma. En este caso el nivel de disparo se ajusta a partir de los estadsticos calculados por el sistema durante el tiempo de clculo de estadsticos de forma esttica; es decir lo que se hace es disparar la alarma cuando se supera un cierto nivel cuantificado por el valor de la media y varios valores de la desviacin tpica. En concreto 9 valores de la desviacin tpica, por lo tanto para el caso de igualdad se usar el nivel esttico igual a la media ms 9 desviaciones tpicas, y en el caso de similitud se usar el nivel esttico igual a la media menos 9 desviaciones tpicas

Fijacin de Pfa. calculo iterativo del nivel.- En este caso es necesario asignar al sistema una probabilidad de falsa alarma para que a partir de esta se calcule, usando el algoritmo iterativo, el nivel de disparo que ms se aproxime a esa Pfa.

En el momento en que se pulsa el botn aceptar de este dialogo la variable local del dialogo que guarda la forma de calculo del nivel de deteccin se carga en la variable global para que sea interpretada en el programa y se proceda a realizar el calculo del nivel de disparo del modo configurado por el usuario. Tambin cuando se pulsa el botn de la X de la esquina superior derecha del dialogo se ejecuta un cdigo que activa un temporizador para eliminar de la memoria dicho dialogo, esto se explicar con ms detalle ms adelante.

Desarrollo de la Aplicacin Software

Pgina 80

Proyecto Fin de Carrera

9.4.3.- Men Configuracin


La configuracin constituye la tercera entrada del men de la aplicacin y despliega seis opciones que como su nombre indica sirven para la configuracin de diversos parmetros de la aplicacin. A continuacin se muestra una imagen donde se puede apreciar estas opciones del men de Configuracin:

Fig. 9.9.

La configuracin constituye uno de los puntos fuertes de la aplicacin ya que permite al usuario de la misma cambiar diversos parmetros para detectar con ms exactitud o centrar el procesamiento y la deteccin en determinadas zonas consideradas de ms inters; as de esta forma se consigue aumentar la potencia de vigilancia usando los mismo algoritmos. Relacionado con esto tambin se ha de decir que la aplicacin se ha programado de forma que cada una de estas opciones de configuracin toma un valor por defecto si no se quiere entrar en la configuracin del sistema de esta forma se agiliza su uso para pruebas y en los casos en que no se est interesado en ninguna configuracin especfica. A continuacin se muestra con ms detalle la explicacin de cada una de las entradas de este men de configuracin:

Desarrollo de la Aplicacin Software

Pgina 81

Proyecto Fin de Carrera

9.4.3.1- Resolucin
Como su propio nombre indica esta entrada del men de configuracin se utiliza para cambiar la resolucin de los fotogramas que la aplicacin captura y utiliza para la realizacin de la videovigilancia. Si pulsamos en la resolucin la aplicacin nos despliega el siguiente dialogo de configuracin con diversas opciones para el tamao de la imagen:

Fig. 9.10.

En el dialogo se muestra cinco opciones para el tamao de la imagen que podemos capturar y mostrar con la aplicacin pero como este tamao se refiere al nmero de pxeles que puede mostrar el contenedor para las imgenes se podran obtener otros tamaos realizando llamadas al mtodo del objeto VideoOCX de la aplicacin: long m_VideoOCX.CreateGrayImageHandle(long width, long height)

Con la llamada a este mtodo se obtendra un contenedor para la imagen con un tamao que se pase como parmetros expresando el ancho y el alto del nuevo contenedor en nmero de pxeles. En el caso del proyecto no se ha empleado este mtodo sino que hemos hecho uso del mtodo:

Desarrollo de la Aplicacin Software

Pgina 82

Proyecto Fin de Carrera

BOOL m_VideoOCX.SetResolution(long width, long height)

Con el cual slo podemos activa resoluciones estndar como son las que se muestran en el dialogo de Resolucin de la Imagen. Dependiendo de cual sea la opcin que se elija en este dialogo tenemos una carga diferente en el sistema pues las opciones varan de 19200 pxeles ( que es la opcin de menor resolucin: 160x120 pxeles ) hasta 307200 pxeles ( que es la opcin de mxima resolucin que se contempla en el sistema: 640x480 pxeles ); lo que supone un incremento de 291000 pxeles que se han de capturar y procesar en tiempo real. En realidad la afirmacin del prrafo anterior slo es cierta si el segmento de procesamiento de la aplicacin se configura para que coincida con todo los pxeles del fotograma slo en este caso el nmero de pxeles a procesar coincide con el nmero de pxeles capturados. La posibilidad de introducir un segmento de procesamiento en vez de obligar a la aplicacin a procesar todos los pxeles de la imagen fue introducida en el sistema para liberar de carga de procesamiento a la aplicacin y que de esta forma sea posible la ejecucin en paralelo de varios procesos de videovigilancia cada uno con su fuente de fotogramas. Relacionado con el dialogo de Resolucin de la Imagen tambin hemos de decir que la aplicacin no permite que sea abierto antes de la inicializacin del control VideoOCX ya que tiene que acceder a mtodos de este objeto y para ello el objeto tiene que estar inicializado; si se intenta acceder al dialogo sin inicializar dicho control se nos muestra un mensaje de aviso que nos advierte de ello.

Fig. 9.11 Tambin se nos muestra un mensaje de aviso se pretendemos cambiar la resolucin y se est procesando, es necesario detener el procesamiento para cambiar el tamao de la imagen.

Fig. 9.12.

Desarrollo de la Aplicacin Software

Pgina 83

Proyecto Fin de Carrera

9.4.3.2- Zona de deteccin


Esta es la segunda entrada del men de configuracin, en el men se ha llamado a este parmetro Zona de deteccin pero tambin en esta memoria se ha hecho alusiones al l como segmento de deteccin. Este parmetro no es ms que la zona dentro del escenario captado por la cmara donde quiero que se apliquen los algoritmos de deteccin y esta formada por un subconjunto de pxeles del nmero total de pxeles capturados por la aplicacin. Si pulsamos en esta entrada del men de Configuracin nos aparece el siguiente dialogo:

Fig. 9.13.

Como se puede apreciar en la imagen tenemos un cuadro de seleccin mediante el cual podemos configurar si la zona o segmento de deteccin se introduce en la aplicacin mediante el ratn o introduciendo coordenadas. Si se selecciona la opcin de zona de deteccin determinada mediante un rectngulo dibujado por el puntero del ratn la aplicacin pasa a mostrar la imagen que en ese momento est captando la cmara y el usuario debe dibujar el segmento en la imagen donde quiere aplicar los algoritmos de vigilancia. La forma de dibujar estos segmentos mediante el ratn es la usual en cualquier aplicacin que corra bajo Windows, es decir, mediante eventos del ratn: Se pulsa el botn izquierdo del ratn en un lugar de la imagen y se arrastra el puntero con el botn izquierdo pulsado hasta llegar al lugar que consideramos la esquina opuesta del rectngulo de pxeles a los cuales aplicaremos los algoritmos de vigilancia, en ese lugar soltamos el botn del ratn que Desarrollo de la Aplicacin Software Pgina 84

Proyecto Fin de Carrera mantenamos pulsado; de esta forma el sistema capta los evento de pulsar y soltar el botn del ratn sobre la imagen y guarda las coordenadas de la imagen donde estos eventos se producen haciendo coincidir estas coordenadas con esquinas opuestas del rectngulo. La idea de usar el mtodo de dibujo mediante el puntero del ratn es que se enfoque la cmara al lugar de vigilancia y luego con el ratn dibujemos cual sea la zona que realmente estamos interesados en vigilar de todo el escenario captado por la cmara: Un ejemplo de esto sera enfocar la cmara a la fachada de una vivienda y luego con el puntero hacer que el segmento de vigilancia sea solamente la puerta de dicha vivienda; otro ejemplo sera que si la cmara enfoca a un conjunto de cosas con el ratn selecciones para vigilar solo unos de esos objetos. A continuacin se muestra una pantalla a modo de ejemplo de una definicin de segmento de vigilancia utilizando el puntero:

Fig. 9.14.

En el ejemplo aparece una grapadora y una taza; si estamos interesados en vigilar que la grapadora no sufra ningn desplazamiento definimos la zona de vigilancia con el ratn de forma que esta zona englobe con su rea a la grapadora y a esa rea ser donde realmente apliquemos los algoritmos de vigilancia; es necesario decir aqu que si en cualquier otro lugar del escenario captado por la cmara hay algn tipo de movimiento este ser filtrado por los algoritmos si el movimiento no cambia el estado de ninguno de los pxeles del rectngulo de deteccin .

Desarrollo de la Aplicacin Software

Pgina 85

Proyecto Fin de Carrera Por el contrario si se selecciona la opcin de determinar la zona de deteccin mediante coordenadas tenemos que introducir en el mismo dialogo las coordenadas de la esquina superior izquierda y la esquina superior derecha del rectngulo de vigilancia. Con esta forma de determinar la zona de vigilancia es bastante ms complicado ajustarse al objeto o zona del escenario que queremos monitorizar pero es una opcin muy til para la realizacin de pruebas comparativas entre los dos algoritmos de deteccin ( igualdad y similitud ) pues nos permite introduciendo las coordenadas del segmento que los distintos rectngulos de vigilancia sean idnticos para distintas pruebas. Por el mtodo de dibujo con el ratn es muy difcil ajustar segmentos idnticos de una realizacin a otra sin embargo mediante este mtodo es muy sencillo con slo introducir las mismas coordenadas y cuidar que la cmara no sufra ningn movimiento. A continuacin se muestra el segmento de vigilancia obtenido en la aplicacin con la introduccin de las siguientes coordenadas: Esquina superior derecha: Esquina inferior izquierda: X1 = 0 X2 = 100 Y1 = 0 Y2 = 100

Fig. 9.15.

Como se puede apreciar en la imagen y dadas las coordenadas introducidas vemos que el origen de coordenadas se sita en la esquina superior izquierda y que el valor mximo que podemos poner en cada una de las coordenadas es la resolucin activada en cada momento para esa coordenada; es decir, que en el caso del ejemplo, que se ha configurado la resolucin por defecto de 320x240, las coordenadas de las esquina inferior derecha son para la X = 319 y para la Y = 239, es decir la resolucin

Desarrollo de la Aplicacin Software

Pgina 86

Proyecto Fin de Carrera menos uno para cada eje de coordenadas. Es necesario, si queremos usar este mtodo para la definicin del segmento de vigilancia que tengamos presente en cada momento cual es la resolucin que se est usando. Tambin para este caso, al igual que en el caso de resolucin, se han diseado unos mens de aviso para orientar al usuario de cuales son los pasos a seguir en cada momento: Por ejemplo el siguiente dialogo se muestra si el usuario quiere determinar el segmento de deteccin y an no se ha inicializado el control VideoOCX o no se ha comenzado el procesamiento ( ambas son entradas del men Inicio):

Fig. 9.16.

Y el siguiente dialogo se muestra cuando ya se ha definido la zona de deteccin y se pulsa para definir de nuevo:

Fig. 9.17.

Este parmetro de la zona de deteccin es de los ms importantes de la aplicacin pues dependen del l factores como el rendimiento, ya que cuanto mayor nmero de pxeles tenga la zona de deteccin ms tiempo se llevar para su procesamiento, o la estimacin adecuada de los niveles de deteccin ya que se estn realizando clculos de medias en el conjunto del nmeros de pxeles del segmento de deteccin; esto da lugar a que variaciones pequeas sean significativas en segmentos pequeos y no lo sean en segmentos de un gran nmero de pxeles.

Desarrollo de la Aplicacin Software

Pgina 87

Proyecto Fin de Carrera

9.4.3.3- Tiempo de preprocesamiento


Bajo este nombre se engloba el parmetro de la aplicacin que define el tiempo dedicado por esta a la adquisicin de fotogramas para procesamiento de los niveles de deteccin. A continuacin se muestra el dialogo de eleccin del intervalo que dedicar la aplicacin a dicho clculo:

Fig. 9.18.

Este tambin es un parmetro muy importante para un correcto funcionamiento de la aplicacin ya que dependiendo del intervalo de observacin para el clculo de estadsticos podemos obtener una estimacin ms o menos adecuada a la realidad. En relacin con esto es muy importante decir que una mejor o peor estimacin del nivel de deteccin depende no slo del tiempo que nos dediquemos a la observacin de fotogramas para tal efecto sino tambin de la resolucin: La idea es dedicar el mayor tiempo posible para el clculo del nivel para as ser capaz de obtener el mayor nmero posible de fotogramas pero an dedicando mucho tiempo a esta observacin si los tamaos de fotogramas son muy elevados de forma que la aplicacin es capaz de captar pocos fotogramas en ese tiempo de observacin la estimacin se hace con pocos datos.

Desarrollo de la Aplicacin Software

Pgina 88

Proyecto Fin de Carrera Por lo tanto la conclusin que se saca de lo anteriormente mostrado es que si queremos una buena estimacin del parmetro del nivel de deteccin no slo hemos de tener en cuenta el dedicarle tiempo a esta observacin sino tambin en la medida en que sea posible que dicha observacin se haga con fotogramas pequeos para que en el mismo tiempo poder captar un mayor nmero de estos. Tambin para este dialogo si queremos configurar en tiempo cuando ya est procesando la aplicacin obtenemos el siguiente mensaje de la aplicacin a modo de dialogo:

Fig. 9.19.

El hecho de no poder modificar este parmetro cuando la aplicacin est corriendo en su fase de vigilancia no es restrictivo ya que si estamos procesando es porque ya se ha efectuado la eleccin de este parmetro y ya se est calculando el nivel de deteccin o la aplicacin ya est procesando fotogramas para videovigilancia.

Desarrollo de la Aplicacin Software

Pgina 89

Proyecto Fin de Carrera

9.4.3.4.-Probabilidad de falsa alarma


Como su propio nombre indica este es el parmetro de la aplicacin que determina cual va a ser la probabilidad de falsa alarma con la que va a trabajar la aplicacin. Es al igual que los anteriores un parmetro de gran importancia para la aplicacin y se usa para el calculo del nivel de disparo. A continuacin se muestra el dialogo donde se tiene lugar su configuracin:

Fig. 9.20.

Como se puede ver en la aplicacin anterior se ha diseado el dialogo con cuatro entradas correspondientes a las probabilidades de falsa alarma de: 10-2 10-4 10-6 10-8

0.01 0.0001 0.000001 0.00000001

= = = =

Desarrollo de la Aplicacin Software

Pgina 90

Proyecto Fin de Carrera Se ha optado por expresar en el dilogo la forma no exponencial porque la aplicacin est programada para que al darse el evento de pulsar en el botn Aceptar los campos Caption se carguen en las variables y para estos campos el asistente no permita la notacin cientfica. Este parmetro es importante para el correcto funcionamiento de la aplicacin de vigilancia y describe con que probabilidad el sistema puede hacer saltar la alarma debido a que el ruido alcanza el nivel de deteccin; es decir es la probabilidad con que el sistema de una alarma sin que esta se produzca debida a una accin de intrusismo. Concretamente este parmetro puede tambin tener otro significado debido a la naturaleza digital de las capturas que se hacen en este proyecto: La probabilidad de falsa alarma puede considerarse como el nmero de fotogramas ruidosos de todos los fotogramas capturados, es decir, si consideramos la probabilidad de falsa alarma de 10-6 esto quiere decir que de 1 milln de fotogramas capturados uno de ellos tiene un nivel de ruido comparado con el anteriormente capturado que puede producir un disparo de la alarma sin que este fotograma refleje una variacin debida a intrusismo. Al igual que en la configuracin de otros parmetros la aplicacin no nos permite en determinados estados la modificacin de dicho parmetro; en este caso la probabilidad de falsa alarma no se puede modificar cuando ya se est procesando para as conservar la consistencia de la aplicacin y el buen funcionamiento de esta. Cuando se intenta modificar la probabilidad de falsa alarma la aplicacin lanza el siguiente aviso:

Fig. 9.21.

Es conveniente tener lo anteriormente claro cuando se vaya a configurar dicho parmetro pues para determinadas aplicaciones de este proyecto puede ser muy crtico tener un elevado nmero de fotogramas que produzcan falsas alarmas.

Desarrollo de la Aplicacin Software

Pgina 91

Proyecto Fin de Carrera

9.4.3.5.- Seleccionar driver


Esta opcin nos permite seleccionar cual ser el driver al que se conecte la aplicacin y que ser la fuente de fotogramas a procesar. El dialogo de seleccin de driver se muestra a continuacin:

Fig. 9.22.

En este caso tenemos seleccionamos el driver de la cmara USB que es fuente de fotogramas de la aplicacin pero tambin podra haber sido el driver de una tarjeta digitalizadora u otro dispositivo capaz de suministrar fotogramas que procesar a la aplicacin. Por cada dispositivo que sea capaz de proporcionar a la aplicacin un flujo de fotogramas a procesar tendremos una entrada diferente en este dialogo. Esto nos permite poner a procesar varios procesos concurrentes de vigilancia con la nica limitacin de que han de conectar con drivers distintos. Por supuesto tambin existe un nmero limitado de procesos concurrentes debido a que todos hacen uso de la misma CPU y todos consumen tiempo de procesamiento.

Desarrollo de la Aplicacin Software

Pgina 92

Proyecto Fin de Carrera

9.4.3.6.- Mostrar ventana de informacin


Esta entrada del men muestra un dialogo donde presentan datos y propiedades de la captura que se est llevando a cabo. A continuacin se muestra una imagen de este dialogo donde podemos apreciar cuales son los datos que muestra:

Fig. 9.23.

Para este ejemplo en concreto los parmetros que nos muestra este dialogo de informacin son: Device: Es el dispositivo que en este caso es el encargado de realizar la captura de los fotogramas. Como slo tenemos uno instalado es el dispositivo 0. Mode: Es una propiedad de la imagen que se esta usando, en este caso aparece activada con Video y se refiere al tipo de imgenes usadas en Video For Windows (VFW); la otra opcin sera trata con secuencias AVI.

Width.- Se corresponde con el ancho del fotograma en nmero de pxeles. Height.- Se corresponde con el alto del fotograma en nmero de pxeles.

Desarrollo de la Aplicacin Software

Pgina 93

Proyecto Fin de Carrera Preview, Overlay, Capture: Tenemos activado el modo de captura por el cual se capturan los fotogramas en formato BMP. Captured Frames.- Fotogramas capturados por la aplicacin. Streamed Frames.- Fotogramas capturados por la cmara, son todos los fotogramas del flujo de datos de la cmara a la aplicacin. Ratio.Es el porcentaje de fotogramas capturados de todos los que es capaz de enviar la cmara. Su calculo es fcil a partir de Captured Frames y Streamed Frames y se realiza de la siguiente manera:

Ratio =

CapturedFr ames 100 StreamedFrames

Desarrollo de la Aplicacin Software

Pgina 94

Proyecto Fin de Carrera

9.4.4.- Men Guardar


El men Guardar constituye la cuarta entrada del men de la aplicacin, y tiene las opciones relacionadas con guardar algn ficheros de datos, de imagen o de configuracin del sistema. Este men se ha implementado para darle la posibilidad al usuario de almacenar todo lo relacionado con la aplicacin en ficheros de texto y as, de este modo, poder examinar el funcionamiento de la aplicacin conforme a la configuracin guardada en un fichero en memoria. Veamos las opciones que nos permite este men Guardar, y como se despliega en pantalla:

Fig. 9.24. En cualquier aplicacin configurable por el usuario de la misma siempre es interesante tener la posibilidad de poder almacenar en ficheros de texto la informacin que usa la aplicacin para trabajar en dicho proceso de deteccin, y de este modo el usuario tiene la posibilidad de mirar detenidamente la configuracin para cada proceso as como usar estos ficheros como entrada de datos para otra aplicacin. Un ejemplo de esto anteriormente descrito es lo que he hecho para la elaboracin de las graficas de representacin de medias y correlaciones: los ficheros de estadsticos se usaron como entradas para Matlab y se us sus funciones de representacin de grficos. A continuacin se muestra con ms detalle la explicacin de cada una de las entradas de este men Guardar: Desarrollo de la Aplicacin Software Pgina 95

Proyecto Fin de Carrera

9.4.4.1.- Guardar estadsticos en ficheros


Esta opcin de guardar estadsticos en ficheros se refiere a la creacin de un archivo de texto donde se almacenen los valores de medias o correlaciones ( segn se active la deteccin por igualdad o similitud ) que almacena la aplicacin para un estudio de estos datos por otra aplicacin, por ejemplo Matlab. Veamos un ejemplo de archivo guardado y abierto por el WordPad:

Fig. 9.25. Este archivo tiene impresa las correlaciones capturadas por la aplicacin en tiempo real, se ha programado que se guarde una correlacin por fila; de modo que el fichero tiene una sola columna y tantas filas en esa columna como correlaciones entre un fotograma y su consecutivo. La idea con lo que se ha dado esta estructura al fichero de datos es que se puede cargar en una variable vector de Matlab que tenga una sola columna y tantas componentes como correlaciones realice la aplicacin para el proceso de deteccin. Se desaconseja activar esta opcin cuando la aplicacin se pone a funcionar durante un tiempo indefinido puesto que en cada captura almacenar un dato en memoria y durante un tiempo indefinido esto puede saturar la memoria del disco.

Desarrollo de la Aplicacin Software

Pgina 96

Proyecto Fin de Carrera 9.4.4.2.- Guardar imagen de intruso Esta posibilidad se le da al usuario si este quiere guardar una fotografa del intruso que ha provocado que se supere el nivel de deteccin de la aplicacin. Es una opcin til pues nos permite identificar cual ha sido la razn por la que ha saltado la alarma con slo observar la instantnea tomada en dicho momento. Veamos las opciones que nos da el men guardar imagen de intruso para el tipo fichero en que se guarde la instantnea del intruso:

Fig. 9.26. Al pulsar la opcin de Guardar imagen de intruso se da la posibilidad de elegir entre tres formatos distintos: Formato BMP: Se captura la imagen en formato BMP o mapa de bit, en este caso realizar la captura es simplemente un volcado de los bits del contenedor de la imagen donde se ha detectado el movimiento al fichero de la fotografa sin ningn tipo de compresin. Es de los tres el que nos da un fichero de mayor peso en memoria de disco. Formato JPEG (100%): Con este formato a la imagen se le aplica el algoritmo de compresin JPEG en su versin de mayor calidad y por lo tanto de menor compresin antes de ser volcado al fichero de la fotografa. Formato JPEG (50%): En este caso se aplica tambin el algoritmo de compresin JPEG con una calidad del 50% con lo que se obtienen ficheros de imagen con menor peso en memoria a consta de una peor resolucin.

Desarrollo de la Aplicacin Software

Pgina 97

Proyecto Fin de Carrera Vemos un ejemplo donde se toma la instantnea cuando se ha detectado que se que ha habido movimiento en el escenario de vigilancia: Imagen con Formato BMP:

Fig. 9.27. Imagen con Formato JPEG (100%):

Fig. 9.28. Imagen con Formato JPEG (50%):

Fig. 9.29. Vemos que para los dos primeros casos la diferencia es inapreciable para el ojo humano pero en el tercero ya se nota los efectos de la compresin de la imagen.

Desarrollo de la Aplicacin Software

Pgina 98

Proyecto Fin de Carrera

9.4.4.3.- Guardar configuracin en archivo de texto


Con esta opcin se almacena en memoria un fichero de texto que guarda toda la configuracin del sistema para un proceso de deteccin. Un ejemplo para este fichero de deteccin es el que a continuacin se muestra:

Fig. 9.27.

Como se ve en el ejemplo, en el fichero de configuracin se guardan datos tales como el tipo de deteccin usada en la realizacin que puede ser deteccin por IGUALDAD o por SIMILITUD segn el algoritmo de deteccin empleado para la deteccin de movimiento. Se guarda tambin el nivel deteccin a partir del cual se hace saltar la alarma; la resolucin del fotograma de captura dando el ancho y el alto de este fotograma en nmero de pxeles; la forma de determinar el segmento de deteccin que puede ser dibujndolo con el ratn o introducido por coordenadas; el tiempo dedicado por la aplicacin a la captura para el clculo de estadsticos; la probabilidad de falsa alarma utilizada para el nivel de deteccin; y en ltimo lugar el driver con el que conecta la aplicacin para la obtencin de las imgenes y referencias al autor del proyecto. Es conveniente tener en cuenta que el fichero de configuracin guarda la configuracin que tenga el sistema en el momento de pulsar la opcin de guardar, de modo que si se pulsa antes de realizar la configuracin guardar en el fichero la configuracin por defecto que tiene el sistema al inicializarse. Desarrollo de la Aplicacin Software Pgina 99

Proyecto Fin de Carrera

9.4.5.- Men Acerca de... .


Pulsando la nica entrada de este men se presenta un dialogo con informacin sobre el autor del proyecto y sobre en proyecto en si. A continuacin se muestra este dialogo:

Fig. 9.28.

Desarrollo de la Aplicacin Software

Pgina 100

Proyecto Fin de Carrera

10.- CARGA COMPUTACIONAL DEL SISTEMA

En todo momento mientras se ha desarrollado la aplicacin se ha hecho especial hincapi en desarrollar unos algoritmos de vigilancia que consuman el menor nmero de recursos del sistema. Como bsqueda de esta finalidad se determin el lenguaje C++ como plataforma para la programacin por ser el lenguaje ms rpido y el que nos permita la posibilidad de acceder a recursos del sistema de forma ms eficaz y mayor libertad; la eleccin de este lenguaje para la programacin de la aplicacin trajo ventajas como las anteriormente mencionadas pero tambin el inconveniente de la dificultad presente en la programacin con C aadido esto a que me enfrent al proyecto con escasas nociones de la programacin de la API de Windows.

En este apartado se realizarn unas pruebas para comprobar la carga de CPU que el sistema soporta debido a la aplicacin.

10.1.- Descripcin de la prueba


La prueba consistir en la realizacin de un proceso de vigilancia mediante los dos algoritmos de deteccin de movimiento creados implementados en esta aplicacin con ciertas caractersticas de carga como pueden ser un elevado nmero de pxeles para el formato del fotograma y tambin un elevado nmero de pxeles para el segmento de deteccin; con esto tendremos la certeza de realizar las pruebas de carga computacional para detecciones crticas donde la aplicacin tenga que procesar una elevada carga de datos en tiempo real. Para la obtencin de resultados de la prueba se realizar mediante la visualizacin de la carga computacional del administrados del sistema de Windows, para los casos de deteccin por igualdad y por similitud; esto nos permitir observar una comparativa de cargas computacionales entre los dos mtodos de deteccin de intrusismo implementados en el proyecto. La caracterstica ms crtica en una deteccin es el nmero de pxeles que capturar y procesar, para estas pruebas se configurar para una captura de fotogramas de dimensiones de 640x480 y la misma carga de pxeles que procesar. Los datos obtenidos de esta simulacin ser en % de tiempo que la CPU usa para el procesamiento en esta aplicacin, es necesario por tanto no tener ninguna otra aplicacin procesndose a la vez que la deteccin pues esto hara que los datos ofrecidos por el administrador fuesen menos precisos ya que habra que considerar la existencias tambin de tiempos en los que se pasan el hilo principal de una a otra aplicacin.

Carga Computacional

Pgina 101

Proyecto Fin de Carrera Los datos obtenidos son siempre intuitivos ya que el propio sistema necesita tiempo de CPU para contabilizar este tanto por cierto dedicado a la aplicacin; no obstante los datos obtenidos se usarn para realizar una estimacin del nmero de procesos de vigilancia concurrentes que podemos ejecutar en la misma mquina siendo este clculo tambin aproximado:

10.2.- Grfico de CPU para deteccin por igualdad


Veamos en primer lugar la grfica de % de CPU que se obtiene cuando hacemos correr la aplicacin con el algoritmo de deteccin por igualdad y las caractersticas antes mencionadas sobre el tamao del fotograma y del segmento de vigilancia:

Fig. 10.1.

La figura 10.1. es una captura de pantalla del administrador de Windows, se observa que para ese instante la carga de la CPU debida a la aplicacin de deteccin de intrusismo era del 15%, durante este periodo estuve observando los valores de carga de CPU y se alcanz como mximo el 19%. Para hacer un clculo aproximado del nmero de procesos de vigilancia similares al anteriormente mostrado que se podran ejecutar de forma concurrente no tenemos ms que suponer que todos cargasen al sistema de forma similar al anterior y obtendramos:

N de procesos =

100 5 procesos con deteccin por igualdad. 19

Carga Computacional

Pgina 102

Proyecto Fin de Carrera

Hay que siempre presente que estos clculos de carga de CPU y nmero concurrente de procesos son siempre aproximados ya que cuando en un sistema monoprocesador se tienen varias procesos ejecutndose existen unas pequeas fracciones de tiempo que el sistema operativo dedica a la transaccin de la ejecucin de un proceso a la ejecucin de otro proceso, y esta tiempo no puede ser atribuido a ningn proceso en concreto.

10.3.- Grfico de CPU para deteccin por similitud


Tambin se realiz el mismo experimento pero con el algoritmo de deteccin por similitud; los grafica obtenida mediante el administrador de Windows es la que a continuacin se muestra:

Fig. 10.2.

En el instante de captura de la pantalla el proceso acaparaba el 18% del tiempo de la CPU, comento este dato porque ha sido significativo del resto de la evolucin de la carga del procesador. Mientras se observ la evolucin de la carga del procesador se alcanzaron porcentajes de CPU de hasta el 24%, lo que supone un aumento en comparacin a la carga del procesador cuando se us el algoritmo por igualdad. Veamos en este caso cuantos procesos concurrentes similares al observado podramos ejecutar en la misma mquina:

N de procesos =

100 = 4 procesos con deteccin por similitud 24

Carga Computacional

Pgina 103

Proyecto Fin de Carrera

Luego, al menos a la vista de los datos obtenidos mediante el administrador de Windows, parece ser la deteccin por igualdad ms eficiente en carga del procesador que la deteccin por similitud ya que con los datos obtenidos para proceso de deteccin con la mayor carga de datos posible por la aplicacin, se obtienen que para igualdad se puede procesar 5 concurrentemente y para similitud 4. No obstante se ha de tener en cuenta que son datos aproximados.

Carga Computacional

Pgina 104

Proyecto Fin de Carrera

11.- SIMULACIONES

En este apartado realizaremos mltiples simulaciones y estudiaremos sus resultados para poder determinar cuales son las ventajas e inconvenientes de un mtodo de deteccin frente a otro y cual tiene un mejor comportamiento dependiendo de la caractersticas del escenario donde se est realizando la simulacin. En cada una de las simulaciones que a continuacin se muestran se describirn cuales han sido los valores que se han adoptado en la configuracin de los distintos parmetros de la aplicacin, para as poder determinar, si existiese, una relacin entre estos parmetros configurables y los resultados obtenidos de la simulacin. Tambin se intentar incluir en cada una de las simulaciones imgenes que nos ayuden a hacernos una idea fsica del escenario de la simulacin as como de los datos de medias y correlaciones que la aplicacin guarda en el fichero de estadsticos.

11.1.- Escenario de Simulacin 1


En este caso se realizar la simulacin en un escenario luminoso, con un periodo de deteccin de estadsticos de 10 segundos, con fotogramas cuyo ancho y alto en nmero de pxeles es 320x240 y tomando un segmento de vigilancia que coincida con todo el escenario captado por la cmara. La aplicacin eleva el nivel de luminosidad del segmento de vigilancia durante el periodo de toma de estadsticos pero en este experimento no es apreciable al ser todo el escenario segmento de vigilancia Cada escenario de simulacin se analizar mediante los dos algoritmos de deteccin: Deteccin de igualdad o deteccin por similitud; en ambos casos yo tomar el papel de intruso atravesando el escenario para provocar un salto de la alarma de deteccin. Los resultados obtenidos se presentan en los siguientes apartados:

11.1.1.- Escenario de Simulacin 1. Deteccin por igualdad

En este caso realizaremos la deteccin en el escenario descrito anteriormente mediante el algoritmo de deteccin por igualdad; a continuacin se muestra el fichero de configuracin captado por la aplicacin para este experimento :

Simulaciones

Pgina 105

Proyecto Fin de Carrera


>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<<

Forma de deteccin usada:

Deteccin por IGUALDAD 3.437287

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

Zona de deteccin determinada mediante:

Coordenadas del segmento. 10

Tiempo de prepocesamiento empleado para calculo de estadsticos: segundos. Probabilidad de falsa alarma: 0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

Veamos tambin el escenario donde tiene lugar el experimento:

Fig. 11.1.

Simulaciones

Pgina 106

Proyecto Fin de Carrera Como ya se ha mencionado antes es un escenario con luminosidad pero adems en la Fig 11.1. la imagen est an ms luminosa debido a que la aplicacin aplica un aclarado de 30 sobre el nivel de todos los pxeles para determinar durante el periodo de toma de estadsticos cual es el segmento donde vamos a aplicar los algoritmos de deteccin. El experimento consisti en que yo atravesaba el escenario y vea cual era el comportamiento de la aplicacin. El programa detect intrusismo cuando incid en el segmento de vigilancia o captur la siguiente fotografa:

Fig. 11.2. A continuacin se muestra una grfica con los datos guardados por la aplicacin en este proceso de vigilancia, esta grfica es obtenida mediante la representacin del fichero de estadsticos que la aplicacin ha guardado:

Fig. 11.3.

Simulaciones

Pgina 107

Proyecto Fin de Carrera En la grfica de la figura 11.3. se representa las medias de las diferencias entre fotogramas consecutivos. Vemos que todas las medias estn por debajo del valor de 3.437287 que es, para esta realizacin, el nivel de disparo de la alarma ( representado en la grfica en color verde ) excepto varios fotogramas en los que se supera este valor de alarma y que coinciden con los fotogramas en los que realizo la intrusin en el segmento de deteccin. Como consecuencia la aplicacin hace saltar la alarma y realiza una instantnea del intruso, esta instantnea es la que se representa en la figura 11.2. Para hacernos una idea de lo sensible que ha sido la aplicacin a la accin de intrusismo calculamos el siguiente parmetro:

S=

nivel _ alarma 70.9428 100 = 100 = 27.71 % rango _ max imo 256

Este parmetro nos puede servir para comparar realizaciones del mismo proceso, nosotros tambin lo emplearemos para comparar sensibilidades entre los procesos que usan el algoritmo de igualdad y otros que usan el de similitud.

11.1.2.-Escenario de Simulacin 1. Deteccin por similitud.


Realizaremos ahora el proceso de vigilancia para el mismo escenario de la simulacin anterior con la diferencia de que ahora emplearemos el algoritmo de deteccin por similitud. A continuacin se muestra el archivo de configuracin para esta realizacin:
>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<<

Forma de deteccin usada:

Deteccin por SIMILITUD 0.993377

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

Zona de deteccin determinada mediante:

Coordenadas del segmento. 10

Tiempo de prepocesamiento empleado para calculo de estadsticos: segundos. Probabilidad de falsa alarma: 0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

Simulaciones

Pgina 108

Proyecto Fin de Carrera Veamos como el escenario y el segmento de deteccin son exactamente el mismo que para el experimento anterior, la nica diferencia es que esta pantalla se ha capturado cuando la aplicacin estaba calculando correlaciones para determinar estadsticos:

Fig. 11.4.

Pas atravesando el segmento de vigilancia y la instantnea capturada por la aplicacin fue:

Fig.11.5.

Simulaciones

Pgina 109

Proyecto Fin de Carrera A continuacin se muestra una grfica con los datos guardados por la aplicacin en este proceso de vigilancia, esta grfica es obtenida mediante la representacin del fichero de estadsticos en el que la aplicacin guarda las correlaciones entre los segmentos de vigilancia de fotogramas consecutivos:

Fig. 11.6. Para el caso de simulacin por similitud la sensibilidad la podemos definir como:

S=

1 0.973219 1 nivel _ alarma 100 = 100 = 2.678 % rango _ max imo 1

Vemos que en el caso de la deteccin por similitud es del orden de 10 tantos por cientos menos sensible que la deteccin por igualdad. No obstante esta diferencia en la sensibilidad est muy vinculada a la realizacin del experimento en si.

Simulaciones

Pgina 110

Proyecto Fin de Carrera

11.2.- Escenario de simulacin 2


En esta simulacin el escenario estar igualmente iluminado que en la prueba de simulacin anterior pero ahora el experimento se realizar aplicando los algoritmos de deteccin slo en segmentos rectangulares perpendiculares en la imagen; debido a que la captura para esta simulacin se realizar con un fotograma de 320x240, podemos definir como rectngulo o segmento de deteccin aquel cuyas coordenadas de sus ngulos opuestos son: Esquina superior izquierda (150,0) y esquina inferior derecha (160,239). Los resultados obtenidos se presentan en los siguientes apartados:

11.2.1.- Escenario de simulacin 2. Deteccin por igualdad.

Veamos a continuacin el resultado obtenido de aplicar al escenario anteriormente descrito el algoritmo de deteccin de movimiento por igualdad. Para este experimento el fichero de configuracin obtenido es el siguiente:

>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<<

Forma de deteccin usada:

Deteccin por IGUALDAD 2.732239

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

Zona de deteccin determinada mediante:

Coordenadas del segmento. 10

Tiempo de prepocesamiento empleado para calculo de estadsticos: segundos. Probabilidad de falsa alarma: 0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

En la descripcin que se ha dado anteriormente sobre el escenario de simulacin se dice que ahora el algoritmos de deteccin de movimiento se aplica solamente sobre un segmento rectangular de la imagen; a continuacin vemos este segmento iluminado sobre el escenario. En el cdigo se implement una funcin que realiza este aclarado Simulaciones Pgina 111

Proyecto Fin de Carrera sobre el segmento de vigilancia. Este aclarado no pudo ser apreciado en el escenario de simulacin 1 puesto que en este experimento el segmento era todo el escenario.

Fig. 11.7. De nuevo el experimento consista en atravesar el segmento de vigilancia y observar los datos captados por la aplicacin. Veamos la instantnea capturada en el momento de producirse la alarma:

Fig. 11.8. A continuacin se muestra una grfica con los datos guardados por la aplicacin en este proceso de vigilancia. Tambin se ha representado como en los casos anteriores el nivel del deteccin de alarma para dicho experimento:

Simulaciones

Pgina 112

Proyecto Fin de Carrera

Fig. 11.9.

Veamos ahora para este experimento cual es la sensibilidad obtenida, para ello realizamos el siguiente calculo teniendo en cuenta que el nivel mximo de las medias fue de 2.732239 para esta realizacin del experimento; este nivel mximo por supuesto coincidi con la accin de intrusismo en el escenario:

S=

154.1980 nivel _ alarma 100 = 100 = 60.23 % 256 rango _ max imo

En este caso la sensibilidad de la aplicacin frente al intrusismo ha sido del 60.23%, muy superior a la obtenida en caso de que el segmento de vigilancia sea todo el escenario. Es importante hacer notar que ahora el algoritmo de deteccin se aplica a un segmento rectangular vertical de 10x240 pxeles, cuyo nmero total de pxeles es muy inferior al de la pantalla completa.

11.2.2.- Escenario de simulacin 2. Deteccin por similitud.


Para el mismo escenario descrito anteriormente ahora aplicamos el algoritmo de deteccin por similitud. Veamos el archivo de configuracin guardado para esta realizacin del experimento:

Simulaciones

Pgina 113

Proyecto Fin de Carrera


>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<<

Forma de deteccin usada:

Deteccin por SIMILITUD 0.999398

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

Zona de deteccin determinada mediante:

Coordenadas del segmento. 10

Tiempo de prepocesamiento empleado para calculo de estadsticos: segundos. Probabilidad de falsa alarma: 0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

Para el segmento de deteccin se utiliz la definicin por coordenadas y se introdujo las mismas coordenadas que en el caso de deteccin por igualdad. El resultado de estas coordenadas fue el segmento de la siguiente figura que es exactamente el mismo que el de la figura 11.7.

Fig. 11.10.

Simulaciones

Pgina 114

Proyecto Fin de Carrera Veamos la instantnea captada en el momento de la intrusin:

Fig. 11.11.

La representacin grfica del fichero de correlaciones capturadas mediante el proceso de vigilancia tiene la siguiente forma:

Fig.11.12.

En la grfica se observa el pico de deteccin captado por la aplicacin en el momento de capturar el fotograma en el cual tiene lugar la accin de intrusismo. Simulaciones Pgina 115

Proyecto Fin de Carrera Tambin en la grfica de la figura 11.12 se ha representado, junto con los niveles de correlacin, el valor umbral a partir del cual la aplicacin hara saltar la alarma de intrusismo. Vemos que en ningn momento, excepto en el fotograma donde se detecta intrusin, el nivel de la correlacin supera al nivel umbral, eso es debido a que los niveles de ruido en ningn caso pueden superar el nivel de deteccin con una probabilidad que exceda a la probabilidad de falsa alarma, puesto que as ha sido diseado el calculo del nivel de deteccin. Calculemos para esta realizacin del experimento la sensibilidad obtenida; teniendo en cuenta que se ha aplicado el algoritmo de deteccin por similitud la definicin que se hizo de la sensibilidad fue:

S=

1 nivel _ alarma 1 0.933731 100 = 100 = 6.63 % rango _ max imo 1

Vemos que en este caso se ha aumentado considerablemente la sensibilidad con respecto al caso en que el segmento de deteccin lo constitua todo el escenario. Por tanto se observa un aumento de la sensibilidad conforme se reduce el nmero de pxeles del segmento de deteccin; notar que este incremento de la sensibilidad se ha obtenido tambin en el caso de la aplicacin del algoritmo de igualdad, luego es una caracterstica comn de ambos algoritmos de deteccin de movimiento el convertirse en ms sensibles conformes se disminuye el nmero de pxeles del segmento de deteccin.

Simulaciones

Pgina 116

Proyecto Fin de Carrera

11.3.- Escenario de simulacin 3

Para el tercer escenario de simulacin se toma una zona iluminada, al igual que en el caso de las pruebas anteriores y se aplica la deteccin a este escenario en un segmento rectangular horizontal a la imagen. Las configuracin de captura es la misma que para la simulacin 2 de modo que el fotograma tiene unas dimensiones de 320x240, de este modo vamos a tomar el segmento de deteccin horizontal como aquel cuyo dos ngulos opuestos son: Esquina superior izquierda (0,115) y esquina inferior derecha (319,125). Los resultados obtenidos se muestran a continuacin:

11.3.1.- Escenario de simulacin 3. Deteccin por igualdad.


Para este caso el fichero de configuracin obtenido fue el que a continuacin se muestra:

>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<<

Forma de deteccin usada:

Deteccin por IGUALDAD 2.82258

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

Zona de deteccin determinada mediante:

Coordenadas del segmento. 10

Tiempo de prepocesamiento empleado para calculo de estadsticos: segundos. Probabilidad de falsa alarma: 0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

Para este caso el segmento es rectangular horizontal, veamos como se comporta los algoritmos con este tipo de segmento de deteccin. En la siguiente imagen se observa el segmento horizontal de deteccin:

Simulaciones

Pgina 117

Proyecto Fin de Carrera

Fig.11.13

Veamos tambin la imagen captada por la aplicacin en el momento de detectar el intrusismo:

Fig.11.14.

Al igual que en las pruebas de simulacin anteriores representamos la grfica de los estadsticos captados por la aplicacin, y observamos el pico que esta representacin presenta en el fotograma donde tiene lugar la accin de intrusismo, para posteriormente utilizar este pico para el clculo de la sensibilidad obtenida por la aplicacin en esta realizacin del proceso de vigilancia.

Simulaciones

Pgina 118

Proyecto Fin de Carrera

Fig. 11.15. Calculemos la sensibilidad para esta realizacin del experimento:

S=

22.7426 nivel _ alarma 100 = 100 = 8.88 % 256 rango _ max imo

Se aprecia un notable decremento de la sensibilidad con respecto al caso de cuando el segmento ocupa todo el escenario y an ms respecto de la simulacin con segmento perpendicular.

11.3.2.- Escenario de simulacin 3. Deteccin por similitud.


Veamos cual ha sido en este caso el segmento de configuracin:
>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<< Forma de deteccin usada: Deteccin por SIMILITUD 0.999709

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

Zona de deteccin determinada mediante:

Coordenadas del segmento. 10

Tiempo de preprocesamiento empleado para calculo de estadsticos: segundos.

Simulaciones

Pgina 119

Proyecto Fin de Carrera

Probabilidad de falsa alarma:

0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

Tambin se muestra el escenario de la simulacin, vemos que coincide exactamente con el de la figura 11.13.

Fig. 11.15. La instantnea captada por la aplicacin fue:

Simulaciones

Pgina 120

Proyecto Fin de Carrera Fig. 11.16. Como en el resto de experimentos anteriores, veamos cual ha sido la grfica en el que se representa las correlaciones captadas por la aplicacin:

Fig. 11.17.

Vemos que la correlacin presenta un pico muy pronunciado en un segmento rectangular horizontal, veamos cual es la sensibilidad obtenida en este fotograma y comprobemos si efectivamente es ms sensible en este caso:

S=

1 nivel _ alarma 1 0.898793 100 = 100 = 10.12 % rango _ max imo 1

Efectivamente como se sospechaba viendo el efecto de la intrusin en la grfica ha resultado que se ha aumentado la sensibilidad para el caso del segmento rectangular en comparacin con el caso en que el segmento sea todo el escenario o el segmento sea un rectngulo vertical. Vemos que ha resultado un efecto opuesto al observado en el caso de aplicar el algoritmo de igualdad: En el caso de igualdad observamos un decremento considerable de la sensibilidad y en el caso de similitud se observa un incremento considerable.

Simulaciones

Pgina 121

Proyecto Fin de Carrera

11.4.- Escenario de simulacin 4

Este escenario de simulacin consistir en una zona iluminada donde tendremos un objeto oscuro sobre fondo claro y aplicaremos los algoritmos de vigilancia en un segmento reducido en tamao comparado con el escenario completo. Se tendr la misma configuracin del sistema que en los experimentos anteriores como se ver en los ficheros de configuracin de la aplicacin, salvo en la particularidad que el segmento de deteccin donde aplicaremos los algoritmos de deteccin ser determinado por el ratn. Veamos el comportamiento de ambos algoritmos:

11.4.1. Escenario de simulacin 4. Deteccin por igualdad.

Como en los casos anteriores veamos el fichero de configuracin, veremos la variante de que ahora el segmento de deteccin fue definido con el ratn:
>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<<

Forma de deteccin usada:

Deteccin por IGUALDAD 3.602862

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

Zona de deteccin determinada mediante:

Puntero del ratn. 10

Tiempo de prepocesamiento empleado para calculo de estadsticos: segundos. Probabilidad de falsa alarma: 0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

Veamos como hemos hechos en otros ejercicios de simulacin el escenario en el que se ha realizado la prueba; como ya se ha dicho se trata de una prueba de simulacin

Simulaciones

Pgina 122

Proyecto Fin de Carrera con un segmento de reducidas dimensiones que englobar aun objeto oscuro sobre fondo blanco:

Fig. 11.18.

La aplicacin realiz la captura en el fotograma en el que detect la accin de intrusismo y, el resultado de esta instantnea es el que se muestra a continuacin:

Fig. 11.19. Como vemos en la fotografa la aplicacin detect intrusismo en el momento en que atraves con mi mano el segmento de deteccin sin que sin que an realizase ningn

Simulaciones

Pgina 123

Proyecto Fin de Carrera movimiento del objeto; veamos en la siguiente grfica en que nivel se ha traducido esta accin de intrusismo:

Fig. 11.20. Si realizamos el calculo de la sensibilidad:

S=

39.8750 nivel _ alarma 100 = 100 = 15.58 % 256 rango _ max imo

11.4.2. Escenario de simulacin 4. Deteccin por similitud


Para el mismo escenario anterior observemos como se comporta con respecto el algoritmo de similitud. El fichero de configuracin fue el siguiente:
>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<<

Forma de deteccin usada:

Deteccin por SIMILITUD 0.998424

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

Zona de deteccin determinada mediante:

Puntero del ratn. 10

Tiempo de prepocesamiento empleado para calculo de estadsticos: segundos.

Simulaciones

Pgina 124

Proyecto Fin de Carrera

Probabilidad de falsa alarma:

0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

El escenario de deteccin coincide con el de la misma prueba para igualdad:

Fig. 11.21. Y la instantnea captada en el momento de darse la alarma fue:

Fig.11.21.

Simulaciones

Pgina 125

Proyecto Fin de Carrera

Para esta realizacin el grfico de correlaciones obtenidos fue el que se muestra a continuacin junto con el nivel de disparo:

Fig. 11.22. Si calculamos la sensibilidad teniendo en cuenta que en este caso estamos procesando correlaciones:

S=

1 nivel _ alarma 1 0.9660938 100 = 100 = 3.39 % rango _ max imo 1

Vemos que en este cuarto experimento cuando hemos usado un segmento de deteccin reducido la sensibilidad de la deteccin por igualdad ha disminuido considerablemente con respecto al caso del segmento que inclua todo el escenario y sin embargo en el caso de similitud hemos notado una mejora.

Simulaciones

Pgina 126

Proyecto Fin de Carrera

11.5.- Escenario de simulacin 5

Ser un escenario complicado para la aplicacin segn se han diseado los algoritmos de deteccin. La prueba consistir en la deteccin de movimiento de un objeto oscuro en un entorno oscuro de modo que no exista mucho contraste entre el objeto y el resto del escenario; hechos dicho que su deteccin es complicada pues los algoritmos que se han implementado detectan el movimiento a partir de los cambios de los estados de los pxeles, y un escenario de esta caracterstica no existe mucho cambio cuando el objeto se mueve pues el fondo tiene unos estados de los pxeles muy parecidos al del objeto en s. Se probar en este escenario tanto el algoritmo de igualdad como el de similitud:

11.5.1. Escenario de simulacin 5. Deteccin por igualdad.

Veamos cual es el fichero de configuracin captado por la aplicacin para este proceso de vigilancia:
>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<<

Forma de deteccin usada:

Deteccin por IGUALDAD 2.634582

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

Zona de deteccin determinada mediante:

Puntero del ratn. 10

Tiempo de prepocesamiento empleado para calculo de estadsticos: segundos. Probabilidad de falsa alarma: 0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

Simulaciones

Pgina 127

Proyecto Fin de Carrera El escenario donde se aplicar la vigilancia se muestra en la figura siguiente donde podemos observar que el escenario y el objeto son oscuros, y que hay dificultad incluso para el ojo humano para distinguir el objeto del fondo:

Fig. 11.23.

Tambin apreciamos dificultad para la aplicacin a la hora de captar la instantnea del intruso en el momento en el que se supera el nivel de la alarma; esto se puede apreciar en la siguiente fotografa captada por la aplicacin:

Fig. 11.24.

Simulaciones

Pgina 128

Proyecto Fin de Carrera Como se ve en la fotografa el nivel de los pxeles que constituyen el objeto as como el fondo o el intruso son muy parecido por lo cual plantea dificultades a la aplicacin al no existir mucha variacin del segmento sin movimiento de cuando si tiene movimiento; esto descrito en este prrafo se entender mejor observando la siguiente grfica donde el pico provocado por el intrusismo es muy pequeo:

Fig. 11.25. Para esta realizacin la sensibilidad obtenida ha sido:

7.70701 nivel _ alarma 100 = 100 = 3.01 % rango _ max imo 256 Se obtiene una sensibilidad muy baja como era de esperar dadas las caractersticas del escenario de simulacin. S=

11.5.1. Escenario de simulacin 5. Deteccin por similitud.


Realizaremos la prueba de deteccin en el mismo escenario ahora usando el algoritmo de deteccin por similitud; el fichero de configuracin de la prueba es:
>>>> **************************************** <<<< >>>> ARCHIVO DONDE SE GUARDA LA CONFIGURACIN <<<< >>>> **************************************** <<<<

Forma de deteccin usada:

Deteccin por SIMILITUD

Simulaciones

Pgina 129

Proyecto Fin de Carrera

El nivel de deteccin para esta realizacin: Resolucin: 320x240 pxeles

0.997084

Zona de deteccin determinada mediante:

Puntero del ratn. 10

Tiempo de prepocesamiento empleado para calculo de estadsticos: segundos. Probabilidad de falsa alarma: 0.000001

DRIVER: Microsoft WDM Image Capture (Win32),Version:5.0.2195.2672 Autor: JUAN DIEGO MURES TRUJILLO.

*************************************** *** FIN DE ARCHIVO DE CONFIGURACIN *** ***************************************

El escenario y el segmento de deteccin fueron similares al de la figura 11.23.:

Fig. 11.26.

Y la instantnea captada fue:

Simulaciones

Pgina 130

Proyecto Fin de Carrera

Fig. 11.27. Veamos la grfica de la correlacin captada por la aplicacin:

Fig. 11.28. Veamos ahora la sensibilidad para el caso de la correlacin:

S=

1 nivel _ alarma 1 0.991895 100 = 100 = 0.82% rango _ max imo 1

De modo que tambin para la similitud hay una disminucin muy considerable de la sensibilidad de la aplicacin. De modo que tambin en este caso la vigilancia se ve muy diezmada debido al nivel de oscuridad de la imagen.

Simulaciones

Pgina 131

Proyecto Fin de Carrera

11.6.- Conclusiones de las simulaciones.

Las conclusiones que podemos sacar de las pruebas anteriormente realizadas se infieren directamente del parmetro sensibilidad definido a tal efecto y que nos va a permitir obtener una idea de la robustez del sistema antes acciones de intrusismo. La primera conclusin directa que se obtiene de la observacin directa del parmetro S es que la vigilancia mediante el algoritmo de deteccin por igualdad es bastante ms sensible a acciones de intrusismo que la vigilancia mediante el algoritmo de deteccin por similitud cuando consideramos segmentos de un gran nmero de pxeles. Por lo general es siempre mas sensible el algoritmo de igualdad que el algoritmo de similitud; slo he obtenido el caso contrario ( sensibilidad mayor en similitud que en igualdad ) cuando se procesaba un segmento horizontal a la escena; en este caso en todos los experimentos realizados se obtena un sistema ms sensible con igualdad que con similitud. Tambin se observa en estas pruebas que ambos mtodos aumentan su sensibilidad con los segmentos verticales pero sin embargo con los segmentos horizontales solo aumenta la sensibilidad en el caso de similitud; para el caso de igualdad, lejos de aumentar disminuye de forma considerable comparado con el caso del segmento coincidente con toda la escena. De forma general se puede afirmar que el parmetro S, pese a ser inferior en el caso de similitud frente al caso de igualdad, es mucho ms robusto para la similitud frente a variaciones del segmento; es decir el valor de S para vigilancia con deteccin por similitud permanece en un rango ms reducido cuando se varia el segmento que en caso de igualdad. Ambos mtodos de deteccin pierden bastante sensibilidad en escenarios oscuros donde los movimientos en el segmento vigilado no implican una variacin considerable en el estado de los pxeles; esto se traduce en que las detecciones provocan picos no muy elevados en los estadsticos captados y por tanto disminucin de la sensibilidad. Podemos tambin concluir de las pruebas que los algoritmos de deteccin funcionan de forma correcta en cuando que cumplen su misin de deteccin en todos los escenarios probados; adems segn se observ durante la realizacin de las pruebas tambin el dimensionamiento de los niveles de deteccin ha sido adecuado puesto que no obtenemos falsas alarmas durante el desarrollo de las simulaciones. Dada la caracterstica de los experimentos, hemos de tener en cuenta que estas conclusiones sacadas de los mismos estn muy sujetas al experimento en s y que es imposible la realizacin de simulaciones idnticas para la comparacin de los distintos algoritmos frente a procesos de deteccin idnticos.

Simulaciones

Pgina 132

Proyecto Fin de Carrera

12.-MULTICMARA

El resultado obtenido con la realizacin de este proyecto ha sido un sistema de vigilancia basado en una cmara digital conectada a un PC por el puerto USB. Como ya se ha mencionado en diferentes apartados de esta memoria los resultados obtenidos son realmente satisfactorios : La aplicacin de vigilancia no supone una carga considerable para un sistema procesador como el que se est empleando en este proyecto para ninguno de los algoritmos que se estn usando para la deteccin. En esta lnea de trabajo, el siguiente paso que se nos puede ocurrir es aumentar el nmero de cmaras del sistema de vigilancia y que esta siga siendo soportado sobre el mismo PC; es decir sin aumentar la capacidad de procesamiento del sistema sobrecargarlo aumentando el nmero de fuentes de datos ( cmaras conectadas a los distintos puertos USB del PC y que son las encargadas de captar las imgenes monitorizadas por el sistema microprocesador ) Aunque el funcionamiento con mltiples cmaras no era uno de los objetivos que se fijaron al comienzo de este proyecto, se han realizado pruebas conectando varias cmaras USB al PC y realizando el procesamiento de sus imgenes de forma concurrente, los resultados obtenidos han sido satisfactorios.

Cam 2 Cam 1 Cam 3

Driver 2 Driver 1 Driver 3

PC

Figura 12.1

Como ya se dicho antes la aplicacin y por lo tanto la interfaz del usuario no ha sido diseada para un funcionamiento con mltiple fuente de datos, es decir no se ha programado la interfaz con varios objetos VideoOCX. Esta ampliacin del proyecto es

Multicmara

Pgina 133

Proyecto Fin de Carrera sumamente sencilla con slo embeber estos objetos en la interfaz de la aplicacin y hacer lanzar un hilo por cada fuente de datos a procesar. Las pruebas que se han realizado con varias cmaras han sido abriendo una nueva ejecucin de la aplicacin por cada una de las cmaras que se han conectado al sistema y en cada unas de estas versiones de la aplicacin se visualiza la imagen de una de las cmaras . La nica limitacin que se ha encontrado al uso concurrente de varias cmaras es que estas no puede compartir driver ya que este supone un recurso exclusivo de la aplicacin que se est ejecutando; de este modo cuando estamos ejecutando la aplicacin con varias cmaras ha de estar trabajando un driver por cada una de las cmaras de forma exclusiva. La carga a la que es sometida el sistema no es excesiva pues la capacidad de computo del micro no es el cuello de botella del sistema sino que este est en la velocidad de captura que tienen las cmaras, por tanto el sistema funciona de forma satisfactoria al conectarse con varias cmaras.

Multicmara

Pgina 134

Proyecto Fin de Carrera

13.-CONCLUSIONES

El objetivo de este proyecto fin de carrera ha sido conseguir un sistema de videovigilancia mediante la realizacin de un software que permita realizar esta funcin de forma eficiente y fcil para aquella persona encargada de monitorizarlo. El resultado obtenido, a vista de las pruebas, no poda ser mas alentador pues se han conseguido obtener todos aquellos objetivos que se esbozaron al comienzo de la realizacin del proyecto y que han ido tomando forma a medida que se iba analizando y entendiendo el problema a resolver. El sistema funciona de la forma prevista realizando en todo momento la deteccin en aquellos escenarios en los que se ha probado y respetando los requisitos de falsas alarmas impuestos en su diseo; por tanto se ha obtenido una aplicacin que podra ser considerado el corazn de un software comercial eficiente dedicado a la deteccin de movimiento para fines tanto de vigilancia como cualquier otro que lleve implcito la deteccin de movimiento en una imagen. No hay que olvidar que el anlisis realizado en este proyecto se ha orientado a la vigilancia pero que los resultados obtenidos son igualmente validos en todos aquellos campos de aplicacin que lleven implcito el anlisis de imgenes digitales. Llegados a este punto cabra preguntarse cuales son los logros conseguidos con la realizacin de este proyecto. La respuesta a esta pregunta es que se ha obtenidos un sistema de vigilancia basado en el anlisis de fotogramas digitales en tiempo real; una primera versin de este proyecto persegua la realizacin de un sistema de vigilancia basado en el anlisis de fotogramas pero no consigui realizar esta labor sin hacer uso del disco del sistema para depositar los datos temporales previamente a ser analizados. Con esta versin se ha conseguido la finalidad buscada sin tener que acceder a disco para depositar los datos a espera de ser analizados, esto se consigui almacenando los fotogramas en contenedores de memoria RAM del sistema lo que evitaba los elevados tiempos de acceso al disco para escribir y leer los datos. Tambin es interesante mencionar al respecto que el uso del lenguaje de programacin C++ ha hecho posible el poder acceder a memoria de forma ms rpida y eficiente que lo hubiese hecho otro lenguaje de programacin. Otro logro importante conseguido y que me gustara hacer hincapi en l ha sido la presentacin de la aplicacin mediante una consola de uso y configuracin. Considero tambin que esta es un punto importante del proyecto y que no debe pasar desapercibida puesto que he dedicado especial atencin a su software para que en ningn momento pueda dejar al sistema en un punto inestable, y para ellos he dedicado muchas horas al anlisis del hilo principal de la aplicacin. No debemos olvidar que la interfaz con el usuario es de vital importancia para un buen programa pues es en definitiva el usuario el que evala la aplicacin y esta evaluacin suele ser en gran medida mediante el manejo de la interfaz de la misma: De nada sirve tener un software de anlisis eficiente si no somos capaces de configurarlo o que debido a un orden errneo en la configuracin nos cuelge el sistema.

Conclusiones

Pgina 135

Proyecto Fin de Carrera Otro logro conseguido con la realizacin de este proyecto ha sido a nivel personal, pues me ha permitido enfrentarme y resolver un problema que en principio me desbordaba. Considero la conclusin con xito de este proyecto un reto personal superado pues confieso que el tratamiento de imgenes usando la plataforma de programacin de Visual C++, con la experiencia de programacin que me avalaba en su comienzo, era un objetivo francamente difcil. A da de hoy me considero capacitado de resolver un problema mediante la programacin con lenguajes avanzados, cosa que me ha permitido la realizacin de este proyecto. Por lo mencionado en el prrafo anterior animo, pero siempre advirtiendo de la dificultad que ello conlleva, a quien est interesado en el tratamiento de imagen y sistema de deteccin mediante software siga esta lnea de trabajo que considero nicamente en sus inicios en este proyecto. Pese a su dificultad considero una experiencia grata la realizacin del proyecto y pongo mis conocimientos a disposicin de quin este interesado en realizar una ampliacin del mismo. Puede contactar conmigo mediante la direccin de correo jdmures@yahoo.es o aadirme al messenger si quiere dialogar, jdmures@hotmail.com; ser un placer para mi poder aclarar cualquier duda que tenga dentro de mis conocimientos sobre el tema.

Conclusiones

Pgina 136

Das könnte Ihnen auch gefallen