algoritmos de segmentaci´on por...

16
Cap´ ıtulo 4 Algoritmos de segmentaci´ on por color Obtener una aplicaci´ on capaz de detectar y seguir objetos a partir del color de los mismos de manera robusta en exteriores se antoja una tarea muy complicada en ausencia de un controlador que estabilice las condiciones de iluminaci´ on para todo fotograma. Una vez solventado el problema del con- trol del contraste-brillo de la imagen, el siguiente paso es la implementaci´on de un algoritmo robusto pero a la vez eficiente de detecci´on y seguimiento de objetos para testarlo. Dicho algoritmo incluir´ a la segmentaci´on de la imagen basada en color y forma. Entre los diferentes caminos posibles a seguir para la semgentaci´on basada en color, se han seleccionado dos soluciones: una soluci´on basada en la combinaci´ on de colores a partir de la aplicaci´ on del algoritmo de Estimaci´on-Maximizaci´ on y otra basada en la correspondencia del objetivo con un patr´ on histograma en Hue y la aplicaci´ on de sendas m´ascaras en Saturaci´ on y Luminancia. La caracterizaci´on del objeto en for- ma y posici´on se realizar´ a como ya se ha explicado mediante la extracci´on de blobs. Para la implementaci´on de los algoritmos de detecci´on y seguimiento que aqu´ ı se presentan, al igual que ocurre con la librer´ ıa de Blobs, se han utilizado funciones incluidas dentro de la librer´ ıa de c´odigo libre OpenCV. El primer paso dentro de la detecci´on y el seguimiento de un objeto es la segmentaci´on de la imagen para aislar en ella a todos los conjuntos de ıxeles candidatos a ser el objeto a seguir. Esta segmentaci´on se realizar´ aa partir de la probabilidad de correspondencia de dichos conjuntos de p´ ıxeles con una serie de patrones previamente entrenados. Tras ello se extraen los Blobs correspondientes a cada uno de estos conujuntos candidatos a objetos para filtrarlos seg´ un su forma localizando as´ ı el objeto deseado. 29

Upload: others

Post on 29-Dec-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Capıtulo 4

Algoritmos de segmentacion

por color

Obtener una aplicacion capaz de detectar y seguir objetos a partir delcolor de los mismos de manera robusta en exteriores se antoja una tarea muycomplicada en ausencia de un controlador que estabilice las condiciones deiluminacion para todo fotograma. Una vez solventado el problema del con-trol del contraste-brillo de la imagen, el siguiente paso es la implementacionde un algoritmo robusto pero a la vez eficiente de deteccion y seguimiento deobjetos para testarlo. Dicho algoritmo incluira la segmentacion de la imagenbasada en color y forma. Entre los diferentes caminos posibles a seguir parala semgentacion basada en color, se han seleccionado dos soluciones: unasolucion basada en la combinacion de colores a partir de la aplicacion delalgoritmo de Estimacion-Maximizacion y otra basada en la correspondenciadel objetivo con un patron histograma en Hue y la aplicacion de sendasmascaras en Saturacion y Luminancia. La caracterizacion del objeto en for-ma y posicion se realizara como ya se ha explicado mediante la extraccion deblobs. Para la implementacion de los algoritmos de deteccion y seguimientoque aquı se presentan, al igual que ocurre con la librerıa de Blobs, se hanutilizado funciones incluidas dentro de la librerıa de codigo libre OpenCV.

El primer paso dentro de la deteccion y el seguimiento de un objeto esla segmentacion de la imagen para aislar en ella a todos los conjuntos depıxeles candidatos a ser el objeto a seguir. Esta segmentacion se realizara apartir de la probabilidad de correspondencia de dichos conjuntos de pıxelescon una serie de patrones previamente entrenados. Tras ello se extraen losBlobs correspondientes a cada uno de estos conujuntos candidatos a objetospara filtrarlos segun su forma localizando ası el objeto deseado.

29

Page 2: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

4.1. Segmentacion basada en algoritmo de

Estimacion-Maximizacion en RGB

