31
Tracking de Objetos en Video mediante Filtro de Kalman Monograf´ ıa de Tratamiento Estad´ ıstico de Se˜ nales Paula Martinez [email protected] 5 de Abril de 2010

Tracking de Objetos en Video mediante Filtro de Kalmaniie.fing.edu.uy/ense/asign/tes/monografias/2009/paula_martinez/... · Tracking de Objetos en Video mediante Filtro de Kalman

  • Upload
    doduong

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Tracking de Objetos en Videomediante Filtro de Kalman

Monografıa de Tratamiento Estadıstico deSenales

Paula [email protected]

5 de Abril de 2010

Indice

1. Introduccion 2

2. Inicializacion 32.1. Metodo propuesto en el artıculo . . . . . . . . . . . . . . . . . 3

2.1.1. Diferencia de frames . . . . . . . . . . . . . . . . . . . 32.1.2. Morfologıa matematica . . . . . . . . . . . . . . . . . . 4

2.2. Discusion e Implementacion . . . . . . . . . . . . . . . . . . . 6

3. Extraccion de caracterısticas 73.1. Algoritmo K-means . . . . . . . . . . . . . . . . . . . . . . . . 73.2. Color Dominante . . . . . . . . . . . . . . . . . . . . . . . . . 8

4. Filtro de Kalman 9

5. Construccion del modelo de movimiento 11

6. Deteccion del objeto en movimiento 12

7. Area de busqueda en el frame 147.1. Metodo propuesto en el artıculo . . . . . . . . . . . . . . . . . 147.2. Discusion e implementacion . . . . . . . . . . . . . . . . . . . 14

8. Tasa de oclusion 18

9. Resultados 20

1

1. Introduccion

En este trabajo el objetivo es lograr el tracking o seguimiento de objetosen movimiento en videos utilizando filtros de Kalman.

El seguimiento de objetos en movimiento en video tiene diferentes apli-caciones por ejemplo en vigilancia, en servicios agregados en la televisacionde deportes, en sistemas de manejo de trafico.

El tracking en videos de aplicaciones reales tiene varias posibles dificul-tades, pueden haber oclusiones parciales o totales, los objetos pueden moversemuy rapido, pueden cambiar de direccion y velocidad de forma abrupta. Lostres problemas fundamentales a resolver son la segmentacion inicial del ob-jeto en movimiento, la deteccion del objeto en movimiento, y el tracking delobjetivo cuando se produce una oclusion.

En este proyecto estudie un artıculo en particular [1], y basandome eneste implemente un algoritmo de tracking de objetos. En esta monografıa sepresentan las bases teoricas utilizadas para realizar este proyecto, y ademasun analisis crıtico del artıculo estudiado. Tambien se analizan diferentes posi-bilidades para mejorar la performance y robustez del algoritmo. Finalmentese exponen los resultados y conclusiones.

En la figura (1) se observa un esquema del metodo propuesto. Vemosque se divide en una parte de inicializacion, y en otra que consiste en unfiltro adaptivo de Kalman. Este filtro de Kalman le envıa su prediccion de laposicion del objeto al sistema de deteccion del objeto, y este le realimenta alfiltro de Kalman la posicion que detecto y un valor que depende del area delobjetivo detectada, la tasa de oclusion, ese valor se utiliza para actualizar loserrores de estimacion del filtro de Kalman. Todos estos bloques son analizadosen las secciones siguientes.

Figura 1: Estructura del algoritmo propuesto en el artıculo

2

2. Inicializacion

Para lograr seguir a un objeto en un video el primer problema que debe-mos resolver es la segmentacion inicial del objeto, esto nos va a servir paraidentificar caracterısticas que nos permitan detectar la presencia del objetoobjetivo en los frames siguientes. Se puede caracterizar un objeto de difer-entes formas, por ejemplo por su color principal, su textura, sus bordes, suforma, etcetera. En esta seccion vamos a estudiar el metodo de segmentacioninicial que propone el artıculo, tambien se analizara su viabilidad.

2.1. Metodo propuesto en el artıculo

Para realizar la segmentacion inicial del objeto en movimiento el artıcu-lo propone realizar dos pasos, primero realizar la diferencia entre dos framespara encontrar los objetos que se mueven, y luego aplicar morfologıa matematicapara obtener el objeto de interes segmentado.

2.1.1. Diferencia de frames

