lunes, 21 de junio de 2010

De vuelta a las estadística y las matemáticas ...

Como primer paso para implementar este método, hay que tratar la fase de Inicialización de los parámetros de la función de probabilidad, en este caso, la media y la varianza.

En primer lugar, señalar que al tomar como referencia que vamos a trabajar con frames representados mediate el espacio de color RGB, consideramos que cada canal es estadísticamente independiente, por lo tanto habra que estimar, para cada pixel, una pdf por separado para cada uno de los canales. Una vez estimada cada Gaussiana marginal, se obtendrá la pdf del pixel como producto de éstas. Esto se traducirá en que a cada pixel, habrá que asociarle una estructura de datos que contemple una media y una varianza por cada canal RGB:




El método requiere un periodo de inicialización, en el cual no se realizarán extracciones de objetos de primer plano, sino que se usará para inicializar los parámetros (las distribuciones Gaussianas que modelarán el fondo).

La inicialización es una de las ambigüedades que presenta el algoritmo. En muchos casos se limita a tomar como media el valor del pixel del primer frame. Esto podría resultar problemático, si el primer frame presentara elementos que no corresponden al fondo.

En nuestro caso, vamos a realizar el proceso de una forma adecuada, calculando los valores media y varianza a partir de los frames de entrenamiento.

En el caso de la media, la fórmula esta clara:



La varianza, mide la dispersión o desviación respecto de la media y es igual a la suma de los cuadrados de las desviaciones individuales, dividida por el número de observaciones:



Esto supone un problema, ya que habría que realizar una primera pasada por los frames de entrenamiento para estimar la media de las Gaussianas, y una segunda pasada para estimar las varianzas, ya que utilizan el valor de la media calculada anteriormente.

Esto presenta dos posibilidades:

1- Almacenar en una estructura en memoria (podríamos usar una cola como en el método anterior) los frames del periodo de entrenamiento, para poder hacer este segundo barrido. Esto sería poco eficiente.

2- Encontrar una manera para calcular todos los parámetros en un solo barrido.


Centrándome en la segunda solución, y después de intentar despejar las variables de la fórmula de la varianza para hacerlo en una iteración ( recordando que el cuadrado de la diferencia no es lo mismo que la diferencia de los cuadrados ;) ), en unos apuntes de estadística di con la fórmula de la varianza valida para estos propositos:



Asi pues haremos iterativamente, el sumatorio de los cuadrados de valores de cada pixel de los frames de entrenamiento, para finalmente dividirlo entre el numero de frames y restarle el cuadrado de la media.

Como muestra del resultado, adjunto un par de videos, donde se ha adaptado el interfaz para, dado un archivo de video, muestren en el primer caso , la imagen creada como imagen de media, y en el segundo caso la imagen con los valores de las varianzas. La imagen se mostrará una vez alcanzado el numero de frames de entrenamiento, en el ejemplo, el frame 60.




No hay comentarios:

Publicar un comentario