La segmentacion de la imagen segun patrones de color aquı propuestaconsiste en la comparacion de los distintos grupos de pıxeles que componenla imagen con una serie de patrones previamente entrenados. A partir dedicha comparacion se obtiene la probabilidad de pertenencia a cada uno delos patrones (o de no pertenencia a ninguno de ellos), obteniendo de estaforma una matriz de las mismas dimensiones que la imagen con valores deprobabilidad entre 0 y 1.0 susceptible de ser transformada en una imagen enescala de grises y segmentada a partir de un cierto umbral. De esta maneraaquellos conjuntos de pıxeles cuya combinacion de colores sea mas similar alos patrones entrenados (tengan mayor probabilidad) seran aquellos conside-rados como candidatos a ser el objeto a seguir. Para el entrenamiento de lospatrones y posterior comparacion de las diferentes combinaciones de colo-res se utilizara por una parte el algoritmo de Estimacion-Maximizacion queademas actualiza los patrones entrenados de manera adaptativa y por otrolos histogramas correspondientes a los conjuntos de pıxeles procesados. Ensu implementacion practica se hara uso de las correspondientes herramientasde la librerıa OpenCV.

4.1.1. El algoritmo E-M

El algoritmo E-M (Expectation-Maximization) estima los parametros deuna funcion de densidad de probabilidad multivariable en forma de mez-cla de distribuciones gausianas con un numero total de mezclas concreto.Considerese un conjunto de vectores de caracterısticas {x1, x2, ..., xN} : N

vectores de un espacio Euclıdeo d-dimensional de una mezcla gausianas:

p(x; ak, Sk, πk) =m∑

k=1

πkpk(x), πk > 0,

m∑

k=1

πk = 1,

pk = ϕ(x; ak, Sk) =1

(2π)d/2|Sk|1/2e{−

12(x−ak)T S−1

k(x−ak)} (4.1)

donde m es el numero de mezclas, pk es la densidad de probabilidad dela distribucion normal de media ak y matriz de covarianza Sk y πk es elpeso de la mezcla k − esima. Dado el numero de mezclas m y las muestras{xi, i = 1...N} el algoritmo encuentra la maxima probabilidad estimada(MLE) del conjunto de los parametros de la mezcla, ak, Sk y πk:

30

Page 3: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

L(x, θ) = log p(x, θ) =N∑

i=1

log

(

m∑

k=1

πkpk(x)

)

−→ maxθǫΘ

,

Θ =

{

(ak, Sk, πk) : ak ǫ Rd, Sk = ST

k > 0, Sk ǫ Rdxd, πk ≥ 0,

m∑

k=1

πk = 1

}

.

(4.2)

El algoritmo E-M es un proceso iterativo. Cada iteracion incluye dospasos. En el primero (Expectation-step o E-step), encontramos una proba-bilidad pi,k (denominada ai,k en la formula siguiente) de la muestra #i depertenecer a la mezcla #k usando las estimaciones de los parametros de lamezcla disponibles actualmente:

αki =πkϕ(x; ak, Sk)

∑mj=1 πjϕ(x; aj , Sj)

(4.3)

En el segundo paso (Maximization-step o M-step) las estimaciones de losparametros de la mezcla son refinados usando las probabilidades calculadas:

πk =1

N

N∑

i=1

αki, ak =

∑Ni=1 αkixi∑N

i=1 αki

, Sk =

∑Ni=1 αki(xi − ak)(xi − ak)

T

∑Ni=1 αki

(4.4)

Alternativamente, el algoritmo puede empezar con este ultimo paso cuan-do se pueden proporcionar los valores para pk,i. Otra alternativa, cuando lospk,i son desconocidos, es usar un algoritmo de segmentacion mas simple parasegmentar las muestras de entrada y ası obtener las pk,i iniciales. A menudo(y en ML) el algoritmo ”k-means“ es usado para tal efecto.

Una de las principales cosas con las que el algoritmo E-M deberıa tra-tar es con el amplio numero de parametros a estimar. La mayorıa de losparametros se asientan en matrices de covarianza que son elementos d × d

cada una (donde d es la caracterıstica de dimensionalidad espacial). Sinembargo, en muchos problemas practicos, las matrices de covarianza estanmuy proximas a la diagonalidad, e incluso a µk ∗ I, donde I es la matrizidentidad y µk es dependiente del parametro de “escala” de la mezcla. Deesta forma, un esquema de computacion robusto podrıa ser empezar con lasrestricciones mas duras posibles en las matrices de covarianza para despuesusar los parametros estimados como entrada para un problema de optimi-zacion menos restrictivo (a menudo una matriz de covarianza diagonal es yauna aproximacion lo suficientemente buena).