El algoritmo comienza pidiendole al usuario que indique cual es el objetoobjetivo, el usuario ingresa un punto del frame en donde se encuentra elobjeto a seguir. Al realizar la diferencia entre frames, se utiliza el puntoseleccionado para buscar en un radio de este pixel y no en toda la imagen,se propone utilizar un radio de 50 puntos alrededor. Se define entonces lafuncion FD(x,y,t), con el objetivo de encontrar los pixeles que cambiaronde lugar en dos frames consecutivos, si para una posicion en particular elvalor de un frame al siguiente diferente quiere decir que hay un objeto queesta moviendose en esa posicion. Por eso se utiliza un umbral, para decidir siese pixel tiene un cambio significativo en su valor como para ser consideradoparte de un objeto que se esta moviendo.

FD(x, y, t) =

{0 si |f(x, y, t+ 1)− f(x, y, t)| ≤ umbral1 en otro caso

(1)

En donde la funcion f(x,y,t) es el valor del pixel en la posicion (x,y) en el framet. Los frames viven es el espacio de color RGB, este tiene tres dimensiones,o tres valores por pixel, un representa la cantidad de rojo presente (R), otrola cantidad de verde (G) y otro la de azul (B).

f(x, y, t) = {Rx,y,t, Gx,y,t, Bx,y,t} (2)

Como en este espacio de color para formar el color del pixel se ponderasde igual forma los tres canales (R, G, y B) entonces ponderan de igual for-ma tambien a la hora de realizar la diferencia entre pixeles propuesta en la

3

ecuacion (1).

|f(x, y, t+ 1)− f(x, y, t)| =√(Rx,y,t+1 −Rx,y,t)

2 + (Gx,y,t+1 −Gx,y,t)2 + (Bx,y,t+1 −Bx,y,t)

2 (3)

Cuando esta diferencia da menor a un cierto umbral entonces consideramosque el cambio de color en ese pixel fue muy chico, por lo que pertenece a algoestatico, el fondo. Si el umbral es superado quiere decir que en esa posicionde ese frame se encuentra un objeto que se esta moviendo.

Para que sea un metodo de segmentacion mas robusto se utilizan tres framesconsecutivos, para esto se realizan dos diferencias y se intersectan. Tenemosentonces que se definen los puntos del los objetos que se mueven en el framet utilizando diferencias entre los frames t-1, t, y t+1, de la siguiente forma.

MR(x, y, t) = FD(x, y, t− 1) ∩ FD(x, y, t) (4)

El resultado de esta operacion es la deteccion de todos los pixeles que cam-biaron su color en tres frames consecutivos.

2.1.2. Morfologıa matematica

Como seguramente la diferencia de frames detecte varios objetos que semueven, y no solamente el que queremos seguir, se tiene que hacer algo parareducir el MRS a los pixeles que pertenecen al objeto objetivo, y descartarlos pixeles que pertenecen a otros objetos que estan en movimiento. Paralograrlo se aplica morfologıa matematica[2]. Vemos en la iteracion un metodoque hace crecer regiones conectadas a partir de un punto de la region.

MOk = (MOk−1 ⊕ SE) ∩MRS, k = 1, 2, 3, ..., (5)

MO0 es el punto inicial elegido al comienzo del algoritmo por el usuario.MOk es la region conectada del objeto que se mueve en la iteracion k.⊕ es el operador dilatacion, y SE es el elemento estructurante.

Para entender esta operacion, primero definimos la operacion dilatacion,que es una de las operaciones fundamentales en el procesamiento morfologi-co de imagenes. Para realizar la dilatacion se considera un elemento estruc-turante (SE), que es equivalente al nucleo de convolucion en un filtro lineal.Movemos esta mascara por toda la imagen, seteando a 1 los pixeles del fondoque son vecinos a algun pixel del objeto que estamos haciendo crecer. Para

4

esto se utiliza un elemento estructurante de 3x3, y con todos sus elementosde valor 1.

Entonces, se comienza la iteracion con un solo pixel con valor 1 en laimagen, el que fue introducido por el usuario. A partir de ese pixel, queesta en el objeto que se mueve, empieza a crecer una region conectada querepresenta el objeto que se mueve objetivo. En la figura 1 podemos apreciarcomo crece esta region.

Figura 2: Crecimiento de una region

En la figura 2.a vemos en negro los puntos del objeto objetivo, y en azullos puntos de los otros objetos que se mueven. En las sucesivas iteracionesvemos como va creciendo la region en gris a partir del punto inicial. En elcaso en el que el punto inicial no pertenezca a ningun objeto en movimientodetectado con la diferencia de frames, se asigna como punto inicial al puntoque pertenezca al objeto en movimiento mas cercano al ingresado por elusuario. La iteracion termina cuando toda una region conectada es extraıda

Con esto se logra desechar los pıxeles de MRS que pertenecen a otrosobjetos que se mueven pero que no son del objeto a seguir.

Luego de tener una imagen binaria con un solo objeto que se mueveencontramos el problema de que la region del objeto no puede tener agujeros,como la region que se observa en la figura 2.f, ya que esos pixeles tambienforman parte del objetivo y a la hora de extraer las caracterısticas principales

5

de ese objeto esos pixeles van a aportar informacion util. Para solucionar estoen el artıculo se propone utilizar el metodo de “region filling”. El cual consisteen una iteracion como en la operacion anterior.

ORk = (ORk−1 ⊕ SE) ∩MOCn , k = 1, 2, 3, ..., (6)

Como en el caso anterior ⊕ es el operador dilatacion, y OR0 = MO0. El

elemento estructurante en este caso es distinto, SE =

0 1 01 1 10 1 0

Y MOC

n es el complemento de MOn. Esta iteracion finaliza cuando

ORm = ORm−1 (7)

En el artıculo lo que se afirma es que luego de aplicar esta operacion mor-fologica se obtienen regiones rellenas, que al unirlas con resulta en una regionrellena a la cual aplicarle el algoritmo que extrae las caracterısticas princi-pales del objeto que se mueve.

2.2. Discusion e Implementacion

Al analizar mas en detalle el funcionamiento de lo propuesto en el artıculoencontramos que el metodo para segmentar inicialmente el objeto objetivotiene un problema fundamental.

El algoritmo de region filling funciona correctamente solo si las regionesque intenta rellenar son cerradas. Esto quiere decir que MOn deberıa teneruna region que ademas de estar conectada sea cerrada. En los pasos ante-riores se logra obtener una region conectada por medio del primer paso demorfologıa pero nada asegura que la region sea cerrada. Lo que ocurre leaplicamos region filling a una region no cerrada es que el algoritmo termi-na rellenando toda la imagen. Ademas en el caso de que tengamos mas deun hueco necesitarıamos mas de un punto inicial, uno en cada hueco, pararellenar todos los agujeros.

Implementando esto se comprobo que generalmente las regiones detec-tadas no son cerradas, y el algoritmo de region filling termina rellenandotoda la imagen. Lo cual no nos sirve, por lo cual se tuvo que optar por tomarotro camino para la segmentacion inicial.

Para la deteccion inicial y extraccion de caracterısticas entonces se gen-eran mascaras binarias que son luego cargadas en Matlab. Este metodo noes automatico, hay otras opciones, pero como no era el objetivo del trabajodecidı enfocarme en el algoritmo de tracking.

6

3. Extraccion de caracterısticas

Luego de tener el objeto segmentado podemos pasar a extraer caracterısti-cas que lo definan y nos permitan identificarlo en los frames posteriores. Eneste caso se utiliza el color dominante del objeto. Este se extrae de los pixelesdel frame identificados como pertenecientes al objeto a seguir mediante unalgoritmo de K-means.

3.1. Algoritmo K-means

K-means[3] es un algorıtmo que separa los datos en clusters. Lo que hacees dividir un grupo de datos en conjuntos disjuntos o clusters, la idea es queun punto es mas parecido en algun sentido a los puntos de su cluster que alos de los demas clusters. Todos los puntos son asignados a algun cluster ycada cluster se puede caracterizar por el punto promedio de los puntos delcluster.

El algoritmo K-means es un algoritmo iterativo, comienza con un conjuntode k puntos de referencia, que son usualmente elegidos por el usuario deforma arbitraria. Primero el conjunto de datos es repartido en k grupos,cada punto se asigna al grupo con el punto de referencia mas cercano aese punto. Luego en cada iteracion se utilizan los centroides como puntosde referencia, estos centroides se van actualizando todo el tiempo, en unaiteracion todos los puntos son recorridos y asignados al cluster con el punto dereferencia mas cercano a el, entonces durante una iteracion cuando un puntocambia de cluster los centroides son actualizados inmediatamente dentro deesa iteracion, no se espera a terminar de recorrer el resto de los puntos. Esteproceso puede observarse en la figura 3.

7

Figura 3: Ejemplo algoritmo K-means

3.2. Color Dominante

Se realiza la extraccion del color dominante en el espacio de colores RGB,como este espacio es un cubo tri-dimensional en el que las tres dimensionespueden ser pesadas de la misma forma es un espacio conveniente para aplicarK-means. Si utilizaramos HSI por ejemplo tendrıamos que tener en cuentaque la dimension H de ese espacio es cıclica. Se aplica entonces K-means alos puntos encontrados como pertenecientes al objeto objetivo en ese frame,separandolos en 5 grupos o clusters, se clasifican los pixeles por su color. Enel artıculo se sugiere utilizar K=5, numero encontrado experimentalmente.Una vez que tenemos los 5 grupos se define el color promedio de cada grupoen el frame t como MCk(t). Luego se define el color dominante como el colorpromedio del grupo de mayor densidad, o menor suma de distancias de lospuntos del cluster al punto medio.

DomC(t) =

MCk(t)

∣∣∣∣∣∣mın

∑(x,y)∈Ck

√(x− xCk

)2 + (y − yCk)2

NCk

, k = 1, ..., 5

(8)

NCkes la cantidad de puntos en el cluster k(

xCk, yCk

)es el centro de masa del cluster k

8

Ck = {(xi, yi, f(xi, yi, t)) |f(xi, yi, t) = {Rxi,yi,t, Gxi,yi,t, Bxi,yi,t} , i = 1, ..., NCk}

Vemos en la ecuacion (8) que se realiza la suma de las distancias al centrode masa de todos los puntos que pertenecen al cluster, y luego se lo divide porNCk

que es la cantidad de puntos que tiene ese cluster, con lo que pondera lasuma de distancias con el inverso de la cantidad de puntos, lo que es logicoya que si no quedarıan en desventaja clusters que tengan muchos puntos.

Entonces queda definido el color dominante del objeto a seguir DomCen la ecuacion (8) y este valor se va a utilizar para detectar el objeto en losframes siguientes.

4. Filtro de Kalman

El filtro de Kalman[4] es una herramienta ampliamente utilizada. El mod-elo matematico de este filtro se define en terminos de variables de estado, yademas la solucion se calcula de forma recursiva. Usualmente el filtro deKalman se describe por la ecuacion del proceso (System state model) y porla ecuacion de medida (Measurement model).Ecuacion del proceso:

s(t) = O(t− 1)s(t− 1) + w(t) (9)

Ecuacion de medida:z(t) = H(t)s(t) + v(t) (10)

Donde O(t− 1) es la matriz de transicion de estados, y H(t) es la matriz demedida. w(t) y v(t) son ruido gaussiano blanco de media nula y:

E{w(n)wH(k)

}=

{Q(n) si k = n0 si k 6= n

E{v(n)vH(k)

}=

{R(n) si k = n0 si k 6= n

(11)

Q y R son las matrices de covarianza de w(t) y v(t) respectivamente.El filtro de Kalman tiene dos pasos, el paso de prediccion y el paso de cor-reccion.En el paso de prediccion se proyecta hacia adelante el estado actual obteniendoseuna prediccion a priori del estado s−(t). En el paso de correccion se incorpo-ra la medida real al estado estimado a priori y se obtiene una estimacion a

9

posteriori mejorada s+(t).Tenemos que:

s+(t) = s−(t) +K(t)(z(t)−H(t)s−(t)

)(12)

Donde K(t) es la ganancia de Kalman y se describe como:

K(t) =P−(t)HT (t)

H(t)P−(t)HT (t) +R(t)(13)

En donde P−(t) es la matriz de covarianza del error de estimacion a priori.

P−(t) = E[e−(t)e−(t)T

](14)

Donde e−(t) = s(t)− s−(t) es el error de estimacion a priori.Ademas tambien se define la matriz de covarianza del error de estimacion aposteriori P+(t) como:

P+(t) = E[e+(t)e+(t)T

](15)

En donde e+(t) = s(t)− s+(t) es el error de estimacion a posteriori.Se computan de forma recursiva los pasos de prediccion y de correccion.

Paso de prediccion:

s−(t) = O(t− 1)s+(t− 1) (16)

P−(t) = O(t− 1)P+(t− 1)O(t− 1)T +Q(t− 1) (17)

Paso de correccion:

K(t) = P−(t)HT (t)(H(t)P−(t)HT (t) +R(t)

)−1(18)

s+(t) = s−(t) +K(t)(z(t)−H(t)s−(t)

)(19)

P+(t) = (I −K(t)H(t))P−(t) (20)

Si observamos la ecuacion (18) el error de medicion R(t) y la gananciade Kalman crecen de forma inversa. Vemos que cuando R(t) es chico, laganancia de Kalman es mas grande y por ende pondera con mas importanciaa la medida real confiando menos en la prediccion. En cambio cuando R(t)

10

se va haciendo mas grande la ganancia se va haciendo cada vez mas chica,lo que produce que el algoritmo confıe poco en la medida real y confıe cadavez mas en la prediccion.

Por este motivo es que el filtro de Kalman va a tener buenos resultados sipodemos decidir en que confiar, en la prediccion o en la medida. Para lograrel tracking de objetos en videos el artıculo propone desarrollar un modelode objetos en movimiento para usar como ecuacion del proceso, y utilizala deteccion de objetos en movimiento como medida real para el paso decorreccion.

5. Construccion del modelo de movimiento

En este trabajo la ecuacion del proceso o el sistema en variables de estadodel filtro de Kalman es el modelo de movimiento de los objetos. Para modelarse toma en cuenta que el intervalo de tiempo entre dos frames consecutivoses muy pequeno, entonces se supone que se puede considerar uniforme lavelocidad entre esos dos frames. Al tener velocidad constante entonces pode-mos usar la ecuacion de movimiento rectilıneo uniforme x = x0 + v.∆t, siadaptamos esta ecuacion a nuestro problema usando d(t) como la posicionen el instante de tiempo t, reconocemos que para el instante t x = d(t), yx0 = d(t− 1). Con lo que encontramos que:

d(t) = d(t− 1) + v.∆t (21)

Como la velocidad es uniforme la podemos calcular como v = ∆x∆t

, la calcu-lamos en el intervalo anterior de la siguiente forma:

d(t− 1) = d(t− 2) + v.∆t

→ v = d(t−1)−d(t−2)∆t

(22)

Sustituyendo (22) en (21) encontramos la ecuacion del modelo de movimientode objetos en videos:

d(t) = d(t− 1) + (d(t− 1)− d(t− 2)) (23)

La ecuacion (23) es en una dimension, pero vale tanto para movimientoshorizontales como verticales, por lo que en realidad el movimiento de objetoslo rigen las siguientes ecuaciones:

dx(t) = dx(t− 1) + (dx(t− 1)− dx(t− 2))dy(t) = dy(t− 1) + (dy(t− 1)− dy(t− 2))

(24)

11

Ahora queremos encontrar el modelo en variables de estado para utilizar enel filtro de Kalman, que se rija por esas ecuaciones de movimiento.

Analizando en una dimension encontramos que utilizando un vector deestado de dimension 2 de la forma:

s(t) =

[d(t)d(t− 1)

](25)

Podemos encontrar la matriz de transicion de estados:

O(t− 1) = O =

(2 −11 0

)(26)

Con lo que la ecuacion del proceso para el filtro de Kalman queda:

s(t) = O(t− 1)s(t− 1) + w(t) =

(2 −11 0

)[d(t− 1)d(t− 2)

]︸ ︷︷ ︸

s(t−1)

+

[w(t)

0

](27)

Como hay dos dimensiones en el problema utilizo dos filtros de Kalman unopara cada dimension. Ambos con el mismo modelo de variables de estado ymisma ecuacion de medida.

Ademas para completar el modelo del filtro de Kalman se define la ecuacionde medida como:

z(t) = d(t) y s(t) =

[d(t)

d(t− 1)

]→ z(t) = d(t) = H(t)s(t) + v(t) =

[1 0

]s(t) + v(t)

→ H(t) =[

1 0] (28)

6. Deteccion del objeto en movimiento

En esta etapa del algoritmo el objetivo es encontrar un metodo apropia-do para detectar la posicion del objeto. Ya de etapas anteriores tenemos lacaracterıstica distintiva del objeto a seguir, el color dominante. Este valorpertenece a R3, y esta en el espacio de colores RGB. Para detectar el objetolo primero es convertir el color dominante del espacio de color RGB al es-pacio HSI, esto se hace para poder analizar las tres componentes del colordominante de forma independiente y tener una deteccion mas robusta frentea los cambios de iluminacion. En RGB las tres componentes estan correla-cionadas, ya que las tres estan correlacionadas con la cantidad de luz quellega al objeto, en cambio en HSI, la unica componente dependiente de lailuminacion es la I (Intensity).

12

Figura 4: (a) Espacio de color RGB, (b) Espacio de color HSI

Utilizando el espacio HSI entonces podemos definir la funcion que en-cuentra los pixeles del objeto objetivo en el frame (matching function):

HSIMatching(ref, cur) =

|ref H − cur H| < th H &

1 si |ref S − cur S| < th S &|ref I − cur I| < th I

0 en otro caso

(29)

ref son los valores en HSI de referencia de los frames anteriores, el color dom-inante encontrado previamente, y cur es el valor del pixel que se esta anal-izando convertido al espacio HSI.th H, th S, y th I son umbrales (thresholds), uno para cada canal de color.

Entonces esta funcion les asigna valor “1” a los pixeles que difieren menosque un umbral con respecto al color de referencia en los tres canales de color,y como “0” a los pixeles que difieren mas que un umbral en alguno de lostres canales por lo menos, estos pixeles se considera que son diferentes allos del objeto en movimiento, son pertenecientes al fondo. Mientras que lospixeles a los que se les asigno “1” son pixeles pertenecientes al objetivo. Estafuncion entonces al ser aplicada a toda el area de busqueda encuentra el areadel objeto objetivo en un frame.

Es necesario, ademas de saber cual es el area del objeto en movimiento,encontrar alguna forma de representar la posicion del objeto. Con este finse utiliza el centro del area encontrada ocupada por el objeto. Se defineentonces el menor rectangulo que encierra el area encontrada por la funcionde matcheo por sus lados izquierdo, derecho, superior e inferior, se los llamaleft, right, top, y bottom respectivamente. Con estos valores encontramos el

13

centro:

(cx, cy) =

(left+ right

2,top+ bottom

2

)(30)

Estos valores van a ser los realimentados al filtro de Kalman para computarel paso de correccion. (z(t) en la ecuacion (19).

7. Area de busqueda en el frame

Ahora con los modelos del proceso y de medicion del filtro de Kalmanya resueltos, hay que considerar otros problemas, por ejemplo como ajustarel area de busqueda para la funcion de matcheo, ya que un objeto puedecambiar de tamano al moverse alejandose o acercandose a la camara, o comomanejar los casos en los que hay oclusion.

7.1. Metodo propuesto en el artıculo

En el artıculo, para definir cual es el area de busqueda de pixeles delobjeto en cada frame, se propone utilizar el area del objeto encontrada enel frame anterior y extenderla una cierta cantidad de pixeles dependientedel movimiento del objeto en los dos frames previos. Se define el area debusqueda del frame actual como:

search left = (pre left− (d(t− 1)− d(t− 2)))search top = (pre top− (d(t− 1)− d(t− 2)))search right = (pre right+ (d(t− 1)− d(t− 2)))search bottom = (pre bottom+ (d(t− 1)− d(t− 2)))

(31)

En donde search left, search top, search right, y search bottom son los la-dos del rectangulo de busqueda.pre left, pre top, pre right, y pre bottom son los lados del rectangulo maschico que cubre todos los pixeles del objeto encontrados en el frame anterior.d(t− 1) y d(t− 2) son las posiciones en los dos frames previos.

Ademas el centro del area de busqueda se posiciona en la posicion predichapor el filtro de Kalman.

7.2. Discusion e implementacion

Al analizar las ecuaciones propuestas (31) y ver que ocurre con el area debusqueda se encuentran problemas.

14

Se toma en cuenta una sola dimension, por ejemplo la horizontal, ya queen la otra dimension va a ocurrir lo mismo por ser analogas las ecuaciones.

Entonces vemos de que el comportamiento cambia dependiendo del signode β = (dx(t− 1)− dx(t− 2)), ya que:

search left = (pre left− (dx(t− 1)− dx(t− 2)))search right = (pre right+ (dx(t− 1)− dx(t− 2)))

(32)

En la figura (5) vemos que ocurre cuando el signo de β es positivo (El objetoesta moviendose hacia la derecha ya quedx(t− 1)− dx(t− 2) > 0→ dx(t− 1) > dx(t− 2)).

Figura 5: Comportamiento del area de busqueda con un movimiento hori-zontal hacia la derecha

Vemos que se le resta β al lado previo izquierdo y se le suma β al ladoprevio derecho. Si el objeto se mueve por varios frames hacia la derecha, el

15

area de busqueda empieza a crecer hacia la izquierda y la derecha, llegandoa tener tamano exageradamente grande. Los nuevos lados se indican en lıneapunteada en la figura. El tamano excesivo no solo produce un costo computa-cional mas elevado, sino que tambien confunde al algoritmo, ya que como sedetecta el objetivo mediante el color, al buscar en areas tan grandes es prob-able que se encuentren mas pixeles en el frame que tienen color parecido alobjeto que seguimos pero que no pertenecen a el. Esto genera a la vez queel rectangulo que se encuentra en el frame actual para describir el area delobjeto pueda ser considerablemente mas grande en el caso de encontrar unpunto aislado lejano al objeto a seguir pero con el mismo color. En el casoque ocurra eso, en el siguiente frame, al extender el rectangulo en donde seencontro el objeto en el frame anterior para encontrar el area de busqueda,vamos a estar extendiendo un rectangulo mucho mas grande que el objeto,generando un area de busqueda mas grande todavıa.

En el caso en que β sea menor a cero, el objeto moviendose hacia laizquierda, se observa en la figura (6) lo que ocurre.

16

Figura 6: Comportamiento del area de busqueda con un movimiento hori-zontal hacia la izquierda

Vemos que al lado izquierdo se le resta β, que es negativo, lo que terminaproduciendo un valor de lado izquierdo mayor al previo. En el lado derecho sele suma un numero negativo, por lo que el lado derecho tiene un valor menoral previo. Vemos entonces que el area de busqueda se reduce con cada frameque el objeto se mueve hacia la izquierda. En la figura con lınea punteadase indican los nuevos lados izquierdo y derecho. Si el objeto se mueve porvarios frames consecutivos a la izquierda, terminamos teniendo un area debusqueda nula.

Por los motivos expuestos decidı que no era una buena opcion implemen-tar el algoritmo de tracking de objetos utilizando el metodo propuesto porel artıculo para actualizar el tamano del area de busqueda.La solucion implementada tiene un area de busqueda fija, esta area es elmenor rectangulo que cubre todos los pixeles del objeto en el frame inicial,

17

mas una cantidad arbitraria de pixeles (en los casos que probe era suficientecon 5 o 10) hacia los cuatro lados. Esta area se centra en la posicion quepredice el filtro de Kalman. Ademas el tamano de busqueda se actualizacada 10 frames, en el caso de que no se este produciendo oclusion, en laactualizacion se calcula de la misma forma que en el frame inicial, el areadetectada del objeto en movimiento mas algunos pixeles hacia los costados.Con las mismas condiciones, cada 10 frames y si no hay oclusion, se actualizael color dominante del objetivo. El nuevo color dominante se calcula de lamisma forma que en el frame inicial, aplicandole K-means a todos los pixe-les identificados como pertenecientes al objeto en movimiento, y eligiendo elcolor promedio del cluster mas denso.En la figura (7) vemos un esquema de la estructura de la deteccion del objetoen movimiento implementada.

Figura 7: Esquema de la estructura de la deteccion del objeto en movimientoimplementada

8. Tasa de oclusion

Como ya habıa mencionado, pueden ocurrir oclusiones parciales o to-tales del objeto que seguimos. Una oclusion se da cuando nuestro objetivodesaparece del video porque pasa por detras de objetos que lo tapan, la ob-struccion puede ser total o parcial, por eso hablamos de diferentes niveles

18

de oclusion, y es por esto que es necesario definir la tasa de oclusion, comomedida de cuanta parte del objeto que seguimos esta efectivamente presenteen un determinado frame.La tasa de oclusion se calcula en funcion del area del objeto en ese frame conrespecto al frame anterior, se define de la siguiente forma:

α(t) =

{ ∣∣∣ PN(t)PN(t−1)

− 1∣∣∣ si

∣∣∣ PN(t)PN(t−1)

− 1∣∣∣ ≤ 1

1 en otro caso(33)

En donde PN(t) es la cantidad de pixeles detectados del objeto en el framet, y PN(t− 1) es la cantidad de pixeles detectados en el frame t− 1.

Esta tasa de oclusion se utiliza para ajustar automaticamente los erroresde estimacion en el filtro de Kalman.Por un lado tenemos que el error de medida es proporcional a la tasa deoclusion. Y ademas ya habıamos visto que la ganancia de Kalman K(t) y elerror de medida R(t) crecen de forma inversa. En vista de estas relacionesse utiliza la tasa de oclusion para ajustar los errores de estimacion del filtro,si la oclusion es menor a un umbral, entonces se setea R(t) = α(t) y el er-ror de prediccion como 1 − α(t). En el caso que la oclusion no sea menor aun umbral, lo que esta ocurriendo es que el objeto que seguimos tiene unagran parte de su area tapada por algun otro objeto que esta por enfrente, esrazonable entonces que se confıe en la prediccion y no en la medida, por loque queremos que K(t) sea cero. Esto se logra seteando R(t) como infinito yQ(t− 1) como cero cuando la oclusion es grande.Con esto se logra confiar mas en la medida que en la prediccion cuando nohay oclusion o esta es pequena. Y al mismo tiempo confıa completamente enla prediccion cuando la oclusion es grande. El algoritmo automaticamente seva adaptando y eligiendo en que es mas seguro confiar.En la figura (8) se encuentra un esquema de como se ajustan los errores deestimacion del filtro de Kalman.

19

Figura 8: Esquema de como se ajustan los errores de estimacion del filtrode Kalman

9. Resultados

Ahora se presentan algunos de los resultados obtenidos.En la figura (9) vemos un ejemplo en donde una persona se mueve a velocidadconstante en lınea recta, vemos que el algoritmo logra seguirla de formacorrecta, los recuadros rojos que rodean al torso de la persona son el area delobjeto en movimiento encontrados por el algoritmo de tracking.

20

Figura 9: Ejemplo de movimiento uniforme rectilıneo.

21

Figura 10: Ejemplo con movimiento en todas las direcciones.

Vemos en el ejemplo de la figura (10) un rectangulo azul moviendose deforma circular, superpuesto encontramos el rectangulo rojo dibujado por elalgoritmo, comprobando que el tracking de objetos en movimiento puedeseguir a objetos moviendose en cualquier direccion.

En las figuras (11) y (12) vemos una persona acercandose a la camara,lo que produce una mayor area, mayor numero de pixeles, pertenecientes alobjeto en movimiento a medida que transcurren el tiempo. Vemos como elarea de busqueda se adapta al crecimiento del tamano del objetivo y lograseguirlo de forma correcta. En el frame 5 la region detectada tiene un altode 74 pixeles, mientras que en el frames 58 tiene 92 pixeles de largo en ladireccion vertical.

22

Figura 11: Ejemplo de cambio de tamano del objetivo

23

Figura 12: Ejemplo de cambio de tamano del objetivo

24

En las figuras (13), (14), y (15) se observa un ejemplo de oclusion, vemosque el algoritmo realiza el tracking correctamente. Por ejemplo vemos que enlos frames 46 y 47 la persona esta oculta, pero la deteccion es correcta, yaque el algoritmo al no encontrar pixeles pertenecientes al objetivo confıa enla prediccion del filtro de Kalman.

En la figura (16) tenemos un ejemplo en el que hay un cambio abruptoen la velocidad con la que se mueve el objetivo. Los resultados son buenos,la persona es seguida de forma correcta pese al cambio de velocidad.

Luego de observar todos estos ejemplos podemos concluir que el algoritmode tracking funciona, y ademas se adapta de forma correcta a diversas situa-ciones, como ser oclusiones, cambios de velocidad, y cambios en el tamanodel objetivo.

Los videos utilizados son de tamano 240x320 pixeles por frame en losejemplo de movimiento rectilıneo uniforme (Figura 9) y cambio de velocidad(Figura 16). Los tiempos de procesamiento son muy chicos para estos videos.Por ejemplo para el de movimiento rectilıneo uniforme el tiempo de proce-samiento fue de 6 segundos, mientras que el video tiene una duracion de 5segundos. Un 25 % del tiempo es utilizado en escribir los frames nuevos con elrecuadro rojo, por lo que sin realizar esa escritura, que sirve a los efectos demostrar los resultados pero no es necesario para algun eventual procesamien-to del objeto en movimiento, podrıamos hablar de un tracking en tiempo real.En el resto de los ejemplo el tamano de los frames es de 480x640 pixeles, alser imagenes mas grande el tiempo de procesamiento se incrementa un poco.Por ejemplo en el video de la figuras (11) y (12), que tiene una duracion de4 segundo el tiempo de procesamiento fue de 12 segundos.

25

Figura 13: Ejemplo de oclusion

26

Figura 14: Ejemplo de oclusion

27

Figura 15: Ejemplo de oclusion

28

Figura 16: Ejemplo de cambio de velocidad abrupto

29

Referencias

[1] Shiuh-Ku Weng, Chung-Ming Kuo, Shu-Kang Tu, Video object track-ing using adaptive Kalman filter, J. Vis. Commun. Image R. 17 (2006)1190-1208

[2] R.C. Gonzalez, R.E. Woods, Digital Image Processing, Prentice-Hall,Englewood Cliffs, NJ, 2002.

[3] Vance Faber, Clustering and the continuous K-means algorithm, LosAlamos Science (22) (1994) 138-144.

[4] Monson H. Hayes, Statistical Digital Signal Processing and Modeling,John Wiley & Sons, Inc., 1996.

30