En este documento se presentan los algoritmos de estimación del primer plano de la escena implementados y probados el trabajo de investigación realizado por en Ingeniero Francisco Carlos Calderón.

Todos los algoritmos tratados fueron usados sobre un algoritmo de acumulación por lineas y pensados para su uso sobre vías de tráfico vehicular para compilar el código de estos ejemplos puede usar el manual de opencv en linux presente en esta wiki, [opencv en linux 2010].

Algoritmos basados en media:

los algoritmos basados en media son de uso común en la estimación del primer plano consisten básicamente en la acumulación de la media encontrada pixel a pixel y acumulada en una imagen que se asemeja al fondo de la escena. después, a partir de esta imagen acumulada de medias se extrae un primer plano restando en valor absoluto la imagen acumulada con el cuadro de video, para después aplicar algún tipo de umbralización a la resta.

Media usando umbral por movimiento en la acumulación y umbral adaptativo en la resta.

A partir de la acumulación de media se procede a determinar cuando es ideal acumular, para el caso especifico de una vía, es mejor acumular cuando los vehículos se encuentren moviendo en la escena y no cuando estos estén quietos, esto por que si están quietos, y son acumulados a la media, el color de los vehículos afecta la ocurrencia de color del suelo de la vía, dando como resultado un primer plano deficiente y con cambios, por lo que en el trabajo se planteó el uso de el algoritmo presentado en [Rosin 97 ], e implementado en [OpenCV ] como una alternativa para detectar movimiento en la escena. con la detección de este, solo se procede a actualizar cuando el movimiento supera a un umbral definido por el usuario dado por la suma de todos los pixeles de movimiento en la imagen. también se usó el algoritmo de umbralización descrito en
[Rosin 97 ] para hacer la umbralización de la imagen restada de la media.
A continuación se muestra un ejemplo del resultado de la estimación de primer plano usando media sobre RGB.
ejemplo_media.png
ejemplo de estimacion de primer plano usando media
Código:


Media con umbrales adaptativos en la acumulación y la resta normalizando los componentes RGB.

Este algoritmo es muy similar al anterior solo que la acumulación se hace a partir de la imagen en RGB normalizado. es decir cumpliendo sobre cada componente:
R=(r)/(r+g+b)
G=(g)/(r+g+b)
B=(b)/(r+g+b)

Donde las mayúsculas corresponden a las matrices de componentes normalizadas y las minúsculas a las matrices por componentes de la imagen original.
ejemplo_media_normalizada.png
Ejemplo de primer plano usando media normalizada
tienen un alto contraste los vehículos de color, pero los que no cuentan con un color muy marcado no son extraidos por la umbralización adaptativa.
Código:


Estimación de primer plano usando codebook.

Usando codebook se implementaron 3 pruebas haciendo variaciones en el algoritmo

codebook tradicional.

Este algoritmo descrito en [Kyungnam 05 ] y documentado [Bradski 08 ] e implementado en las librerias de OpenCV, fue implementado en diferentes versiones, cada una de estas variando sus parámetros y entradas.
como un punto de inicio se usó el modelo básico de codebook explicado en [Bradski 08 ] usando los primeros 600 cuadros de video para actualizar el modelo y usando los parámetros descritos en el mismo ejemplo suministrado en la libreria de Opencv.
A continuación se muestra un ejemplo de este algoritmo:

ejemplo_codebook_tradicional.png
Ejemplo de Codebook tradicional

Código

Codebooks alternantes en HSV.

Tiene el problema de no poder reaccionar a cambios de iluminación fuertes y de no ser adaptable en el tiempo, lo que hace que se den falsas detecciones como en la figura anterior.
una mejora a este algoritmo se da cuando se añaden varios modelos de estos codebook alternantes en el tiempo, de tal manera que cuando uno se está actualizando el otro está siendo usado para estimar el primer plano, y viceversa. También se usó para esta segunda prueba el espacio de color HSV de tal manera que se pudieran separar mejor la componentes de color del video, ya que el espacio de color HSV representa mejor el color que el espacio espacio Ycrcb que es con el que originalmente trabaja codebook y es usado para lidiar con cambios en la iluminación.
ejemplo_codebook_alternantes_HSV.png
Código


Codebooks alternantes en HSV con umbral de movimiento.

Para buscar los cuadros de video y en este caso las lineas en los cuales es bueno actualizar el modelo de fondo, para no presentar el error explicado ya con la media, se usó el algoritmo de detección de cambio documentado en [Rosin 97 ], e implementado en [OpenCV ] como una alternativa para detectar movimiento en la escena. con la detección de este movimiento, solo se procede a actualizar cuando el movimiento supera a un umbral definido por el usuario dado por la suma de todos los pixeles de movimiento en la imagen o norma L1.
ejemplo_codebook_alternantes_HSV_movimiento.png
Estimación de primer plano usando codebooks alternantes y umbral de movimientos
Código


Algoritmo de FGDStatmodel

Este algoritmo descrito por primera vez en [Liyuan 2003] en base a [Rosin 98], está implementado en las librerias de OpenCV, en la implementaciṕon de este algoritmo se usó una etapa previa de estimación del movimiento para actualizar que funcionan de la misma manera que en los algoritmos anteriormente usados, este fue el algoritmo que mejores resultados mostró en pruebas.
los parámetros de ste algoritmo fueron encontrados partiendo de los valores calculados en el trabajo [Liyuan 2003] y modificados para su uso en el algoritmo de acumulación por lineas:
ejemplo_FGDStatmodel.png
primer plano usando FGDStatmodel
Código