31

Page 4: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

El calculo de este algoritmo se realizara a partir de las funciones de laclase cvEM de la librerıa OpenCV, basados a su vez en [42], entrenandolacon tres mezclas. Ademas se ha realizado una modificacion a dicha clase parapermitir imponer un umbral de probabilidad de pertenencia a las mezclas apartir del cual se considera que el cluster o conjunto de pıxeles analizado nopertenece a ninguna de las mezclas.

4.1.2. Calculo del histograma

Una vez se ha procesado la imagen con el algoritmo E-M, el siguientepaso en la segmentacion de la misma y que nos permitira hacer un primerfiltrado de los diferentes clusters obtenidos sera el calculo y comparacion delhistograma de cada uno de ellos. En este caso el histograma tendra tantosvalores como mezclas hayan sido computadas (3 en nuestro caso) mas unocorrespondiente a los pıxeles fuera de estas tres mezclas. La proporcion entrelos diferentes valores de dicho histograma comparados con el histogramapatron previamente entrenado, descartara todos aquellos clusters que estenfuera de un determinado umbral de parecido.

Tanto el calculo del histograma como la comparacion con el histogramapatron se realiza a partir de las funciones que OpenCV ofrece para ello,destacando cvCreateHist, cvCalcHist y cvCompareHist.

4.1.3. Implementacion practica

La implementacion de los algoritmos de deteccion y seguimiento propues-tos se ha llevado a cabo en lenguaje C++ bajo entorno Linux. Haciendo usode las diferentes herramientas ya mencionadas se ha desarrollado una aplica-cion capaz de entrenarse a partir de una imagen y una mascara para despuesdetectar y seguir el objeto entrenado a traves de las imagenes de entrada(en formato RGB).

Entrenamiento

El entrenamiento se realiza, como ya se ha dicho, a partir de dos imagenes.La primera serıa una imagen RGB estandar en la que aparece el objeto aseguir. La segunda serıa una imagen binaria del mismo tamano que esta conel fondo en negro y el area que abarca el objeto en la primera imagen enblanco.

Esta dupla de imagenes se toma como entrada del algoritmo E-M, detec-tando los valores de los diferentes parametros de las gausianas representantes

32

Page 5: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

Figura 4.1: Ejemplo de imagen de entrenamiento y su mascara

de las tres mezclas de colores que aparezcan en el objeto (enmarcado por lamascara) y almacenandolos en un archivo de texto como patrones. A par-tir de estos valores, se calcula el histograma en el area del objeto tomandocomo valores a computar las 3 mezclas y un cuarto valor de no pertenenciaa ninguna de ellas y almacenando su proporcion tambien como patron deentrenamiento. Por ultimo a partir de la mascara se realiza un calculo de losvalores de forma del objeto a priori (orientacion y proporcion de los ejes dela elipse derivada del blob correspondiente, vease el capıtulo 3 seccion 3.1).

El entrenamiento queda almacenado en una serie de archivos de texto(uno para las mezclas, uno para el histograma y otro para los parametros deforma del Blob) y se puede cargar en cualquier momento. De esta manerano es necesario entrenar la aplicacion cada vez que se ejecuta siempre quesigamos al mismo objeto.

Funcionamiento

La aplicacion comienza intentando entrenarse a partir de las dos imagenescorrespondientes. En caso de no encontrarse dichas imagenes, se intentacargar los respectivos archivos de configuracion, dando un error en casode tampoco encontrarse. Tras realizar el entrenamiento, se empiezan a leerimagenes y se comienza a ejecutar el algoritmo de deteccion de objetos.En caso de localizar el objeto buscado, se comienza a ejecutar el algoritmode seguimiento hasta que este se pierda, momento en el cual se vuelve aejecutar el algoritmo de deteccion. En ambos casos, el resultado obtenidosera la posicion del centro del objeto y el rectangulo que lo enmarca en elplano imagen.

El algoritmo de deteccion de objetos comienza por liberar de la memoriatodas las imagenes y blobs almacenados en la estructura (si los hubiera).Tras ello, ejecuta el algoritmo E-M tomando como patrones las mezclas car-

33

Page 6: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

Figura 4.2: Diagrama de flujo del detector y seguidor de objetos por color

Figura 4.3: Ejemplo de imagen de mezcla y de probabilidad

