APLICACIÓN DEL FILTRO DE PARTÍCULAS AL SEGUIMIENTO...
Transcript of APLICACIÓN DEL FILTRO DE PARTÍCULAS AL SEGUIMIENTO...
INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS
Curso Académico 2002 / 2003
Proyecto de Fin de Carrera
APLICACIÓN DEL FILTRO DE PARTÍCULAS AL SEGUIMIENTO DE OBJETOS EN SECUENCIAS
DE IMÁGENES.
Autor: Eva Burgueño Raigal.
Tutores: Juan José Pantrigo Fernández.
Antonio Sanz Montemayor.
A mi familia, en especial a mi abuelo.
Agradecimientos.
Quiero dar las gracias de manera especial a Antonio Sanz Montemayor y a Juanjo
Pantrigo Fernández por haberme facilitado sus conocimientos sobre Visión Artificial y
por su gran ayuda y colaboración durante todo el proyecto.
A José María Cavero del grupo Kybele por prestarnos su equipo.
A Patricia y Alberto por todas esas tardes juntos.
A José Luis por dejarnos a “Mirinda”, la cámara web, que nos ha permitido
implementar el tiempo real.
A Juan por toda su ayuda y apoyo.
Y por último a mi familia por su cariño en todo momento.
Índice General Resumen......................................................................................................................................... 1 Capítulo 1. Introducción.............................................................................................................. 2
1.1 Conceptos de Estadística y Probabilidad ....................................................................... 4 1.2 Métodos Monte Carlo ....................................................................................................... 6 1.3 El Filtro de Partículas........................................................................................................ 7 1.4 Diferencias entre el Filtro de Kalman y el Filtro de Partículas ................................. 12 1.5 Herramientas .................................................................................................................... 13 1.5.1 Lenguaje de programación Matlab ........................................................................ 13 1.5.2 Visual C++................................................................................................................ 14 1.5.3 TRIPOD.................................................................................................................... 14 1.5.4 Logitech QuickCam SDK....................................................................................... 15
Capítulo 2. Objetivos ................................................................................................................. 16 Capítulo 3. Descripción Informática........................................................................................ 18
3.1 Especificación de Requisitos.......................................................................................... 18 3.1.1 Requisitos Funcionales ........................................................................................... 18 3.1.2 Requisitos no Funcionales ..................................................................................... 20 3.1.3 Requisitos de Desarrollo ........................................................................................ 21 3.1.4 Diagrama de Gantt.................................................................................................. 22
3.2 Diseño e Implementación............................................................................................... 23 3.2.1 Filtro de Partículas Básico en entorno Matlab.................................................... 23
3.2.2.1 Diagrama de Bloques del Filtro de Partículas Básico ............................. 25 3.2.2 Filtro de Partículas en entorno Matlab para análisis de imágenes reales......... 26 3.2.2.1 Segmentación basada en umbralizado ...................................................... 26 3.2.2.2 Sustracción de Fondo.................................................................................. 27 3.2.2.3 Descripción Funcional ................................................................................ 28 3.2.3 Diagrama de Bloques del Filtro de Partículas para imágenes reales ................ 30 3.2.4 Filtro de Partículas en Tiempo Real ..................................................................... 31
Capítulo 4. Pruebas..................................................................................................................... 32
4.1 Pruebas realizadas con el Filtro de Partículas Básico ................................................. 32 4.2 Pruebas realizadas con la técnica de Segmentación basada en Umbralizado.......... 38 4.3 Pruebas realizadas con la técnica de Sustracción de Fondo ...................................... 45 4.4 Pruebas realizadas en Tiempo Real ............................................................................... 51
Capítulo 5. Conclusiones ........................................................................................................... 54
5.1 Conclusiones finales ........................................................................................................ 54 Glosario........................................................................................................................................ 56 Bibliografía................................................................................................................................... 60
Índice de Figuras
Figura 1. Diagrama de bloques de las etapas de un sistema de Visión Artificial ................. 3 Figura 2. Representación del muestreo y los pesos al aplicar el Filtro................................. 8 Figura 3. Funcionamiento del Filtro de Partículas ................................................................... 9 Figura 4. Evolución de la densidad de probabilidad y de su modelado.............................. 11 Figura 5. Interfaz que proporciona TRIPOD ........................................................................ 15 Figura 6. Modelo del ciclo de vida en espiral.......................................................................... 21 Figura 7. Diagrama de Gantt..................................................................................................... 22 Figura 8. Ejemplo de una ruleta creada mediante el Filtro de Partículas............................ 24 Figura 9. Diagrama del núcleo del Filtro de Partículas.......................................................... 31
Índice de Imágenes
Imagen 1. Resultado de la prueba con 1 pelota ..................................................................... 38Imagen 2. Resultado de la prueba con 1 pelota ..................................................................... 39 Imagen 3. Resultado de la prueba con 2 pelotas ................................................................... 40 Imagen 4. Resultado de la prueba con 2 pelotas .................................................................... 41 Imagen 5. Resultado de la prueba con 3 pelotas ................................................................... 42 Imagen 6. Resultado de la prueba con 1 persona ................................................................. 43 Imagen 7. Resultado de la prueba con 1 pelota ..................................................................... 44 Imagen 8. Resultado de la prueba con 1 persona................................................................... 45 Imagen 9. Resultado de la prueba con 1 persona................................................................... 46 Imagen 10. Resultado de la prueba con 2 personas............................................................... 47 Imagen 11. Resultado de la prueba con 2 personas............................................................... 48 Imagen 12. Resultado de la prueba con 1 ratón de ordenador ............................................ 49 Imagen 13. Resultado de la prueba con 1 pelota.................................................................... 50 Imagen 14. Resultado de la prueba con 1 persona ................................................................ 51 Imagen 15. Resultado de la prueba con 2 personas............................................................... 52 Imagen 16. Resultado de la prueba con 1 ratón de ordenador ............................................ 53
1
RESUMEN
La Visión Artificial es una disciplina que tiene como finalidad, la extracción
automática de información del mundo físico a partir de imágenes.
Una aplicación de la Visión Artificial es el seguimiento de objetos en secuencias de
imágenes. Y se puede estudiar mediante varios métodos como pueden ser: el Filtro de
Kalman o el Filtro de Partículas entre otros.
El Filtro de Kalman define un conjunto de ecuaciones matemáticas que proveen una
solución recursiva computacionalmente eficiente del método de mínimos cuadrados.
El Filtro de Partículas es un método secuencial de Monte Carlo aplicable a cualquier
transición de estados o modelo de medida.
El objetivo fundamental de este proyecto consiste en implementar el Filtro de
Partículas aplicado al seguimiento de objetos en secuencias de imágenes 2D.
Tras los resultados obtenidos con uno y varios móviles, oclusión, movimientos no
plano paralelos, etc, se comprueba que el rendimiento del filtro es excelente.
Además de estudiar bajo diferentes condiciones experimentales el Filtro de Partículas
aplicado al seguimiento de objetos, y a pesar de que no era un objetivo fundamental del
proyecto, se ha conseguido implementar una aplicación del Filtro de Partículas mediante
técnicas de Visión Artificial que es capaz de seguir uno o varios móviles en secuencias de
imágenes en tiempo real.
Los resultados en tiempo real tienen un especial interés, ya que se producen en
aplicaciones reales y tienen una mayor funcionalidad.
2
Capítulo 1
Introducción
La Visión Artificial es una disciplina que tiene como finalidad, la extracción de
información del mundo físico a partir de imágenes, utilizando para ello un computador.
Se trata de un objetivo ambicioso y complejo que actualmente se encuentra en una etapa
primitiva [12].
Un sistema de Visión Artificial actúa sobre una representación de una realidad que le
proporciona información sobre brillo, colores, formas, etcétera. Estas representaciones
suelen estar en forma de imágenes estáticas, escenas tridimensionales o imágenes en
movimiento [12].
La Visión Artificial también llamada Visión Computacional, en un intento de
reproducir el comportamiento del ser humano, define tradicionalmente cuatro fases
principales:
- La primera fase, que es puramente sensorial, consiste en la Captura o
Adquisición de las imágenes digitales mediante algún tipo de sensor.
- La segunda etapa consiste en el tratamiento digital de las imágenes, con
objeto de facilitar las etapas posteriores. En esta etapa de Preprocesamiento es
donde, mediante filtros y transformaciones geométricas, se eliminan partes
indeseables de la imagen o se realzan partes interesantes de la misma.
- La siguiente fase se conoce como Segmentación, y consiste en aislar los
elementos que interesan de una escena para comprenderla.
- Por último se llega a la etapa de Reconocimiento o Clasificación. En ella se
pretende distinguir los objetos segmentados, gracias al análisis de ciertas
características que se establecen previamente para diferenciarlos.
3
Estas cuatro fases no se siguen siempre de manera secuencial, sino que en ocasiones
deben realimentarse hacía atrás. Así, es normal volver a la etapa de segmentación si falla
la etapa de reconocimiento, o la de preproceso, o incluso a la de captura, cuando falla
alguna de las siguientes [12].
Figura 1. Diagrama de bloques de las etapas típicas en un sistema de Visión Artificial adaptado
de [12].
El Filtro de Partículas fue introducido originalmente en el área de la Visión
Computacional como el algoritmo Condensation (“CONditional DENSity
propagATION”) [1], lo presentaron Michael Isard y Andrew Blake para seguir
contornos y lo llamaron ICONDENSATION [2]. J.MacCormick y A. Blake lo han
ampliado desde entonces [3].
El Algoritmo del Filtro de partículas proporciona una forma simple y efectiva de
modelar procesos estocásticos con funciones de densidad de probabilidad arbitrarias (no
necesariamente normales o gausianas) por aproximación numérica de éstas. Las
partículas son estados posibles del proceso que se pueden representar como puntos en el
espacio de estados de dicho proceso.
Captura Preprocesamiento Segmentación Reconocimiento
4
1.1 Conceptos de Estadística y Probabilidad.
La Estadística se ocupa de los métodos y procedimientos para recoger, clasificar,
resumir, hallar regularidades y analizar los datos, siempre y cuando la variabilidad e
incertidumbre sea una causa intrínseca de los mismos; así como de realizar inferencias a
partir de ellos, con la finalidad de ayudar a la toma de decisiones y en su caso formular
predicciones. La Estadística puede ser descriptiva si describe, analiza y representa un
grupo de datos utilizando métodos numéricos y gráficos que resuman y presenten la
información contenida en ellos o inferencial cuando se apoya en el cálculo de
probabilidades y a partir de datos muestrales, efectúa estimaciones, decisiones,
predicciones u otras generalizaciones sobre un conjunto mayor de datos.
La Teoría de la Probabilidad constituye la base o fundamento de la Estadística. Así
pues, es corriente hablar de la probabilidad de un suceso, entendiendo como tal un
número real normalizado a 1, de forma que si éste es cercano a 0 (a l), el suceso tiene
poca (mucha) probabilidad de ocurrir o haber ocurrido.
Probabilidad condicionada
En el cálculo de las probabilidades de algunos sucesos, el valor de dicha probabilidad
variará en función del conocimiento de determinadas informaciones relativas a estos
sucesos. Mediante un espacio probabilístico damos una formulación matemática a un
fenómeno aleatorio que observamos. Parece razonable que si observamos algo que
aporta información a nuestro fenómeno aleatorio, éste deba alterar el espacio
probabilístico de partida. Supóngase que los sucesos 1Α , …, ΚΑ constituyen una
partición del espacio S tal que ( ) 1=ΑΡ∑j
i para Κ= ,...,1j y sea B cualquier suceso
tal que ( ) 0>BP . Entonces, para Κ= ,...,1i ,
( ) ( ) )(( ) )(∑Κ
=
=1
||
|i ii
iii
ABPAPABPAPBAP ( ) ( )
( )BPBAPBAP i
i =|
Teorema de Bayes. Probabilidad condicionada.
5
El teorema de Bayes proporciona una regla sencilla para calcular la probabilidad
condicional de cada suceso Ai dado B a partir de las probabilidades condicionales de B
dado cada uno de los sucesos Ai y la probabilidad incondicional de cada Ai [13].
Unas funciones muy útiles para el cálculo de probabilidades de una variable aleatoria
son la función de densidad de probabilidad para variables aleatorias continuas y la
función distribución de probabilidad para variables aleatorias continuas y discretas. A
la función distribución de probabilidad también se le llama función de probabilidad
acumulada y la forma de cálculo es equivalente para las variables discretas y continuas.
♦ Caso discreto: ( ) ( ) ( )∑ ≤==≤=
xyyXPxXPxFx
♦ Caso Continuo: ( ) ( ) ( )dxxfxXPxFxx
∫∞−
=≤=
De hecho, cualquier colección de números positivos cuya suma sea finita puede dar
lugar a una función de probabilidad y por tanto a una variable discreta. Por su parte
cualquier función positiva cuyo área bajo la curva que representa sea, también finita,
puede dar lugar a una función de densidad de probabilidad y por tanto a una variable
continua.
6
1.2 Métodos Monte Carlo
El método fue llamado así en referencia al Principado de Mónaco por ser “la capital
del juego de azar”, al tomar una ruleta como un generador simple de números aleatorios.
El nombre y el desarrollo sistemático de los métodos de Monte Carlo datan
aproximadamente de 1944 y fueron favorecidos por el desarrollo de la computadora
electrónica.
El uso real de los métodos de Monte Carlo como una herramienta de investigación,
viene del trabajo de la bomba atómica durante la Segunda Guerra Mundial. Este trabajo
involucraba la simulación directa de problemas probabilísticos de hidrodinámica
concernientes a la difusión aleatoria de neutrones en material de fusión.
Aún en la primera etapa de estas investigaciones, John von Neumann y Stanislao
Ulam refinaron esta curiosa “Ruleta rusa” y los métodos “de división”. Sin embargo, el
desarrollo sistemático de estas ideas tuvo que esperar el trabajo de Harris y Herman
Kahn en 1948. Aproximadamente en el mismo año, Fermi, Metropolis y Ulam
obtuvieron estimadores para los valores característicos de la ecuación de Schrödinger
para la captura de neutrones a nivel nuclear.
El Método de Monte Carlo da solución a una gran variedad de problemas
matemáticos posibilitando la realización de experimentos con muestreos estadísticos en
una computadora. El método es aplicable a cualquier tipo de problema, ya sea
estocástico o determinístico. A diferencia de los métodos numéricos que se basan en
evaluaciones en N puntos en un espacio M-dimensional para producir una solución
aproximada, el método de Monte Carlo tiene un error absoluto en la estimación que
decrece en N1 en virtud del Teorema Central de Límite.
En la práctica, las pruebas aleatorias se sustituyen por resultados de ciertos cálculos
realizados con números aleatorios.
7
1.3 El Filtro de Partículas.
El Filtro de Partículas es un método secuencial de Monte Carlo aplicable a cualquier
transición de estados o modelo de medida, y en la Visión Artificial se utiliza para el
seguimiento de objetos en secuencias de imágenes.
Lo propusieron N. Gordon, D. Salmond y A. Smith en 1993 [5], como Filtro Bootstrap
para implementar Filtros Bayesianos recursivos. La densidad requerida del vector de estados
era representada como un conjunto de muestras aleatorias, las cuales se actualizan y
propagan por el algoritmo. El filtro de partículas supone una nueva manera de representar y
generar recursivamente una aproximación del estado de la Función de Densidad de
Probabilidad (FDP). La idea central es representar la FDP requerida como un conjunto
de muestras aleatorias, más que como una función sobre el espacio de estados. La
aproximación Bayesiana se utiliza para construir la FDP, que define el estado del objeto
en el instante actual.
El Filtro de Partículas representa la densidad a posteriori mediante una distribución de
partículas (muestras) en el espacio de estados. Las partículas son estados posibles del
proceso, que se pueden representar como puntos en el espacio de estados de dicho
proceso. Este enfoque se ha desarrollado de forma independiente en los últimos años en
campos como la estadística, la economía o la visión artificial (Kitagawa 1987 [6]; West
1992 [7]; Gordon, Salmond, y Smith 1993 [5]; Isard y Blake 1996 [8]; Kitagawa 1996 [9];
Carpenter, Clifford, y Fernhead 1997 [10]; Pitt y Shephard 1999 [11]). Los nombres con
los que se le ha denominado son: Método Secuencial de Monte Carlo (Sequential Monte-
Carlo Methods), Algoritmo Condensation (CONDENSATION Algorithm), Filtro
Bootstrap (Bootstrap Filter), Filtro de la Supervivencia del Más Apto, aunque últimamente
se está utilizando el término Filtro de Partículas (Particle Filtres) para todos ellos. Todos
estos algoritmos son propuestas similares que propagan las partículas (muestras de la
función de densidad a posteriori), utilizando el modelo de movimiento ( )ttt axxp ,| 1− y el
modelo de verosimilitud ( )tt xzp | , de forma que el peso combinado de las partículas de una
región aproxima la integral de la función de densidad a posteriori en esa región.
En concreto, el Filtro de Partículas representa la densidad a posteriori mediante un
conjunto discreto de N partículas )( Nmm ,...,1 y sus probabilidades asociadas
)( Nππ ,...,1 .
8
Inicialmente, el conjunto de partículas se escoge a partir de la distribución a priori
( )0xp . Si no existe información a priori, entonces las partículas se distribuyen
uniformemente por el espacio de estados. Posteriormente, en cada instante de tiempo t,
se actualizan las N partículas en función de la acción anterior at-1 y la observación actual
zt. Para ello, se aplica el modelo de movimiento ( )11 ,| −− ttt axxp a cada una de las N
partículas, generando un nuevo conjunto de partículas. Las partículas nuevas representan
la predicción de la variable de estado, sin considerar la observación, se obtiene el peso iπ asociado a cada partícula.
El conjunto de pesos de cada partícula es proporcional a la probabilidad de su estado
y a la suma normalizada de sus pesos. La densidad de los pesos es igual al producto de la
densidad previa (del muestreo) y la probabilidad (de los pesos).
En la Figura 2 se representa un muestreo discreto de una función de densidad de
probabilidad continua mediante partículas, cuyo tamaño hace referencia al peso asignado
a las mismas.
Figura 2. Representa el muestreo y los pesos obtenidos al aplicar el Filtro.
En un último paso, se remuestrea el conjunto de partículas, extrayendo (con
reemplazo) N partículas del conjunto actual, proporcional al peso de cada una. En este
nuevo conjunto tendrán más probabilidad de desaparecer aquellas partículas para las que
no hay evidencia de verosimilitud o, lo que es lo mismo, que tenga menor peso. Una vez
construido el nuevo conjunto de partículas, según la probabilidad de éstas se asocia un
peso a cada una. Este nuevo conjunto de partículas constituye una representación
muestral de la probabilidad a posteriori.
Probabilidad
xEstado
Densidad a posteriori
Pesos asociados a la densidad
9
En la Figura 3, se representa gráficamente la evolución de las partículas en cada fase,
suponiendo que las partículas están estimando un único parámetro, distribuido en el eje
horizontal. El área de los círculos representa el peso de cada partícula.
Figura 3. Funcionamiento del Filtro de Partículas.
Los elementos que se consideran en el método del Filtro de Partículas son:
- Los vectores de medidas Ζ , en este caso, serán provenientes de las imágenes. Las
medidas dependen del estado del objeto, y el estado del objeto se deriva
estadísticamente de las medidas.
- El Modelo de Movimiento F , se utiliza para predecir la posición del objeto en el
instante actual, a partir de la densidad de probabilidad del instante anterior
( )( )tt xFx =+1 .
- El Modelo de Verosimilitud ( )tt xP |Ζ , la estimación de la función de
probabilidad condicional a posteriori ( )tt xP |Ζ define la verosimilitud de la
medida observada dado un punto del espacio de estados (es decir, dado un
estado del sistema).
Partículas
Difusión
Modelo de Movimiento
Sorteo de Partículas.
m1
10
Para poder implementar el algoritmo de actualización es necesario un conjunto bien
ponderado de partículas en el instante t con pesos iguales N1 , y así actualizar este
conjunto para reflejar las nuevas medidas obtenidas en el instante tt δ+ . El algoritmo de
actualización queda como sigue:
1. Propagar cada partícula im en el tiempo utilizando el modelo de movimiento F del
objeto para obtener un conjunto actualizado de partículas { }∗im .
2. Obtener un nuevo vector de medidas Ζ y evaluar la densidad de probabilidad
posterior ∗iπ para cada ∗
im , ∗iπ = ( )Zmp i |∗ que cuantifica la verosimilitud de (un
estado) ∗im dado un vector de medidas Ζ . Esto puede ser escrito usando la regla de
Bayes anteriormente descrita:
( ) ( ) ( )( )Ζ
Ζ=
∗∗∗
pmpmp
Zm iii
||Pr
Donde:
( )Ζp es la probabilidad a priori de la medida que se asume constante y conocida.
( )N
mp i1
=∗ , por lo que: ( ) ( )∗∗ Κ= ii mZpZmp || donde ( )∗Ζ imp | puede ser
calculado sin inversión de las ecuaciones de medida.
3. Volver a muestrear a partir del conjunto { }∗im con probabilidades ∗
iπ y generar
un nuevo conjunto bien ponderado { }'im con pesos iguales ( )N1 para cada
partícula. El muestreo de cada partícula consiste en un estado, un peso y otra
información posible (una covarianza por instante).
4. Repetir los pasos 1 y 3 para instantes sucesivos.
11
En la Figura 4, se puede ver cómo evolucionan las partículas en el tiempo durante
una ejecución del Filtro de Partículas.
Figura 4. Evolución de la densidad de probabilidad y de su modelado a través de partículas.
x
t
π(x) x ≡ variable del espacio de estados (estado). t ≡ tiempo. π(x) ≡ peso o verosimilitud de x.
12
1.4 Diferencias entre el Filtro de Kalman y el Filtro de
Partículas.
El Filtro de Kalman define un conjunto de ecuaciones matemáticas que proveen una
solución recursiva computacionalmente eficiente del método de mínimos cuadrados. La
potencia del filtro se debe en varios aspectos: soporta estimaciones del pasado, presente
e incluso estados futuros, y puede utilizarse cuando la naturaleza precisa del sistema a
modelar es desconocida. Dados unos estimadores iniciales, el filtro va prediciendo y
autoajustándose con cada nueva medida. El Filtro Discreto de Kalman se utiliza en
situaciones donde un proceso continuo es muestreado en intervalos de tiempo discretos.
El Filtro de Kalman fue el primer algoritmo de aprendizaje para el Modelo de Espacio
de Estados Lineales o Gausianos. Posteriormente, como resultado de una tendencia
moderna de evitar cualquier tipo de restricciones o suposiciones impuestas como modelo
de proceso, fue propuesto el Filtro de Kalman Extendido, que flexibiliza la condición de
linearizado. Tanto el Filtro de Kalman como el Filtro de Kalman Extendido representan
casos particulares del Filtro Bayesiano, diseñado para ser utilizado en ambientes no
lineales, no gausianos y no estacionarios con un solo objeto.
El Filtro de Partículas representa una poderosa herramienta para el tratamiento de
procesos del mundo real, evitando hacer cualquier tipo de suposiciones sobre las
características intrínsecas del proceso como hacen los filtros clásicos, como es el Filtro
de Kalman. La diferencia fundamental entre ambos algoritmos estriba en el hecho de que
los filtros de Kalman pueden representar solamente la estimación del estado por una
gausiana uni-modal, los Filtros de Partículas pueden representar densidades multi-modales
complejas empleando una gran cantidad de partículas aleatoriamente muestreadas.
13
1.5 Herramientas.
Las herramientas software utilizadas para la realización de este proyecto son:
- Matlab 6.1 y su Toolbox de procesamiento de imágenes..
- Visual C++.
- Plantilla TRIPOD para el desarrollo de la aplicación en tiempo real.
- Logitech QuickCam SDK.
1.5.1 Lenguaje de programación Matlab.
MATLAB es el nombre abreviado de “MATrix LABoratory”. Se tarta de un
programa para realizar cálculos numéricos con vectores y matrices. Como caso
particular puede también trabajar con números escalares, tanto reales como complejos.
Una de las capacidades más atractivas es la posibilidad de realizar una amplia variedad de
gráficos en dos y tres dimensiones. Posee también un lenguaje de programación propio.
Para ciertas operaciones es muy rápido, cuando puede ejecutar sus funciones en código
nativo, mientras que en otras aplicaciones resulta apreciablemente más lento que el
código equivalente desarrollado en C/C++ o Fortran. Sin embargo, siempre es una
magnífica herramienta de alto nivel para desarrollar aplicaciones técnicas, fácil de utilizar
y que aumenta la productividad de los programadores respecto a otros entornos de
desarrollo, al permitir prototipado rápido.
MATLAB dispone de un código básico y de varias librerías especializadas
denominadas Toolboxes. Estas Toolboxes cubren las áreas principales en el mundo de
la ingeniería y la simulación, destacando entre ellas la de proceso de imágenes, que han
sido imprescindibles para este proyecto.
14
1.5.2 Visual C++.
Visual C++ es un entorno de desarrollo de software, destinado específicamente para
escribir programas para el sistema operativo Windows en C++. Con Visual C++ se
puede escribir cualquier tipo de programa tanto en lenguaje C++, como en C. C++ es
un superconjunto de C orientado a objetos. Visual C++ pone a disposición del
desarrollador múltiples heramientas: lenguaje C++, programación orientada a objetos
(POO), biblioteca de clases, tecnología de componentes, etc.
Uno de los propósitos de Visual C++ es programar para Windows en C++
utilizando Microsoft Foundation Class Library (MFC). MFC es un conjunto de clases de
C++ que comprenden una aplicación genérica de funcionamiento de Windows lista para
personalizar.
1.5.3 TRIPOD (Template for Real-Time Image
PrOcessing Development).
Plantilla para el Desarrollo del Procesamiento de Imágenes en Tiempo Real, que su
creador Paul Y. Oh. denomina TRIPOD. Se trata de un software de libre distribución.
Fue desarrollado para permitir a los programadores procesar rápidamente imágenes en
tiempo real capturadas con una webcam Logitech bajo entorno Windows, ya que ésta
proporciona el software QuickCam SDK. TRIPOD está formado por archivos fuente
del MFC de Visual C++ por encima de los cuales se integra el programa de
procesamiento de imágenes para obtener resultados.
El interfaz que muestra el sistema está constituido por una ventana superior que
exhibe las imágenes en color tomadas con una webcam Logitech, mientras que la
ventana inferior muestra el resultado del procesamiento realizado sobre cada imagen
capturada. En la figura 5 se muestra un ejemplo del interfaz realizando la binarización de
la imagen capturada en tiempo real.
15
Figura 5. Interfaz que proporciona TRIPOD.
1.5.4 Logitech QuickCam SDK.
El motivo del uso de una cámara web Logitech es debido a las ventajas que
proporciona el kit de desarrollo sotfware QuickCam (QCSDK) a la aplicación.
SDK también denominado API es un interfaz para programas de aplicación que
proporciona una serie de reglamentos y acuerdos que definen la manera de llamar
determinado servicio desde cierto programa.
Con QCSDK se puede desarrollar fácil y rápidamente aplicaciones como la
realización de fotos y archivos de vídeo con extensión AVI. Además permite cualquier
número de conexiones simultáneas de la cámara fotográfica a través del interfaz. Las
imágenes que proporciona QCSDK son RGB de color verdadero (24 bits) .
16
Capítulo 2
Objetivos
Un problema clásico en visión artificial es el seguimiento de un objeto en una
secuencia de imágenes. En muchas ocasiones ese seguimiento debe funcionar en tiempo
real, para ello es necesario acotar el espacio de búsqueda en las imágenes mediante
métodos probabilísticos como pueden ser el Filtro de Kalman y el Filtro de Partículas.
El objetivo fundamental de este proyecto consiste en implementar el Filtro de Partículas
aplicado al seguimiento de objetos en secuencias de imágenes 2D, evaluando los resultados que se
obtienen en la aplicación bajo diferentes condiciones experimentales Este objetivo se
articula en los siguientes objetivos operativos:
1. Aprender a utilizar el entorno de programación Matlab.
2. Coleccionar los datos necesarios para evaluar el funcionamiento del filtro en
diferentes condiciones.
3. Aprender técnicas de tratamiento de imágenes.
4. Crear el núcleo del Filtro de Partículas Básico y las funciones complementarias en
Matlab
5. Probar el funcionamiento del Filtro de Partículas en secuencias de imágenes 1D
para uno y varios objetos.
6. Probar el funcionamiento del Filtro de Partículas en secuencias de imágenes 2D
para uno y varios objetos.
7. Probar el funcionamiento del Filtro de Partículas en secuencias de imágenes reales.
8. A la vista de las pruebas anteriores y si procede proponer alternativas para
mejorar el rendimiento del filtro.
17
Un Filtro de Partículas en condiciones reales debe funcionar en Tiempo Real, a pesar de
no haber sido objetivo inicial del proyecto, parecía razonable probarlo en condiciones
reales, para ello era necesario un entorno de captura de imágenes en tiempo real y una
optimización del código. Matlab no es óptimo en este sentido, con lo cual se debe migrar
la aplicación a C++. Ha sido necesario:
1. Aprender a utilizar el entorno de programación Visual C++.
2. Crear la aplicación del Filtro de Partículas (núcleo y funciones complementarias) en
Visual C++ para incorporarla a una plantilla llamada TRIPOD y así conseguir
construir el Filtro de Partículas en tiempo real.
18
Capítulo 3
Descripción Informática
Una vez descritos los objetivos que se desean conseguir con la realización del
proyecto, en este capítulo se van a tratar los distintos aspectos que componen la
especificación del mismo. Aquí se incluyen los requisitos con los que debe cumplir el
proyecto. Además se describen los problemas encontrados en la fase de análisis.
3.1 Especificación de Requisitos.
Todo proyecto informático debe cumplir ciertas condiciones. No solo basta con que
el desarrollo funcione, sino que además debe hacerlo en un tiempo razonable, ser
adaptable a distintas situaciones, etc. Todos estos aspectos se detallan a continuación.
3.1.1 Requisitos Funcionales.
Los requisitos funcionales son aquellos que proponen qué debe realizar la aplicación,
como los servicios que ofrece, cómo debe reaccionar, estados que no se deben dar, etc.
Los requisitos funcionales de nuestra aplicación son:
• El Filtro de Partículas debe ser capaz de seguir a uno o varios objetos en una
secuencia de imágenes.
• Hay que tener en cuenta que dependiendo del número de partículas que se utilicen
pueden variar los resultados del filtro, destacando que cuanto más partículas se
generen más tiempo requerirá la ejecución de la aplicación.
19
• Debe ser capaz de seguir objetos pequeños con tal de que el número de partículas
sea suficiente, teniendo en cuenta que cuanto más pequeño sea el objeto a seguir,
más partículas son necesarias para realizar un seguimiento con precisión. Es decir, si
el número de partículas es bajo (alrededor de 25 ó 50) y el objeto pequeño, el
seguimiento de dicho objeto es menos preciso que si se utilizarán más partículas o el
objeto fuera mayor.
• Debe ser capaz de recuperarse en caso de perder el objeto durante un tiempo
determinado, ya que si la velocidad con la que se mueve el objeto a seguir es muy
alta, en algunos instantes el filtro no logra seguir al objeto con precisión. Esto es
debido a la limitación de la velocidad de la captura de imágenes y la capacidad de
procesado de la aplicación.
20
3.1.2 Requisitos No Funcionales.
En este apartado se detallan los requisitos que proponen cómo debe reaccionar la
aplicación, por ejemplo restricciones de tiempo, de desarrollo, estándares, etc.
• Es necesario capturar imágenes con una webcam para analizarlas, reconocer los
objetos y poder realizar el seguimiento de éstos. Las imágenes necesarias para probar
la aplicación debían ser primeramente de fondo negro y el objeto a seguir debía ser
de cualquier otro color, posteriormente ya no era necesario que tuvieran fondo
negro, para finalmente poder capturarlas en tiempo real, eso sí la cámara web debe
proporcionar las suficientes imágenes por segundo para poder seguir al objeto en
tiempo real.
Si la posición de la webcam varía durante la ejecución del filtro, es necesario parar
dicha ejecución y volver a empezar de nuevo, ya que la calibración de la cámara es
errónea y los resultados no serán correctos.
• Para identificar el objeto u objetos en la imagen son necesarias técnicas de
tratamiento de imágenes, para las cuales hay que reunir una serie de requisitos, como
pueden ser:
- Para la técnica de Segmentación basada en umbralizado se requiere fondo
negro.
- Para la técnica Sustracción del fondo, se requiere disponer de una imagen del
fondo almacenada.
• El objeto o los objetos a seguir no tienen que cumplir ninguna característica
especial, es decir no tienen que tener ni unas medidas, ni un color determinado, ni
estar a distancias especificas, ya que son analizados al comenzar la aplicación
calculando un valor proporcional a su radio. Las pruebas se han realizado con
móviles de distintos tamaños y formas, como por ejemplo: pelotas de golf, ratón del
ordenador, personas, etcétera.
• Para la aplicación en tiempo real el rendimiento es fundamental, por lo que es
necesario implementar algoritmos rápidos y eficientes.
21
3.1.3 Requisitos de Desarrollo.
Para el desarrollo del proyecto se ha seguido un modelo en espiral, ya que es
incremental e iterativo y se pueden realizar tantas iteraciones como sea necesario para
llegar a la finalización del mismo. El proyecto se divide en distintos ciclos:
• Análisis de la fase del proyecto a abordar (A).
• Estudio de la documentación relacionada si fuera necesario (B).
• Discusión de las posibles alternativas para esa fase (C).
• Codificación (D).
• Pruebas y depuración (E).
• Pequeña documentación del trabajo realizado (F).
Figura 6. Modelo del ciclo de vida en espiral.
A C
D
E
F C1
C2
B
22
3.1.4 Diagrama de Gantt.
Para la consecución principal del proyecto ha sido necesario abordar por separado
cada uno de los objetivos operativos divididos a su vez en tareas. La distribución de
tareas que se ha seguido, se puede ver en forma de diagrama en la siguiente figura:
Diagrama de Gantt:
Figura 7. Diagrama de Gantt.
A = Aprender el entorno Matlab (7 días),
B = Aprender técnicas de tratamiento de imágenes sintéticas y reales (7 días),
C = Capturar imágenes con una webcam (3 días),
D = Comprender el Filtro de Partículas (25 días),
E = Implementar el Filtro de Partículas Básico (20 días),
F = Desarrollar las pruebas correspondientes (7 días),
G = Implementar el Filtro de Partículas empleando Segmentación basada en Umbralizado
(10 días),
H = Implementar el Filtro de Partículas empleando Sustracción de fondo (10 días),
I = Aprender el entorno Visual C++ (3 días),
J = Comprender la plantilla TRIPOD (3 días),
K = Implementar el Filtro de Partículas en Tiempo Real (10 días).
A
B C
D
E
F
G
H
I
J
K
5 días de trabajo
23
3.2 Diseño e Implementación
Una vez expuesto el problema, se describe con más detalle la estrategia usada para
resolverlo. Ya es el momento de acercar el modelo de análisis al modelo de la
implementación, es decir lo que se corresponde con el diseño de la aplicación y explicar
cómo se han implementado cada una de las funciones que componen el Filtro de
Partículas, para los distintos casos estudiados
3.2.1 Filtro de Partículas Básico en entorno Matlab.
El Filtro de Partículas Básico realiza un modelado de funciones gausianas
unidimensionales creadas mediante distintas medias y desviaciones típicas que indica el
usuario. Son necesarias las siguientes funciones, divididas en dos grupos:
► Generación de datos:
1. Pedir Datos. Para generar los datos que requiere el filtro, se debe indicar:
1. El intervalo de la variable de estado,
2. Las medias y las desviaciones típicas para la creación de las gausianas,
3. El número de partículas que se desean crear para modelar dichas
gausianas,
4. El intervalo de tiempo entre una gausiana y la siguiente.
2. Crear Gausiana. Se crean tantas gausianas como medias y desviaciones típicas
haya, mediante la función de la Distribución Normal:
2
21
21
−
−
= σ
πσ
mediax
eGaussiana
► Funcionamiento del Filtro:
1. Inicializar. Se generan las partículas aleatorias para el intervalo de la variable de
estado y se inicializa la velocidad de dichas partículas a cero, construyendo así
un registro con ambos campos (x y Vx).
2. Calcular Pesos. Cada partícula tiene su peso correspondiente, dicho peso se calcula
comprobando si el valor de la partícula se corresponde con algún valor
perteneciente a la gausiana, teniendo mayor peso la partícula más cercana al
máximo de la gausiana.
x ≡ variable de estado. media ≡ media de la distribución. σ ≡ desviación típica de la distribución.
24
3. Calcular Estimadores. El último paso y más importante ya que es el objetivo del
Filtro de Partículas, consiste en calcular los estimadores de las variables de
interés, que en este caso es el valor medio de la gausiana.
( ) ( )( )( )
∑∑Η
=ΗΕ
Ni
Nii
sp
ss
π
π
4. Crear Ruleta. Mediante la suma de todos los pesos normalizados de las partículas
se crea un vector llamado ruleta normalizado a 1, consiguiendo el efecto de un
gráfico circular, reservando mayor espacio a aquella que mayor peso tenga.
Figura 8. Ejemplo de una ruleta creada mediante el Filtro de Partículas.
5. Tirar Ruleta. Para generar las nuevas partículas necesarias para el instante
siguiente, se realiza un sorteo tirando la ruleta tantas veces como partículas
haya, con mayor probabilidad de que se elijan las partículas que tienen mayor
peso. Para conseguir esto, se escoge aleatoriamente un número entre 0 y 1 que se
compara con los valores del vector ruleta para conseguir el índice del valor al que
se corresponde, el cual va a indicar dicha posición al vector de partículas,
eligiendo así una de ellas.
6. Difusión. Tras la elección de las nuevas partículas, se realiza una difusión que
consiste en sumar a la coordenada x de cada partícula un número aleatorio
siguiendo una distribución normal multiplicado por una desviación constante,
función de la separación entre partículas (cuanto mayor es mayor será la
separación).
7. Modelo de Movimiento. A parte de la desviación aleatoria (difusión) que sufre cada
partícula también se realiza un modelo de movimiento que predice la posición
de la gausiana en el instante siguiente, a partir de la posición actual:
( ) ( ) txtxttx δδ ′+=+
( ) ( ) tFtxttVx δδ +′=+ .
H ≡ cualquier función integrable. si ≡ variable del espacio de estados. πi ≡ Peso asociado a cada partícula.
δt ≡ incremento de tiempo. Fδt ≡ valor aleatorio normalizado a 1.
25
3.2.1.1 Diagrama de bloques del Filtro de Partículas
Básico.
PEDIR DATOS Entrada del intervalo de la x, medias, desviaciones típicas,
número de partículas, y tiempo.
CREAR GAUSSIANACrea una gaussiana.
CALCULAR PESOS Calcula el peso de cada una de las
partículas.
MODELO DE MOVIMIENTO
Describe la evolución temporal del estado del objeto (x, Vx,).
DIBUJAR Dibuja la gaussiana con las partículas correspondientes.
DIFUSIÓN Aplica un desplazamiento aleatorio
y gausiano a cada partícula (x) elegida para que no coincidan en el instante siguiente, ya que el número
de éstas debe ser constante.
CREAR RULETA Crea la ruleta con las partículas
actuales.
TIRAR RULETA Tira de la ruleta anteriormente creada para generar las nuevas
partículas para la siguiente iteración.
INICIALIZAR Inicializa las partículas (x, Vx).
CÁLCULO DE ESTIMADORES
Calcula los estimadores de las variables de interés (EstX).
26
3.2.2 Filtro de Partículas en entorno Matlab para análisis
de imágenes reales.
El Filtro de Partículas es un método aplicable al seguimiento de objetos en imágenes
reales. Para la obtención de los pesos de las partículas es necesario extraer características
de la imagen que indiquen dónde se encuentra el objeto. Se han probado dos técnicas de
seguimiento:
- Segmentación basada en umbralizado.
- Sustracción de Fondo.
3.2.2.1 Segmentación basada en umbralizado.
La segmentación es un proceso que consiste en dividir una imagen digital en regiones
homogéneas con respecto a una o más características (como por ejemplo el brillo o el
color) con el fin de facilitar su posterior análisis y reconocimiento.
La segmentación no tiene reglas estrictas a seguir, y dependiendo del problema en
cuestión, puede ser necesario idear técnicas a medida. Además suele resultar complejo,
debido, por un lado, a que no se tiene una información adecuada de los objetos a extraer
y, por otro, a que en la escena a segmentar aparece normalmente ruido, por lo que el uso
de conocimiento sobre el tipo de imagen a segmentar o alguna otra información de alto
nivel puede resultar muy útil [12].
La umbralización es un proceso que permite convertir una imagen de niveles de
grises o en color en una imagen binaria, de tal forma que los objetos de interés se
etiqueten con un valor distinto de los píxeles del fondo. La umbralización es una técnica
de segmentación rápida, que tiene un coste computacional bajo y que incluso puede ser
realizado en tiempo real durante la captura de la imagen [12].
La umbralización fija es la técnica de umbralización utilizada en este proyecto, que
consiste en el establecimiento de un umbral de separación entre los niveles de intensidad
de los objetos que se desean separar en aquellas imágenes en las que existe suficiente
contraste. Para obtener dicho umbral se debe disponer de información sobre los niveles
de intensidad de los objetos a segmentar y el fondo de la imagen. La elección de un valor
27
de umbral correcto resulta decisiva para llevar a cabo la segmentación de una imagen de
manera satisfactoria [12].
Se han utilizado técnicas de segmentación basadas en umbralizado sobre imágenes
con fondo negro en las que se seguía un objeto de cualquier otro color. Las regiones de
la imagen correspondientes al objeto poseen un nivel de intensidad superior al umbral, y
son etiquetadas con el valor 1. Aquellas regiones que no superan el umbral son
consideradas fondo y se etiquetan con el valor 0.
3.2.2.2 Sustracción de Fondo.
Las técnicas básicas consisten en el estudio de la imagen resultante de la diferencia de
una imagen con su fondo. Los objetos que se diferencian entre ambas imágenes
producen en la imagen diferencia un conjunto de píxeles con valores distintos a cero.
Así, partiendo de dos imágenes tΙ e fΙ los objetos tras esta segmentación serían los
píxeles a uno de la imagen dΙ . Siendo U un valor umbral que depende de la variación de
la iluminación entre ambas imágenes.
( ) =yxd ft ,, 0, en otro caso
( ) ( ) 0,,,1 >Ι−Ι yxyxsi ft
28
3.2.2.3 Descripción Funcional.
Para el análisis de imágenes reales utilizando las técnicas basadas en Umbralizado y la
Sustracción de fondo son necesarias las mismas funciones que para el Filtro de Partículas
Básico con algunas diferencias que se detallan a continuación:
► Generación de datos:
1. Pedir Datos. Para obtener los datos, se debe indicar:
1. La secuencia de imágenes,
2. La primera y última imagen de dicha secuencia,
3. El número de partículas,
4. El periodo de muestreo entre una imagen y la siguiente.
5. Para la técnica de Sustracción de fondo además es necesario tener
almacenada una imagen del fondo.
2. Calcular Radio. A diferencia del Filtro de Partículas Básico en 1D es necesario
calcular el radio del primer objeto que aparece en la imagen, utilizándolo como
una medida orientativa para crear una a región de interés cuadrada cuyo centro
viene dado por las coordenadas x e y de la partícula, y su dimensiones son
función del tamaño del objeto.
► Funcionamiento del Filtro:
1. Inicializar. El primer paso es la generación aleatoria de las coordenadas x e y de
las partículas y la inicialización de la velocidad de dichas partículas a cero (Vx,
Vy).
2. Calcular Pesos. Cada partícula tiene su peso correspondiente. Dicho peso se calcula
contando el número de píxeles con el valor de intensidad 1 que pertenecen a la
región de interés. En la técnica de Sustracción de fondo se calcula la diferencia de
la región de interés de cada partícula de la imagen con la misma región de la
imagen fondo. El resultado de la resta se convierte en una imagen binaria (blanco
y negro), donde el valor de los píxeles del objeto es 1. Finalmente para localizar al
objeto a seguir en una imagen, se comprueba el valor del píxel, igual que la técnica
de Segmentación basada en umbralizado.
29
3. Calcular Estimadores. A continuación se calcula el estimador, para las coordenadas
(x, y).
( ) ( )( )( )
∑∑Η
=ΗΕ
Ni
Nii
sp
sxsx
π
π ( ) ( )( )
( )
∑∑Η
=ΗΕ
Ni
Nii
sp
sysy
π
π
donde, H ≡ cualquier función integrable.
si ≡ variable del espacio de estados
πi ≡ Peso asociado a cada partícula
4. Crear Ruleta. Al igual que en el Filtro de Partículas Básico la suma de todos los pesos
normalizados de las partículas crean una ruleta normalizada a 1.
5. Tirar Ruleta. Para generar las nuevas partículas necesarias para el instante siguiente,
también se realiza un sorteo tirando la ruleta tantas veces como partículas haya,
con mayor probabilidad de que se elijan las partículas que mayor peso tienen. En
este caso existe otra forma de realizar el sorteo de las nuevas partículas y es
generando siempre un tanto por ciento aleatorio de partículas además de las
creadas tirando la ruleta, para conseguir mayor precisión a la hora de localizar
objetos en la imagen tanto como si hay más de uno como si aparecen nuevamente
en la imagen.
6. Difusión y Modelo de Movimiento. Igualmente tras la elección de las nuevas partículas,
se realiza la difusión y el modelo de movimiento de las mismas, teniendo en
cuenta que en este caso deben calcularse las coordenadas (x, y) y sus
correspondientes velocidades (Vx, Vy).
( ) ( ) txtxttx δδ ′+=+ ( ) ( ) tFtxttVx δδ +′=+
( ) ( ) tytytty δδ ′+=+ ( ) ( ) tFtyttVy δδ +′=+
A pesar del parecido de las dos técnicas, se puede considerar más general la técnica
Sustracción de fondo, ya que no es necesario que la secuencia de imágenes que se desea
procesar tenga el fondo negro.
δt ≡ incremento de tiempo. Fδt ≡ valor aleatorio . normalizado a 1.
30
3.2.3 Diagrama de bloques del Filtro de Partículas para
una secuencia de imágenes reales.
PEDIR DATOS Entrada de la película, frame inicial y último, número de
partículas, ancho y alto de la imagen y el incremento de tiempo.
CALCULAR RADIOCalcula el radio del objeto.
CALCULAR PESOS Calcula el peso de cada una de las
partículas.
MODELO DE MOVIMIENTO
Describe la evolución temporal del estado del objeto (x, y, Vx, Vy).
DIBUJAR Dibuja la imagen con las partículas
correspondientes.
DIFUSIÓN Aplica un desplazamiento aleatorio a cada partícula (x e y) elegida para
que no coincidan en el instante siguiente, ya que el número de éstas
debe ser constante.
CREAR RULETA Crea la ruleta con las partículas
actuales.
TIRAR RULETA Tira de la ruleta anteriormente creada para generar las nuevas
partículas para la siguiente iteración.
INICIALIZAR Inicializa las variables de estado de
partículas (x, y, Vx y Vy).
CÁLCULO DE ESTIMADORES
Calcula los estimadores de las variables de interés (EstX y EstY).
31
3.2.4 Filtro de Partículas en Tiempo Real.
Un sistema de tiempo real es aquel en el que para que las operaciones
computacionales estén correctas no depende solo de que la lógica e implementación de
los programas computacionales sea correcto, sino también en el tiempo en el que dicha
operación entregó su resultado [14]. Si las restricciones de tiempo no son respetadas el
sistema se dice que ha fallado, por lo tanto, es esencial que las restricciones de tiempo en
los sistemas sean cumplidas. Garantizar el comportamiento en el tiempo requerido
necesita que el sistema sea predecible. Es también deseable que el sistema obtenga un
alto grado de utilización a la vez que cumple con los requerimientos de tiempo.
La implementación del Filtro de Partículas para procesar secuencias de imágenes en
tiempo real capturadas con una webcam, se consigue con la plantilla TRIPOD y la
migración del código del Filtro de Partículas basado en la Sustracción de fondo en Matlab
al lenguaje C++ para Visual C++.
Como se indicaba en los requisitos es imprescindible capturar en primer lugar la
imagen del fondo, para posteriormente realizar la sustracción de fondo en cada imagen.
Si la cámara web cambia de posición es necesario volver a ejecutar la aplicación, ya que el
fondo no es el mismo y la resta de ambas imágenes no es correcta.
Al exponer todos los casos posibles para la implementación del Filtro de Partículas se
puede afirmar que tanto para secuencias de imágenes de una dimensión, dos dimensiones
e incluso tres dimensiones el núcleo del funcionamiento del Filtro de Partículas es el
mismo:
Figura 9. Diagrama del núcleo del Filtro de Partículas.
Predicción. Aplicar Modelo de
Movimiento.
Partículas iniciales
Cálculo de Pesos.Se calcula el peso de cada
partícula.
Remuestreo. Elegir partículas para el
instante siguiente.
32
Capítulo 4
Pruebas
Las pruebas se realizan para verificar y validar la aplicación creada, más
concretamente para comprobar que la aplicación funciona correctamente bajo las
condiciones prescritas. El enfoque seguido para la realización de las pruebas es el
método de Caja Blanca, ya que se desarrollan dichas pruebas para comprobar que las
funciones implementadas se ajustan a las especificaciones. En definitiva, se analiza el
funcionamiento interno del sistema.
4.1 Pruebas realizadas con el Filtro de Partículas Básico.
• Prueba 1: Movimiento no constante, con medias variables y desviaciones típicas
estrechas y constantes.
La experiencia evalúa el comportamiento del filtro en el modelado de una
distribución gausiana cuya media se mueve de izquierda a derecha y que en un instante
determinado cambia bruscamente el sentido de movimiento.
a) Implementado con 100 partículas.
Media = 16, Media = 19, Media = 20, Desviación típica = 1. Desviación típica = 1. Desviación típica = 1. Estimador = 16.8436. Estimador = 19.0018. Estimador = 20.2780.
33
Media = 23, Media = 26, Media = 20, Desviación típica = 1, Desviación típica = 1. Desviación típica = 1. Estimador = 24.6646. Estimador = 27.5504. Estimador = 17.6188.
Media = 18, Media = 15, Media = 10, Desviación típica = 1. Desviación típica = 1. Desviación típica = 1. Estimador = 16.9740. Estimador = 14.5530. Estimador = 7.0595.
Se puede observar como las partículas no modelan la gausiana de manera tan
óptima durante el cambio de sentido como en el resto de la escena. Se puede
comprobar que el filtro se recupera en la siguiente imagen. También se puede apreciar
que en presencia de movimientos rápidos, las partículas localizan la gausiana con
menor precisión.
b) Implementado con 1000 partículas.
Media = 16, Media = 19, Media = 20, Desviación típica = 1. Desviación típica = 1. Desviación típica = 1. Estimador = 17.0690. Estimador = 18.8746. Estimador = 19.9605.
34
Media = 23, Media = 26, Media = 20, Desviación típica = 1, Desviación típica = 1. Desviación típica = 1. Estimador = 23.5891. Estimador = 26.7066. Estimador = 18.6349.
Media = 18, Media = 15, Media = 10, Desviación típica = 1. Desviación típica = 1. Desviación típica = 1. Estimador = 16.6001. Estimador = 14.3893. Estimador = 7.7202.
Se puede apreciar que los resultados son similares con 100 y 1000 partículas,
cuando mayor es el número de partículas el modelado es más preciso.
• Prueba 2: Movimiento no constante, con medias y desviaciones típicas
variables.
La experiencia evalúa el comportamiento del filtro en el modelado de una
distribución gausiana cuya media se mueve de izquierda a derecha y que en un instante
determinado se para sin cambiar bruscamente el sentido de movimiento.
a) Implementado con 100 partículas.
Media = 16, Media = 19, Media = 22, Desviación típica = 2. Desviación típica = 2,2. Desviación típica = 2,4. Estimador = 14.7234. Estimador = 18.8103. Estimador = 21.3951.
Media = 25, Media = 25, Media = 23, Desviación típica = 2,6, Desviación típica = 2,8. Desviación típica = 3. Estimador = 24.3110. Estimador = 25.3089. Estimador = 23.9260.
35
Media = 20, Media = 17, Media = 12, Desviación típica = 2,8. Desviación típica = 2,6. Desviación típica = 2,4. Estimador = 20.6347. Estimador = 17.3399. Estimador = 11.8001.
Las partículas localizan a la gausiana mejor que con las pruebas anteriores, ya que al
ser mayor la desviación típica, y tener más espacio para recorrerla se localiza más
fácilmente, con la excepción que si el movimiento es hacía la derecha hay más
partículas en el lado derecho y viceversa.
b) Implementado con 500 partículas.
Media = 16, Media = 19, Media = 22, Desviación típica = 2. Desviación típica = 2,2. Desviación típica = 2,4. Estimador = 16.3085. Estimador = 17.7464. Estimador = 19.5424.
Media = 25, Media = 25, Media = 23, Desviación típica = 2,6, Desviación típica = 2,8. Desviación típica = 3. Estimador = 23.2576. Estimador = 23.6950. Estimador = 22.2418.
36
Media = 20, Media = 17, Media = 12, Desviación típica = 2,8. Desviación típica = 2,6. Desviación típica = 2,4.
Estimador = 19.5156. Estimador = 16.2525. Estimador = 11.7204.
Se puede apreciar que los resultados son similares con 100 y 500 partículas, cuanto
mayor es el número de partículas el modelado es más preciso.
• Prueba 3: Movimiento no constante, con medias y desviaciones típicas
variables.
La experiencia evalúa el comportamiento del filtro en el modelado de una
distribución gausiana cuya media se mueve de izquierda a derecha y que en un instante
determinado cambia bruscamente el sentido de movimiento.
a) Implementado con 100 partículas.
Media = 16, Media = 19, Media = 20, Desviación típica = 2. Desviación típica = 2,2. Desviación típica = 2,4. Estimador = 16.1784. Estimador = 18.5779. Estimador = 19.5580.
Media = 23, Media = 26, Media = 20, Desviación típica = 2,6, Desviación típica = 3. Desviación típica = 2,8. Estimador = 20.8313. Estimador = 24.0850. Estimador = 21.5513.
Media = 18, Media = 15, Media = 10, Desviación típica = 2,6. Desviación típica = 2,4. Desviación típica = 2. Estimador = 19.2999. Estimador = 14.4828. Estimador = 9.1990.
37
Las partículas localizan a la gausiana mejor que con los primeros experimentos,
donde la desviación típica era estrecha y constante, ya que la gausiana es mayor y se
localiza con menor dificultad.
b) Implementado con 1000 partículas.
Media = 16, Media = 19, Media = 20, Desviación típica = 2. Desviación típica = 2,2. Desviación típica = 2,4. Estimador = 16.0409. Estimador = 18.2608. Estimador = 19.1867.
Media = 23, Media = 26, Media = 20, Desviación típica = 2,6, Desviación típica = 3. Desviación típica = 2,8. Estimador = 20.9689. Estimador = 24.1778. Estimador = 20.2812.
Media = 18, Media = 15, Media = 10, Desviación típica = 2,6. Desviación típica = 2,4. Desviación típica = 2. Estimador = 17.3521. Estimador = 15.5422. Estimador = 9.1731.
Se puede apreciar que los resultados son similares con 100 y 1000 partículas, cuanto
mayor es el número de partículas el modelado es más preciso.
38
4.2 Pruebas realizadas con la técnica de Segmentación
basada en umbralizado.
En todas las pruebas en las que se utiliza la técnica de Segmentación basada en
Umbralizado se han generado 100 partículas. Éstas se representan como puntos con tres
colores distintos en función de su peso: azul claro (menor peso), azul oscuro y rojo
(mayor peso). Además se pueden contemplar un cuadrado con un punto rojo y un
cuadrado con un punto amarillo que representan a la partícula de mayor peso y al
estimador del filtro en la imagen respectivamente.
• Prueba 1.
Pelota sobre un fondo negro siguiendo un movimiento rectilíneo y uniforme. El
valor de la desviación en el proceso de Difusión es de 0,03.
Imagen 1. Resultado de la prueba realizada con 1 pelota.
Como se puede observar en la secuencia de imágenes, el filtro localiza a la pelota de
forma óptima. Todas las partículas se concentran alrededor de la pelota a partir de la
segunda imagen. Al igual que en las pruebas realizadas con las gausianas, las partículas
tienden a retrasarse respecto a la pelota.
39
• Prueba 2.
Pelota sobre un fondo negro siguiendo un movimiento rectilíneo y uniforme. El
valor de la desviación en el proceso de Difusión es de 0,03.
Imagen 2. Resultado de la prueba realizada con 1 pelota.
Como en el experimento anterior, las partículas se concentran alrededor de la pelota
a partir de la segunda imagen y también tienden a retrasarse respecto a la misma.
40
• Prueba 3.
Dos pelotas sobre fondo negro siguiendo ambas un movimiento rectilíneo y
uniforme. El valor de la desviación en el proceso de Difusión es de 0,03.
Imagen 3. Resultado de la prueba realizada con 2 pelotas.
En la secuencia de imágenes se puede ver como las partículas se reparten
aleatoriamente para concentrarse alrededor de cada una de las dos pelotas. Cuando
desaparece una pelota todas las partículas se concentran alrededor de la pelota que ha
quedado.
41
• Prueba 4.
Dos pelotas sobre fondo negro con un movimiento rectilíneo y uniforme en sentidos
opuestos. El valor de la desviación en el proceso de Difusión es de 0,03.
Imagen 4. Resultado de la prueba realizada con 2 pelotas.
En este experimento se produce un periodo de inestabilidad del filtro, caracterizado
por la fusión de las nubes de las partículas que siguen a cada pelota En poco tiempo se
recupera la situación estable.
42
• Prueba 5.
Tres pelotas de disrinto tamaño y color, el movimiento es rectilíneo y uniforme. Se
genera el 20% de las partículas aleatoriamente y el 80% restante del modo habitual
(ruleta). El valor de la desviación en el proceso de Difusión es de 0,03.
Imagen 5. Resultado de la prueba realizada con 3 pelotas.
Se puede apreciar que al generarse partículas aleatorias constantemente, se localizan
mejor todos los móviles que haya en la imagen o los que pudieran aparecer.
43
• Prueba 6.
Una persona sobre fondo negro con movimiento rectilíneo y uniforme. El valor de la
desviación en el proceso de Difusión es de 0,03.
Imagen 6. Resultado de la prueba realizada con 1 persona.
Como se puede observar en la secuencia de imágenes, el filtro localiza a la persona de
forma óptima, gracias a que el contraste de la ropa con el fondo es alto, sino este método
no se puede aplicar esperando resultados óptimos ya que utiliza la Segmentación basada
en umbralizado.
44
• Prueba 7.
Pelota sobre fondo negro con movimiento rectilíneo y uniforme con oclusión. El
valor de la desviación en el proceso de Difusión es de 0,03.
Imagen 7. Resultado de la prueba realizada con 1 pelota.
En este experimento se puede apreciar que el seguimiento de la pelota es óptimo
hasta que se produce la oclusión. El filtro genera partículas aleatorias en busca de la
pelota, y cuando aparece de nuevo continua con su seguimiento.
45
4.3 Pruebas realizadas con la técnica de Sustracción de
Fondo.
En todas las pruebas en las que se utiliza la técnica de Sustracción de fondo se han
generado 100 partículas. Éstas se representan como puntos con tres colores distintos en
función de su peso: azul claro (menor peso), azul oscuro y rojo (mayor peso). Además se
pueden contemplar un cuadrado con un punto rojo y un cuadrado con un punto amarillo
que representan a la partícula de mayor peso y al estimador del filtro en la imagen
respectivamente.
• Prueba 1.
Una persona que se mueve de izquierda a derecha. El valor de la desviación en el
proceso de Difusión es de 0,02.
Imagen 8. Resultado de la prueba realizada con 1 persona.
Como se puede observar las partículas se concentran alrededor de la persona durante
toda la escena. Debido al desviación típica empleada durante el proceso de difusión es
pequeña las partículas aparecen considerablemente agrupadas.
46
• Prueba 2.
Esta experimento es exactamente igual a la anterior, pero el valor de la desviación en
el proceso de Difusión es de 0,06.
Imagen 9. Resultado de las pruebas realizadas con 1 persona.
Como se puede observar el resultado es igual que en la prueba 1, con la diferencia
que las partículas están mucho más distribuidas ya que la desviación típica empleada
durante el proceso de difusión es mayor y por ello la diferencia entre las posiciones de las
partículas también.
47
• Prueba 3.
Dos personas que se cruzan. El valor de la desviación en el proceso de Difusión es
de 0,04.
Imagen 10. Resultado de la prueba realizada con 2 personas.
En este experimento el filtro localiza mejor al hombre, debido a que el contraste de la
ropa de la mujer con el fondo es bajo. Los pesos de sus partículas dependen del número
de píxeles que se diferencian del fondo, con lo cual las partículas de la mujer pesan
menos que las del hombre.
48
• Prueba 4.
Esta prueba se realiza sobre la misma secuencia de imágenes anterior, pero se genera
el 20% de las partículas aleatoriamente y el 80% restante del modo habitual (ruleta). El
valor de la desviación en el proceso de Difusión es de 0,04.
Figura 11. Resultado de la prueba realizada con 2 personas.
A diferencia del experimento anterior, se puede apreciar que en esta prueba se
localiza mejor a las dos personas, ya que se generan partículas aleatorias constantemente.
49
• Prueba 5.
Ratón de ordenador que sigue un movimiento de arriba abajo. El valor de la
desviación en el proceso de Difusión es de 0,04.
Imagen 12. Resultado de la prueba realizada con 1 ratón de ordenador.
Como se puede observar las partículas se concentran alrededor del ratón de
ordenador durante toda la secuencia. Se puede apreciar que según el peso de las
partículas, éstas se representan de un color u otro.
50
• Prueba 6.
Pelota siguiendo un movimiento rectilíneo y uniforme, pero con la característica de
que se oculta durante un intervalo de tiempo. El valor de la desviación en el proceso de
Difusión es de 0,02.
Imagen 13. Resultado de la prueba realizada con 1 pelota.
En este experimento se puede apreciar que el filtro localiza a la pelota de forma
óptima, hasta que se produce la oclusión. El filtro genera partículas aleatorias en busca
de la pelota, y cuando aparece de nuevo continua con su seguimiento.
51
4.4 Pruebas realizadas en Tiempo Real.
En todas las pruebas realizadas a continuación se han generado 100 partículas.
Además se pueden contemplar un punto azul que corresponde al estimador del filtro en
la imagen.
• Prueba 1.
Una persona que sigue un movimiento rectilíneo y uniforme. El valor de la
desviación en el proceso de Difusión es de 0,04.
Imagen 14. Resultado de la prueba realizada con 1 persona.
Como se puede observar las partículas se concentran alrededor de la persona durante
toda la escena.
52
• Prueba 2.
Dos personas que se cruzan. Se genera el 20% de las partículas aleatoriamente y el
80% restante del modo habitual (ruleta). El valor de la desviación en el proceso de
Difusión es de 0,04.
Imagen 15. Resultado de la prueba realizada con 2 personas.
Se puede apreciar que al generarse partículas aleatorias constantemente, se localizan
todos los móviles que haya en la imagen o los que pudieran aparecer.
53
• Prueba 3.
Un ratón de ordenador que se mueve de izquierda a derecha. El valor de la
desviación en el proceso de Difusión es de 0,04.
Imagen 16. Resultado de la prueba realizada con 1 ratón de ordenador.
Como se puede observar las partículas se concentran alrededor del ratón de
ordenador durante la secuencia, sufriendo retrasos debidos a la captura de imágenes.
54
Capítulo 5
Conclusiones
5.1 Conclusiones finales.
Se ha presentado una implementación del Filtro de Partículas aplicado al seguimiento
de objetos en secuencias de imágenes 2D. Para ello se ha aprendido a usar el entorno de
programación Matlab, así como su lenguaje. Se han coleccionado los datos necesarios
para evaluar el funcionamiento del filtro en diferentes condiciones. Se han aprendido
técnicas de tratamiento de imágenes. Se ha creado el núcleo del Filtro de Partículas Básico y
las funciones complementarias en Matlab. Se ha probado el funcionamiento del Filtro de
Partículas en secuencias de imágenes 1D para uno y varios objetos y se ha probado el
funcionamiento del Filtro de Partículas en secuencias de imágenes reales. Por último y para
mejorar el rendimiento del filtro, se ha propuesto una técnica de generación de partículas
que distribuye de manera aleatoria un porcentaje de ellas, dejando al resto evolucionar
del modo habitual.
Aunque no era objetivo fundamental de este proyecto, se ha conseguido implementar
una aplicación del Filtro de Partículas mediante técnicas de Visión Artificial que es capaz
de seguir uno o varios móviles en secuencias de imágenes en tiempo real.
Para esto se ha aprendido a usar el entorno de programación Visual C++. Se ha
programado la aplicación del Filtro de Partículas en C++ y posteriormente se ha
incorporado a la plantilla TRIPOD.
Se ha probado que la implementación del Filtro de Partículas se comporta
óptimamente en las condiciones experimentales, como son: uno o varios móviles en
escena, condiciones de oclusión, movimientos no plano paralelos, etc.
55
Los resultados obtenidos así como los vídeos generados son potencialmente útiles
para la enseñanza del Filtro de Partículas y serán aplicables a la docencia en Visión
Artificial.
Además del trabajo visible , fue necesario un periodo de aprendizaje para la captura y
procesamiento de imágenes. En esta etapa se aprendieron las funciones básicas para el
tratamiento de imágenes, teniendo que estudiar la documentación previa e implementar
programas de prueba.
Se ha empleado una metodología de programación estructurada y modular, tratando
en todo momento de facilitar las posibles extensiones de la aplicación.
Como posibles extensiones o futuras líneas de trabajo se propone:
♦ El uso de algoritmos de agrupamiento, como el Algoritmo de las K-medias o
el Algoritmo de Agrupamiento secuencial para el cálculo de estimadores del filtro
en secuencias en las que aparecen más de un objeto. Estos algoritmos de
agrupamiento (clustering) se basan en la búsqueda iterativa del centro de los
agrupamientos existentes.
♦ Averiguar porque las partículas sufren un retraso respecto al móvil que siguen.
Se cree que es un defecto del modelo de movimiento, pero no se ha detectado.
♦ Se pueden introducir mejoras para conseguir que la aplicación en Tiempo Real
no se tenga que ejecutar sólo bajo el sistema operativo Windows 98.
♦ En un futuro a corto plazo, las empresas de seguridad privada proporcionarán
a sus clientes imágenes en tiempo real de sus viviendas como rutina añadida de
vigilancia. Puede resultar muy interesante realizar experimentos aplicados a estos
sistemas de seguridad incorporando el núcleo del Filtro de Partículas
implementado.
♦ Puede ser interesante para el alumnado conocer de manera intuitiva este tipo
de técnicas de seguimiento, que por su rigor teórico dificultan su asimilación. Por
tanto, se propone como línea de futuro trabajo la creación de una interfaz gráfica
interactiva que facilite el uso y aprendizaje del Filtro de Partículas en asignaturas de
Visión Artificial.
56
GLOSARIO. Al Azar o Aleatorio: Son todos aquellos eventos fortuitos o productos de la suerte. Aleatoriamente: Actividades o métodos producidos o llevados a cabo simulando un comportamiento al azar. Desviación típica: La raíz cuadrada de la varianza. Distribución de probabilidad: Una función de x que permite asociar los valores de x con sus respectivas probabilidades, en alguna forma. Distribución Normal: Se la conoce, más comúnmente, como la "campana de Gauss". Una distribución de variable continua cuya función de densidad es:
2
21
21
−
−
= σµ
πσ
x
eGaussiana
Siendo x el valor de la variable, m la media y s la desviación típica. Distribución Normal estandar (tipificada): Distribución normal expresada en desvíos tipificados. Su función de densidad es:
2
21
21 Ζ−
= eGaussianaπ
Espacio muestral: Conjunto de todos los resultados posibles de un experimento aleatorio. Experimento aleatorio: Cualquier acto que implique la observación de los valores de una variable aleatoria. Frame: Marco, cuadro. Contenido de una pantalla de datos o su espacio de almacenamiento equivalente. Filtro: Procedimiento que estudia o examina un conjunto o flujo de información recibida desde un sistema o proceso dinámico.
57
Filtro Condensation: CONditional DENSity propagATION. Mantenimiento de una distribución de probabilidad multimodal asociada a los objetos en movimiento. Función bimodal: La moda aparece en la distribución dos veces en zonas distintas. Función de distribución: En general, la función de distribución de una variable aleatoria continua X es el modelo teórico de la curva de frecuencias acumuladas que se espera obtener para X , y debe cumplir, evidentemente, estas propiedades: ser creciente y tomar valores de 0 a 1. Si X es una variable aleatoria continua con valores en un intervalo [ ]ba, , entonces ( )xF será la probabilidad de que la variable X tome valores entre a y x . ( ) ( )xXaxF ≤≤Ρ= .
Es decir, la función de distribución F(x) es una primitiva de la función de densidad f(x), o dicho de otra forma, la función de densidad es la derivada de la función de distribución. Indica la probabilidad de que la variable aleatoria continua X sea menor o igual que un valor dado, es decir, proporciona la probabilidad acumulada hasta un determinado valor de la variable. Función de Densidad de Probabilidad: Dada una Función Distribución ( )xF ligada a la variable aleatoria X , se define la Función de Densidad de Probabilidad como:
( ) ( )dxxdFxf =
Una función ( )xfy = es una función de densidad de una variable aleatoria continua si cumple las siguientes condiciones:
- Es positiva en todo su dominio: ( ) .10 ≤≤ xf
- Permite obtener ( )bXap ≤≤ como área bajo la gráfica entre ax = y
bx = . Verifica la fórmula ( )bXap ≤≤ = ( )∫b
adttf .
- El área total entre la gráfica de f y el eje X vale ( ) 11 =∫ dttf .
- Permite obtener ( )xF como área bajo la gráfica hasta el valor x
La Función de Densidad de Probabilidad, al igual que la Función de Distribución, contiene toda la información probabilística de una variable aleatoria, y, por consiguiente, del experimento asociado a ella.
( ) =xF
1 si ax <
( )dttfx
a∫ si bxa ≤≤
1 si bx <
( ) ( ) ( )dttfxXpxFx
∫∞−
=≤=
( ) ( ) ( )xFdxxdFxf ′==
58
Función multimodal: La moda aparece en la distribución varias veces. Función de probabilidad: Una forma de expresar una distribución de probabilidad de una variable discreta. Para cada valor de x provee directamente el de p(x). Función unimodal: La distribución tiene una única moda. Media aritmética: Es el centro de gravedad de la distribución. Moda: Es el valor de la variable donde la función de probabilidad (en el caso discreto) o de la función de densidad (en el caso continuo) alcanza su máximo. La denotaremos con Mo. Muestra: Subconjunto de la población (o espacio muestral)a partir del cual se pretende realizar inferencias respecto a ella. Muestreo: Es el proceso de seleccionar las unidades de una población del interés de modo que estudiando la muestra poder generalizar bastante nuestros resultados de nuevo a la población de quien fueron elegidas. Muestreo aleatorio simple: Muestreo en el que todas las muestras tienen la misma probabilidad de ser seleccionadas y en el que las unidades obtenidas a lo largo del muestreo se devuelven a la población. Muestreo en el que la muestra aleatoria está formada por n variables aleatorias independientes e idénticamente distribuidas a la variable aleatoria poblacional. Sinónimo de Muestreo aleatorio con reemplazamiento. Muestreo de probabilidad: Es cualquier método de muestreo que utilice una cierta forma de selección al azar. Para tener un método al azar de la selección, usted debe instalar cierto proceso o procedimiento que asegure que las diversas unidades en su población tienen probabilidades iguales de ser elegido. Números aleatorios o pseudoaleatorios: Se trata de números que se obtienen a partir de un número denominado semilla, y la aplicación reiterada de una fórmula, obteniéndose una secuencia {x0, x1, x2, ... xn} de números que imitan los valores de una variable uniformemente distribuida en el intervalo [0, 1). Pixel: (Picture Element). Puntos. Unidad de medida que expresa la capacidad de la pantalla de un monitor. El número de píxeles o puntos de una pantalla informa sobre su resolución. Cada imagen es el resultado de la luminiscencia de una determinada configuración y cantidad de estos puntos. Un punto que representa la menor unidad gráfica de medida de
59
una pantalla. Un píxel depende de la pantalla; es decir, las dimensiones de los elementos de la pantalla varían con la pantalla y la resolución. Probabilidad: Grado con que un acontecimiento puede producirse. Proporción entre el número de casos favorables a que ocurra un proceso en una población respecto al número total de casos posibles. Simulación: Es el proceso de diseñar un modelo de un sistema real y llevar a cabo experiencias con el mismo con la finalidad de comprender el comportamiento del sistema o de evaluar nuevas estrategias, dentro de los límites impuestos por un criterio o conjunto de ellos, para el funcionamiento del sistema. Simulación de Monte Carlo: La simulación de Monte Carlo fue creada para resolver integrales que no se pueden resolver por métodos analíticos, para resolver estas integrales se usaron números aleatorios. Posteriormente se utilizó para cualquier esquema que emplee números aleatorios, usando variables aleatorias con distribuciones de probabilidad conocidas, el cual es usado para resolver ciertos problemas estocásticos y determinísticos, donde el tiempo no juega un papel importante. Por lo tanto es un proceso computacional que utiliza números aleatorios para derivar una salida, por lo que en vez de tener entradas con puntos dados, se asignan distribuciones de probabilidad a alguna o todas las variables de entrada. Esto generará una distribución de probabilidad para una salida después de una corrida de la simulación. Sistemas continuos: Las variables (atributos de los elementos del sistema) sufren cambios suaves. Sistemas discretos: Cambios en variables de forma instantánea, en pasos discretos. Variable: Una magnitud cuya medida puede cambiar de valor. Variable aleatoria (estocástica o probabilística): Es aquella cuyo valor sólo puede saberse con exactitud una vez observado. Variable discreta: Es aquella que en un intervalo cualquiera de su dominio puede asumir solamente una cantidad finita o infinita numerable de valores distintos. Varianza: Medida de dispersión definida por la expresión:
( )nxx
s ∑ −=
22
60
Bibliografía.
[1] M. Isard and A.Blake, “CONDENSATION: Conditional density propagation for visual tracking”, International Journal of Computer Vision, vol. 29, no.1, pp.5–28, 1998. [2] M. Isard and A.Blake, “ICONDENSATION: Unifying low-level and high-level tracking in a stochastic framework”, in Proc. 5th European Conference on Computer Vision, vol.1, pp.893-908, Freiburg, Germany, June 1998. [3] J.MacCormick and A.Blake, “Probabilistic exclusion and partitioned sampling for multiple object tracking”, International Journal of Computer Vision, vol. 39, no. 1, pp.57-71, 2000. [4] Dmitry N. Zotkin, Remani Duraiswami, Larry S. Davis, “Joint Audio-Visual Tracking Using Particle Filters”, Eurasip Journal on Applied Signal Processing 2002. [5] N. J. Gordon, D. J. Samond, A. F. M. Smith, “Novel Approach to Nonlinear/NonGaussian Bayesian State Estimation”, IEE Proc.-F, vol. 140, no. 2, 1993. [6] G. Kitagawa, “Non-Gaussian state space modeling of nonstationary time series”, Journal of the American Statistical Association, Vol.82, No.400, 1032-63, 1987. [7] M. West, “Modeling wih mixtures. Bayesian Statistics”, 4, 503-524, 1992. [8] M. Isard, A. Blake, “Contour tracking by Stochastic Propagation of Conditional density”, in Proc. 4th European Conf. Computer Vision, 1996, pp. 343-356. [9] G.Kitagawa, “Monte Carlo Filter and Smoother for Non-Gaussian Nonlinear State Space Modes”, J. Comput. Graph. Statistics, vol. 5, pp. 1-25, 1996. [10] J. Carpenter, P. Clifford, P.Fernhead, “An improved particle filter for non-linear problems”. Technical report, Dept. of Statistics, University of Oxford, 1997. [11] M. K. Pitt, N. Shephard, “Filtering Via Simulation: Auxiliary Particle Filters”, Journal of the American Statistical Association, vol. 94, no. 446, pp. 590-599, 1999. [12] J.F Vélez, A.B Moreno, Á. Sánchez y J.L Esteban, “Visión por Computador”, Universidad Rey Juan Carlos, 2003. [13] Morris H. Degroot, “Probabilidad y Estadística”, Segunda Ed. Addison Wesley Iberoamericana. [14] www.geocities.com/txmetsb/sistemas-de-tiempo-real.htm.