27.11.07

El mundo de las particulas (4)

La ultima de las operaciones básicas sobre partículas se llama resampling (¿remuestreo?), esto viene de la idea de que una distribución de probabilidad p(x) se puede representar de muchas formas, pero algunas son mas eficientes que otras, esto tiene su definición y explicación matemática (que me salto así porque si).

La idea clave es que para que una representacion sea eficiente la mayoría de las partículas deberían tener pesos iguales, y el resampling es una forma de conseguirlo.

Supongamos que tenemos un conjunto de partículas S, después de aplicar el resampling obtendremos otro S' que sera como sigue:



S' sera otro conjunto de partículas con:

con probabilidad


Donde escoger es independiente cada vez.

Tambien se puede hacer resampling determinista, es decir que el número de partículas escogidas es directamente proporcional al peso de las antiguas sin ninguna aleatoriedad, eso presenta algún problema matemático con el que como no nos encontraremos haremos como que no importa.

Supongamos que tenemos un conjunto de partículas S como de costumbre y vamos a definir uno S' después de hacer un resampling determinista, antes tenemos que definir los pesos acumulados como sigue:



Entonces obtendremos un S' cuyas partículas serán:

donde es el j mas pequeño tal que


Mas gráficamente:


El resultado de la operación seria algo similar a esto:

1 comentario:

Long Long dijo...

hola, estoy haciendo un proyecto de tracking de jugadores de futbol... mis pasos son
1) background y foreground detection
2) eliminar pixels de la sombra
3) extraer blobs, encontrar su varicentro para ser TRACKINGeado.
para suavizar el error de tracking (pto1 -> pto2) uso el filtro alpha beta (estos dos valores son contantes), que es una version simplificada de Kalman (este usa la ganancia automatica, realimentada)...

todo funciona bien si no hay oclusion...

pq 2 blobs al fusionarse en 1 blob, el cual me proporcina 1 pto de varicentro, èste es un pto erroneo como valor de medida para el tracking... por lo cual en vez de usar 1 pto(el varicentro) hago este metodo:
1) posicion_tiempo_1, rectangulo(tiempo_1)
2) posicion_estimada_tiempo_2, rectangulo(tiempo_1)

entonces tengo 2 rectangulos del mismo tamaño situado en 2 ptos diferentes en una imagen, con estas informaciones puedo construir un rectanglo a parti de la union de estos dos, hago un optical flow en este rectangulo grande, que me proporciona la orientacion de estos ptos caracteristicos, calculo la media de la orientacion de estos ptos caracteristicos(que viene siendo el vector de velocidad)...

bien, ahora tenemos:
el vector de velocidad de optical flow y el vector de velocidad estimada por el filtro alpha beta (el kalman simplificado) hago la media de estos dos vectores --> vector velocidad final del varicentro del rectangulo... y seguir hacer su tracking... problema: funciona 80%

me di cuenta de que esta idea es parecida a la del filtro de particulas, no sé cómo, encontre tu pdf de PFC en una pagina y luego en la otra pagina (este blog) que explica la misma cosa, con las mismas anotaciones... asi que tu eres el del PFC: javier... creo que voy a leer mucho y mucho sobre tus publicaciones, ya que las informaciones(filtro de particulas) dadas en el wikipedia es muy teorico, xDD

una pregunta: como haces para que las particulas no caidas en el objeto de tracking moverse hacia el objeto??

PD: todavia no termine de leer "el mundo de particulas (3,4)"

espero tus respuestas, creo que estoy un poco deseperado por mi proyecto...

saludos Javier! ;)