gadas del archivo correspondiente obteniendo como resultado dos imagenes:una con la distribucion de las mezclas resultante y la otra con la probabi-lidad de pertenencia a alguna de las mezclas de cada uno de los pıxeles. Apartir de esta ultima imagen se realiza la extraccion de blobs, incluyendoen la primera lista todos aquellos clusters de mas de 50 pıxeles que supe-ran en probabilidad un cierto umbral (lo cual sobre la imagen en escala degrises, debido al escalado, significarıa estar por debajo de un cierto umbralde intensidad). A partir de la primera imagen se descartan todos aquellosclusters cuyos histogramas de 4 parametros no estan cercanos en proporcional patron entrenado. Por ultimo se filtran los blobs restantes segun la dis-tancia de su vector de caracterısticas de forma (orientacion y proporcion delos ejes de su elipse) al vector patron del correspondiente archivo de texto.El blob cuyo vector de caracterısticas este a una distancia menor del patronsera considerado el objeto buscado. En caso de resultar mas de un blob oninguno el resultado sera nulo.

34

Page 7: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

El algoritmo de seguimiento del objeto, una vez localizado, es similar alde deteccion, con algunas diferencias. Estas diferencias vienen dadas porla necesidad de buscar el maximo rendimiento del procesador de maneraque la tasa de procesamiento sea tal que el objeto no se pierda y por lanecesidad de adaptarse a los cambios que va sufriendo la forma del objetoa lo largo del tiempo. Este algoritmo de seguimiento comienza, al igualque el de deteccion, ejecutando el algoritmo E-M pero calculando solo lasprobabilidades de pertenencia. En este caso se procesa ademas solo unaregion de interes de la imagen, region en la que se prevee que el objetose encuentre segun su posicion anterior. Se obvia tambien (por tener yapreviamente localizado el objeto) el procesamiento y la comparacion de loshistogramas, pasando directamente a la extraccion y filtrado de blobs. Denuevo, observamos una gran diferencia en este paso, al tomar como patronde forma del Blob el vector de caracterısticas del blob anterior (detectadoo seguido, puesto que si no se ejecutarıa el algoritmo de deteccion) y no elpatron entrenado. Esto es ası puesto que se busca la adaptacion del algoritmoa posibles cambios progresivos de orientacion o de forma del objeto anterior.Ademas se anade una caracterıstica mas al vector: el area, computando ası eltamano del objeto buscando tambien la adaptacion al mismo.

Resultados

Los resultados obtenidos durante la aplicacion del algoritmo propuesto auna baterıa de imagenes puede verse en las figuras 4.3 y 4.4. En la figura4.3 se ha producido la deteccion del objeto, mientras que en la posteriorbaterıa de imagenes 4.4 se puede observar el funcionamiento del algoritmode seguimiento. El circulo verde de las imagenes senala el centro del obje-to encontrado segun el algoritmo de seguimiento, mientras que si lo que seproduce es una deteccion el cırculo es de color rojo y si el objeto se pierde,evidentemente, no habra cırculo. Como puede verse en las imagenes resul-tantes, el algoritmo propuesto funciona de manera robusta para objetos decolores que resaltan lo sufiente sobre el fondo y siempre que no se produzcancambios bruscos de forma del objeto. De hecho vemos como ante cambiosprogresivos de forma e incluso tamano del objeto el algoritmo es capaz deseguirlo perfectamente. Por otra parte se alcanza una tasa de imagenes decasi 10 fps en seguimiento (en la figura 4.4 se presentan solo una de cadadiez imagenes), en un PC de penultima generacion leyendo y escribiendolas imagenes en disco, cifra mas que aceptable para un algoritmo de estascaracterısticas. Finalmente tenemos que tener en cuenta que esta baterıa setomo en interiores, con condiciones de iluminacion estacionarias.

En posteriores experimentos realizados en exteriores se comprueba queel algoritmo se pierde con muchisima mas facilidad, haciendose necesaria la

35

Page 8: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

Figura 4.4: Resultado de la fase de seguimiento del algoritmo

36

Page 9: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

combinacion de este con el control de la iluminacion propuesto.

4.2. Segmentacion basada en correspondencia

con histograma en Hue sobre imagen HSL

Como alternativa al algoritmo de segmentacion propuesto en la seccionanterior, muy efectivo pero poco eficiente computacionalmente, se presentauna tecnica de segmentacion basada en el espacio de color HSL. La principalventaja que ofrece dicho espacio es la posibilidad de trabajar sobre histogra-mas en Hue, que caracteriza el color y es bastante robusto ante los posiblescambios de brillo. Ademas de buscar la correspondencia de histogramas enHue con un patron previamente entrenado, se aplicaran sendas mascarasen los planos de saturacion y de luminancia para descartar posibles falsospositivos originados en la naturaleza del espacio de color.

4.2.1. El espacio de color HSL

El modelo HSL (del ingles Hue, Saturation, Lightness, esto es, Tonalidad,Saturacion, Luminancia), tambien llamado HSI (Hue, Saturation, Intensity),define un modelo de color en terminos de sus componentes constituyentes.El modelo HSL se representa graficamente como un cono doble, un doble he-xagono o una esfera. Los dos vertices en el modelo HSL se corresponden conel blanco y el negro, el angulo se corresponde con la tonalidad, la distanciaal eje con la saturacion y la distancia al eje blanco-negro se corresponde a laluminancia. Como el modelo HSV, es una deformacion no lineal del espaciode color RGB.

La tonalidad o Hue captura la informacion intrınseca al color.

La saturacion es la diferencia entre un color y su propio brillo.

La luminancia refleja la percepcion subjetiva del brillo para los huma-nos.

HSL es similar al modelo HSV pero refleja mejor la nocion intuitiva de lasaturacion y la luminancia como dos parametros independientes, y por tantoes un modelo mas adecuado para nuestra aplicacion porque es simetrico aleje luz-oscuridad, lo que no sucede con el espacio HSV. Esto significa que:

En HSL, la componente de la saturacion va desde el completamentesaturado hasta el gris equivalente, mientras que en HSV, con V al

37

Page 10: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

Figura 4.5: Representacion grafica del espacio de color HSL en forma decono doble

maximo, va desde el color saturado hasta el blanco, lo que no es muyintuitivo.

La luminancia en HSL siempre va desde el negro hasta el blanco pa-sando por la tonalidad deseada, mientras que en HSV la componenteV se queda a mitad camino, entre el negro y la tonalidad escogida.

En las aplicaciones de tratamiento de color, los modelos HSV y HSLse representan como una area lineal o circular para la tonalidad y la sa-turacion y un area bidimensional, como un cuadrado o triangulo, para elvalor/luminancia. En esta representacion las diferencias entre HSV y HSLson irrelevantes.

4.2.2. Algoritmo

El algoritmo disenado consta de dos fases: la correspondencia de los pıxe-les de la imagen con un histograma en Hue normalizado previamente entre-nado y la imposicion de sendas mascaras en saturacion y en luminanciapara descartar errores provocados por excesos o defectos de luz. Para el en-trenamiento del histograma y de las mascaras y su posterior comparacion eimposicion respectivamente, se hara uso de las correspondientes herramien-tas de la librerıa OpenCV.

Correspondencia con histograma en Hue

En esta primera fase, se utiliza una aproximacion al algoritmo “Camshift”

para el seguimiento de objetos, exceptuando el ultimo paso, en el que dicho

38

Page 11: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

algoritmo se utiliza para localizar el objeto en la proyeccion obtenida dadasu posicion anterior. A la hora de segmentar un color concreto los pasos quesigue el algoritmo son:

1. Calcular un histograma en Hue para el color del objeto asumiendo quela imagen contiene solo dicho objeto (entrenamiento). El histogramatendra con toda probabilidad un maximo importante que correspon-dera al color elegido.

2. Calcular la proyeccion del plano Hue de la imagen de entrada en laque se busca el objeto, usando el histograma. Para cada sector depıxeles en la misma posicion del canal Hue de la imagen de entrada, seimpone el valor del histograma correspondiente al sector en la imagendestino. En terminos estadısticos, el valor de cada pixel de la imagende salida es la probabilidad de que coincida el sector observado con ladistribucion entrenada (histograma).

3. Umbralizar la imagen.

4. Encontrar componentes conectados en la imagen resultante.

Imposicion de mascaras de Saturacion y Luminancia

Una vez tenemos en la imagen de salida los diferentes sectores de pıxe-les candidatos a objeto segun la distribucion de su histograma en Hue, elsiguiente paso a realizar es imponer sobre dicha imagen de salida dos masca-ras: una calculada a partir del canal de Saturacion y otra a partir del deLuminancia, previamente entrenadas para descartar aquellos sectores en losque el histograma en Hue pudiera haberse visto falseado por un exceso odefecto del valor de cualquiera de los dos canales.

La mascara de saturacion se obtiene a partir de dos umbrales calculadosen la fase de entrenamiento. Todo aquel pixel cuyo valor este comprendidoentre estos dos umbrales en el canal de saturacion de la imagen de entrada,quedara como blanco en la mascara. El resto quedara en negro.

La mascara de luminancia se obtiene de manera similar, recuperando losvalores de los umbrales superior e inferior entrenados previamente e impo-niendolos en el canal de luminancia de la imagen de entrada, quedando comopıxeles posibles aquellos cuyo valor se encuentre entre los dos umbrales.

Una vez calculadas las mascaras correspondientes a la imagen de entrada,se imponen de manera consecutiva sobre la imagen de salida (de un solocanal) de manera consecutiva. De esta manera los sectores de pıxeles queson segmentados en la imagen final son aquellos que se corresponden con el

39

Page 12: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

histograma en Hue entrenado y que son al mismo tiempo positivos en lasdos mascaras de los planos de Saturacion y Luminancia.

4.2.3. Implementacion practica

La implementacion de los algoritmos descritos, al igual que los de la sec-cion anterior se ha llevado a cabo en lenguaje C++ bajo entorno Linux.Haciendo uso de las diferentes herramientas ya mencionadas se ha desa-rrollado una aplicacion que sigue el mismo formato que la descrita para elalgoritmo anterior, capaz de entrenarse a partir de una imagen y una masca-ra, para despues segmentar el objeto entrenado en las imagenes de entradaen formato estandar RGB.

Entrenamiento

El entrenamiento se realiza de cara al usuario de manera identica a la apli-cacion ya descrita. Son necesarias dos imagenes: una imagen RGB estandaren la que aparece el objeto a seguir y que sera transformada a HSL y unaimagen binaria del mismo tamano con el fondo en negro y el area que abarcael objeto en la primera imagen en blanco. Un ejemplo de dichas imagenesde entrada puede verse en la imagen 4.1.

El entrenamiento es, como es evidente, totalmente diferente al anterior-mente descrito. En este caso habra dos partes claramente diferenciadas enlo que a segmentacion en color se refiere, mas la correspondiente al entrena-miento en forma:

Por una parte se aisla el canal Hue de la imagen HSL y se utiliza juntoa la mascara para crear el histograma patron en Hue.

Por otra, se entrenan los umbrales inferior y superior necesarios parael calculo de las mascaras de Saturacion y Luminancia. Este entrena-miento se realiza a partir de los canales correspondientes de la imagenHSL y de la mascara. Se calculan los histogramas correspondientes alos ixeles que entran dentro de la mascara en cada uno de los canalesy se toma el umbral inferior como el valor correspondiente al 5% dela suma del histograma y el superior como el correspondiente al 95 %.

Por ultimo, a partir de la mascara se realiza un calculo de los valoresde forma del objeto a priori (orientacion y proporcion de los ejes dela elipse derivada del blob correspondiente, vease el capıtulo 3 seccion3.1 ).

40

Page 13: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

El entrenamiento queda almacenado en una serie de archivos de texto(uno para el histograma en Hue, otro para el conjunto de umbrales para lasmascaras y otro para los parametros de forma del blob) y se puede cargar encualquier momento. De esta manera no es necesario entrenar la aplicacioncada vez que se ejecuta siempre que sigamos al mismo objeto.

Funcionamiento

De nuevo, se ha desarrollado una aplicacion analoga a la desarrollada pa-ra el algoritmo de la seccion anterior, de manera que pueda utilizarse una uotra dentro de la aplicacion global de manera transparente. La aplicacion co-mienza intentando entrenarse a partir de las dos imagenes correspondientes.En caso de no encontrarse dichas imagenes, se intentan cargar los respecti-vos archivos de configuracion, dando un error en caso de que tampoco estenpresentes. Tras realizar el entrenamiento, se empiezan a leer imagenes y secomienza a ejecutar el algoritmo de segmentacion y seguimiento de objetos.El resultado obtenido en caso de que la deteccion sea positiva sera la posi-cion del centro del objeto y el rectangulo que lo enmarca en el plano imagenen cada instante, en el mismo formato que en la aplicacion ya descrita en laseccion anterior.

La aplicacion, como ya se ha comentado, comienza por liberar de la me-moria todas las imagenes y blobs almacenados en la estructura (si los hu-biera) al comienzo de cada iteracion. Tras ello, toma la imagen de entradade tres canales (RGB) y la pasa al espacio de color HSL, para separarlaen tres imagenes monocanal con los planos Hue, Saturacion y Luminanciarespectivamente. Sobre la imagen con el canal Hue, se ejecuta el algoritmode correspondencia con histograma en Hue y los resultados se guardan enla imagen de salida en forma de imagen binaria (pıxeles blancos o del colorseguido en caso de correspondencia y negro en otro caso). Tras ello, se pro-cede al calculo de las mascaras de Saturacion y Luminancia a partir de losumbrales entrenados, imponiendolas sobre la imagen resultado de maneraconsecutiva. Una vez se tiene la imagen segmentada, se realiza la extraccionde blobs, incluyendo en la primera lista todos aquellos clusters de mas de 50pıxeles que superan en probabilidad un cierto umbral, para despues filtrarlos blobs restantes segun la distancia de su vector de caracterısticas de for-ma (orientacion y proporcion de los ejes de su elipse) al vector patron delcorrespondiente archivo de texto. El blob cuya distancia al vector de carac-terısticas sea menor sera considerado el objeto buscado. En caso de resultarmas de un blob o ninguno el resultado sera nulo. si la deteccion es positiva,se actualizan los valores del histograma patron en Hue.

En este caso, no se diferencia entre deteccion y seguimiento como en la

41

Page 14: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

Figura 4.6: Diagrama de flujo del seguidor de objetos por Hue

Figura 4.7: Ejemplo de imagen de correspondencia en Hue, mascaras enSaturacion y Luminancia y segmentacion final

42

Page 15: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

aplicacion anterior. En ambos casos se ejecuta el mismo algoritmo, con launica diferencia de que en caso de que en el instante anterior la localizaciondel objeto en la imagen hubiese sido positiva, la busqueda del objeto en laactual se concentra en una region de interes alrededor de su posicion previa.Ademas, en ese caso, se tomarıa como patron de forma del blob el vectorde caracterısticas del blob anteriormente obtenido y no el patron entrenado,anadiendo tambien la caracterıstica de area al vector. Esto es ası puestoque se busca la adaptacion del algoritmo a posibles cambios progresivos deorientacion o de forma del objeto anterior.

Resultados

La baterıa de imagenes utilizada para los experimentos es exactamentela misma que para los realizados con el algoritmo propuesto en la seccionanterior. En la figura 4.7 se ha producido la primera deteccion del objeto,mientras que en la posterior baterıa de imagenes mostradas en la figura4.8 se puede observar el funcionamiento del algoritmo en seguimiento. Elrectangulo verde de las imagenes senala el centro del objeto encontrado ysu tamano segun el algoritmo de seguimiento implementado. Como puedeverse en las imagenes resultantes, el algoritmo propuesto funciona de manerarobusta para objetos de colores que resaltan lo sufiente sobre el fondo ysiempre que no se produzcan cambios bruscos en la forma del objeto. Dehecho vemos como ante cambios progresivos de forma e incluso tamano delobjeto, el algoritmo es capaz de seguirlo perfectamente. Por otra parte sealcanza una tasa de entre 15 y 20 imagenes por segundo en seguimiento (enla figura 4.8 se presentan solo una de cada diez imagenes), cifra que superaen rendimiento al algoritmo basado en Estimacion-Maximizacion. Se ha detener en cuenta que esta baterıa se tomo en interiores, con condiciones deiluminacion estacionarias.

En experimentos realizados en exteriores se comprueba que el algoritmo,de nuevo, se pierde con muchisima mas facilidad, haciendose necesaria lacombinacion de este con el control de la iluminacion propuesto.

43

Page 16: Algoritmos de segmentaci´on por colorbibing.us.es/proyectos/abreproy/70077/fichero/capitulo4.pdf · utilizado funciones incluidas dentro de la librer´ıa de c´odigo libre OpenCV

Percepcion Activa para Seguimiento de Objetos en Entornos Urbanos

Figura 4.8: Resultado de la fase de seguimiento del algoritmo de segmenta-cion por histograma en Hue

44