Sei sulla pagina 1di 228

Modelado y Seguimiento de Objetos

por Medio de Distribuci


on de Color

Hilda Caballero Barbosa


Maestra en Inteligencia Artificial
Asesor: Dr. Homero Ros Figueroa
Maestra en Inteligencia Artificial
Revisor: Dr. Fernando Arambula Coso
Laboratorio de Imagenes y Vision
Centro de Instrumentos - UNAM
Revisor: M. I. A. Juan Luis Lopez Herrera
Escuela para Estudiantes Extranjeros - UV

Julio, 2001

Soy hombre; duro poco


y es enorme la noche.
Pero miro hacia arriba:
las estrellas escriben.
Sin entender comprendo:
tambien soy escritura
y en este mismo instante
alguien me deletrea.
Octavio Paz (Hermandad).

Este trabajo lo dedico a mi gran tesoro, mi familia:


a mis padres por haberme regalado la vida, por su amor,
su comprensi
on y apoyo, y por ense
narme a so
nar y a
hacer realidad mis sue
nos. A mis hermanos: Elizabeth,
Rodolfo y Antonio, mis compa
neros de m
ultiples batallas,
por todo lo que hemos compartido.

Agradecimientos
Al Dr. Homero Vladimir Ros Figueroa por su paciencia, apoyo, dedicacion y valiosas aportaciones en la elaboracion de este trabajo.
Al Dr. Fernando Arambula Coso y al M. I. A. Juan Luis Lopez Herrera por sus comentarios y
aportaciones.
Al Mat. Joaqun Pe
na Acevedo por su amistad y ayuda.
A la M.C. Angelica Garca Vega, Grecia Lapizco y Rodrigo Sanchez, por su colaboracion en la
implementacion de la teleoperacion de un robot empleando el seguimiento del blob de la mano.
Al personal academico y administrativo de la Maestra en Inteligencia Artificial.
A Elena por su amistad y apoyo, gracias Gatito por las aventuras que hemos vivido, por acogerme
como parte de tu familia.
A mis amigos y compa
neros de la Maestra en Inteligencia Artificial por todos los invaluables
momentos compartidos.
Al Consejo Nacional de Ciencia y Tecnologa (CONACyT) por el apoyo otorgado durante mis
estudios de posgrado, realizados en la Maestria en Inteligencia Artificial del LANIA y la Universidad Veracruzana, a traves de la beca con registro 127524. Asimismo agradezco la beca
terminal concedida para la conclusion de este trabajo de investigacion, bajo el proyecto titulado
Simulacion Distribuida de Interfaces de Reconocimiento de Gestos y Agentes Inteligentes para
Ambientes Virtuales, con referencia C098-A.

Indice General
Resumen

xii

Summary

xiv

1 Introducci
on

1.1

Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3

Antecedentes y trabajos relacionados. . . . . . . . . . . . . . . . . . . . . . . . .

1.4

Organizacion de la tesis

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Marco conceptual

2.1

Representacion de imagenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2

Introduccion al Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.2.1

Espacios de color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.2.2

Imagenes RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.3

Diferencia de Imagenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.4

Morfologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

2.4.1

Elemento estructural . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.4.2

Dilatacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.4.3

Erosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

Analisis automatico de imagenes . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2.5.1

Adquisicion de imagenes . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2.5.2

Preprocesamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2.5.3

Analisis de la imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.5.4

Segmentacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.5.4.1

Definicion formal de segmentacion . . . . . . . . . . . . . . . .

29

2.5.4.2

Segmentacion por crecimiento de regiones. . . . . . . . . . . . .

30

2.5.4.3

Seleccion del umbrales. . . . . . . . . . . . . . . . . . . . . . . .

32

2.5

2.6

2.7

2.5.4.4

Interpretacion regional y semantica.

. . . . . . . . . . . . . . .

33

2.5.4.5

Combinacion de regiones. . . . . . . . . . . . . . . . . . . . . .

33

2.5.5

Seleccion de caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . .

34

2.5.6

Reconocimiento e interpretacion . . . . . . . . . . . . . . . . . . . . . . .

34

Modelado de Objetos en 2D por medio de distribucion de color . . . . . . . . . .

35

2.6.1

Vector medio y matriz de covarianza . . . . . . . . . . . . . . . . . . . .

38

2.6.2

Correlacion cero, transformacion rotacional . . . . . . . . . . . . . . . . .

40

Seguimiento de Objetos en 2D por medio de distribucion de color . . . . . . . .

42

2.7.1

Distancia de Mahalanobis . . . . . . . . . . . . . . . . . . . . . . . . . .

45

2.7.1.1

Interpretacion geometrica de la distancia de Mahalanobis . . . .

46

2.7.1.2

Clasificador de Mahalanobis . . . . . . . . . . . . . . . . . . . .

48

3 Seguimiento de una persona en tiempo real

50

3.1

Descripcion del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

3.2

Propuesta de solucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

3.3

Alcances de la implementacion . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

3.4

Experimentacion sobre imagenes estaticas . . . . . . . . . . . . . . . . . . . . .

53

3.4.1

Modelado de un blob sobre imagenes estaticas . . . . . . . . . . . . . . .

54

3.4.2

Diferencia de imagenes estaticas . . . . . . . . . . . . . . . . . . . . . . .

58

3.4.3

Dilatacion y erosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

3.4.4

Segmentacion por crecimiento de regiones . . . . . . . . . . . . . . . . .

64

Dise
no . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

3.5.1

Inicializacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

3.5.1.1

Almacenar escena sin la persona . . . . . . . . . . . . . . . . .

70

3.5.1.2

71

3.5.1.3

Frame con la persona incluida en la escena . . . . . . . . . . . .

Angulos
concavos y convexos . . . . . . . . . . . . . . . . . . .

71

3.5.1.4

Diferencia de imagenes . . . . . . . . . . . . . . . . . . . . . . .

72

3.5.1.5

Deteccion de la persona . . . . . . . . . . . . . . . . . . . . . .

73

3.5.1.6

Segmentacion de la persona . . . . . . . . . . . . . . . . . . . .

73

3.5.1.7

Construccion del modelo de la persona : Blobs . . . . . . . . . .

74

Seguimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

3.5.2.1

Modelado de la persona . . . . . . . . . . . . . . . . . . . . . .

76

3.5.2.2

Modelado de la escena . . . . . . . . . . . . . . . . . . . . . . .

77

3.5.2.3

Ciclo de analisis . . . . . . . . . . . . . . . . . . . . . . . . . .

78

Detalles de la implementacion . . . . . . . . . . . . . . . . . . . . . . . .

81

Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

81

3.5

3.5.2

3.5.3
3.6

ii

3.6.1

Proceso de inicializacion. . . . . . . . . . . . . . . . . . . . . . . . . . . .

82

3.6.2

Seguimiento de los brazos . . . . . . . . . . . . . . . . . . . . . . . . . .

82

3.6.2.1

Extendiendo brazos. . . . . . . . . . . . . . . . . . . . . . . . .

82

3.6.2.2

Movimientos laterales de los brazos. . . . . . . . . . . . . . . .

89

3.6.2.3

Manos sobre la cabeza. . . . . . . . . . . . . . . . . . . . . . . .

92

3.6.2.4

Manos frente al rostro. . . . . . . . . . . . . . . . . . . . . . . .

94

3.6.2.5

Brazos frente al torso. . . . . . . . . . . . . . . . . . . . . . . . 100

3.6.2.6

Oclusion de los brazos. . . . . . . . . . . . . . . . . . . . . . . . 107

3.6.3

3.6.4

3.6.5

Seguimiento de las piernas. . . . . . . . . . . . . . . . . . . . . . . . . . . 109


3.6.3.1

Movimiento lateral de las piernas. . . . . . . . . . . . . . . . . . 109

3.6.3.2

Movimiento de las piernas al frente. . . . . . . . . . . . . . . . . 115

Seguimiento de la cabeza . . . . . . . . . . . . . . . . . . . . . . . . . . . 119


3.6.4.1

Movimiento lateral de la cabeza . . . . . . . . . . . . . . . . . . 119

3.6.4.2

Inclinacion hacia delante y hacia atras . . . . . . . . . . . . . . 119

Seguimiento mientras la persona se desplaza lentamente . . . . . . . . . . 119


3.6.5.1

Desplazamiento hacia adelante . . . . . . . . . . . . . . . . . . 127

3.6.5.2

Desplazamiento hacia atras. . . . . . . . . . . . . . . . . . . . . 129

3.6.5.3

Desplazarse lateralmente girando el torso . . . . . . . . . . . . . 131

3.6.5.4

Desplazarse lateralmente, manteniendo la postura del torso al


frente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

3.6.6

3.6.7
3.7

Giros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
3.6.6.1

Giro lateral. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

3.6.6.2

Giro completo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

Seguimiento mientras la persona realiza movimientos verticales . . . . . . 158

Una aplicacion del modelo de distribucion de color: Seguimiento del blob de la


mano aplicado a la teleoperacion de robots . . . . . . . . . . . . . . . . . . . . . 158

4 Conclusiones y trabajos futuros

163

4.1

Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

4.2

Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

Ap
endices

167

A Seguimiento de la mano por medio de distribuci


on de color, aplicado a la
teleoperaci
on de robots

167

A.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168


A.2 Teleoperacion con ademanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
iii

A.2.1 Reconocimiento de la mano . . . . . . . . . . . . . . . . . . . . . . . . . 169


A.2.1.1 Dise
no . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
A.2.1.2 Inicializacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
A.2.1.3 Seguimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
A.2.2 Teleoperacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
A.3 Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
A.3.1 Detalles de la implementacion . . . . . . . . . . . . . . . . . . . . . . . . 175
A.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
B Codificaci
on de las funciones principales del sistema implementado para el
seguimiento de una persona en tiempo real

178

B.1 Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179


B.2 Estructura que contiene toda la informacion de un Blob . . . . . . . . . . . . . . 179
B.3 Estructura que almacena los pixeles de la imagen en formato RGB . . . . . . . . 180
B.4 Funcion que obtiene el siguiente frame de la camara . . . . . . . . . . . . . . . . 180
B.5 Almacenar la escena del fondo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
B.6 Proceso de inicializacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
B.7 Combinacion de regiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
B.8 Actualizacion del fondo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
B.9 Diferencia de imagenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
B.10 Visualizacion del modelo multi-blob . . . . . . . . . . . . . . . . . . . . . . . . . 198
B.11 Dibuja la elipse que describe al blob . . . . . . . . . . . . . . . . . . . . . . . . . 199

iv

Indice de Figuras
2.1

Area
iluminada que se proyecta perpendicular a la trayectoria de los rayos de luz
11

2.2

que llegan, imagen tomada de [38]. . . . . . . . . . . . . . . . . . . . . . . . . .

Angulo
de incidencia entre el vector de direccion de la fuente de luz de unidad
L y la normal de la superficie unitaria N, imagen tomada de [38]. . . . . . . . .

11

2.3

Plano de la imagen. El crculo negro representa un pxel de la imagen, con


coordenadas espaciales (x, y) y un nivel de intensidad dado por el valor de f (x, y).
La coordenada y del punto corresponde a la direccion vertical y la coordenada x
del punto corresponde a la direccion horizontal de la imagen. . . . . . . . . . . .

2.4

13

Arreglo bidimensional de la imagen. Un pxel es localizado dentro del arreglo por


los ndices del renglon y columna [i, j]. El ndice i apunta hacia abajo, y el ndice
j apunta a la derecha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.5

13

Digitalizacion de una imagen. (a) Imagen original f (x, y), el recuadro blanco se
explica en el siguiente inciso, (b) Muestra el recuadro blanco amplificado, cada
elemento de la cuadrcula corresponde a un pxel de la imagen. (c) Representacion
bidimensional de (b), el valor de cada celda del arreglo corresponde con el nivel
de gris de cada pxel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

2.6

Cubo unitario del modelo de color RGB, imagen tomada de [54]. . . . . . . . . .

16

2.7

Representacion de una imagen en formato RGB, imagen tomada de [39]. . . . .

17

2.8

Elementos estructurales comunes, imagen tomada de [69]. . . . . . . . . . . . . .

20

2.9

A es dilatada por el elemento estructural B, las lneas punteadas muestran el


resultado de la dilatacion, imagen tomada de [61]. . . . . . . . . . . . . . . . . .

21

2.10 A es erosionada por el elemento estructural B, el resultado de la erosion se representa con la lnea punteada, imagen tomada de [61]. . . . . . . . . . . . . . .

22

2.11 (a) Muestra la imagen original, (b) muestra la imagen dilatada, (c) muestra la
imagen erosionada, imagen tomada de [49]. . . . . . . . . . . . . . . . . . . . . .

22

2.12 Modulos del procesamiento de imagenes, imagen tomada de [33]. . . . . . . . . .

23

2.13 Representacion simbolica de un algoritmo de agrupacion, imagen tomada de [1].

27

2.14 Ejemplo del metodo de crecimiento de regiones usando puntos semilla conocidos: (a)imagen original que muestra los niveles de intensidad de cada pxel,
(b)resultado de la segmentacion usando una diferencia absoluta menor a tres
entre los niveles de intensidad, (c)Muestra el resultado de la segmentacion considerando una diferencia absoluta menor a ocho entre los niveles de intensidad.
Imagen tomada de [33]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

2.15 Distribucion normal o de Gauss de dos clases, imagen tomada de [1]. . . . . . .

37

2.16 Espacio multiespectral bidimensional, muestra los vectores individuales de los


pxeles y su posicion media. El vector medio se define como m. Imagen tomada
de [64]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

2.17 Sistema de coordenadas modificado, en el cual los vectores de los pxeles tienen
componentes no correlacionados. Imagen tomada de [64]. . . . . . . . . . . . . .

40

2.18 dE es la distancia de Mahalanobis, esta distancia ademas de la separacion (distancia eucldeana) entre X y m, toma en cuenta la dispersion intrnseca de la
clase . Imagen tomada de [1].

. . . . . . . . . . . . . . . . . . . . . . . . . . .

46

2.19 Distribucion biclase en donde las clases presentan una dispersion estadstica muy
diferente, imagen tomada de [64]. . . . . . . . . . . . . . . . . . . . . . . . . . .

48

2.20 Esquema de un clasificador basado en la distancia mnima de Mahalanobis, imagen tomada de [27]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

3.1

La opcion Captura permite elegir los pxeles que definen al blob. . . . . . . . . .

55

3.2

Los puntos blancos sobre la imagen representan los pxeles elegidos, mismos que
son dibujados a la derecha de la imagen en su color original. . . . . . . . . . . .

3.3

55

La elipse sobre la imagen representa al blob, tambien se dibuja aislada a la derecha


de la imagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

3.4

Los puntos blancos son los pxeles del blob, cuya distribucion es paralela al eje x.

56

3.5

La elipse que representa al blob tiene una orientacion paralela al eje x. . . . . . .

56

3.6

Muestra una distribucion mas dispersa de los pxeles que definen al blob. . . . .

57

3.7

El tama
no de la elipse es mayor, el color y la orientacion del blob corresponde a
la distribucion de los pxeles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.8

El blob obtenido detalla el rostro de la persona, la prueba se realizo sobre una


imagen natural. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.9

57
57

El blob obtenido detalla el rostro de la persona, la prueba se realizo sobre una


imagen artificial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

3.10 La mano puede ser detallada por el blob obtenido, la prueba se realizo sobre una
imagen natural. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vi

58

3.11 El blob obtenido modela la mano de la persona, la prueba se realizo sobre una
imagen artificial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

3.12 Ajuste del blob al torso de la persona sobre una imagen natural. . . . . . . . . .

59

3.13 Muestra como puede acoplarse un blob para modelar una pierna, la prueba se
realizo sobre una imagen natural. . . . . . . . . . . . . . . . . . . . . . . . . . .

59

3.14 Resultados de la diferencia de imagenes en presencia de una sola persona. . . . .

61

3.15 Resultados de la diferencia de imagenes con tres personas en la escena. . . . . .

62

3.16 Experimentacion de las operaciones morfologicas basicas sobre imagenes naturales. 63


3.17 Experimentacion de las operaciones morfologicas basicas sobre imagenes naturales. 64
3.18 Experimento uno: la segmentacion por crecimiento de regiones dio como resultado
cinco regiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

3.19 Experimentos dos: la segmentacion por crecimiento de regiones dio como resultado cinco regiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

3.20 Experimentos tres: la segmentacion por crecimiento de regiones dio como resultado cuatro regiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

3.21 Experimento cuatro: la region fue segmentada en seis regiones. La segmentacion


es erronea, abarca parte del fondo.

. . . . . . . . . . . . . . . . . . . . . . . . .

67

3.22 Experimento cinco: la region fue segmentada en solo dos regiones. Segmentacion
erronea. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

3.23 Experimento seis: muestra una segmentacion erronea, es necesario un mayor


constraste entre el fondo y la region a segmentar. . . . . . . . . . . . . . . . . .

68

3.24 Modulos del sistema de deteccion y seguimiento de una persona implementado


en este trabajo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.25 Representacion usada para almacenar el fondo.

. . . . . . . . . . . . . . . . . .

3.26 Muestra la configuracion inicial de la persona, la configuracion star fish.

. . . .

69
70
72

3.27 Esquema del clasificador de distancia mnima de Mahalanobis empleado en este


trabajo. Se mide la distancia de Mahalanobis del pxel X a cada una de las siete
clases establecidas. X se asocia a la clase mas proxima. . . . . . . . . . . . . . .

79

3.28 Resultados obtenidos durante la etapa de Inicializacion. . . . . . . . . . . . . . .

83

3.29 Resultados del seguimiento mientras la persona extiende el brazo derecho y posteriormente el brazo izquierdo (1/3). . . . . . . . . . . . . . . . . . . . . . . . .

84

3.29 Resultados del seguimiento mientras la persona extiende el brazo derecho y posteriormente el brazo izquierdo (2/3). . . . . . . . . . . . . . . . . . . . . . . . .

85

3.29 Resultados del seguimiento mientras la persona extiende el brazo derecho y posteriormente el brazo izquierdo (3/3). . . . . . . . . . . . . . . . . . . . . . . . .

86

3.30 Resultados del seguimiento mientras la persona extiende ambos brazos (1/2). . .

87

vii

3.30 Resultados del seguimiento mientras la persona extiende ambos brazos (2/2). . .

88

3.31 Resultados del seguimiento mientras la persona mueve el torso lateralmente (1/3). 89
3.31 Resultados del seguimiento mientras la persona mueve el torso lateralmente (2/3). 90
3.31 Resultados del seguimiento mientras la persona mueve el torso lateralmente (3/3). 91
3.32 Resultados del seguimiento cuando la persona dirige las manos sobre su cabeza
(1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

3.32 Resultados del seguimiento cuando la persona dirige las manos sobre su cabeza
(2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

3.33 Resultados del seguimiento del movimiento del brazo derecho en direccion al
rostro (1/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

94

3.33 Resultados del seguimiento del movimiento del brazo derecho en direccion al
rostro (2/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

95

3.33 Resultados del seguimiento del movimiento del brazo derecho en direccion al
rostro (3/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

96

3.34 Resultados del seguimiento del movimiento del brazo izquierdo en direccion al
rostro (1/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

3.34 Resultados del seguimiento del movimiento del brazo izquierdo en direccion al
rostro (2/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

98

3.34 Resultados del seguimiento del movimiento del brazo izquierdo en direccion al
rostro (3/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

99

3.35 Resultados del seguimiento cuando se posiciona el brazo derecho sobre el torso
(1/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.35 Resultados del seguimiento cuando se posiciona el brazo derecho sobre el torso
(2/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.35 Resultados del seguimiento cuando se posiciona el brazo derecho sobre el torso
(3/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.36 Resultados del seguimiento cuando se posiciona el brazo izquierdo sobre el torso
(1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3.36 Resultados del seguimiento cuando se posiciona el brazo izquierdo sobre el torso
(2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.37 Resultados del seguimiento cuando ambos brazos se posicionan sobre el torso de
la persona. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.38 Resultados del seguimiento de los brazos al mantenerse proximos al torso. . . . . 106
3.39 Resultados del seguimiento de los brazos despues de una oclusion (1/3). . . . . . 107
3.39 Resultados del seguimiento de los brazos despues de una oclusion (2/3). . . . . . 108
3.39 Resultados del seguimiento de los brazos despues de una oclusion (3/3). . . . . . 109
viii

3.40 Resultados del seguimiento de la pierna derecha mientras se mueve lateralmente


(1/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.40 Resultados del seguimiento de la pierna derecha mientras se mueve lateralmente
(2/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
3.40 Resultados del seguimiento de la pierna derecha mientras se mueve lateralmente
(3/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.41 Resultados del seguimiento de la pierna izquierda mientras se mueve lateralmente
(1/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.41 Resultados del seguimiento de la pierna izquierda mientras se mueve lateralmente
(2/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.41 Resultados del seguimiento de la pierna izquierda mientras se mueve lateralmente
(3/3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
3.42 Resultados del seguimiento de la pierna derecha mientras se eleva al frente (1/2). 115
3.42 Resultados del seguimiento de la pierna derecha mientras se eleva al frente (2/2). 116
3.43 Resultados del seguimiento de la pierna izquierda mientras se eleva al frente (1/2).117
3.43 Resultados del seguimiento de la pierna izquierda mientras se eleva al frente (2/2).118
3.44 Resultados del seguimiento mientras la persona mueve lateralmente la cabeza (1/3).120
3.44 Resultados del seguimiento mientras la persona mueve lateralmente la cabeza (2/3).121
3.44 Resultados del seguimiento mientras la persona mueve lateralmente la cabeza (3/3).122
3.45 Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia
adelante (1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.45 Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia
adelante (2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.46 Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia
atras (1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
3.46 Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia
atras (2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
3.47 Resultados del seguimiento mientras la persona se desplaza hacia adelante (1/2). 127
3.47 Resultados del seguimiento mientras la persona se desplaza hacia adelante (2/2). 128
3.48 Resultados del seguimiento mientras la persona se desplaza hacia atras (1/3). . . 129
3.48 Resultados del seguimiento mientras la persona se desplaza hacia atras (2/3). . . 130
3.48 Resultados del seguimiento mientras la persona se desplaza hacia atras (3/3). . . 131
3.49 Resultados del seguimiento de la persona mientras da un paso hacia la derecha
(1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
3.49 Resultados del seguimiento de la persona mientras da un paso hacia la derecha
(2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
ix

3.50 Resultados del seguimiento de la persona mientras da otro paso hacia la derecha
(1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
3.50 Resultados del seguimiento de la persona mientras da otro paso hacia la derecha
(2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
3.51 Resultados del seguimiento de la persona mientras da un paso hacia la izquierda
(1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.51 Resultados del seguimiento de la persona mientras da un paso hacia la izquierda
(2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
3.52 Resultados del seguimiento de la persona mientras da otro paso hacia la izquierda
(1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3.52 Resultados del seguimiento de la persona mientras da otro paso hacia la izquierda
(2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
3.53 Resultados del seguimiento de la persona mientras se desplaza lateralmente (1/3). 141
3.53 Resultados del seguimiento de la persona mientras se desplaza lateralmente (2/3). 142
3.53 Resultados del seguimiento de la persona mientras se desplaza lateralmente (3/3). 143
3.54 Resultados del seguimiento de la persona mientras se desplaza lateralmente (1/2). 144
3.54 Resultados del seguimiento de la persona mientras se desplaza lateralmente (2/2). 145
3.55 Resultados del seguimiento de la persona mientras se desplaza lateralmente (1/3). 146
3.55 Resultados del seguimiento de la persona mientras se desplaza lateralmente (2/3). 147
3.55 Resultados del seguimiento de la persona mientras se desplaza lateralmente (3/3). 148
3.56 Resultados del seguimiento mientras la persona gira el torso lateralmente (1/3).

150

3.56 Resultados del seguimiento mientras la persona gira el torso lateralmente (2/3).

151

3.56 Resultados del seguimiento mientras la persona gira el torso lateralmente (3/3).

152

3.57 Resultados del seguimiento de la persona mientras realiza un giro completo (1/5). 153
3.57 Resultados del seguimiento de la persona mientras realiza un giro completo (2/5). 154
3.57 Resultados del seguimiento de la persona mientras realiza un giro completo (3/5). 155
3.57 Resultados del seguimiento de la persona mientras realiza un giro completo (4/5). 156
3.57 Resultados del seguimiento de la persona mientras realiza un giro completo (5/5). 157
3.58 Resultados del seguimiento de la persona mientras realiza movimientos verticales
hacia abajo (1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
3.58 Resultados del seguimiento de la persona mientras realiza movimientos verticales
hacia abajo (2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
3.59 Resultados del seguimiento de la persona mientras realiza movimientos verticales
hacia arriba (1/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
3.59 Resultados del seguimiento de la persona mientras realiza movimientos verticales
hacia arriba (2/2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
x

A.1 Modulos del sistema de deteccion y seguimiento de la mano implementado en


esta aplicacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
A.2 Esquemas de conexion entre la aplicacion y robot. a) La teleoperacion del robot
se hace a traves de la red por medio de sockets. b) La teleoperacion se hace a
traves del radio-modem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
A.3 Arquitectura cliente/servidor de Pioneer. . . . . . . . . . . . . . . . . . . . . . . 174
A.4 Correspondencia entre los movimientos de la mano y las ordenes de control enviadas al robot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
A.5 Interfaz de la implementacion del sistema. . . . . . . . . . . . . . . . . . . . . . 176

xi

Resumen
El seguimiento en tiempo real de objetos no rgidos que se mueven en escenas complejas es
considerado un problema difcil. El estudio del movimiento de un objeto se divide en dos
categoras, dependiendo de si el objeto a seguir es deformable o articulado [48].
En este trabajo se analiza el problema del seguimiento de una persona en una escena arbitraria.
En un sistema de vision por computadora el cuerpo humano puede ser tratado como un objeto articulado. La interpretacion visual de las personas y sus movimientos es un intento por
conseguir que la interaccion hombre-maquina sea mas natural.
Se describe en este documento, la implementacion de un sistema de vision dinamica que realiza
la localizacion, modelado y seguimiento de un objeto no rgido articulado.
La persona se representa a traves de un modelo estadstico multi-clase de color y forma, es decir
por medio de blobs. Dicho modelo consta de seis blobs, los cuales corresponden a la cabeza, el
brazo izquierdo, el brazo derecho, el torso, la pierna izquierda y la pierna derecha.
El termino blob, desde el punto de vista computacional, se define como un conjunto de pxeles
que comparten alguna propiedad visual, la cual no es compartida por los pxeles del entorno
[3, 4]. Pueden ser originados a partir de la similitud de color, textura, movimiento entre otras.
Un blob puede ser caracterizado por sus estadsticas fundamentales: el vector medio y la matriz
de covarianza.
Se dise
no cada blob con un componente espacial (x, y) y un componente de color (R, G, B) (el
color fue especificado en el espacio de color RGB).
Con base en el vector medio puede determinarse el centroide y el color promedio de cada blob.
Mientras que la forma y apariencia del blob es detallada por su correspondiente matriz de
covarianza. La orientacion del blob se obtiene al diagonalizar la matriz de covarianza va una
descomposicion de eigenvalores [4].

xii

El analisis de la vision dinamica puede entenderse como el procesamiento de imagenes estaticas


secuenciales. Por ello como una primer etapa de experimentacion, algunas tecnicas de vision
(creacion de un blob, la diferencia de imagenes, dilatacion, erosion y la segmentacion por crecimiento de regiones) fueron probadas sobre imagenes estaticas obtenidas con una camara digital.
El proposito de este estudio fue diferenciar a la persona en la escena, y obtener la informacion
suficiente para poder construir el primer modelo multi-blob de la persona, es decir, cumplir con
el objetivo de la etapa de inicializaci
on, misma que se detalla enseguida.
El sistema implementado en el presente trabajo, se dise
no en dos etapas principales:

1. Inicializacion. Detecta y construye el modelo inicial de la persona.


2. Seguimiento. Las estadsticas de cada blob se actualizan recursivamente con base en un
clasificador de distancia mnima de Mahalanobis.

El sistema funciona con una computadora personal (Pentium III a 733 MHz con 128Mb en
RAM) y una camara, procesando en promedio 3 frames por segundo.
Se probaron los siguientes experimentos en el seguimiento del modelo multi-blob de la persona:
Proceso de inicializacion.
Seguimiento de los brazos, bajo diferentes posiciones, cuando se colocan frente al rostro o
al torso, y en caso de oclusion.
Seguimiento de las piernas, moviendolas hacia los lados, al frente, en caso de oclusion
parcial.
Seguimiento de la cabeza.
Seguimiento mientras la persona se desplaza lentamente.
Giros.
Seguimiento mientras la persona realiza movimientos verticales.

Los resultados fueron satisfactorios bajo las siguientes condiciones: la camara es estacionaria,
se considera el seguimiento de una persona, el ambiente tiene condiciones de iluminacion controladas, y para mantener la estabilidad durante el seguimiento los movimientos de la persona
no deben ser muy rapidos.
Concluyendo, la implementacion realizada permitio el estudio del seguimiento de una persona
en tiempo real, bajo condiciones de iluminacion controladas, y probo la robustez del modelo
multi-blob durante el seguimiento.
xiii

Summary
Real-time tracking of nonrigid moving objects in complex scenes is considered a difficult problem.
The study of the movement of an object is divided in two categories, depending on the level of
articulation and deformation of the object [48].
In this work the problem of tracking a person is analyzed in an arbitrary scene. In a computer
vision system the human body can be treated as an articulated object. The visual interpretation of people and their movements are an attempt to obtain a more natural human-machine
interaction.
This document describes the implementation of a dynamic vision system that contends with
the location, modeling and tracking of an articulated nonrigid object.
Persons are represented through a multi-class statistical model of color and shape, that is to
say, by means of blobs. This model consists of six blobs, corresponding to the head, left and
right arm, torso, left and right leg.
The term blob, from the computational point of view, is defined as a group of pixels that share
some visual property, which is not shared by surrounding pixels [3, 4].They can be originated
from similarity of color, texture, movement among others. A blob can be characterized by its
fundamental statistics: the spatial mean and the covariance matrix.
Each blob was designed with a spatial (x, y) and color (R, G, B) component (the color was
specified in the color space RGB).
The spatial mean determines the centroid and the mean color of each blob, whereas the form
and appearance of blob is detailed by its corresponding covariance matrix. The orientation of
the blob is obtained diagonalizing the covariance matrix via a decomposition of eigenvalues [4].
The analysis of the dynamic vision can be understood as the sequential processing of static
images. For that reason, as a first stage of experimentation, some vision techniques (creation

xiv

of blob, difference image, dilation, erosion and region growing segmentation) were proven on
static images obtained with a digital camera. The intention of this study was to differentiate
the person in the scene, and to obtain enough information to construct to the first multi-blob
model of the person, in other words, to fulfill the initialization stage goal, as detailed below.
The system implemented in the present work, was designed in two main stages:

1. Initialization. A person is detected, an its initial model is created.


2. Tracking. The statistics of each blob are continuosly updated using Mahalanobis distance.

The system works with a shelve equipment, a personal computer (Pentium III to 733 MHz with
128Mb in ram) and one webcam, which processes in average 3 frames per second.
The following experiments for tracking the multi-blob person model were proven:
Process of initialization
Arms tracking, under different positions, when they are placed either in front of the face
or in front of the torso, and in case of occlusion.
Legs tracking, moving them towards the sides, to the front, and in case of partial occlusion.
Head tracking .
Tracking while the person moves slowly.
Turns.
Tracking while the person makes heaves.
The results were satisfactory under the following conditions:
1. Tracking of only one person.
2. The camera is stationary.
3. The atmosphere has controlled conditions of illumination.
4. In order to maintain stability during the tracking, the movements of the person should
not be fast.
In conclusion, the implementation allowed the study of real-time person tracking under controlled conditions of illumination, and proved the robustness of the multi-blob model during the
tracking.

xv

Captulo 1
Introducci
on
La identificacion visual de las personas y sus movimientos es una caracterstica importante en
m
ultiples aplicaciones, tales como sistemas de vigilancia, interfaces de realidad virtual, percepcion robotica, reconocimiento de acciones, bases de datos de vdeo, cuartos inteligentes, entre
otras [76, 5, 77, 74, 21]. Lo que se persigue con ello es mejorar la interaccion hombre-maquina y
conseguir que las computadoras funcionen como asistentes humanos; un paso importante para
ello es dotar a las computadoras de inteligencia perceptual, es decir, dotarlas de habilidades que
les permitan determinar que aspectos de una situacion son significativas, y elegir en consecuencia un curso de accion adecuado [21]. La habilidad de encontrar y seguir las partes del cuerpo de
una persona por lo tanto es un problema visual importante. El presente trabajo esta enfocado
a modelar, localizar y seguir a una persona en una escena. Para ello se implemento un modelo
estadstico multi-clase, de color y forma, para obtener la representacion en 2D de la cabeza,
manos,torso y piernas. La persona se modela por medio de blobs. En un blob las propiedades de
la imagen tales como similitud de color y similitud espacial se combinan para formar regiones
conectadas coherentemente, es decir, regiones en las cuales los pxeles tienen propiedades de
imagen similares. En esta representacion los vectores que caracterizan cada pxel se forman
agregando las coordenadas espaciales (x, y) a los componentes espectrales (o de textura) de la
imagen [76, 5, 77, 74, 21].

1.1

Objetivos

El objetivo del trabajo de tesis es dise


nar e implementar un sistema que localice objetos en un
ambiente real. De modo particular se pretende localizar a una persona. El sistema usara un
1

modelo estadstico multi-clase, de color y forma, para obtener la representacion en 2D de la


cabeza, brazos, torso y piernas del cuerpo de la persona, es decir, por medio de blobs.
El sistema esta dirigido a solucionar el problema del seguimiento de una persona, por lo que su
objetivo es localizar, segmentar y seguir a una persona en tiempo real, en una escena cerrada,
con condiciones de iluminacion controladas y con una camara fija.

1.2

Motivaci
on

El objeto a seguir puede ser representado por contornos o por regiones. Esta clasificacion en
la representacion se origina de los dos tipos de segmentacion que se distinguen en la practica:
segmentacion por contornos y segmentacion de regiones o zonas (seccion 2.5.4). El resultado
de la segmentacion del objeto proporciona la informacion adecuada para la construccion de su
modelo. La representacion por contornos emplea las caractersticas externas del objeto para la
construccion de su modelo, mientras que la representacion de regiones utiliza las caractersticas
internas.
Ambos paradigmas son considerados complementarios y duales, si el contorno es conocido
pueden determinarse propiedades de la region, y viceversa, si la region es identificada pueden
especificarse las propiedades del contorno. Un modelo hbrido podra aprovechar las ventajas
de cada metodo y disminuir sus desventajas [8, 50].
Un metodo de extraccion de bordes interesante, que puede realizar la segmentacion de un objeto,
obtener su area y permetro, y seguirlo en una secuencia de imagenes, se fundamenta en el empleo
de contornos activos o snakes.
La representacion que se propone emplear en este trabajo para modelar a la persona, es por
medio de blobs, se trata de una representacion de regiones, ya que un blob es definido por un
conjunto de pxeles que comparten propiedades similares de color y espaciales.
El seguimiento de contornos basado en snakes y el seguimiento basado en regiones, son metodos
complementarios, en conjuncion podran conseguir un seguimiento mas robusto. El seguimiento
de contornos basado en snakes es rapido y eficiente debido al comportamiento activo de los
snakes. Es tambien preciso en la extraccion de bordes. Sin embargo requiere de una inicializacion
apropiada y puede por lo tanto tratar solo con movimientos lentos. Ademas estos metodos usan
solamente informacion de los bordes. Por el contrario, el seguimiento basado en regiones explota
la informacion de la region completa y por lo tanto estima el movimiento de la misma de manera
2

precisa, sin embargo solo consigue una valoracion burda de los lmites de la region.
Las caractersticas del modelo de blobs que se consideraron estudiar y aprovechar para modelar
y seguir a la persona son:

Analiza a la persona en funcion de sus caractersticas internas (permite seguir los brazos
cuando son llevados sobre el torso de la persona, esto sera difcil de detectarse por un
metodo que siguiera a la persona por medio de un analizador de contornos).
Han mostrado su reciente exito en la extraccion y seguimiento en tiempo real de las
caractersticas del blob en escenas complejas.
No requieren de hardware especializado para cumplir con su tarea.
Los blobs representan aspectos globales de la forma y pueden ser aumentados con estadsticas de alto orden, para agregarles mas detalle si los datos lo requieren. Los blobs
pueden originarse apartir de similitud en color, textura, movimiento, una combinacion de
estas, entre otras.
La reduccion de los grados de libertard de los pxeles individuales a los parametros del
blob es una forma de regularizacion, la cual permite que el problema del seguimiento sea
resuelto en una forma estable.
Permiten demostrar la utilidad de las caractersticas estocasticas basadas en regiones, para
el entendimiento en tiempo real de una imagen. Las estadsiticas del blob pueden interpretarse como una representacion Gaussiana. Los parametros de la distribucion Gaussiana
capturan la posicion, tama
no y orientacion de la parte del cuerpo a la cual representan
(vector medio y matriz de covarianza).

Como trabajo futuro ha sido considerado la incorporacion de un analizador de contornos, para


darle mayor robustez al seguimiento.

1.3

Antecedentes y trabajos relacionados.

Como antecedentes de trabajos en el seguimiento de objetos, se tiene que algunos metodos tratan
de seguir objetos 3D usando m
ultiples vistas del objeto, otros utilizan contornos como caractersticas a seguir; entre ellos, algunos utilizan la tecnica de contornos activos con la intencion de
3

manejar las posibles deformaciones del objeto. Es posible tambien utilizar el color para facilitar
el seguimiento, o bien usar una combinacion de regiones segmentadas por color y contornos
como caractersticas a seguir. Finalmente algunas otras tecnicas detectan el movimiento gracias
a variaciones de alguna caracterstica global de la imagen, tal como la textura o invariantes
estadsticos [20]. A continuacion se hace referencia a algunos trabajos que se han enfocado en
el seguimiento de personas en tiempo real.
En [45] se propone un metodo basado en modelos que sigue objetos no rgidos en escenas
naturales. Considera el problema de seguir objetos no rgidos en un escena compleja. Utiliza
modelos geometricos bidimensionales para localizar un objeto en cada frame de una secuencia
de imagenes. El modelo se adquiere dinamicamente a partir de la secuencia de imagenes en
lugar de ser proporcionado a priori; y captura la evolucion de la forma del objeto a traves del
tiempo detectando los cambios en la forma de la imagen del objeto seg
un se mueve. El modelo
en el tiempo t es un subconjunto de las caractersticas de la imagen en el tiempo t. Para el
seguimiento hace uso de la distancia de Hausdorff. El metodo sigue personas exitosamente con
otros objetos en movimiento.
Otro sistema enfocado al seguimiento de personas es W 4 . W 4 es un sistema que soluciona un
problema relacionado con la vigilancia de actividades humanas, se enfoca en el reconocimiento
de las actividades humanas que toman lugar en una escena. Detecta los objetos en movimiento
y los identifica como humanos, animales o vehculos. W 4 opera con el vdeo tomado de una
camara estacionaria, aunque puede ser generalizado a un camara en movimiento. Se le considera
un sistema de vigilancia terrestre en tiempo real para detectar, seguir personas y monitorear
sus actividades en ambientes externos, particularmente en la noche u otras situaciones de poca
luz; W 4 ha sido dise
nado para trabajar con solo fuentes de vdeo monocromaticas, no hace uso
de caractersticas de color, opera con imagenes de vdeo en escala de grises, o en imagenes de
vdeo de una camara infrarroja. Este sistema utiliza modulos jerarquicos de seguimiento para
identificar y seguir las cabezas, torsos, y pies de las personas. W 4 emplea una combinacion de
vision estereo, de analisis de formas, tecnicas de seguimiento robusto, y modelado del cuerpo
basado en la silueta, para localizar y seguir a las personas, y entender la interaccion entre
las personas y objetos, por ejemplo, personas intercambiando o dejando objetos en la escena
[37, 26, 36, 35]. El modelo del cuerpo basado en la silueta es proporcionado por un sistema de
vision monocular llamado Ghost [35, 37], que encuentra y etiqueta las partes del cuerpo de la
persona en tiempo real. Predice la ubicacion de seis partes principales del cuerpo (cabeza, manos,
pies y torso) mientras las personas estan en diferentes posturas. El modelo ayuda a predecir
las posiciones de las partes individuales del cuerpo de un frame a otro. Una extension de este
sistema es W 4 S que es capaz de seguir simultaneamente a m
ultiples personas contendiendo
4

con oclusiones [36]. W 4 S tiene la capacidad para construir un modelo 2 21 D de la escena y sus
habitantes humanos combinando un modelo de carton en 2D [36, 37]. Los objetos de interes son
segmentados del fondo en cada frame de la secuencia de vdeo por un proceso de cuatro etapas:
establecimiento de un umbral, eliminacion de ruido, filtrado morfologico y deteccion de objetos
[37]. En [43] se presenta otra extension de W 4 , la extension consiste en operar sobre imagenes de
color. Se ejecuta sobre cada una de las m
ultiples camaras que observan a la persona. Su analisis
de la silueta y el empleo de ciertas plantillas consiguen la estimacion en 3D de las posturas del
cuerpo humano en tiempo real. El modelo del movimiento humano (dinamica/cinematica) y
filtros de Kalman se utilizan para ayudar al proceso de seguimiento.
En [12] se presenta un marco de trabajo Bayesiano para el seguimiento de un objeto en una
secuencia de frames de imagenes, dado un modelo del objeto. Usa un metodo de reconocimiento
maximo a posteriori (MAP) para detectar la mejor ubicacion del objeto en cada frame de la
imagen, y un filtro de Kalman para estimar el estado del objeto, el cual incluye la localizacion
optima. Se hace un acoplamiento del filtro de Kalman con una tecnica de reconocimiento
Bayesiana, de tal manera que los parametros de reconocimiento son calculados naturalmente,
basandose en los estimados del estado del objeto y en el nivel de ruido del filtro de Kalman. El
modulo seguidor es capaz de continuar observando a un objeto a
un cuando llegue a estar oculto
parcialmente, en tanto el objeto se este moviendo seg
un lo predice el filtro de Kalman.
En [16, 20] se expone un metodo capaz de efectuar el seguimiento visual de un objeto movil no
rgido, puede seguir a un ser humano caminando. Este trabajo esta situado en el contexto de la
percepcion aplicada a la robotica movil autonoma. Es capaz de seguir a un objeto movil a pesar
de que el captor se encuentre tambien en movimiento. La tecnica que se emplea esta basada
en la distancia de Hausdorff, la cual es una medida de semejanza entre dos patrones dados.
Se pretende que un robot sea capaz de seguir objetos moviles con la ayuda de informaciones
visuales. Se presenta un metodo basado en la comparacion entre un modelo y una imagen. El
modelo y la imagen son elementos binarios extrados de una secuencia de imagenes de niveles de
gris, por medio de un extractor de bordes (lneas de contraste), la distancia parcial de Hausdorff
es usada para medir el grado de semejanza entre la imagen y el modelo (el modelo puede ser
no rgido). El metodo se basa en la suposicion de que el movimiento de un objeto no rgido
en el espacio tridimensional, puede ser caracterizado usando una representacion bidimensional.
La b
usqueda del modelo se efect
ua solo en una region contigua a la posicion del blanco en la
imagen previa de la secuencia.
En [45] se plantea un metodo para seguir objetos no rgidos en un escena compleja. Un objeto se
representa en terminos de su forma bidimensional, y se almacena como un conjunto de modelos

geometricos bidimensionales, los cuales capturan la evolucion de la forma del objeto a traves del
tiempo. El modelo se adquiere dinamicamente a partir de la secuencia de imagenes en lugar de
ser proporcionado a priori. Los pxeles que constituyen la forma del objeto se siguen en cada
frame. Utiliza la distancia de Hausdorff en el seguimiento.
Otro metodo implementado en el dominio del seguimiento de personas es reportado en [10],
usa informacion de un par estereo de imagenes para la deteccion continua e informacion de la
correlacion de la intensidad de la imagen para el seguimiento. Su objetivo es seguir a un n
umero
de personas en ambientes naturales. Este trabajo detalla que la informacion del par estereo en
tiempo real ayuda a la deteccion y seguimiento en 3D, a
un en la presencia de escenas confusas,
objetos obscuros, y grandes cambios en la escala de grises. Para detectar a varias personas
al mismo tiempo usa una correlacion adaptativa, la fase de deteccion del sistema esta activa
continuamente, y puede detectar cuando una nueva persona entra en la escena, o redetectar
a una persona que no sea seguida debido a la oclusion excesiva u otras formas de fallo. Para
la deteccion utiliza plantillas de modelos semejantes a una persona. En cada ciclo actualiza el
estado del objeto utilizando el filtro de Kalman y la informacion obtenida por la correlacion de
la plantilla seguida.
En [55] se describe un algoritmo para el seguimiento de la postura de objetos articulados en
tiempo real. No requiere la predeterminacion de caractersticas o sus correspondencias, en su
lugar desarrolla simultaneamente la segmentacion del objeto en movimiento y su localizacion.
Esta dise
nado especialmente para objetivos articulados, e incorpora explcitamente las restricciones de las uniones para ayudar a seguir las posiciones y los lmites de las subpartes del objeto
en movimiento, lo que le da robustez. El metodo que propone sigue al objeto en movimiento
estimando incrementalmente su posicion en cada frame; es decir, realiza una estimacion secuencial. Fue aplicado al seguimiento de una mano, brazo y antebrazo. Un trabajo parecido se
presenta en [13], que propone una tecnica nueva de la estimacion del movimiento visual, que es
capaz de recuperar alto grado de libertad en las configuraciones articuladas del cuerpo humano,
a traves de secuencias de vdeo complejas. Se utilizan el producto de mapas exponenciales y
movimientos de giro, y su integracion en la estimacion del movimiento diferencial.
Como trabajos relacionados se hace mencion a aquellos que han utilizado blobs para el seguimiento de personas.
Se tiene al Pfinder, que ha evolucionado desde hace varios a
nos y ha sido utilizado para recuperar una descripcion en 3D de una persona, en un espacio del tama
no de un cuarto grande.
Pfinder ha sido usado en muchas aplicaciones. Resuelve el problema del seguimiento de una persona en escenas complejas arbitrarias, en las cuales hay solo una persona visible y una camara
6

fija. Pfinder es un sistema de seguimiento de personas en tiempo real, que interpreta ademas
su comportamiento. Utiliza una arquitectura de analisis de imagenes en 2D, con dos procedimientos complementarios, para el seguimiento en 2D y la inicializacion. El procedimiento de
inicializacion obtiene descripciones de la persona a partir de poco conocimiento a priori sobre
la escena, y es necesario para el arranque del sistema y cuando el seguimiento falle. El procedimiento de seguimiento actualiza recursivamente la descripcion basada en el conocimiento a
priori del frame anterior. El procedimiento de seguimiento puede determinar cuando ocurre un
error y puede entonces posponer el seguimiento para realizar un procedimiento de inicializacion,
lo cual es mas lento pero mas confiable. Los procedimientos de inicializacion y seguimiento del
Pfinder se basan principalmente en la probabilidad M
axima a Posteriori (MAP), el sistema usa
un modelo estadstico multiclase de color y forma para obtener una representacion en 2D de
la cabeza y manos en condiciones diversas de iluminacion. Pfinder ha sido utilizado con exito
en un amplio rango de aplicaciones incluyendo interfaces inalambricas, bases de datos de vdeo,
y codificacion de banda baja. Utiliza una representacion de blobs para modelar a la persona
[76, 5, 77, 74, 35]. Spfinder es una extension reciente del Pfinder en la cual se usa una camara
de alcance estereo para obtener movimientos en 3D de la cabeza y manos [37].
Otro trabajo relacionado es presentado en [48], se trata de un algoritmo para el seguimiento
del cuerpo humano en tiempo real usando datos de disparidad a partir de un sistema estereo
comercial. El objeto seguido se modela como un conjunto de segmentos de blobs en 3D, cada uno
modelado con una distribucion Gaussiana. El vector caracterstico tiene componentes de color
(Y, U, V) y componentes espaciales en 3D (x, y, z). La clasificacion de los pxeles del mapa de
disparidad en segmentos del objeto articulado, se basa en el principio de maxima probabilidad
con un mecanismo adicional para el rellenado de los datos faltantes (en caso de oclusiones). Las
restricciones de las articulaciones son reforzadas a traves del filtro extendido de Kalman, el cual
puede tambien usarse para modelar las dinamicas del objeto seguido.
KidRooms es un trabajo que realiza el seguimiento de m
ultiples objetos por medio de blobs, es
un sistema de seguimiento que se basa en regiones de mundos cerrados. Estas son regiones de
espacio y tiempo en las cuales el contexto especfico de que esta en las regiones se asume conocido.
Estas regiones son seguidas en dominios de tiempo real donde los movimientos del objeto no son
suaves o rgidos, y donde m
ultiples objetos estan interactuando [37]. El sistema KidsRoom sigue
y analiza las acciones e interacciones de las personas y objetos. En este trabajo se describe un
algoritmo que utiliza informacion contextual para seguir simultaneamente a m
ultiples objetos
complejos y no rgidos, el conocimiento contextual se refiere al conocimiento sobre los objetos
que estan siendo seguidos y sus relaciones entre ellos. Se asume un mundo cerrado, es decir, una
region de espacio y tiempo en la cual el contexto especfico de lo que hay en la region se asume
7

conocido, aunque las posiciones de los objetos que estan en el mundo cerrado no se conocen
necesariamente, cada objeto en el mundo tiene una estructura de datos o blobs, que almacena el
tama
no estimado del objeto, su color, velocidad, su posicion actual y pasada, esta informacion
se usa en el seguimiento del objeto [46].
Un sistema que en lugar de reconstruir el cuerpo, hace uso del flujo optico para segmentar en
blobs de movimiento las partes del cuerpo que tienen mayor movilidad (como son las manos o
brazos) se detalla en [25, 24]; un blob es modelado como una coleccion de vectores de flujo con
direcciones similares. Se trata de un sistema de reconocimiento de gestos en tiempo real que
emplea una tecnica basada en reglas. El algoritmo de segmentacion en blobs de movimiento es
similar al algoritmo de segmentacion por crecimiento de regiones; para generar cada conjunto,
se elige un vector de flujo aleatorio y se agregan a el todos los vectores de flujo cercanos con
direcciones similares a la direccion promedio del conjunto, este proceso contin
ua recursivamente
hasta que no hay vectores de flujo cercanos que puedan agregarse al conjunto, entonces se elige
otro vector de flujo y el proceso anterior se repite para generar un nuevo conjunto; cada conjunto
define a un blob.

1.4

Organizaci
on de la tesis

El trabajo esta organizado en cuatro captulos. En el primero de ellos se plantean los objetivos
del trabajo, una breve descripcion de los antecedentes y trabajos relacionados, y se presenta la
organizacion del mismo.
En el segundo captulo se describen los conceptos basicos de la metodologa empleada.
El tercer captulo esta dedicado a detallar el dise
no, la implementacion del sistema y los resultados obtenidos.
Finalmente el cuarto captulo contiene las conclusiones obtenidas y habla tambien de los trabajos
futuros.
El documento tiene como anexo al apendice A que se titula: seguimiento de la mano por medio
de distribucion de color, aplicado a la teleoperacion de robots. En este apartado se detalla una
aplicacion del modelo de blobs. A traves del reconocimiento de ademanes sencillos, se emplea el
modelo de blob de una mano para teleoperar a un robot .

Captulo 2
Marco conceptual
El proposito de un sistema de vision por computadora es crear un modelo del mundo real a partir
de imagenes, y recuperar informacion u
til sobre la escena [47]. La vision en movimiento puede ser
entendida (o implementada) como el analisis de imagenes estaticas secuenciales; lo que implica
que la vision envuelve el procesamiento de escenas estaticas, requiere grandes cantidades de
datos, y el analisis del movimiento consiste en estudiar diferencias o similitudes entre secuencias
de imagenes [2].
Para cumplir con el objetivo de este trabajo de investigacion, se realizo la implementacion de un
sistema de vision dinamica, que sea capaz de localizar y seguir a una persona en una escena (este
sistema sera descrito en el captulo 3). En este captulo se abordan los conceptos principales
del procesamiento de imagenes, que fueron empleados en la implementacion de tal sistema.

2.1

Representaci
on de im
agenes

El termino imagen se refiere a una funcion bidimensional de intensidad de luz, denotada por
f (x, y), donde el valor de la amplitud de f en las coordenadas espaciales (x, y) da la intensidad
(brillantez) de la imagen en ese punto. Como la luz es una forma de energa, f (x, y) debe ser
diferente de cero y de infinito, es decir [33]:
0 < f (x, y) <
Las imagenes que la gente percibe en sus actividades diarias normalmente consisten de la luz
reflejada de los objetos. La naturaleza basica de f (x, y) podra ser caracterizada por dos com9

ponentes:

1. La cantidad de la fuente de luz incidente en la escena observada.


2. La cantidad de luz reflejada por los objetos en la escena.

De modo apropiado, se les llama componentes de iluminaci


on y reflectancia, y son denotados por
i(x, y) y r(x, y), respectivamente. Las funciones i(x, y) y r(x, y) se combinan como un producto
para formar f (x, y) [33]:

f (x, y) = i(x, y)r(x, y)


donde: 0 < i(x, y) < , 0 < r(x, y) < 1.
La reflectancia esta limitada por 0 (total absorcion) y 1 (total reflectancia). La naturaleza de
i(x, y) esta determinada por la fuente de luz, y r(x, y) esta determinada por las caractersticas
de los objetos en la escena.
Considerando que la reflexion es constante en cada superficie de la escena e independiente de
la direccion de vista, la brillantez de la superficie depende de la orientacion de la superficie con
respecto a la fuente de luz. Una superficie cuya orientacion es perpendicular a la direccion de
la luz incidente tiene una apariencia mas brillante que si la superficie estuviera inclinada en un
angulo oblicuo a la direccion de la luz que llega. Si expresamos el angulo de incidencia entre la
direccion de la luz que llega y la normal de la superficie como , entonces el area proyectada de
un parche de superficie perpendicular a la direccion de la luz es proporcional a cos , como se
muestra en la figura 2.1 [38].
Si la luz que llega de la fuente es perpendicular a la superficie en un punto particular, ese punto
esta iluminado por completo. Conforme el angulo de iluminacion se separa de la normal de la
superficie, la brillantez del punto es menor. Si ipunto es la intensidad de la fuente de luz de un
punto en la superficie, entonces la ecuacion de reflexion para ese punto se puede expresar como
[38]:

rpunto = kd ipunto cos


Donde kd es una funcion de color de la superficie, tiene un valor constante entre 0 y 1, si la
superficie es muy reflejante se especifica un valor para kd muy cercano a 1, y para simular que
10


Figura 2.1: Area
iluminada que se proyecta perpendicular a la trayectoria de los rayos de luz que
llegan, imagen tomada de [38].

Figura 2.2: Angulo


de incidencia entre el vector de direccion de la fuente de luz de unidad L y la
normal de la superficie unitaria N, imagen tomada de [38].

la superficie absorbe la mayor parte de la luz incidente, se establece kd con un valor cercano a
0. Una superficie se ilumina por una fuente de punto solo si el angulo de incidencia esta en el
intervalo de 0 a 90 (si el cos esta en el intervalo de 0 a 1). Cuando cos es negativo, la fuente
de luz se localiza atras de la superficie. Si N es el vector normal unitario para una superficie
y L es el vector de direccion unitaria para la fuente de luz de punto desde una posicion en la
superficie (ver figura 2.2), entonces cos = N L y la ecuacion de reflexion para la iluminacion
de una sola fuente de luz de punto esta dada por la siguiente ecuacion [38]:

rpunto = kd ipunto (N L)

La intensidad de una imagen monocromatica f en las coordenadas (x, y) se conoce como el nivel
de gris l de la imagen en ese punto, l esta dentro del rango [33]:

Lmin l Lmax

11

En teora, el u
nico requerimiento sobre Lmin es que sea positiva, y sobre Lmax es que sea finita.
El intervalo [Lmin , Lmax ] se llama escala de grises. Com
unmente en la practica, numericamente
el intervalo se representa como [0, L], donde l = 0 se considera negro y l = L se considera como
blanco en la escala. Todos los valores intermedios son sombras y variaciones continuas de gris
que van del negro al blanco.
Una imagen digital f (x, y) ha sido discretizada tanto en las coordenadas espaciales como en
la brillantez, puede considerarse como una matriz cuyos renglones y columnas identifican a un
punto en la imagen, y el valor correspondiente al elemento de la matriz identifica el nivel de
gris de ese punto. Los elementos de tal arreglo digital son llamados elementos de la imagen
o pxeles [33]. Un pxel es una muestra de la intensidad de la imagen cuantificada a un valor
entero [73, 47]. Un pxel es, como ya se menciono,tanto un valor de nivel de gris, el cual es una
muestra cuantificada de la intensidad continua de la imagen; y a la vez es una ubicacion en la
imagen, especificada como los ndices del renglon y la columna en el arreglo de la imagen. El
arreglo de la imagen se obtiene muestreando la intensidad de la imagen en puntos sobre una
tabla rectangular [57, 47].
En el arreglo bidimensional de pxeles, que representa a la imagen, los ndices del renglon y
columna [i, j] de un pxel son valores enteros. El pxel localizado en [0, 0] (origen) esta situado
en la esquina superior izquierda de la imagen. El ndice i apunta hacia abajo, y el ndice j
apunta a la derecha. Las posiciones de los puntos en el plano de la imagen tienen coordenadas
x y y. La coordenada y del punto corresponde a la direccion vertical y la coordenada x del
punto corresponde a la direccion horizontal. Note que las direcciones correspondientes a los dos
ndices [i, j] son opuestas a las direcciones correspondientes a las respectivas coordenadas en la
posicion (x, y) [57, 47].
En las figuras siguientes se ejemplifican los conceptos descritos anteriormente. La imagen 2.3
muestra el plano de la imagen f (x, y), observe la direccion vertical de y y la direccion horizontal
de x; en la imagen 2.4 se tiene la representacion del arreglo bidimensional de la imagen, un pxel
es localizado en las coordenadas [i, j]; y finalmente en la figura 2.5 se observan los valores en
intensidades de gris de los pxeles de la imagen, representados como un arreglo bidimensional.

2.2

Introducci
on al Color

El color es un fenomeno perceptual importante, relacionado con la respuesta humana a diferentes


longitudes de onda en el espectro visible [18]. El color de un objeto depende no solo del objeto
12

Figura 2.3: Plano de la imagen. El crculo negro representa un pxel de la imagen, con coordenadas
espaciales (x, y) y un nivel de intensidad dado por el valor de f (x, y). La coordenada y
del punto corresponde a la direccion vertical y la coordenada x del punto corresponde a
la direccion horizontal de la imagen.

Figura 2.4: Arreglo bidimensional de la imagen. Un pxel es localizado dentro del arreglo por los
ndices del renglon y columna [i, j]. El ndice i apunta hacia abajo, y el ndice j apunta
a la derecha.

13

Figura 2.5: Digitalizacion de una imagen. (a) Imagen original f (x, y), el recuadro blanco se explica
en el siguiente inciso, (b) Muestra el recuadro blanco amplificado, cada elemento de la
cuadrcula corresponde a un pxel de la imagen. (c) Representacion bidimensional de (b),
el valor de cada celda del arreglo corresponde con el nivel de gris de cada pxel.

14

por s mismo, sino tambien de la fuente de luz que lo ilumine, del color del entorno, y del
sistema de vision humano. La percepcion humana de la brillantez o el color de una imagen, es
altamente influenciado por la brillantez o el color de las partes vecinas. Las sensaciones visuales
causadas por la luz de color son mucho mas ricas que aquellas causadas por la luz acromatica.
La percepcion humana es tambien afectada por la constancia relativa de la luz percibida y el
color de una superficie bajo diferentes condiciones de iluminacion [29].
La percepcion humana del color involucra la diferenciacion basada en tres propiedades independientes: intensidad, color y saturacion. La intensidad es el valor de la luminosidad. La
saturacion es la distancia de la luminosidad hasta el color puro, el color rojo esta altamente
saturado, los colores pastel son relativamente no saturados, y los colores no saturados incluyen
mas luz blanca que los saturados. Los colores son una sntesis de la mezcla de tres colores
primarios, com
unmente se utilizan como colores primarios al rojo, verde y azul [83, 29]. La
brillantez, un cuarto termino, se usa en lugar de la luz, para referirse a la intensidad percibida
de un objeto auto-luminoso (un objeto que emite en lugar de reflejar luz), tal como un foco o
el sol [29].
Resumiendo, el color percibido depende de tres factores [47]:

1. Reflectancia espectral de las superficies de la escena, la cual determina como las superficies
reflejan el color.
2. Contenido espectral de la iluminacion ambiental, la cual es el contenido de color de la luz
reflejada sobre las superficies.
3. Respuesta espectral de los sensores en el sistema de vision.

2.2.1

Espacios de color

Un espacio de color es una especificacion de un sistema de coordenadas de color en 3D, y un


subconjunto visible en el sistema coordenado, en el cual todos los colores permanecen en un
rango particular de color. Por ejemplo, el modelo RGB es un cubo unitario, el cual es un
subconjunto del sistema de coordenadas cartesianas en 3D. El objetivo de un modelo de color
es permitir la especificacion conveniente de colores en alg
un rango de color [29].
Existen tres modelos de color orientados al hardware que son: los modelos RGB (Red, Green,
Blue), usado en los monitores de color CRT (Cathode Ray Tube), el modelo YIQ, usado en el
15

Figura 2.6: Cubo unitario del modelo de color RGB, imagen tomada de [54].

sistema de color de television, y CMY (Cyan, Magenta, Yellow) usado por algunos dispositivos
de impresion a color. Desafortunadamente ninguno de estos modelos son faciles de usar debido
a que no relacionan directamente las nociones intuitivas de color, saturacion y brillantez. Por
lo que se han desarrollado otra clase de modelos, algunos de ellos son los modelos HSV (Hue,
Saturation, Value), HLS (Hue, Lightness, Saturation) y HVC (Hue, Value, Chroma) [29].
Abundaremos sobre el modelo de color RGB que fue utilizado en este trabajo como se explicara
en el captulo tres. En el modelo de color RGB las primitivas RGB son primitivas aditivas; es
decir, las contribuciones individuales de cada primitiva son adicionadas juntas para conducir al
resultado. El subcojunto de interes es el cubo unitario mostrado en la figura 2.6. La diagonal
principal del cubo, con iguales cantidades de cada primitiva, representa los niveles de gris; el
negro es (0, 0, 0) y el blanco es (1, 1, 1) [29]. En el modelo RGB, se usan como los tres colores
primarios al rojo, verde y azul. Se trata de un modelo aditivo en el que el color emite luz, a
diferencia de un modelo de sustraccion en el cual el color es absorbido [60].
En este modelo la suma de los valores de los colores complementarios es igual a la luz blanca
(1, 1, 1), por ejemplo [60]:

1. Verde (0, 1, 0) + magenta (1, 0, 1) = blanco (1, 1, 1)


2. Azul (0, 0, 1) + amarillo (1, 1, 0) = blanco (1, 1, 1)
3. Rojo (1, 0, 0) + cyan (0, 1, 1) = blanco (1, 1, 1)

16

Figura 2.7: Representacion de una imagen en formato RGB, imagen tomada de [39].

2.2.2

Im
agenes RGB

La luz tiene intensidad y las imagenes tienen valores de niveles de gris; la luz consiste de un
espectro de longitud de onda y las imagenes pueden incluir muestras de m
ultiples longitudes
de onda llamadas canales o bandas [47]. Los niveles de gris son medidas fsicas que son una
funcion de la iluminacion, punto de vista, reflexion de la superficie, y orientacion de la superficie.
En general las variaciones de la iluminacion, la reflectancia de la superficie, y la orientacion de
la superficie, dan un incremento a las imagenes sombreadas para que sean vistas desde un
perspectiva dada [83].
Una imagen de color es com
unmente descrita por la distribucion de tres componentes de color
R (Red), G (Green), B (Blue). Aunque muchos otros atributos pueden ser calculados a partir
de estos componentes [17, 19]. En una imagen en formato RGB las intensidades de cada una
de las tres componentes de color estan almacenadas en un byte, por lo tanto se requiere de tres
bytes para almacenar el color de un pxel en la imagen, tal como se muestra en la figura 2.7 [39].

2.3

Diferencia de Im
agenes

La diferencia entre dos imagenes f(x, y) y h(x, y) se expresa como: g(x, y) = f (x, y) h(x, y),
y se obtiene comparando las dos imagenes pxel por pxel. La diferencia de imagenes tiene
numerosas aplicaciones importantes en la segmentacion, deteccion de movimiento, y en la mejora
de la calidad de las imagenes [33].
En una escena dinamica, esta puede considerarse como una secuencia de frames, y se representa
por F (x, y, t), donde x y y son las coordenadas espaciales en el frame que representa a la escena
en el tiempo t. Debido a que los frames son tomados en intervalos regulares, se asume que t
representa el t-esimo frame de la secuencia, en lugar de considerar que el frame fue tomado en

17

el tiempo absoluto t. La mayora de las tecnicas de analisis de escenas dinamicas se basan en la


deteccion de cambios en una secuencia de frames. Una de las tecnicas mas sencillas de deteccion
de cambios es la diferencia de imagenes. Para detectar el cambio entre dos frames, este metodo
realiza una comparacion directa entre los pxeles de los dos frames a cotejar . En su forma mas
simple, una diferencia binaria de imagenes Djk (x, y) entre los frames F (x, y, j) y F (x, y, k) se
obtiene de la siguiente forma [47]:

1 Si |F (x, y, j) F (x, y, k)| > ,


Djk (x, y) =
0 en cualquier otro caso.

(2.1)

donde es un umbral. En una diferencia de imagenes, los pxeles que tienen un valor de 1
podran ser considerados como el resultado del movimiento de un objeto o de cambios en la
iluminacion. El umbral juega un papel importante, ya que si los objetos se mueven lentamente
y la intensidad vara lentamente, tambien estos cambios podran no ser detectados para un
umbral determinado [47].
El movimiento es una caracterstica poderosa, usada por el humano y por los animales para
extraer objetos de interes de un fondo de detalles irrelevantes. En aplicaciones de imagenes, el
movimiento crece a partir de un desplazamiento relativo entre el sistema de sensado y la escena
que esta siendo vista, tal como en las aplicaciones de robotica, la navegacion autonoma, y el
analisis de escenas dinamicas. La diferencia de imagenes es una tecnica espacial para la deteccion
de movimiento. El aspecto mas atractivo de la diferencia de imagenes para la deteccion del
movimiento es su simplicidad. Supongamos que tenemos una imagen de referencia conteniendo
solo componentes estacionarios. Comparando esta imagen contra una imagen subsecuente que
tenga el mismo ambiente pero que incluya tambien un objeto en movimiento, la diferencia de
las dos imagenes cancela los componentes estacionarios, dejando solo las entradas diferentes de
cero que corresponden a los componentes de la imagen no estatica [33].
En su forma mas simple, la diferencia de imagenes es susceptible al ruido. Los cambios en
la iluminacion y el registro de la camara, ademas del ruido electronico de la camara, pueden
dar como resultado muchas falsas alarmas. Un filtro puede eliminar la mayora del ruido de
la camara [47]. En el analisis de imagenes dinamicas todos los pxeles que tienen valor de 1
son considerados como el resultado del movimiento del objeto. Esta propuesta es aplicable solo
si las dos imagenes son registradas y la iluminacion es relativamente constante en los lmites
establecidos por el umbral. En la practica, los valores con 1 frecuentemente se incrementan
debido a la presencia del ruido. Com
unmente estas entradas son puntos aislados en la diferencia
18

de imagenes, una propuesta simple para removerlos es formar regiones conectadas de cuatro u
ocho pxeles con valores de 1, y entonces ignorar cualquier region que sea mas peque
na u objetos
que se esten moviendo mas lentamente, esta propuesta mejora el resultado de la diferencia de
imagenes, as se obtiene realmente el resultado del movimiento [33].

2.4

Morfologa

La morfologa com
unmente indica una rama de la biologa que trata de la forma y estructura
de los animales y plantas. En vision computacional se usa esta palabra en el contexto de la
morfologa matematica, como una herramienta para extraer componentes tales como los lmites,
los esqueletos y el contorno de una imagen, y que son u
tiles en la representacion y descripcion
de la forma de una region. El lenguaje de la morfologa matematica es la teora de conjuntos.
Los conjuntos en la morfologa matematica representan las formas de los objetos en una imagen
[33, 47, 7, 61, 6, 23, 69]. La morfologa matematica es una teora que involucra operaciones
logicas booleanas sobre las imagenes, utilizando teora de conjuntos adaptada a las imagenes,
obtiene su nombre de los estudios del analisis de formas. Se basa en la investigacion de la
asociacion entre las formas o estructuras que contiene la imagen y las formas que pueden ser
significativas para la aplicacion. Trata a las imagenes como conjuntos de puntos en el espacio
que solo pueden tomar uno de los dos estados, activo o inactivo, es decir, conjuntos binarios.
Los pxeles activos representan el area de interes y el conjunto de pxeles inactivos representan el
conjunto del fondo de la imagen. Las imagenes en escala de grises se representan como imagenes
binarias en un espacio tridimensional, la brillantez es la tercera dimension. Las transformaciones
resultantes de la morfologa matematica pueden clasificarse en tres categoras [83]:
1. Unaria, una imagen de entrada produce una imagen de salida.
2. Binaria, dos imagenes de entrada producen una imagen de salida
3. Extraccion de informacion, una imagen de entrada da como salida informacion numerica.
En cada una de estas categoras las operaciones sobre las imagenes binarias pueden ser logicas
o geometricas. Las operaciones unarias incluyen el complemento (negacion), la reflexion, y
la traslacion. El complemento es la operacion logica, que cambia todos los pxeles que estan
activos a inactivos y viceversa. La traslacion cambia todos los pxeles en una direccion dada
a una distancia especificada. La reflexion asume un origen para la imagen y coordenadas para
cada punto, multiplicando por 1 los pxeles que pertenecen a la region de interes, estos son
19

Figura 2.8: Elementos estructurales comunes, imagen tomada de [69].

reflejados a traves del origen, para imagenes bidimensionales esto es analogo a rotar la imagen
180 grados. Las operaciones binarias combinan dos imagenes en una. Dados dos conjuntos, de
la teora de conjuntos, las combinaciones logicas entre dos imagenes son la union, la interseccion
y la diferencia [83].
Las operaciones morfologicas basicas son la dilatacion y la erosion [83, 33, 47, 7, 6, 61, 23, 69],
mismas que se explican enseguida mas a detalle .

2.4.1

Elemento estructural

Las transformaciones de erosion y dilatacion involucran la interaccion entre una imagen A (el
objeto de interes) y un conjunto estructural B, el cual es llamado elemento estructural [33, 47].
Com
unmente el elemento estructural B es un disco circular en el plano, pero puede tener
cualquier forma. La figura 2.8 resume los tipos basicos de elementos estructurales [69]. El
elemento estructural puede ser visto de manera intuitiva como una mascara de convolucion [61].

2.4.2

Dilataci
on

La operacion de dilatacion entre dos conjuntos A y B, involucra la transformacion de cada pxel


individual en la imagen A por cada pxel en la imagen B [83]. La dilatacion de A por B se
L
denota por A B, y se define formalmente como [33, 6, 61]:

B = {x|(Bx )

A 6= }

(2.2)

Donde B representa al elemento estructural posicionado en x.

20

Figura 2.9: A es dilatada por el elemento estructural B, las lneas punteadas muestran el resultado
de la dilatacion, imagen tomada de [61].

La dilatacion es el lugar geometrico de los puntos, que al centrar o posicionar el elemento


estructural en sus elementos, intersecta al conjunto.
La dilatacion cumple con las propiedades asociativa y conmutativa. Por lo tanto en una secuencia de pasos de dilatacion el orden de las operaciones realizadas no es importante, lo que permite
descomponer una forma compleja en varias mas simples, las cuales pueden ser recombinadas
como una secuencia de dilataciones [47].
Considere como un ejemplo de dilatacion, el mostrado en la figura 2.9, donde la imagen A es
un rectangulo y el elemento estructural B es un disco centrado en el origen [61].

2.4.3

Erosi
on

La erosion es lo opuesto a la dilatacion. La erosion de una imagen por un elemento estructural


resulta en una imagen, que muestra todas las ubicaciones donde el elemento estructural esta
contenido en la imagen [83, 47]. El principal mecanismo del operador de la erosion, es la
comparacion local del elemento estructural con el objeto que sera transformado, si para un
punto dado el elemento estructural esta contenido en el objeto, entonces este punto aparecera
como resultado de la transformacion [6, 61]. La erosion se define formalmente como [33]:

A B = {x|(Bx ) A}

(2.3)

Esta ecuacion nos dice que la erosion de A por B es el conjunto de todos los puntos x tales que
B, trasladado por x, esta contenido en A [33]. Se observa que la erosion es el lugar geometrico
21

Figura 2.10: A es erosionada por el elemento estructural B, el resultado de la erosion se representa


con la lnea punteada, imagen tomada de [61].

Figura 2.11: (a) Muestra la imagen original, (b) muestra la imagen dilatada, (c) muestra la imagen
erosionada, imagen tomada de [49].

de los puntos, que al posicionar el elemento estructural en sus elementos, queda completamente
contenido en el conjunto. Un ejemplo de erosion de la imagen A por el elemento estructural B
se aprecia en la figura 2.10 [61].
Otro ejemplo del proceso de dilatacion y erosion sobre una imagen binaria se observa en la figura
2.11 [49].
La dilatacion y la erosion son operaciones duales, porque la dilatacion de los pxeles de interes es
equivalente a la erosion de los pxeles del fondo. Estas operaciones basicas pueden combinarse,
por ejemplo la erosion seguida de una dilatacion en la misma imagen, removera todos los pxeles
en una region que son mas peque
nos que el elemento estructural. Esta secuencia es llamada
opening. Si se utiliza un elemento estructural circular o de disco, todas las regiones de pxeles
mas peque
nas que el disco seran eliminadas. Esto forma un filtro que suprime detalles espaciales
positivos. La secuencia opuesta, una dilatacion seguida de una erosion, rellena los huecos que
son mas peque
nos que el elementos estructural [83]. Puede observarse que la dilatacion expande
22

Figura 2.12: Modulos del procesamiento de imagenes, imagen tomada de [33].

un objeto en una imagen mientras que la erosion lo contrae [61].

2.5

An
alisis autom
atico de im
agenes

El analisis automatizado de escenas involucra varias etapas o pasos, que a continuacion describimos (ver figura 2.12).

2.5.1

Adquisici
on de im
agenes

El primer paso en el procesamiento de imagenes es la adquisici


on de la imagen, es decir, adquirir
una imagen digital. Para hacer esto se requiere de un sensor de imagen y la capacidad de digitalizar la se
nal producida por el sensor. El sensor podra ser una camara de vdeo monocromatica
o de color, que produce una imagen completa del dominio del problema cada determinado
perodo de tiempo. El sensor de imagen puede ser tambien una camara digital, que produce una
u
nica imagen cada vez. La naturaleza del sensor y la imagen que se produce son determinados
por la aplicacion [33].

2.5.2

Preprocesamiento

Despues de haber obtenido una imagen digital, el siguiente paso consiste en el preprocesamiento
de la imagen. La funcion principal del preprocesamiento es mejorar la imagen para asegurar
el exito de los otros procesos. Las tecnicas del preprocesamiento pueden ser incremento del
contraste, eliminacion de ruido, o aislamiento de regiones cuya textura indica una probabilidad
de informacion alfanumerica [33].
23

Existe un n
umero de rutinas que pueden aplicarse para mejorar el contenido de los datos de la
imagen, antes de pasar a las etapas de analisis de la misma [83]:
- El mejoramiento de la brillantez y el contraste alteran la escala de gris de la imagen.
La variacion de la brillantez involucra la adicion o substraccion de una constante de
brillantez sobre todos los pxeles de la imagen. La reduccion del contraste (shrinking)
implica la multiplicacion o division de todos los pxeles por una constante de brillantez.
Estas operaciones pueden ecualizar la escala de gris de la imagen para que sea ocupado el
rango completo de la escala de gris disponible.
- La suavizacion puede desarrollarse promediando muchos frames de los datos de la imagen
o de areas locales en el frame. La combinacion de dos o mas imagenes es frecuentemente
u
til en el proceso de mejoramiento. La obtencion del promedio de la imagen se utiliza
frecuentemente para la eliminacion de ruido en la imagen.
- La diferencia de imagenes puede ser utilizada para detectar movimiento de objetos entre
dos frames de imagenes similares. La diferencia puede tambien utilizarse para remover
objetos de la escena que estan contenidos en una y no en la otra.
- Las operaciones de filtros espaciales, crean una imagen de salida basada en el contenido de
la frecuencia espacial de la imagen de entrada. Los filtros espaciales funcionan com
unmente
como sigue: pxel a pxel, la imagen de salida es generada por la brillantez relativa del pxel
con sus vecinos. Si la brillantez de la vecindad del pxel, realiza transiciones rapidas de luz
a obscuro o viceversa, puede decirse que la imagen contiene componentes de alta frecuencia. Una vecindad del pxel donde la brillantez vara lentamente, representa componentes
de baja frecuencia. Las operaciones de filtrado usan convoluciones espaciales. Para cada
pxel de entrada en la imagen, un pxel de salida se basa en el promedio ponderado de
dicho pxel y de sus vecinos. Com
unmente se utiliza una vecindad de tres por tres pxeles,
aunque puede utilizarse una vecindad mayor para agregarle flexibilidad. Con la seleccion
correcta de los coeficientes de peso, se pueden obtener varios filtros de mejoramiento paso alto o paso bajo. En una operacion de vecindad cercana se involucran nueve pxeles
contiguos sobre los que se realiza una convolucion espacial, y se definen nueve coeficientes
de peso. La brillantez del pxel de entrada se eval
ua y sus ocho vecinos inmediatos son
cada uno multiplicado por su respectivo coeficiente de peso. Estos productos son sumados, produciendo una nueva brillantez del pxel de salida (filtrado espacialmente). Esta
operacion se aplica sistematicamente a cada pxel en la imagen de entrada, resultando
una imagen de salida espacialmente filtrada. Un filtro espacial aten
ua o acent
ua el contenido de frecuencia bidimensional de una imagen. Estas operaciones podran usarse para
24

enfatizar los detalles de alta frecuencia de la imagen, obteniendo una imagen mas clara.
Los filtros paso alto tienen poco efecto sobre la informacion de baja frecuencia (areas en
la imagen de brillantez muy uniforme) pero acent
uan los datos de alta frecuencia, tales
como los bordes. Alternativamente, los detalles de alta frecuencia pueden ser atenuados,
obteniendo una imagen paso bajo de poco detalle. Esto tiene un efecto de suavizacion
o de distorsion. Los realzadores de bordes no solo acent
uan los datos de alta frecuencia,
pero a diferencia de los filtros paso alto que no modifican los datos de baja frecuencia de
la imagen, ellos los eliminan, los bordes y otros datos de alta frecuencia son realzados.

2.5.3

An
alisis de la imagen

Una vez obtenido el realce de la imagen, la siguiente operacion en un sistema de vision por
computadora es el analisis de la imagen. El analisis incluye la segmentacion (puede ser solo de
la region de interes) o reducir la imagen a una imagen binaria asignando uno a todos los valores
de un nivel de gris superior a cierto umbral, y asignado un valor de cero a todos los valores de
nivel de gris inferiores a dicho umbral, o alternativamente, la escena podra segmentarse por
bordes, color o textura. El analisis puede realizarse sobre la imagen segmentada o no segmentada
o sobre imagenes codificadas. Hay dos clases amplias de analisis de imagenes que son basadas en
la representacion o basadas en las caractersticas. En los sistemas basados en el reconocimiento
de patrones, cualquier n
umero de propiedades pueden ser la base para el establecimiento de una
clasificacion. La representacion codificada mas simple es un mapa de pxeles, ya sea binario o
en escala de grises [83].

2.5.4

Segmentaci
on

La segmentacion es la division de la imagen en sus partes constituyentes u objetos [33]. El


proposito de la segmentacion de una imagen consiste en dividirla en varias areas significativas,
donde el objeto de interes este contenido, de modo que el objeto de interes puede ser sujeto de
un mejor analisis o una mejor interpretacion, y puede extraerse de escenas mas complejas. Por
lo que la segmentacion representa una de las primeras etapas en el analisis de identificacion de
una imagen [57, 73]. En general, la segmentacion autonoma es una de las tareas mas difciles en
el procesamiento digital de imagenes. Una buena segmentacion puede conducir al exito mientras
que una segmentacion erronea casi siempre garantiza el fracaso en alg
un problema de vision [33].
En la practica pueden distinguirse dos tipos de segmentacion: la segmentacion de regiones o
25

zonas y la segmentacion por contornos. Lo que vara para cada tipo de segmentacion es aquello
que se desea segmentar, para el primer caso se desea segmentar zonas, y para el segundo, ya
dentro de una region concreta, se desean segmentar objetos individuales [1]; as que el resultado
de la segmentacion usualmente son los bordes de una region o todos los puntos que pertenecen
a la region en s misma, en ambos casos se requiere de convertir los datos a una forma adecuada
para su procesamiento [33]. La primera decision que debe tomarse es si los datos deben ser
representados como un borde o como una region completa. La representacion como bordes o
contornos es apropiada cuando el punto de interes son las caractersticas de la forma externa,
tales como las esquinas e inflexiones. La representacion regional es apropiada cuando el punto
de interes son las propiedades internas, tales como la textura o la estructura de la forma. En
algunas aplicaciones estas representaciones coexisten [33].
En general, las operaciones de segmentacion de una escena, as como el n
umero de clases de
regiones y objetos a distinguir, dependera de la escena y de la informacion que se busque dentro
de la imagen [1].
Las tecnicas de segmentacion, ya esten orientadas a objetos o a agrupaciones de objetos, se
pueden dividir en cuatro grupos [32, 1]:
1. Aplicacion de umbrales de nivel de gris.
2. Agrupacion por rasgos comunes.
3. Extraccion de bordes.
4. Extraccion de regiones.
La aplicacion de umbrales se basa en el empleo del histograma. Basicamente, consiste en
distinguir objetos individuales dentro de una escena a partir de sus diferentes niveles de gris [1].
La segmentacion de imagenes mediante la agrupacion (o tambien llamado clustering) se inspira
en las tecnicas que tienen la capacidad de crear clases o patrones (clusters). En estas tecnicas no
existe un conocimiento suficiente acerca de las clases en que pueden distribuirse los objetos de
interes [1]. Los algoritmos de agrupacion requieren como u
nica informacion, la definicion previa
del vector de caractersticas. Algunos de estos algoritmos, a lo sumo, precisan conocer tambien
el n
umero de clases. Una vez establecido el vector de caractersticas, los procedimientos de agrupacion de clases reciben como datos de entrada los objetos (convertidos logicamente en vectores
numericos) a clasificar, de modo que a partir de estos datos de entrada el algoritmo, sin supervision de ning
un tipo y de forma autonoma, agrupa esos vectores en clases (clusters o nubes).
26

Figura 2.13: Representacion simbolica de un algoritmo de agrupacion, imagen tomada de [1].

Por esta razon se les ha denominado tambien algoritmos de clasificacion auto-organizada. Puede
considerarse cualquier caracterstica que ayude a solucionar el problema de la segmentacion, como pueden ser medidas de textura definidas en una vecindad local. Existen problemas que no
pueden solucionarse con una sola caracterstica y que requieren de dos o mas caractersticas. La
figura 2.13 muestra graficamente esta cualidad de las tecnicas de agrupacion de datos [32, 1].
Las tecnicas de agrupacion se utilizan cuando no existe un conocimiento suficiente acerca de las
clases en que se pueden distribuir los objetos de interes. Aunque tambien se emplean cuando
existe un conocimiento completo de las clases, en cuyo caso los algoritmos de agrupacion se
aplican como herramientas de verificacion del vector de caractersticas escogido [1].
El metodo de la extraccion de bordes considera que la mayor cantidad de informacion se encuentra en los bordes; juzga que la mayora de los objetos pueden reconocerse a partir de su
forma, la cual es definida por sus bordes [1]. Las caractersticas pueden extraerse de los bordes
[83]. La segmentacion con este metodo se realiza encontrando los pxeles que estan situados
en los lmites de una region. Estos pxeles, llamados bordes, pueden encontrarse buscando en
la vecindad de los pxeles. La mayora de los detectores de bordes usan solo caractersticas de
intensidad para detectarlos, aunque tambien pueden usarse otras caractersticas como la textura
y el movimiento [47]. Los bordes pueden obtenerse a partir de una imagen binaria o una imagen
en escala de grises. En el caso de una imagen en escala de grises, un borde se caracteriza como
los puntos que cambian bruscamente en la intensidad en la escala de grises [83]. En imagenes
ideales una region esta contenida dentro de un contorno cerrado. Los bordes (contornos cerrados) pueden obtenerse a partir de la region usando un algoritmo de seguimiento de bordes.
De modo similar, las regiones pueden obtenerse a partir de los bordes usando un algoritmo de
rellenado de regiones. Desafortunadamente en las imagenes reales es difcil obtener los bordes
correctos a partir de las regiones y viceversa. Debido al ruido y otros factores, ni la segmentacion
de regiones ni la deteccion de bordes proporciona informacion perfecta [32, 47]. Una propuesta
interesante para contender con los problemas mencionados son los contornos activos o snakes
(para ver con mas detalle snakes consulte [81]), este modelo de contorno es de gran utilidad,
pues a partir de este se puede atacar tanto la parte de segmentacion de objetos en una imagen,
como el seguimiento de estos en secuencias de imagenes. Una ventaja de utilizar el metodo de
contornos deformables para realizar la labor de segmentacion, radica en que el contorno alrede27

dor del objeto queda determinado por pocos parametros, a partir de los cuales se puede obtener
informacion tal como el area y el permetro del objeto en la imagen [39]. Muchos sistemas de
segmentacion por bordes, se basan en la deteccion de patrones de incrementos o decrementos
de intensidades, o en gradientes, que generalmente encuentran los bordes de los objetos. Si se
basan en los gradientes son menos sensitivos a las variaciones de iluminacion y pueden manejar
escenas de menor contraste [83].
En la propuesta basada en la extraccion de regiones, todos los pxeles que corresponden a un
objeto, son agrupados juntos y son marcados para indicar su pertenencia a una region. Los
pxeles se asignan a regiones usando alg
un criterio que los distingue del resto de la imagen.
Los dos principios importantes en la segmentacion son el valor de similaridad y la proximidad
espacial. Dos pxeles pueden asignarse a la misma region, si tienen caractersticas de intensidad
similares o si estan cerca uno del otro. Por ejemplo, una medida especfica del valor de similitud
entre dos pxeles es la diferencia entre sus niveles de gris, y una medida especfica de proximidad
espacial es la distancia Euclidiana (para abundar sobre la distancia euclidiana ver [1]). Los
principios de similitud y proximidad, vienen de la suposicion de que los puntos sobre el mismo
objeto, proyectaran a los pxeles en la imagen que estan espacialmente cerca y tienen valores de
nivel de gris similares. Esta condicion puede no satisfacerse en muchas situaciones. Podemos
sin embargo, agrupar pxeles en la imagen, usando estas dos simples suposiciones y aplicar
cierto conocimiento dependiente del dominio, para hacer que las regiones correspondan con los
modelos del objeto [47].
La segmentacion por contornos y la segmentacion por regiones pueden considerarse como complementarias o duales una de la otra, en el sentido que si se conoce completamente el contorno
o frontera de un objeto, se pueden determinar propiedades de la region (el area o momentos,
entre otras). De la misma forma, si se identifica completamente la region del objeto, pueden
determinarse propiedades del contorno, aunque esto no significa que tienen exactamente la misma informacion para realizar la segmentacion. La propuesta de la segmentacion por regiones
es complementaria al enfoque de la segmentacion por contornos, sin embargo no proporcionan
resultados iguales. Cada tecnica tiene sus ventajas y limitaciones, y esta ligada fuertemente a
la aplicacion en cuestion. Ninguno de estos dos tipos de segmentacion por s solo produce una
segmentacion ideal. Un procedimiento de cooperacion entre ambas tecnicas permitira explotar
las ventajas de cada metodo y reducir sus desventajas [8, 50].
Para efectos de este trabajo, se abundara en las tecnicas de segmentacion de extraccion de
regiones, o llamadas tambien tecnicas de segmentaci
on orientadas a regiones (seccion 2.5.4.1)
[33]. Y ya dentro de los algoritmos de extraccion de regiones nos enfocaremos a un algoritmo que

28

comienza con regiones semilla, las cuales crece para formar regiones mas grandes que satisfagan
ciertas restricciones [47].

2.5.4.1

Definici
on formal de segmentaci
on

Una region en una imagen es un grupo de pxeles contiguos con propiedades similares. Las
regiones son importantes para la interpretacion de una imagen debido a que pueden corresponder
a objetos dentro de la escena. Una imagen podra contener varios objetos, y a su vez, cada
objeto puede contener varias regiones que corresponden a diferentes partes del objeto. Para que
una imagen pueda ser interpretada de manera precisa, debe ser particionada en regiones que
correspondan a objetos o partes de un objeto. Sin embargo debido a los errores que puede tener
la segmentacion, la correspondencia entre regiones y objetos no es perfecta, y para interpretar
a la imagen en etapas posteriores, es necesario emplear conocimiento a priori sobre el objeto
especfico [47].
Sea R la representacion de la region que contiene a la imagen completa. Puede verse a la
segmentacion como el proceso que divide a R en n subregiones, R1 , R2 , ..., Rn , tales que [82, 32,
73, 33, 41, 40, 42]:

a)

Sn

i=1

Ri = R

b) Ri , es una region conectada, i = 1,2, . . . ,n,


c) Ri

Rj = para toda i y j, i 6= j,

d) P (Ri ) = V ERDADERO para i = 1,2, . . . ,n, y


e) P (Ri

Rj ) = F ALSO para i 6= j, donde P (Ri ) es un predicado logico sobre los puntos en

el conjunto Ri .
Estas condiciones pueden resumirse como sigue [82, 32, 73, 33]: la primer condicion implica que
cada punto de la imagen debe estar contenido en una region, es decir, la segmentacion debe
ser completa; esto significa que el algoritmo de segmentacion no debe terminar hasta que cada
punto sea procesado. La segunda condicion expone que los puntos en una region deben estar
conectados o ser contiguos. La tercera condicion indica que las regiones deben ser disjuntas. La
cuarta condicion determina que clase de propiedades deben satisfacer los pxeles en una region
segmentada. Finalmente la condicion cinco sugiere que las regiones Ri y Rj son diferentes en el
sentido del predicado P.
29

La segmentacion de una imagen es la division de la misma en diferentes regiones, donde cada region tiene propiedades diferentes. Es el primer paso en el analisis de imagenes. La segmentacion
de imagenes es un componente crtico de un sistema de reconocimiento de imagenes, debido a
que los errores en la segmentacion se podran propagar a la extraccion de caractersticas y la
clasificacion [32].
No existen algoritmos de segmentacion generales que trabajen para todas las imagenes. Una
razon de ello, es que una imagen bidimensional puede representar potencialmente un n
umero infinito de posibilidades, lo cual significa que para generalizar sera necesario una vasta cantidad
de conocimiento. Cualquier algoritmo matematico debe ser complementado con heursticas,
com
unmente se involucran semanticas sobre las clases de imagenes que se estan considerando. Frecuentemente se persiguen heursticas simples, y es esencial la introduccion de cierto
conocimiento a priori sobre la imagen [32].

2.5.4.2

Segmentaci
on por crecimiento de regiones.

El crecimiento de regiones como su nombre lo indica es un procedimiento que agrupa pxeles


o subregiones en regiones mas grandes. La forma mas simple para realizar este procedimiento
consiste en la agregacion de pxeles, la cual comienza con un conjunto de puntos semilla, a partir
de los cuales las regiones crecen, agregando a cada punto semilla aquellos pxeles de la vecindad
que tienen propiedades similares (nivel de gris, textura, color, intensidad promedio, varianza)
[82, 33, 47].
El crecimiento de regiones en su sentido mas simple, es el proceso de unir puntos vecinos (o
colecciones de puntos) en regiones mas grandes, sujeto a las condiciones establecidas por la
definicion de segmentacion vista en la seccion 2.5.4.1 [82].
La primer propuesta principal para el crecimiento de regiones fue desarrollada por Muerle y
Allen. Ellos definen a una region como cualquier porcion de una imagen, en la cual la distribucion estadstica de niveles de gris es razonablemente uniforme [82]. Este es un procedimiento
alternativo que toma en consideracion la conectividad de los pxeles de la imagen durante la
segmentacion, y por lo tanto es capaz de dividir a la imagen en P subregiones intraconectadas.
Una region se define como conectada si todos los pxeles que pertenecen a ella son adyacentes
entre s. A partir de un conjunto adecuado de pxeles iniciales (idealmente se considera un
pxel por cada region) se comienza un proceso iterativo, el cual asigna paso a paso a los pxeles
vecinos con propiedades similares a cada subregion. El crecimiento de la region continua hasta
que todos los pxeles de la imagen son asignados a una de las subregiones. Si para una region
30

se tiene mas de un punto inicial, la region sera dividida en varias regiones; este tipo de error
puede corregirse, por lo menos parcialmente, por un subsecuente procedimiento de combinacion
de las regiones con propiedades similares. Si una region que no contiene puntos iniciales es
combinada con una region vecina, causa un error en la segmentacion. Por lo tanto la ubicacion
apropiada de los puntos iniciales, es el punto crtico de este metodo y determina la calidad de
la segmentacion resultante [73].
Las ventajas del metodo de crecimiento de regiones son [73]:
1. No se requiere conocimiento a priori sobre la imagen.
2. El metodo es extremadamente insensible a la distorsion cuando los puntos iniciales son
elegidos correctamente.
3. La posicion de los lmites entre regiones diferentes coincide bien con los lmites percibidos
subjetivamente.
Las regiones diferentes que en realidad pertenecen a la misma region, son combinadas por el
procedimiento de combinaci
on de regiones. Para conseguir que la segmentacion produzca
buenos resultados, frecuentemente se utiliza informacion semantica durante el procedimiento
de combinacion, y se produce por lo tanto una segmentacion resultante mas significativa. Este
metodo es bottom-up, debido a que el progreso se realiza a partir de pxeles individuales, incrementando a regiones mas grandes de la imagen, hasta que finalmente la imagen completa ha
sido procesada [73].
Se ilustra graficamente el procedimiento del crecimiento de regiones en la figura 2.14, donde los
n
umeros dentro de las celdas representan niveles de gris. Los puntos con coordenadas (3, 2)
y (3, 4) son usados como puntos semilla. Si el umbral se establece igual a 3, la segmentacion
produce dos regiones, este es el caso de la figura 2.14(b), los puntos que pertenecen a la region
R1 son marcadas con a y los puntos que corresponden a R2 son marcados por b. Sin embargo
si el umbral es igual a 8 se obtiene una sola region, como se muestra en 2.14(c) [33].
El procedimiento de crecimiento de regiones presenta dos problemas inmediatos, uno es la seleccion de los puntos semilla iniciales, que representaran apropiadamente a las regiones de interes;
el otro problema es la seleccion de propiedades adecuadas, para incluir puntos en varias regiones
durante el proceso del crecimiento. La seleccion de uno o mas puntos iniciales frecuentemente
depende de la naturaleza del problema. La seleccion del criterio de similitud depende no solo
del problema en consideracion, sino que tambien depende del tipo de datos de la imagen. Otro
31

Figura 2.14: Ejemplo del metodo de crecimiento de regiones usando puntos semilla conocidos:
(a)imagen original que muestra los niveles de intensidad de cada pxel, (b)resultado
de la segmentacion usando una diferencia absoluta menor a tres entre los niveles de
intensidad, (c)Muestra el resultado de la segmentacion considerando una diferencia absoluta menor a ocho entre los niveles de intensidad. Imagen tomada de [33].

problema en el crecimiento de regiones es la formulacion de una regla de parada. Basicamente,


el crecimiento de una region debera terminar, cuando no hay mas pxeles que satisfacen el
criterio de inclusion en esa region [33].

2.5.4.3

Selecci
on del umbrales.

El exito de los sistemas de crecimiento de regiones esta frecuentemente ligado a la seleccion de


un umbral adecuado. La tecnica mas simple consiste en elegir un umbral constante para toda
la imagen. Puede evaluarse la eleccion de un umbral constante si se tiene cierto conocimiento a
priori sobre la imagen a segmentar, como lo es la iluminacion constante y la reflexion uniforme.
Este umbral podra ser el mismo para varias imagenes o podra basarse en las propiedades
particulares de la imagen que esta siendo procesada, por ejemplo, los umbrales pueden definirse
en terminos del brillo maximo y de los valores obscuros de cada imagen. Por lo que en este caso
se requiere una examinacion de la imagen completa antes de establecer el umbral [82].
En la forma mas general, el establecimiento de umbrales se describe matematicamente como
[32]:

k
S(x, y) =

Si Tk1 f (x, y) < Tk ,

(2.4)

k = 0, 1, 2, ..., m.

donde (x, y) corresponden a las coordenadas x y y de un pxel; S(x, y) es la funcion de seg32

mentacion y f (x, y) es la funcion de caracterizacion de (x, y); T0 , ..., Tm , son los valores de los
umbrales con Tm y T0 como maximo y mnimo respectivamente; m es el n
umero de etiquetas
distintas asignadas a la imagen segmentada. Un operador de umbral T puede verse como una
prueba que involucra a una funcion T de la forma [32]:

T (x, y, N (x, y), f (x, y))

(2.5)

donde N (x, y) denota alguna propiedad local del punto (x, y), por ejemplo el nivel de gris
promedio sobre alguna vecindad. Se puede dividir el umbral en tres tipos dependiendo de las
dependencias funcionales del operador de umbral T . Cuando T depende solo de f (x, y), el
umbral es llamado global. Si T depende de ambos f (x, y) y de N (x, y), entonces se trata de un
umbral local. Si T depende de los valores de las coordenadas x, y, as como tambien depende
de f (x, y) y N (x, y), entonces es un umbral din
amico.

2.5.4.4

Interpretaci
on regional y sem
antica.

El algoritmo de crecimiento de regiones que se ha presentado detalla a la region de manera


sintactica, ya que se basa estrictamente en las propiedades pictoricas de la imagen tales como
pueden ser el nivel de gris, la intensidad del borde, o la forma de la region. Tambien puede
utilizarse informacion semantica sobre la clase de imagenes a procesarse, esto se consigue interpretando a las regiones que se estan formando; estas interpretaciones influyen en el criterio de
combinacion de las regiones [82].

2.5.4.5

Combinaci
on de regiones.

Este procedimiento une regiones que tienen propiedades similares [32]. Para satisfacer la definicion de segmentacion, el procedimiento solo fusiona regiones adyacentes cuyos pxeles combinados satisfacen el predicado P ; es decir, dos regiones adyacentes Rj y Rk son fusionadas solo si
S
P (Rj Rk ) = V ERDADERO [33].
Una de las desventajas del proceso de combinacion de regiones es su inherente secuencialidad.
Las regiones producidas dependen del orden en el cual fueron combinadas. Casi todos los algoritmos de extraccion de regiones usan informacion local. No hay forma de incorporar informacion
global en el modelo sin restringir severamente la clase de imagenes que estamos tratando. Las
tecnicas de la segmentacion de imagenes dependen fuertemente de la aplicacion. La semantica
33

y la informacion a priori sobre el tipo de imagenes son crticas para la solucion del problema de
segmentacion [32].

2.5.5

Selecci
on de caractersticas

La descripcion, tambien llamada selecci


on de caractersticas, consiste en la extraccion de alguna
informacion cuantitativa de interes o de propiedades, que son basicas para la diferenciacion de
un clase de objetos de otros [33]. Por ejemplo, en un sistema para la clasificacion de ctricos
(limones, naranjas, entre otros) en clases, las caractersticas o rasgos a emplear posteriormente
en el reconocimiento o clasificacion, podran ser el color y el area ocupada en la imagen. Otra
tipificacion se presenta en [1], se trata de un reconocedor estadstico entre la letra may
uscula B
y el n
umero 8, para este caso una caracterstica discriminante elegida fue el n
umero de pxeles
de la parte superior
encerrados en el interior de la letra ( Area
).
Area de la parte inferior

2.5.6

Reconocimiento e interpretaci
on

El u
ltimo estado involucra al reconocimiento e interpretaci
on. El reconocimiento es el proceso
que asigna una etiqueta a un objeto basado en la informacion proporcionada por sus descriptores.
La interpretacion asigna el significado de un ensamble de objetos reconocidos. Es necesario la
interaccion entre una base de conocimiento y los modulos de procesamiento de imagenes anteriores. El conocimiento sobre el dominio del problema se codifica en un sistema de procesamiento
de imagenes en la forma de una base de conocimientos. Este conocimiento es tan simple como
detallar las regiones de una imagen donde la informacion de interes se conoce para poder ser
localizada, por lo que la b
usqueda puede ser conducida para obtener dicha informacion. La
base de conocimientos puede ser tambien muy compleja, tal como la lista interrelacionada de
todos los posibles defectos en un problema de inspeccion de materiales, o una base de datos que
contiene imagenes de satelite de alta resolucion de una region, para aplicaciones de deteccion
de cambios. La base de conocimientos gua la operacion de cada modulo del procesamiento,
la base de conocimientos tambien controla la interaccion entre los modulos. La comunicacion
entre los distintos modulos del procesamiento de imagenes se basa en el conocimiento a priori,
para guiar el resultado de cada modulo hacia el resultado que debera de ser [33].

34

2.6

Modelado de Objetos en 2D por medio de distribuci


on de color

Despues de que una imagen ha sido segmentada en regiones, el siguiente paso es representar
estas regiones en una forma apropiada para un procesamiento adicional de la imagen. La
representacion basicamente puede hacerse por dos medios [33]:

1. La region puede representarse en terminos de sus caractersticas externas (como sus bordes).
2. Puede ser representada en funcion de sus caractersticas internas (como son los pxeles
contenidos en la region).

Una representacion externa es adecuada cuando el punto de interes son las caractersticas de
la forma, mientras que una representacion interna es conveniente cuando lo que concierne son
las propiedades de reflectividad, tales como el color y la textura. En cualquier caso, las caractersticas elegidas como descriptoras deben ser insensibles tanto como sea posible a cambios en
el tama
no, traslaciones y rotaciones [33].
Los rasgos caractersticos hacen posible distinguir a un objeto mediante el uso de un n
umero
reducido de propiedades. Los rasgos de un objeto forman un vector X = (X1 X2 ...Xn )T , que
al ser particularizado en los valores numericos del objeto a clasificar, determinan un punto en
el espacio n-dimensional de las caractersticas. Las propiedades deseables en las caractersticas
son principalmente no ser un n
umero elevado y estar incorrelacionadas entre s al maximo [1].
En el procesamiento moderno de vision de computadora se busca agrupar los pxeles de una
imagen y segmentar las imagenes con base en la coherencia visual, as las caractersticas que
se obtienen son tomadas a partir de los lmites o contornos de dichas regiones. En escenas
muy complejas (que contienen personas u objetos naturales), las caractersticas del contorno
presentan poca confiabilidad [77].
Por otro lado tenemos la representacion por medio de blobs, la cual fue desarrollada como una
forma de extraer la descripcion del significado de imagenes satelitales multi-espectrales, de forma
extremadamente compacta y estructural. En este metodo los vectores que caracterizan cada
pxel se forman agregando las coordenadas espaciales (x, y) a los componentes espectrales (o de
textura) de la imagen, as que las propiedades de la imagen tales como color y similitud espacial

35

se combinan para formar regiones conectadas coherentemente, o blobs, en los cuales los pxeles
tienen propiedades de imagen similares [76, 5, 4, 77, 74].
Las caractersticas de los blobs son grupos de pxeles similares en el plano de la imagen y pueden
ser originados a partir de la similitud de color, textura, movimiento y otras metricas basadas en la
se
nal. La motivacion para considerar tales caractersticas viene del exito reciente en la extraccion
y seguimiento en tiempo real de tales caractersticas del blob, en escenas complejas en las que
los localizadores de caractersticas tradicionales fallan, por ejemplo, en escenas que contienen
personas en movimiento. El interes en los modelos de blob se ve motivado por el descubrimiento
de que pueden ser seguidos confiablemente a
un en escenas dinamicas y complejas, y que pueden
extraerse en tiempo real sin la necesidad de un hardware especializado. Estas propiedades son
importantes en aplicaciones que requieren seguir personas [4].
Un blob puede definirse como una nube de puntos [57]. El termino blob es algo autoexplicatorio
(algo de forma vaga o indefinida), pero una definicion u
til desde el punto de vista computacional,
podra ser que un blob se describe por alguna propiedad visual que es compartida por todos los
pxeles en el blob y que no es compartida por los pxeles del entorno. Esta propiedad podra ser el
color, la textura, brillantez, movimiento, sombreado, una combinacion de estos, o cualquier otra
propiedad sobresaliente espacio-temporal derivada de la se
nal (la secuencia de imagenes) [3, 4].
A una region tipo blob se le puede agregar tambien profundidad, de modo que representara a
una region 3-D, y el blob tendra un componente espacial (x, y, z), como se describe en [3, 5, 4].
La textura es otra propiedad que puede contener un blob, esta es una propiedad de la vecindad
local, se requiere especificar una vecindad al rededor del pxel, para cada blob se almacenan
los descriptores de la textura media, estos pueden ser la orientacion y el contraste (un ejemplo
donde los blobs utilizan descriptores de textura media puede verse en [15]). Un blob puede
modelarse tambien como una coleccion de vectores de flujo con direcciones similares, haciendo
uso del flujo optico pueden obtenerse blobs de movimiento [25, 24].
El conjunto de caractersticas que puede describir a un blob pueden incluir la ubicacion (centroide), masa (tama
no del blob en n
umero de puntos), tama
no o magnitud (variables x y y
masa
que determinan el alto y ancho del blob), densidad ( magnitud
), gradiente medio (el valor medio

de todos los valores del gradiente en los puntos que pertenecen al blob), varianza del gradiente
alto
), color medio (el
(varianza de todos los valores del gradiente), proporcion de forma oval ( ancho

valor medio de todos los colores de los puntos que pertenecen al blob), varianza de color (la
varianza de los colores en el conjunto de puntos pertenecientes al blob) [11].
Se pueden representar regiones 2D por sus estadsticas de bajo orden. Las agrupaciones de
puntos 2D tienen significados espaciales y pueden ser caracterizados por sus matrices de co36

Figura 2.15: Distribucion normal o de Gauss de dos clases, imagen tomada de [1].

varianza. Las estadsticas espaciales del blob se describen en terminos de sus propiedades de
segundo orden; por conveniencia computacional un blob puede interpretarse como un modelo
Gaussiano [77]. La figura 2.15 nos muestra un modelo Gaussiano de dos clases que siguen una
distribucion normal o de Gauss, sobre la tpica campana de Gauss se indican las medias m1 ,
m2 , y las desviaciones tpicas, 1 y 2 , que determinan el comportamiento estadstico de una
variable aleatoria gaussiana; es decir, su funcion de densidad de probabilidad [1].
Los blobs representan aspectos globales. La reduccion de los grados de libertad de los pxeles
individuales a los parametros del blob es una forma de regularizacion, la cual permite que el
problema sea solucionado de una forma estable [4, 77].
Cada blob tiene un componente espacial (x, y) y un componente de color (R, G, B). El color se
expresa en el espacio de color RGB. Se asume que las distribuciones espacial y de color son
independientes debido a sus diferencias semanticas [5]. Si se define mk como el vector medio
(x, y, R, G, B) del blob k, y Kk como la matriz de covarianza de la distribucion de dicho blob,
entonces cada blob tiene una representacion detallada de su forma y apariencia, modelada como
diferencias tomadas a partir de sus estadsticas fundamentales [77].
Es importante la interpretacion fsica de los parametros del blob. El vector medio representa
el centro geometrico del area del blob. La matriz de covarianza, siendo simetrica, puede ser
diagonalizada va una descomposicion de eigenvalores [4]:

C = LT

(2.6)

donde es ortonormal y L es una matriz diagonal. La matriz diagonal L representa el tama


no
del blob, a traves de los ejes ortogonales independientes del objeto-centrado, y es una matriz de
rotacion que le da a este objeto-centrado, las bases de la alineacion con las bases de coordenadas
de C. Esta descomposicion y la interpretacion fsica es importante para la estimacion, debido a
37

Figura 2.16: Espacio multiespectral bidimensional, muestra los vectores individuales de los pxeles y
su posicion media. El vector medio se define como m. Imagen tomada de [64].

que la forma L es constante (o vara lentamente) mientras que la rotacion es dinamica. Los
parametros deben separarse para ser tratados apropiadamente [4].

2.6.1

Vector medio y matriz de covarianza

Para el calculo de la matriz de covarianza y del vector medio hay que tener en cuenta la situacion
general en que se encuentra el dise
nador del sistema. Si se dispone de un conjunto de muestras (es
decir, objetos reducidos a vectores numericos de caractersticas discriminantes) perfectamente
etiquetadas en cuanto a su pertenencia a una determinada clase, puesto que se trabaja con toda
la informacion disponible a priori. Lo que realiza el dise
nador con estas muestras de cada clase
es la estimacion estadstica de sus matrices de covarianza y de sus vectores medios [1].
Como ya se ha mencionado las posiciones de los pxeles en un espacio multiespectral puede
describirse por vectores, cuyos componentes son las respuestas espectrales individuales en cada
componente (o banda) de la imagen. Considere un espacio multiespectral con un gran n
umero
de pxeles graficados como se muestra en la figura 2.16, donde cada pxel es descrito por su
correspondiente vector x.
La posicion media de los pxeles en el espacio, se define por el valor esperado del vector del pxel
x, de acuerdo a [64]:

K
1 X
m = (x) =
xj
K j=1

(2.7)

38

donde m es el vector del pxel medio y xj son los vectores de los pxeles individuales de un
n
umero total K; es el valor esperado. Mientras que el vector medio es u
til para definir el
promedio o la posicion esperada de los pxeles en el espacio multiespectral del vector, el papel
de la matriz de covarianza es describir la dispersi
on o propagaci
on de la posici
on de
dichos pxeles, as como detectar si existe correlaci
on entre las variables. La matriz
de covarianza se define por [64]:

x = (x m)(x m)T

(2.8)

Donde el superndice T denota el vector transpuesto. Un estimado imparcial de la matriz de


covarianza se define por:

1 X
(xj m)(xj m)T
x =
K 1 j=1

(2.9)

Si hay correlacion entre las respuestas en un par de bandas espectrales, el elemento fuera de
la diagonal correspondiente en la matriz de covarianza, sera grande en comparacion con los
terminos de la diagonal. Por otro lado, si hay poca correlacion, los terminos alejados de la
diagonal seran cercanos a cero. Este comportamiento puede describirse tambien en terminos de
la matriz de correlacion R, cuyos elementos estan relacionados a los de la matriz de covarianza
por [64]:

%ij =

ij
ii jj

(2.10)

donde: %ij es un elemento de la matriz de correlacion, ij son elementos de la matriz de covarianza, ii y jj son las varianzas de las bandas de datos i - esima y j - esima. %ij describe la
correlacion entre la banda i y la banda j.
Las matrices de covarianza y de correlaci
on son sim
etricas, y si en el conjunto
de datos de la imagen no hay correlaci
on entre cualquiera de sus componentes
multiespectrales, la matriz de covarianza es una matriz diagonal (al igual que la
matriz de correlaci
on) [64].

39

Figura 2.17: Sistema de coordenadas modificado, en el cual los vectores de los pxeles tienen componentes no correlacionados. Imagen tomada de [64].

2.6.2

Correlaci
on cero, transformaci
on rotacional

Es fundamental para el desarrollo de la transformacion de los componentes principales, encontrar


un nuevo sistema de coordenadas en el espacio de vectores multiespectrales, en el cual los datos
pueden representarse sin correlacion; en otras palabras, tal que la matriz de covarianza en el
nuevo sistema de coordenadas sea una matriz diagonal [64].
Para un caso particular de un espacio vectorial bidimensional, si los vectores que describen los
puntos del pxel se representan como y en el nuevo sistema de coordenadas, entonces se desea
encontrar una transformacion lineal G de las coordenadas originales, tal que [64]:

y = Gx

(2.11)

sujeto a la restriccion de que la matriz de covarianza de los datos de los pxeles, en el espacio y
es diagonal. Vea el nuevo espacio bidimensional y en la figura 2.17.
En el espacio y la matriz de covarianza se define como:
y = (Gx Gmx )(Gx Gmx )T

(2.12)

donde el vector medio expresado en terminos del sistema de coordenadas y se define como:

my = y = Gx = Gx = Gmx

(2.13)

donde mx es el vector medio de los datos en el espacio x.


40

La matriz de covarianza tambien puede ser escrita como:

y = G(x mx )(x mx )T GT

(2.14)

y = Gx GT

(2.15)

P
donde x es la matriz covarianza de los datos de los pxeles en el espacio x. Debido a que
P
y debe ser diagonal, G puede ser reconocida como la matriz transpuesta de eigenvectores de
P
P
x , bajo el entendimiento de que G es una matriz ortogonal. Como resultado,
y puede ser
P
identificada como la matriz diagonal de eigenvalores de x . Por lo que se tiene:

y =

(2.16)

N
Donde N es la dimensionalidad de los datos. Debido a que

es por definicion, una matriz de

covarianza diagonal, sus elementos seran las varianzas de los datos de los pxeles en el respectivo
espacio transformado de coordenadas. Es ordenado tal que 1 > 2 > ... > N , de tal modo
que los datos exhiben una varianza maxima en y1 , la siguiente varianza mas grande se tiene en
y2 , y as sucesivamente hasta la varianza mnima que se tiene en yN .
Para determinar la transformacion de los componentes principales, es necesario encontrar los
eigenvalores y los eigenvectores de la matriz de covarianza. Los eigenvalores estan dados por la
solucion a la ecuacion caracterstica:

|x I| = 0

(2.17)

Siendo I la matriz identidad.


41

Para efectos de verificacion, cabe hacer notar que la suma de los eigenvalores, es igual a la suma
de los elementos de la diagonal de la matriz de covarianza [64].
Al encontrar los eigenvalores obtenemos la matriz de covarianza en el sistema de coordenadas
y (con los componentes principales como ejes). La matriz de transformacion G es la matriz
P
transpuesta de los eigenvectores de la matriz de covarianza x . Los eigenvectores individuales
son vectores que definen los ejes de los componentes principales en terminos del espacio de
coordenadas original. Como resultado se tiene que los datos no estan correlacionados en los
nuevos ejes, y que los nuevos ejes son una rotacion del conjunto original. La transformacion de
los componentes principales se clasifica como una transformacion rotacional [64].
Para encontrar las posiciones de los pxeles en el nuevo sistema de coordenadas no correlacionado,
una vez encontrada G, se aplica la ecuacion 2.11.

2.7

Seguimiento de Objetos en 2D por medio de distribuci


on de color

La mayora de los sistemas de vision biologicos han evolucionado para contender con el mundo
cambiante. Los sistemas de vision por computadora se han desarrollado en la misma forma.
Para un sistema de vision, la habilidad para lidiar con el movimiento y los objetos cambiantes,
cambios de iluminacion, y cambios de puntos de vista es esencial para realizar varias tareas. En
muchas aplicaciones, una entidad, una caracterstica o un objeto, debe ser seguido a traves de
una secuencia de frames. Si hay solo un objeto de interes en la secuencia, el problema es facil de
resolver. En la presencia de muchos objetos de interes moviendose independientemente en una
escena, el seguimiento requiere el uso de restricciones basadas en la naturaleza de los objetos y
de su movimiento. Debido a la inercia, el movimiento de una entidad fsica no puede cambiar
instantaneamente. Si una secuencia de frames se adquiere en un rango tal que no haya cambios
dramaticos entre dos frames consecutivos, entonces para la mayora de los objetos fsicos, no se
observa un cambio abrupto en el movimiento [47].
La entrada para un sistema de analisis de escenas dinamicas, es una secuencia de frames de
imagenes tomadas de un mundo cambiante. La camara se usa para adquirir la secuencia de
imagenes, la camara podra estar tambien en movimiento. Cada frame representa una imagen
de la escena en un instante particular de tiempo. Los cambios en una escena podran darse
debido al movimiento de la camara, al movimiento de los objetos, a cambios en la iluminacion,

42

o cambios en la estructura, tama


no o forma de un objeto. Usualmente se asume que los cambios
en una escena se deben a la camara o al objeto en movimiento, y que los objetos pueden ser
rgidos o semi-rgidos. El sistema podra detectar cambios, determinar las caractersticas del
movimiento del observador y los objetos, caracterizar el movimiento usando abstraccion de alto
nivel, recuperar la estructura de los objetos, y reconocer a los objetos en movimiento.
Una escena usualmente contiene varios objetos. Una imagen de la escena en un momento dado
representa una proyeccion de la escena, la cual depende de la posicion de la camara. Existen
cuatro posibilidades de la configuracion de la camara y el mundo dada la naturaleza dinamica
[47]:

1. Camara estacionaria, objetos estacionarios (Stationary camera, stationary objects - SCSO)


2. Camara estacionaria, objetos en movimiento (Stationary camera, moving objects - SCMO)
3. Camara en movimiento, objetos estacionarios (Moving camera, stationary objects - MCSO)
4. Camara en movimiento, objetos en movimiento (Moving camera, moving objects - MCMO)

Para analizar una secuencia de imagenes, se requieren de diferentes tecnicas para cada uno de
los casos anteriores. El primer caso se refiere a un analisis simple de una escena estatica, este es
el caso de las aplicaciones que requieren procesar una u
nica imagen para obtener la informacion
necesaria. Algunas aplicaciones requieren extraer informacion de un ambiente dinamico; en
algunos casos un sistema de vision debe entender un proceso dinamico desde un u
nico punto
de vista. En aplicaciones tales como los robots moviles o vehculos autonomos, un sistema de
vision debe analizar una secuencia de imagenes adquiridas mientras se esta en movimiento. La
recuperacion de informacion de una camara movil, requiere tecnicas diferentes a aquellas que
son u
tiles mientras la camara permanece estacionaria.
Una secuencia de frames de imagenes ofrece mucho mas informacion que ayuda a entender
una escena, aunque incrementa significativamente la cantidad de datos a ser procesados por
el sistema. La aplicacion de tecnicas de analisis de escenas estaticas para cada frame requiere
una cantidad enorme de computacion, ademas de todas las dificultades del analisis de escenas
estaticas. Afortunadamente, la investigacion en el analisis de escenas dinamicas ha mostrado
que la recuperacion de informacion en muchos casos, es mas facil en escenas dinamicas que en
escenas estaticas. En el analisis de escenas dinamicas, las escenas SCMO han recibido la mayor
atencion. En el analisis de tales escenas, el proposito es usualmente detectar el movimiento,
43

para extraer mascaras de los objetos en movimiento con la finalidad de reconocerlos, y calcular
sus caractersticas de movimiento. Las escenas MCSO y MCMO son muy importantes en las
aplicaciones de navegacion. MCMO es el mas general y posiblemente la situacion mas difcil
en el analisis de escenas dinamicas, pero tambien es el area menos desarrollada en la vision por
computadora.
El analisis de escenas dinamicas tiene tres fases [47]:

1. Periferica
2. Refinada
3. Cognitiva

La fase periferica esta involucrada con la extraccion de informacion aproximada, la cual es muy
u
til en etapas posteriores de analisis. La fase refinada se concentra en el analisis de las partes
activas de la escena y en extraer informacion, la cual podra usarse para el reconocimiento de
objetos, el analisis del movimiento del objeto, la preparacion de una historia de los eventos que
toman lugar en la escena, u otras actividades relacionadas. La fase cognitiva maneja conocimiento sobre los objetos, acciones de movimiento, y otras aplicaciones que dependen de conceptos,
para analizar la escena en terminos de los objetos presentes y los eventos que toman lugar.
La entrada de un sistema de analisis de escenas dinamicas es una secuencia de frames, representada por F (x, y, t) donde x y y son las coordenadas espaciales en el frame que contiene la escena
en el tiempo t. El valor de la funcion es la intensidad del pxel. Se asume que la imagen se
obtiene usando una camara localizada en el origen de un sistema de coordenadas tridimensional.
La proyeccion usada en este sistema centrado en el observador podra ser de cualquier perspectiva u ortogonal. Debido a que los frames son com
unmente tomados en intervalos regulares
de tiempo, asumiremos que t representa al t - esimo frame de la secuencia, en lugar del frame
tomado en el tiempo absoluto t.
La deteccion de cambios en dos frames sucesivos de una secuencia es un paso muy importante
para muchas aplicaciones. Cualquier movimiento perceptible en una escena resulta en alg
un
cambio en la secuencia de frames de la escena. Las caractersticas del movimiento pueden
analizarse si tales cambios son detectados. Un buen estimado cuantitativo de los componentes
de movimiento de un objeto, podra obtenerse si el movimiento esta restringido a un plano que es
paralelo al plano de la imagen; para el movimiento tridimensional, solo es posible la estimacion
cualitativa. Cualquier cambio en la iluminacion en la escena podra resultar en alg
un cambio
44

en los valores de intensidad. La mayora de las tecnicas para el analisis de escenas dinamicas
se basan en la deteccion de cambios en la secuencia de frames. Iniciando con los cambios frame
a frame, puede realizarse un analisis global de la secuencia. Los cambios pueden detectarse
en diferentes niveles: pxel, borde o region. Los cambios detectados en el nivel pxel puede
ser agregados para obtener informacion u
til con la cual los requerimientos computacionales de
etapas posteriores pueden ser restringidos [47].
El seguimiento de movimiento no rgido en una secuencia de imagenes ha sido de gran interes
para la comunidad de vision por computadora. El problema se divide generalmente para su
estudio en dos categoras de movimiento: movimiento de un objeto deformable y el movimiento
de un objeto articulado. El u
ltimo es de gran interes para la comunidad IHM (Interaccion
Hombre - Maquina) puesto que el cuerpo humano es un objeto articulado. Los sistemas de
captura de movimiento comercialmente disponibles, son ya sea basados en seguidores magneticos
o en seguidores opticos, que requieren que el sujeto vista un traje especial con marcas, o estar
unidos al sistema por medio de cables. Una solucion mas general basada en el sensado pasivo
debera ser mas conveniente, menos restringida, y atractiva para una variedad de usos [48].
En esta investigacion el seguimiento de la persona se realiza utilizando las estadsticas de cada
blob, midiendo la distancia de Mahalanobis y determinando para cada pxel su pertenencia a un
modelo de blob o a la escena. En seguida abundaremos sobre la distancia de Mahalanobis.

2.7.1

Distancia de Mahalanobis

Supongamos una clase con un prototipo (que sera la media aritmetica, m, de las muestras
disponibles de ) y consideremos un objeto X a clasificar [1]:
La denominada distancia de Mahalanobis, se define para el mismo objeto X y la clase , de
media m y matriz de covarianza C, como el escalar:

dM (X, ) = (X m)T C 1 (X m)

(2.18)

donde X es el vector de caractersticas, m es el vector medio, C es la matriz de covarianza de


la muestra, ver figura 2.18.

45

Figura 2.18: dE es la distancia de Mahalanobis, esta distancia ademas de la separacion (distancia


eucldeana) entre X y m, toma en cuenta la dispersion intrnseca de la clase . Imagen
tomada de [1].

2.7.1.1

Interpretaci
on geom
etrica de la distancia de Mahalanobis

Para explicar la interpretacion geometrica de la distancia de Mahalanobis 1 , se abordara el caso


de variables unidimensionales y para un problema de reconocimiento biclase [1].
Sea la distancia eucldea entre X y m:
1

dE (X, m) = [(X m)T (X m)] 2

Considere a C una matriz de covarianza diagonal pura (todos los elementos del vector de caractersticas son estadsticamente independientes) tal que:

12

C=

22

Igualmente:
1

La distancia de Mahalanobis para dos clases 1 , 2 , con igual matriz de covarianza C y de medias m1 y m2 ,

respectivamente, puede definirse como dM (1 , 2 ) = (m1 m2 )T C 1 (m1 m2 ) [1]. La distancia de Mahalanobis


entre dos clases no se utiliz
o en este trabajo.

46

X1

X
2


X=

Xn

m1

m
2


m=

mn

Por lo tanto la distancia de Mahalanobis sera:


dM (X, ) = (X m)T C 1 (X m) =

(X1 m1 )2
12

(X2 m2 )2
22

++

(Xn mn )2
2
n

Observese que en este caso de matriz diagonal pura, la distancia de Mahalanobis coincide con
el cuadrado de la distancia eucldea ponderada con la varianzas de cada caracterstica:
dM (X, ) =

d2E1
12

d2E2
22

++

d2En
2
n

Para el caso de variables unidimensionales y considerando el problema de reconocimiento biclase


(figura 2.19). Las dos clases en la figura 2.19 poseen desviaciones tpicas muy dispares. La clase
1 , con una peque
na desviacion tpica, se puede considerar como una fuente de informacion
fiable o sincera, mientras que 2 , con una elevada desviacion tpica, es una fuente insegura o
mentirosa, en el sentido que presenta una gran dispersion de valores.
Lo anterior se traduce, para un objeto X a clasificar tal como se representa en la citada figura,
en que sus distancias fsicas (distancias eucldeas) a las medias de 1 y 2 quedan modificadas
por la inversa de las respectivas desviaciones tpicas [1]:
dM (X, 1 )

Xm1
1

dM (X, 2 )

Xm2
2

47

Figura 2.19: Distribucion biclase en donde las clases presentan una dispersion estadstica muy diferente, imagen tomada de [64].

Estas desviaciones de las distancias fsicas X m1 y X m2 se interpretan de la siguiente


manera:
La distancia de un elemento a clasificar X a una clase se aumenta tanto mas cuanto menor
sea la desviacion tpica de la clase.
E inversamente, la distancia fsica disminuye al aumentar la desviacion tpica.
Una fuente de informacion altamente fiable (peque
na dispersion estadstica) aumenta las distancias fsicas de los objetos a su media a la hora de clasificarlos dentro de ella, mientras que
una fuente de informacion (o clase) poco fiable disminuye esas mismas distancias fsicas [1].

2.7.1.2

Clasificador de Mahalanobis

La distancia de Mahalanobis puede usarse como un clasificador de distancia mnima como sigue:
Sean m1 , m2 , ..., mc los valores medios para las c clases, y sean C1 , C2 , ..., Cc las correspondientes
matrices de covarianza. Clasificaremos un vector caracterstico x por la medida de la distancia
de Mahalanobis a cada clase, y x se asigna a la clase para la cual la distancia de Mahalanobis
es la distancia mnima, observe esto en la figura 2.20 [27].
El uso de la metrica de Mahalanobis tiene las siguientes propiedades:
1. Automaticamente considera la escala de los ejes coordenados.
2. Corrige la correlacion entre las diferentes caractersticas.
3. Provee de decisiones de lmites tanto de curvas como de lneas.
48

Figura 2.20: Esquema de un clasificador basado en la distancia mnima de Mahalanobis, imagen


tomada de [27].

La clasificacion es el proceso de ordenar los vectores de caractersticas en categoras o clases.


Los vectores caractersticos son puntos en un espacio de caractersticas, el cual se define como
alguna coleccion de medidas, ya sea preprocesada o no. El proceso de transformar los vectores de caractersticas en etiquetas de clasificacion, es un topico de estudio identificado como
reconocimiento de patrones [75].

49

Captulo 3
Seguimiento de una persona en tiempo
real
Recientemente, se ha dado un movimiento en la vision por computadora del procesamiento de
imagenes estaticas al procesamiento de vdeo secuencias [35]. Uno de los problemas mas difciles
para un sistema de vision dinamica es el seguimiento de objetos no rgidos que se mueven en un
ambiente confuso. Este problema es importante para los procesos tales como la reconstruccion
de la forma, la navegacion y la manipulacion, los cuales dependen de la habilidad para elegir
objetos de una imagen eficientemente y de forma precisa. El problema del seguimiento de
objetos ha recibido atencion en la comunidad de vision por computadora en los u
ltimos a
nos.
Muchos metodos, sin embargo, no resuelven el problema del seguimiento de objetos no rgidos en
escenas complejas [45]. Se ha comenzado a investigar el reconocimiento de actividades humanas
que toman lugar en una escena. Aplicaciones tales como bases de datos de vdeo, interfaces de
realidad virtual, y sistemas inteligentes de vigilancia, todos tienen en com
un el seguimiento e
interpretacion de actividades humanas. La habilidad para encontrar y seguir el cuerpo de una
persona y las partes del cuerpo es un problema visual importante [35].
El seguimiento de movimiento no rgido en una secuencia de imagenes ha sido de gran interes
para la comunidad de vision por computadora. El problema generalmente se divide en dos
categoras en lo referente al estudio del movimiento [48]: deteccion de movimiento de un objeto
deformable y determinacion del movimiento de un objeto articulado. El estudio de este u
ltimo
resulta atractivo para la IHM ya que el cuerpo humano es un objeto articulado. La IHM, ha
llegado a ser una parte cada vez mas importante en la vida diaria. El modo mas popular de
la IHM se basa en los dispositivos simples como el teclado y el raton. Estos dispositivos han
crecido hasta ser familiares, pero inherentemente limitados en velocidad y naturalidad con la que
50

interact
uan con la computadora. Un intento de la IHM ha sido emigrar a los medios naturales
que emplean los humanos para comunicarse con los demas. Recientemente se ha tratado de
introducir otras modalidades de la comunicacion entre humanos a la IHM [62].

3.1

Descripci
on del problema

Se ha mencionado en los objetivos del trabajo (seccion 1.1), que se persigue modelar y seguir
en tiempo real a una persona, la persona estara situada en una escena cerrada.
El sistema detectara a la persona y la modelara por medio de blobs (seccion 2.7). Se construiran
modelos estadsticos de la cabeza, brazos, torso y piernas del cuerpo de la persona. La naturaleza estadstica de las caractersticas basadas en las regiones sera utilizada en el proceso del
seguimiento. El interes de modelar a la persona por medio de blobs se deriva de la confiabilidad
con que estos pueden ser seguidos en escenas dinamicas, y que pueden ser extrados en tiempo
real sin la necesidad de utilizar hardware especial [4].

3.2

Propuesta de soluci
on

Para realizar el seguimiento de una persona en tiempo real, se propone un sistema que no
requiera de hardware sofisticado. El equipo necesario consiste en: una PC y una webcam. Su
dise
no consta de dos etapas:

1. Etapa de inicializacion, donde se construye el modelo inicial de la persona y se almacena


la escena del fondo (escena sin la persona). Se calculan las estadsticas de segundo orden
de cada blob, y se actualiza por primera vez la informacion del fondo.
2. Etapa de seguimiento, la cual se efect
ua sobre el area que identifica al objeto en movimiento. Los pxeles de esta area se clasifican en alguna de las siete clases definidas (cabeza,
torso, brazos, piernas y fondo), para ello se emplea un clasificador de Mahalanobis.

El sistema emplea las siguientes tecnicas de vision para llevar a cabo el seguimiento de la persona:

1. Diferencia de imagenes, para determinar el area donde se encuentra la persona.

51

2. Segmentacion por crecimiento de regiones, para identificar las partes del cuerpo de la
persona, y definir su correspondiente blob.
3. Informacion contextual adicional sobre la morfologa del cuerpo humano, esto ayuda a
que el procedimiento de segmentacion funcione eficientemente. Es necesario que durante
el proceso de inicializacion el usuario permanezca en la posicion star fish (la persona se
posiciona de pie frente a la camara, con las piernas separadas y los brazos extendidos).
4. Empleo de un modelo estadstico multiclase (de color y forma) para representar a la
persona durante el seguimiento: modelo de blobs. Se consideran siete clases (cabeza,
torso, brazos, piernas y el fondo)
5. Se hace uso de la distancia de Mahalanobis para clasificar cada pxel de un nuevo frame
en alguno de los blobs existentes, o como perteneciente al fondo. Esta tecnica es empleada
en el seguimiento.
6. El fondo se actualiza durante el proceso de inicializacion, cuando se obtiene la diferencia de
imagenes; y durante el seguimiento, cuando se determina que el pxel a clasificar pertenece
al fondo.
7. Se tiene un modulo estabilizador, que trata de evitar errores durante el seguimiento debido
a cambios en la iluminacion, y permite la recuperacion de blobs en caso de oclusion.
8. Las operaciones sobre las imagenes se realizan en el espacio de color RGB.

3.3

Alcances de la implementaci
on

El sistema tiene las siguientes caractersticas :

1. Se trata de un sistema SCMO (definido en la seccion 2.7), es decir, la camara es estacionaria


y los objetos a detectar son los que estan en movimiento.
2. Solo se considera la presencia de una persona para el seguimiento.
3. El ambiente tiene condiciones de iluminacion controladas, la iluminacion vara lentamente.
4. El fondo es relativamente estatico.

52

5. Para poder ser identificada con mayor facilidad, la persona vestira con colores que presenten un alto grado de contraste con respecto al color del fondo.
6. Para facilitar la segmentacion de la persona en las partes de interes (cabeza, brazos, torso,
y piernas), la persona vestira con colores que contrasten el torso de las piernas, as como
la ropa debe hacer contraste con el color de la piel.
7. Para mantener la estabilidad durante el seguimiento los movimientos de la persona no
deben ser muy rapidos.
8. La escena del fondo no puede cambiar repentina y significativamente, esto puede causar
que areas del fondo puedan considerarse como parte de la persona, es decir, puede darse
una clasificacion erronea durante el seguimiento.
9. El seguimiento depende de los resultados obtenidos durante la inicializacion, si la segmentacion produce resultados equivocados se pierde estabilidad durante el seguimiento.

3.4

Experimentaci
on sobre im
agenes est
aticas

El analisis de la vision dinamica puede entenderse como el procesamiento de imagenes estaticas


secuenciales. Por ello antes de iniciar con la implementacion del sistema en tiempo real, se
realizaron una serie de experimentos sobre imagenes estaticas, estas imagenes se obtuvieron
con una camara digital Canon modelo PowerShot A50, con una resolucion de 1280 960
16 millones de colores y en formato jpg. Para facilitar su procesamiento las imagenes fueron
convertidas a una resolucion de 320 240 16 millones de colores y a formato ppm.
Con este estudio se buscaba probar tecnicas del procesamiento de imagenes que permitieran la
localizacion y modelado de la persona. As los metodos que funcionaran para el caso estatico
podran aplicarse sobre las imagenes dinamicas.
Se rese
na a continuacion cada etapa realizada durante la experimentacion estatica:
1. Modelado de un blob.
2. Diferencia de imagenes.
3. Dilatacion y Erosion.
4. Segmentacion por crecimiento de regiones.
53

La implementacion de estos experimentos se realizo con OpenGL

y Visual Studio C++ Ver.

6.0. Cuando se habla de OpenGL, significa en realidad OpenGL/GLU/GLUT 2 . En esta etapa


de implementacion se utilizo el siguiente apoyo bibliografico [51, 59, 9, 44, 31, 58].

3.4.1

Modelado de un blob sobre im


agenes est
aticas

Este experimento se realizo sobre imagenes obtenidas de la forma descrita en la seccion anterior
(im
agenes naturales) y sobre imagenes que se obtuvieron de Internet (im
agenes artificiales). El
objetivo del experimento es representar una region en 2D por medio de las estadsticas espaciales
y de color de un blob, el blob fue implementado de acuerdo a las definiciones de la seccion 2.6.
El grupo de pxeles que definen al blob son proporcionados por el usuario, y los vectores que
caracterizan cada pxel se forman agregando las coordenadas espaciales (x, y) a los componentes
de color (R, G, B). Se obtiene el vector medio y la matriz de covarianza del blob, de acuerdo a
las ecuaciones 2.7 y 2.9 respectivamente. El blob es modelado como una elipse, las componentes
(x, y) del vector medio fijan el centro de la elipse, mientras que las otras componentes del vector
medio (R, G, B), definen el color del blob. La matriz de covarianza del blob determina el tama
no
de la elipse, los valores de su diagonal principal determinan las desviaciones estandar sobre el
centro en el eje horizontal y vertical.
El nombre de la imagen a analizar es proporcionado por el usuario, despues de cargar la imagen
el primer paso es capturar los pxeles que definen al blob, para ello se elige la opcion captura
del men
u contextual, y se eligen los pxeles del blob haciendo click con el boton izquierdo del
mouse, ver las figuras 3.1 y 3.2. Finalmente la opcion Dibuja Blobs del men
u contextual dibuja
el blob que representa a la region 2D de los pxeles elegidos, ver figura 3.3.
Las figuras 3.1, 3.2 y 3.3 muestran un experimento realizado sobre una imagen artificial, los
resultados obtenidos son buenos, la orientacion de la elipse corresponde con la orientacion de
los pxeles que definen al blob, su tama
no corresponde con la desviacion de los puntos y el color
1

OpenGL es una biblioteca multiplataforma, que contiene la especificacion de un conjunto poderoso de fun-

ciones para la programaci


on de gr
aficos por computadora [63, 44]. OpenGL incluye [44]: primitivas en 3D tales
como puntos, lneas, polgonos, NURBS (Non-Uniform Rational B-Spline), esferas, conos, teapots; visualizacion
de proyecciones 2D de escenas 3D; manipulacion de transformaciones de coordenadas; iluminacion (fuentes de
luz, propiedades del material, obscurecimiento, combinacion de colores) y mapeo de textura.
2
GLU y GLUT son dos bibliotecas auxiliares multiplataforma que solucionan los problemas que presenta
OpenGL en operaciones con ventanas, en control de interfase, en operaciones con los dispositivos de entrada y
salida, entre otros [63, 44]. La librera GLUT esta disponible en [65]. La instalacion de la biblioteca GLUT en
Visual C++ Ver. 6.0, se detalla en [30].

54

Figura 3.1: La opcion Captura permite elegir los pxeles que definen al blob.

Figura 3.2: Los puntos blancos sobre la imagen representan los pxeles elegidos, mismos que son
dibujados a la derecha de la imagen en su color original.

de la elipse es el color promedio de los pxeles selecionados.


En las figuras 3.4 y 3.5, se tienen los resultados de otra prueba, los pxeles elegidos presentan una
distribucion paralela al eje x. Las figuras 3.6 y 3.7 exponen los resultados de una distribucion
de puntos mas dispersa, el blob que se obtiene representa adecuadamente dicha distribucion,
observe el color de la elipse que corresponde al color promedio de los pxeles que definen al blob.
Como se ha mencionado en apartados anteriores, se tiene como meta localizar y seguir a una
persona en tiempo real, la partes que interesan identificar y perseguir son la cabeza, torso, brazos
y piernas, los experimentos posteriores buscan mostrar como un blob podra modelar cada uno
de estos segmentos del cuerpo humano. Las pruebas se efectuaron en imagenes artificiales y en
imagenes naturales, los resultados fueron satisfactorios en ambos casos.
La figura 3.8 es el resultado de una prueba realizada en una imagen natural, los pxeles se
esparcieron sobre el rostro de la persona y el blob que se obtuvo define bien las caractersticas
de estos, el color del blob corresponde con el color promedio de la piel. La misma prueba se
realizo sobre una imagen artificial obteniendose resultados similares, ver figura 3.9.

55

Figura 3.3: La elipse sobre la imagen representa al blob, tambien se dibuja aislada a la derecha de la
imagen.

Figura 3.4: Los puntos blancos son los pxeles del blob, cuya distribucion es paralela al eje x.

Figura 3.5: La elipse que representa al blob tiene una orientacion paralela al eje x.

56

Figura 3.6: Muestra una distribucion mas dispersa de los pxeles que definen al blob.

Figura 3.7: El tama


no de la elipse es mayor, el color y la orientacion del blob corresponde a la
distribucion de los pxeles.

Figura 3.8: El blob obtenido detalla el rostro de la persona, la prueba se realizo sobre una imagen
natural.

57

Figura 3.9: El blob obtenido detalla el rostro de la persona, la prueba se realizo sobre una imagen
artificial.

Figura 3.10: La mano puede ser detallada por el blob obtenido, la prueba se realizo sobre una imagen
natural.

Un blob que simboliza una mano se obtuvo sobre una imagen natural (figura 3.10) y sobre una
imagen artificial (figura 3.11), como puede verse los resultados son satisfactorios.
El modelado del torso y una pierna por medio de blobs se ejemplifica en las figuras 3.12 y 3.13
respectivamente.

3.4.2

Diferencia de im
agenes est
aticas

Estas pruebas se realizaron con imagenes naturales.

Una primer etapa para conseguir el

seguimiento de una persona en tiempo real, consiste en detectarla para poder segmentarla y
despues seguirla. Se penso en la diferencia de imagenes (definida en la seccion 2.3) como el
metodo para obtener el area de la imagen que corresponde a la persona. La diferencia de
imagenes se realizo obteniendo la distancia de color RGB pxel a pxel entre las dos imagenes,
la formula utilizada para la diferencia de imagenes es la siguiente:

58

Figura 3.11: El blob obtenido modela la mano de la persona, la prueba se realizo sobre una imagen
artificial.

Figura 3.12: Ajuste del blob al torso de la persona sobre una imagen natural.

Figura 3.13: Muestra como puede acoplarse un blob para modelar una pierna, la prueba se realiz
o
sobre una imagen natural.

59

Distancia en color RGB =

(R2 R1 )2 + (G2 G1 )2 + (B2 B1 )2

(3.1)

Se considera como parte de la diferencia de imagenes, a los pxeles cuya distancia en color RGB
es mayor que cierto umbral; el umbral se obtiene automaticamente con base en las imagenes, es la
maxima diferencia promedio entre las dos imagenes. Ademas, este umbral puede ser modificado
por el usuario.
La figura 3.14 muestra los resultados de la diferencia de imagenes cuando se tiene la presencia
de una sola persona. El proceso de la diferencia de imagenes se realiza entre la imagen de la
figura 3.14(a) (escena sin la persona o fondo) y la imagen de la figura 3.14(b) (escena que incluye
a la persona). En la figura 3.14(c) los puntos blancos representan la diferencia entre las dos
imagenes, con un umbral obtenido automaticamente igual a 8.0625. Si el umbral se aumenta
a 11.3578 el area detectada como diferente entre ambas imagenes disminuye (figura 3.14(d)),
mientras que si el umbral disminuye a 5.0 el area aumenta (figura 3.14(e)). Este experimento
muestra la sensibilidad que presenta la diferencia de imagenes al umbral establecido.
En la figura 3.15 se observa la diferencia de imagenes cuando se tienen tres personas en la
escena. La imagen de la figura 3.15(a) es la imagen del fondo, la imagen de la figura 3.15(b)
contiene a las tres personas, la diferencia de imagenes se realiza entre ambas; los puntos blancos
sobre la imagen de la figura 3.15(c), son el resultado de dicha diferencia con un umbral obtenido
automaticamente igual a 8.4261. Se modifica el umbral, primero se incrementa a 11.6619 (figura
3.15(d)) y posteriormente se disminuye a 6.2449 (figura 3.15(e)). Los resultados son similares a
los obtenidos en el experimento anterior.

3.4.3

Dilataci
on y erosi
on

La diferencia de imagenes puede presentar ruido por cambios en la iluminacion; para eliminar los
pxeles no necesarios, se penso en utilizar la erosion de la region correspondiente a la diferencia
de imagenes. Posteriormente una vez eliminado el ruido, se ideo emplear el metodo de dilatacion
sobre el resultado de la erosion, con el proposito de ampliar la region de interes. Los metodos
de dilatacion y erosion se implementaron seg
un fueron precisados en las secciones 2.4.2 y 2.4.3.
El elemento estructural (seccion 2.4.1) empleado en ambos metodos consistio de una mascara
de convolucion de 3 3.
La primer prueba se realizo sobre la diferencia de imagenes del primer experimento de la seccion
60

(a) Escena sin la persona.

(b) Escena que incluye a la persona.

(c) Diferencia de im
agenes con un um-

(d) Diferencia de imagenes con un um-

bral de 8.0625.

bral de 11.3578.

(e) Diferencia de imagenes con un umbral de 5.0.

Figura 3.14: Resultados de la diferencia de imagenes en presencia de una sola persona.

61

(a) Fondo.

(b) Escena con tres personas.

(c) Diferencia de im
agenes con un umbral de

(d) Diferencia de imagenes con un umbral de

8.4261.

11.6619.

(e) Diferencia de imagenes con un umbral de


6.2449.

Figura 3.15: Resultados de la diferencia de imagenes con tres personas en la escena.

62

anterior. Se aplico la operacion morfologica de dilatacion, erosion y de opening3 , sobre el area


de diferencia de imagenes obtenida con un umbral de 8.0625, esta imagen tambien se muestra
en la figura 3.16(a). Los resultados se observan en la figura 3.16, el resultado de la dilatacion
aparece en la figura 3.16(b), se observa que los pxeles de ruido que aparecen por cambios en la
iluminacion son amplificados, mientras que la erosion los elimina, como se ve en la figura 3.16(c).
Para obtener solo el el area que corresponde a la persona se aplica opening (figura 3.16(d)).

(a) Los puntos blancos indican la dife-

(b) Diferencia de imagenes dilatada.

rencia de im
agenes sobre la que seran
aplicadas las operaciones morfologicas
b
asicas.

(c) Diferencia de im
agenes erosionada.

(d) Diferencia de imagenes despues de


aplicar opening.

Figura 3.16: Experimentacion de las operaciones morfologicas basicas sobre imagenes naturales.

En la figura 3.17 se tienen los resultados de otro experimento similar. La imagen que corresponde
al fondo es la de la figura 3.17(a), la imagen con respecto a la cual se obtiene la diferencia de
imagenes es la de la figura 3.17(b), el resultado de la diferencia de imagenes se representa con
3

Se trata de una versi


on modificada del metodo opening, consiste en emplear una vez el procedimiento de

erosion y sobre este resultado, aplicar el procedimiento de dilatacion dos veces.

63

los puntos blancos sobre la imagen de la figura 3.17(c); la dilatacion sobre este resultado se
observa en la figura 3.17(d), en este caso se presenta mayor ruido que en la prueba anterior. La
erosion disminuye el ruido, aunque no lo elimina por completo como se ve en la figura 3.17(e).
En la figura 3.17(f) aparece el resultado del opening.
Estos resultados son un indicio del ruido que puede producirse por cambios en la iluminacion,
factor que hay que considerar en etapas posteriores de la implementacion.

(a) Escena que corresponde al

(b) Escena que incluye a dos

(c) Resultado de la diferencia de

fondo.

personas (area de interes).

imagenes.

(d) Diferencia de im
agenes di-

(e) Diferencia de imagenes ero-

(f) Diferencia de imagenes des-

latada.

sionada.

pues de aplicar opening.

Figura 3.17: Experimentacion de las operaciones morfologicas basicas sobre imagenes naturales.

3.4.4

Segmentaci
on por crecimiento de regiones

Se implemento el algoritmo para la segmentacion por crecimiento de regiones de acuerdo a


lo explicado en la seccion 2.5.4.2. Esta etapa es necesaria para la construccion posterior de
los blobs, recordando, un blob agrupa pxeles con caractersticas similares, en este trabajo estas
caractersticas son el color y la posicion espacial; de ah la aportacion de este metodo como etapa
64

inicial del analisis de la imagen, ya que a partir de las regiones segmentadas seran construidos
los blobs. La segmentacion por crecimiento de regiones fue realizada sobre la region obtenida de
la diferencia de imagenes erosionada (se aplica erosion una vez), la dilatacion no fue necesaria
para mostrar mejores resultados.
El primer paso en este algoritmo, consiste en la distribucion de un conjunto de puntos semilla
sobre la region a segmentar, la distribucion fue aleatoria. Posteriormente se realiza el crecimiento
de cada region, a partir de la semejanza de los pxeles vecinos con el punto semilla, en este trabajo
se empleo la distancia en color RGB (ecuacion 3.1) para determinar dicha semejanza. Los pxeles
de distancia menor a un umbral, obtenido empricamente, pertenecen a la misma region. La
u
ltima etapa de este algoritmo, consiste en fusionar las regiones cuyos valores promedio sean
inferiores a otro umbral (tambien emprico).
Se desarrollaron varios experimentos, en las imagenes siguientes pueden apreciarse los resultados. Cada experimento se detalla con dos imagenes, una imagen donde el area a segmentar es
delineada por un conjunto de pxeles blancos, y los pxeles de color verde sobre esta imagen, son
los puntos semilla para ese experimento en particular; se incluye otra imagen con el resultado de
la segmentacion, cada region es modelada por un conjunto de pxeles de un color en especfico.
El primer experimento se observa en la figura 3.18. Las figuras 3.18(a) y 3.18(b) muestran
un buen resultado de este algoritmo. Para este caso se obtuvieron cinco regiones. Resultados
similares se observan en el segundo experimento (figuras 3.19, 3.19(a) y 3.19(b)), y en el tercero
(figuras 3.20, 3.20(a) y 3.20(b)), con cinco y cuatro regiones respectivamente.
La distribucion de los puntos semilla es muy importante para el exito de la segmentacion, as
como tambien influye en gran medida el contraste entre el fondo y la imagen a segmentar. Los
siguientes experimentos demuestran esto, en ellos se da una segmentacion erronea, se abarca
parte del fondo. Las figuras 3.21, 3.22 y 3.23 muestran estos experimentos, donde se aprecia
confusion entre la imagen de interes y el fondo. En el cuarto experimento (figura 3.21) se
encuentran seis regiones, se segmenta parte del fondo debido a la similitud de este con un punto
semilla (ver figuras 3.21(a) y 3.21(b)). Los resultados del quinto experimento (figura 3.22) son
similares, y solo se obtienen dos regiones (figuras 3.22(a) y 3.22(b)). Finalmente la sexta prueba
(figura 3.23) es un claro ejemplo de la necesidad de un marcado contraste, entre la imagen del
fondo y la imagen de la region a segmentar (figuras 3.23(a) y 3.23(b)).

65

(a) El
area blanca es el
area a segmen-

(b) Resultado de la segmentacion, ca-

tar, los puntos verdes muestran la dis-

da area de un color determinado es una

tribuci
on de los puntos semilla.

region.

Figura 3.18: Experimento uno: la segmentacion por crecimiento de regiones dio como resultado cinco
regiones.

(a) Distribuci
on de los puntos semilla.

(b) Se segmento la imagen en cinco regiones.

Figura 3.19: Experimentos dos: la segmentacion por crecimiento de regiones dio como resultado cinco
regiones.

66

(a) Distribuci
on de los puntos semilla.

(b) Se segmento la imagen en cuatro regiones.

Figura 3.20: Experimentos tres: la segmentacion por crecimiento de regiones dio como resultado
cuatro regiones.

(a) Area
a segmentar y puntos semilla.

(b) Resultado de la segmentacion del


cuarto experimento, se obtuvieron seis
regiones.

Figura 3.21: Experimento cuatro: la region fue segmentada en seis regiones. La segmentaci
on es
erronea, abarca parte del fondo.

67

(a) Puntos semilla.

(b) Resultado del quinto experimento,


con dos regiones.

Figura 3.22: Experimento cinco: la region fue segmentada en solo dos regiones.

Segmentaci
on

erronea.

(a) Puntos semilla.

(b) Se segmento la imagen en una region.

Figura 3.23: Experimento seis: muestra una segmentacion erronea, es necesario un mayor constraste
entre el fondo y la region a segmentar.

68

3.5

Dise
no

El dise
no del sistema consta de dos modulos principales, como ya se menciono, uno encargado
de la inicializacion del sistema, y otro encargado del seguimiento de la persona en tiempo real,
el esquema del sistema se expone en la figura 3.24.

Figura 3.24: Modulos del sistema de deteccion y seguimiento de una persona implementado en este
trabajo.

3.5.1

Inicializaci
on

Durante el proceso de inicializacion se detecta y construye el modelo de la persona, se tiene dos


etapas distintivas:

1. Deteccion de la persona. Se realiza una diferencia de imagenes entre la imagen del fondo
(escena sin la persona) y la imagen actual (escena que incluye a la persona).

69

Figura 3.25: Representacion usada para almacenar el fondo.

2. Modelado de la persona por medio de blobs. Sobre el area identificada como la persona se
realiza una segmentacion por crecimiento de regiones, para obtener las regiones de interes
y que corresponden a la cabeza, torso, brazos y piernas. Los pxeles que pertenecen a cada
region proporcionan las estadsticas de segundo orden que definen a cada blob, de modo
que la construccion del modelo multi-blob de la persona es conducido por el resultado de
la segmentacion.

La secuencia de pasos que construye el modelo inicial de la persona se identifica en la figura


3.24, a continuacion se detalla cada uno.

3.5.1.1

Almacenar escena sin la persona

La escena del fondo, como ya se ha mencionado, es la escena que no contiene a la persona. Para
poder localizar a la persona en una etapa posterior se requiere que esta escena sea almacenada.
La informacion del fondo esta contenida en un arreglo bidimensional como el de la figura 3.25,
esta representacion se describio en la seccion 2.1. Cada celda [i, j] del arreglo contiene la
informacion de los valores R, G y B del pxel de la imagen del fondo en esa posicion.

70

3.5.1.2

Frame con la persona incluida en la escena

Despues de almacenar el fondo, se introduce a la persona en la escena. Es necesario que la


posicion inicial del usuario sea frente a la camara, con las piernas separadas y los brazos extendidos (configuracion star fish); esta configuracion inicial permite localizar la cabeza, brazos,
torso y piernas de la persona, proporciona informacion a priori sobre la morfologa de la persona
que es aprovechada por el procedimiento de segmentacion. La informacion suministrada por la
configuracion star fish se clasifica en:

Angulos
concavos y,
angulos convexos.
El algoritmo de la segmentacion por crecimiento de regiones utiliza esta informacion semantica
del cuerpo de la persona. El primer resultado de dicho algoritmo puede consistir de varias
regiones diferentes que en realidad pertenecen a una sola region, as que para realizar la combinacion de tales regiones similares de modo adecuado se hace uso de informacion a priori.

3.5.1.3

Angulos
c
oncavos y convexos

Como se explico antes, para que el metodo de segmentacion por crecimiento de regiones funcione
adecuadamente, requiere informacion sobre la morfologa de la persona. Esta informacion se
obtiene a partir de la configuracion inicial de la persona (configuracion star fish), configuracion
mostrada en la figura 3.26. En la figura pueden observarse los angulos concavos representados
con puntos de colores, y los angulos convexos que corresponden a las lneas de colores. Con base
en la informacion que ellos aportan, pueden obtenerse cada region de interes: cabeza, brazo
izquierdo, brazo derecho, pierna izquierda, pierna derecha y torso.
1. Cabeza : se obtiene con la ayuda de los angulos concavos 1 y 2, y del angulo convexo b.
2. Brazo derecho: con base en el angulo concavo 1 y el angulo convexo a.
3. Brazo izquierdo: a partir de la informacion aportada por el angulo concavo 2 y el angulo
convexo c.
4. Pierna derecha: determinada por el angulo concavo 3 y el angulo convexo d.
5. Pierna izquierda: definida con la ayuda del angulo concavo 3 y el angulo convexo e.
71

Figura 3.26: Muestra la configuracion inicial de la persona, la configuracion star fish.

6. Torso: finalmente el torso puede determinarse con la ayuda de los angulos concavos 1, 2
y 3.

3.5.1.4

Diferencia de im
agenes

El area de la imagen correspondiente a la persona se reconoce gracias al resultado de una


diferencia de imagenes, esta se realiza entre la escena del fondo y la escena en la que aparece la
persona. La diferencia de imagenes se obtuvo seg
un lo describe la ecuacion 2.1, como metodo de
comparacion entre los pxeles de ambas imagenes se utilizo la distancia en color RGB (ecuacion
3.1), y el umbral se establecio empricamente. Modificando la ecuacion 2.1 la diferencia de
imagenes se obtiene de la siguiente forma:

1 Si |F (x, y, F ondo) F (x, y, EscenaConP ersona)| > EMPIRICO ,


DF ondo,EscenaConP ersona (x, y) =
0 en otro caso.
(3.2)
Donde:
|F (x, y, F ondo) F (x, y, EscenaConP ersona)| =(Rx,y,F ondo Rx,y,EscenaConP ersona )2 +
(Gx,y,F ondo Gx,y,EscenaConP ersona )2 +
(Bx,y,F ondo Bx,y,EscenaConP ersona )2
72

Se considera como parte de la diferencia de imagenes a regiones conectadas de nueve pxeles que
sobrepasan el umbral, de esta manera se ignoran las regiones mas peque
nas u objetos que se
estan moviendo lentamente, mejorando as el resultado de la diferencia de imagenes y eliminando
ruido (seccion 2.3).
Esta etapa permite realizar la primer actualizacion de la informacion del fondo:

Actualiza-Fondo
1 Para CadaP ixel(x,y) DF ondo,EscenaConP ersona hacer
2

3.5.1.5

ImagenF ondo [x, y] ImagenEscenaConP ersona [x, y]

Detecci
on de la persona

En esta etapa ya se tiene identificada el area que define a la persona, as como los angulos
concavos y convexos del contorno de dicha area. En este punto se cuenta con la informacion
suficiente para continuar con el proceso de segmentacion.

3.5.1.6

Segmentaci
on de la persona

El proceso de segmentar a la persona, es realizado por el algoritmo de crecimiento por regiones


(seccion 2.5.4.2). Durante este proceso se obtienen las seis regiones de interes (cabeza, torso,
brazos y piernas), los puntos de cada region definen las estadsticas espaciales y de color de cada
blob.
El proceso de segmentacion inicia con la distribucion de un conjunto de puntos semilla sobre el
area a segmentar (area detectada por la diferencia de imagenes).
El crecimiento de cada region principia con cada punto semilla. Los pxeles vecinos al punto
semilla que comparten propiedades similares de color se agrupan en una region. La medida
de similitud esta determinada por la distancia en color RGB (ecuacion 3.1), del punto semilla
a cada uno de sus vecinos, si la distancia es menor que un cierto umbral, ese pxel se agrega
a la region. El umbral de similitud entre los pxeles se establecio empricamente. El proceso
de b
usqueda de pxeles similares contin
ua con cada pxel agregado a la region, se explora en
su vecindad buscando pxeles que cumplan con la propiedad de similitud, as crece la region.
73

El proceso termina cuando ya no existen pxeles en la vecindad que puedan incorporarse a la


region.
Los puntos semillas que son agregados a una region durante el proceso de crecimiento de regiones,
son descartados como originarios del crecimiento de una nueva region; esto hace mas eficiente
el algoritmo de segmentacion.
El crecimiento de las regiones se limita al area obtenida de la diferencia de imagenes, as se
evitan errores originados por cambios en la iluminacion, o porque los colores de la ropa de la
persona sean similares a los colores del fondo, estos errores se observaron durante la etapa de
experimentacion estatica.
El primer resultado de este algoritmo puede consistir de varias regiones diferentes que en realidad
pertenecen a una misma region, para obtener las seis regiones de interes se requiere realizar la
combinacion de tales regiones de modo adecuado, haciendo uso de informacion a priori sobre la
morfologa de la persona, como se ha explicado en secciones anteriores.
El resultado de la segmentacion ayuda a modelar los blobs iniciales, cada region agrupa a pxeles
con caractersticas similares de color y espaciales, esto hace la correspondencia entre region y
blob directa.

3.5.1.7

Construcci
on del modelo de la persona : Blobs

La representacion del modelo de la persona, como se ha dicho a lo largo de este documento


es por medio de blobs. La construccion inicial de este modelo esta dada en dos etapas: La
clasificacion de las regiones segmentadas en blobs y el calculo de las estadsticas de cada uno de
ellos.
Las regiones en 2D obtenidas de la segmentacion por crecimiento de regiones, se representan por
sus estadsticas de segundo orden. Cada region representa a un blob. El modelo de la persona
se construye en funcion de las caractersticas internas de los puntos contenidos en cada region.
Los vectores que caracterizan a cada pxel que pertenece a un blob, contienen las coordenadas
espaciales del punto (x, y), y sus componentes de color (R, G, B). Los pxeles pertenecientes a
un blob en especfico, comparten propiedades de color y espacio.
Siguiendo la notacion descrita en la seccion 2.6, definimos al vector medio del blob k, como mk
con componentes (x, y, R, G, B) , y a su matriz de covarianza como Kk . El vector medio
representa el centroide del area descrita por el blob, es decir, captura su posicion. El calculo
74

de las estadsticas de cada blob se realiza seg


un se explica en la seccion 2.6.1. Estos calculos
se refieren a la obtencion de la matriz de covarianza (ecuacion 2.9) y al vector medio (ecuacion
2.7) de cada blob.
La matriz de covarianza puede expresarse como:

xB

yx y2 yR yG yB

x = Rx Ry R2 RG RB

2
Gx Gy GR G GB
Bx By BR BG B2

x2

xy

xR

xG

(3.3)

y el vector medio:

mx

my

m = mR

mG

mB

(3.4)

Para efectos de visualizacion del blob se obtiene la orientacion del blob seg
un se define en la
ecuacion 2.6, diagonalizando la matriz de covarianza a traves de una descomposicion de eigenvalores (proceso que se detalla en la seccion 2.6.2). Para obtener la orientacion del blob, sus
parametros deben separarse para ser tratados apropiadamente, la orientacion solo se aplica sobre los componentes x y y de los vectores caractersticos del blob. Esto es, se obtiene el vector
medio y la matriz de covarianza en el nuevo sistema de coordenadas, tal como se define por las
ecuaciones 2.13 y 2.12 respectivamente.
Siguiendo la notacion de la seccion 2.6.2, la matriz de covarianza en el nuevo sistema de coordenadas se expresa por:

y =

!
(3.5)

y el vector medio en el nuevo sistema de coordenadas esta dado como:


75

my =

my x

!
(3.6)

my y

Las posiciones en el nuevo sistema de coordenadas no correlacionado, se encuentran aplicando


la ecuacion 2.11.
El color de cada blob esta definido por los componentes R, G y B del vector medio:

mR

Color del blob =


mG

mB

3.5.2

(3.7)

Seguimiento

La informacion proporcionada por el proceso de inicializacion, como lo es la representacion


inicial de la persona y la informacion de la escena del fondo, se usa durante el seguimiento de la
persona. Las estadsticas de cada blob se actualizan recursivamente para combinar la informacion
contenida en la imagen mas reciente, con el conocimiento contenido en las estadsticas de las
clases actuales. En las secciones siguientes se describe como se construye el modelo de la persona
durante el seguimiento, tambien se explica como se modela la escena del fondo, y se detalla el
ciclo de analisis de este proceso que consiste de cuatro etapas principales.

3.5.2.1

Modelado de la persona

Para modelar a la persona durante el seguimiento, se hace uso de las estadsticas espaciales y
de color de cada blob, a traves del vector medio mk y la matriz de covarianza Kk (continuando
con la notacion de la seccion 2.6).
El modelo de la persona se construye con base en la informacion que se obtiene de un clasificador
de distancia mnima de Mahalanobis (seccion 2.7.1), modificando la notacion de la ecuacion 2.18,
la distancia de Mahalanobis se calcula con:

dM (X, ) = (X mk )T Kk1 (X mk )

(3.8)
76

Donde X es el pxel a clasificar, puede ser una de las siete clases existentes (seis clases
representan a los blobs de la cabeza, brazos, torso y piernas, y una clase es la que define al
fondo), mk es el vector medio de la clase k y Kk es la matriz de covarianza de dicha clase.
Tambien se mantiene un mapa de soporte que muestra el estado actual de los blobs. El mapa
de soporte representa la segmentacion de la imagen en las clases de espacio y color. El mapa de
soporte para el blob k, esta dado por:

1 (x, y)  k,
sk (x, y) =
0 en cualquier otro caso.

(3.9)

Se abundara mas adelante, en la seccion 3.5.2.3 sobre el funcionamiento del clasificador de


distancia mnima de Mahalanobis y sobre el mapa de soporte.

3.5.2.2

Modelado de la escena

Se asume que la escena sobre la cual sera localizada y seguida la persona, es una escena relativamente estatica y con cambios lentos de iluminacion. Cada punto de la escena es asociado
con un valor de color medio y una distribucion sobre ese medio. La distribucion de color de
cada pxel se modela con la Gaussiana descrita por la matriz de covarianza. Se define como 0
al vector medio de un punto del fondo, y como K0 a la matriz de covarianza de la distribucion
de dicho punto. La posicion espacial del punto se trata implcitamente, debido a que dado un
pxel particular de la imagen en la ubicacion (x, y), solo se requiere considerar el vector medio
y la matriz de covarianza que corresponde al fondo en esa posicion. El mapa de textura de la
escena del fondo se considera la clase cero, y es calculada en cada ciclo.
El fondo es actualizado continuamente. La primer actualizacion se realiza durante el proceso
de inicializacion, cuando se obtiene la diferencia de imagenes para identificar a la persona en
la escena, el area que no corresponde a la persona se utiliza para actualizar los valores de los
pxeles del fondo (ver la seccion 3.5.1.4). Posteriormente la actualizacion se realiza durante el
seguimiento, como ya se menciono el seguimiento de la persona es guiado por un clasificador de
distancia mnima de Mahalanobis, de modo que si el pxel a clasificar se determina que pertenece
al fondo, la informacion de dicho pxel reemplaza a la informacion del pxel en la escena del
fondo. El mecanismo de actualizacion se trata en la seccion 3.5.2.3.

77

3.5.2.3

Ciclo de an
alisis

Dado el modelo de una persona y el fondo, podemos adquirir una nueva imagen, interpretarla,
y actualizar dichos modelos. Este ciclo implica cuatro pasos:
1. Determinar la ventana de busqueda. Este es el primer paso para actualizar el modelo de los
blobs, en cada frame permite localizar el area que delimita a la persona. La ventana de
b
usqueda se consigue a traves de una diferencia de imagenes entre el fondo y la imagen
del frame actual. Este proceso es similar al aludido durante el modulo de inicializacion
(ecuacion 3.2).
2. Clasificacion de cada pxel en una clase. Se examina la ventana de b
usqueda con la intencion
de localizar los pxeles que pertenecen a cada blob durante la secuencia de frames. Cada
pxel del area de b
usqueda se clasifica como miembro de una de las clases existentes.
El n
umero de clases esta delimitado a siete, como se aludio en la seccion 3.5.2.1, seis
corresponden a los blobs de la cabeza, brazos, torso y piernas, y la septima clase se asocia
al fondo.
Para cada pxel de la ventana de b
usqueda, se establece un vector X con componentes
(x, y, R, G, B), y se calcula la distancia de Mahalanobis del pxel a cada clase. El pxel se
incorpora a la clase mas proxima, cuya distancia de Mahalanobis sea menor. As funciona
el clasificador de distancia mnima de Mahalanobis.
La ecuacion 3.8 muestra las operaciones necesarias en el calculo de esta distancia, se puede
advertir que se precisa la matriz de covarianza y el vector medio de cada clase.
Cuando se inicia el seguimiento de la persona, para medir la distancia de Mahalanobis del
pxel a cada una de las clases blob, se emplean las estadsticas que entrega el proceso de
inicializacion. Posteriormente durante la secuencia de frames, si el f ramet es la imagen
actual, la distancia de Mahalanobis del pxel a cada una de las clases blob se eval
ua con
base en las estadsticas espaciales y de color del f ramet1 (imagen anterior). La clase
del fondo es un caso particular. Las estadsticas del fondo que estan dadas por el vector
medio 0 y la matriz de covarianza K0 (siguiendo la notacion de la seccion 3.5.2.2), se
obtienen para cada pxel de la ventana de b
usqueda en el momento de la clasificacion, es
decir, se eval
uan en cada ciclo del seguimiento. Suponiendo que para el f ramet se desea
clasificar el pxel Xij , para determinar su distancia de Mahalanobis con respecto al fondo,
se calcula el 0 y la K0 con base en la estructura que almacena el fondo (la estructura
del fondo se describe en la seccion 3.5.1.1), considerando la informacion que aportan los
pxeles vecinos al punto en dicha estructura (mascara de convolucion de 33).
78

Figura 3.27: Esquema del clasificador de distancia mnima de Mahalanobis empleado en este trabajo. Se mide la distancia de Mahalanobis del pxel X a cada una de las siete clases
establecidas. X se asocia a la clase mas proxima.

A continuacion se recapitula el mecanismo de clasificacion (ver la figura 3.27):


Clasificacion-Del-Pixel-X
1 Si i = min(dM (X, )) entonces
2

Xi

3. Determinacion del mapa de soporte. Consiste en traducir el mecanismo de clasificacion en un


arreglo bidimensional, nombrado mapa de soporte. El tama
no del arreglo bidimensional
esta dado por el tama
no de la imagen, as la posicion espacial de cada pxel se trata
implcitamente. Dentro del mapa de soporte se indica la pertenencia de cada pxel a uno
de los blobs o a la escena. El mapa de soporte se determina seg
un la siguiente formula:

s(x, y) = argmink (dM k (x, y))

(3.10)

A cada clase se le asocia un n


umero:
(a) Clase cabeza 0
79

(b) Clase brazo izquierdo 1


(c) Clase brazo derecho 2
(d) Clase torso 3
(e) Clase pierna izquierda 4
(f) Clase pierna derecha 5
(g) Clase fondo -1
De modo que si el valor de s(100, 100) es igual a 3, significa que el pxel (100, 100) del
frame actual fue clasificado como perteneciente al torso. El contenido del mapa de soporte
puede traducirse en los vectores caractersticos que integran a cada clase. La clase cabeza
se expresa por el conjunto de celdas en el mapa de soporte que contengan al n
umero 0.
4. Re-estimacion de las estadsticas de los blobs. Dado el contenido del mapa de soporte s(x, y)
pueden actualizarse los modelos estadsticos de cada blob. Para cada clase k, los pxeles
marcados como miembros de esta clase se usan para estimar el nuevo modelo del vector
medio mk :

mk = E[X]

(3.11)

y las estadsticas de segundo orden llegan a ser el estimado del modelo de la matriz de
covarianza Kk :

Kk = E[(X mk )(X mk )T ]

(3.12)

rescribiendo este proceso, puede ser simplificado para permitir que el calculo se realice
de modo iterativo. El primer termino se construye mientras se encuentran los pxeles de
cada blob, al recorrer el mapa de soporte, y el vector medio puede substraerse cuando
finalmente se conoce:

E[(X mk )(y mk )T ] = E[XX T ] mk mTk

(3.13)

Errores en la clasificacion y fallas en el seguimiento pueden conducir a inestabilidad en


el modelo. As que la actualizacion de las estadsticas se apoya en un modulo de estabilizacion. La etapa de estabilizacion pretende darle mayor robustez al seguimiento,
80

ayuda al sistema a recuperarse de oclusiones y de cambios de iluminacion, sin embargo


los movimientos de la persona tienen que ser relativamente lentos. Este modulo lleva una
historia de las estadsticas estables de cada blob, almacenando la matriz de covarianza y
el vector medio de los blobs si se cumple una condicion de estabilidad. Inicialmente las
estadsticas derivadas del proceso de inicializacion se emplean como historia. La condicion de estabilidad esta relacionada con el tama
no inicial de cada blob, la estabilidad se
mantiene si durante el seguimiento el tama
no del blob no aumenta o disminuye en mas
de un uno por ciento. Si para alg
un blob en el f ramet no se cumple la condicion de
estabilidad, sus estadsticas son sustituidas por las estadsticas almacenadas en la historia. Si por el contrario la estabilidad se mantiene, la estadsticas re-estimadas del blob en
cuestion sustituyen a las estadsticas de la historia, de este modo la historia mantiene las
estadsticas estables recientes.

3.5.3

Detalles de la implementaci
on

La implementacion del sistema que se ha descrito, fue realizada en Visual Studio C++ Ver. 6.0.
Para la manipulacion del procesamiento de imagenes en tiempo real se utilizo Microsoft Vision
SDK, Version 1.2, estas son unas bibliotecas de bajo nivel, desarrolladas por Vision Technology
Research Group de Microsoft [34], las cuales trabajan con el sistema operativo Microsoft Windows y con Visual C++ Ver. 6.0. El sistema se ejecuto sobre una PC Pentium III a 733 MHz
con 128Mb en RAM. La secuencia de imagenes se obtuvo a traves del puerto USB por medio
de una webcam. El modelo de webcam empleada fue una QuickCam Express cuya resolucion
maxima es de 320 240 [56]. Procesando en promedio 3 frames por segundo.
La codificacion de las funciones principales del sistema se especifican en el apendice B.

3.6

Resultados

En esta seccion se detallan los resultados del seguimiento del modelo multi-blob de la persona.
Se observan los seis blobs que representan a cada region de interes: cabeza, brazo izquierdo,
brazo derecho, torso, pierna izquierda y pierna derecha; no se crean blobs que modelen los pies
de la persona. El blob de cada pierna contiene la informacion espacial y de color de la region de
la pierna y de la region del pie de la persona.
El analisis del seguimiento se realizo sobre los siguientes experimentos:
81

1. Proceso de inicializacion.
2. Seguimiento de los brazos, bajo diferentes posiciones, cuando se colocan frente al rostro o
al torso, y en caso de oclusion.
3. Seguimiento de las piernas, moviendolas hacia los lados, al frente, en caso de oclusion
parcial.
4. Seguimiento de la cabeza.
5. Seguimiento mientras la persona se desplaza lentamente.
6. Giros.
7. Seguimiento mientras la persona realiza movimientos verticales.

3.6.1

Proceso de inicializaci
on.

El modelado inicial de la persona en blobs puede observarse en la figura 3.28. La figura 3.28(a)
presenta la escena del fondo. Posteriormente aparece la persona en la escena con la cofiguracion
star fish (figura 3.28(b)). La inicializacion concluye con los resultados desplegados en la figura
3.28(c), esta imagen muestra la imagen segmentada de la persona (cada region de interes esta
marcada con un color en particular) y su representacion multi-blob. Las seis regiones localizadas
sobre el cuerpo de la persona, como puede notarse, son la cabeza, brazo izquierdo, brazo derecho,
torso, pierna derecha y pierna izquierda. La informacion espacial y de color de cada region ayuda
en la construccion de cada blob, as la persona es modelada a traves de seis blobs.

3.6.2

Seguimiento de los brazos

Esta serie de experimentos detallan los resultados del seguimiento de los brazos bajo diferentes
posiciones: extendiendo los brazos, movimientos laterales de los brazos, manos sobre la cabeza,
manos frente al rostro, brazos frente al torso y oclusion.

3.6.2.1

Extendiendo brazos.

En el primer experimento (figura 3.29) se observa el seguimiento de los brazos mientras estos se
extienden. La posicion inicial de la persona aparece en la figura 3.29(a). La persona extiende
82

(a) Escena sin la persona.

(b) Escena que incluye a la persona (configuracion star fish).

(c) Primer segmentacion y modelado de la persona.

Figura 3.28: Resultados obtenidos durante la etapa de Inicializacion.

83

lateralmente su brazo derecho (figuras 3.29(b), 3.29(c)), para despues regresar el brazo a su
posicion inicial (figuras 3.29(d), 3.29(e)). Se inicia despues el movimiento del brazo izquierdo
(figuras 3.29(f), 3.29(g)) para finalmente regresar el brazo izquierdo a una posicion cercana al
torso (figura 3.29(h)). El resultado obtenido en este seguimiento es satisfactorio. Observe la
correspondencia entre el movimiento de los brazos y el modelado de los blobs.
Como parte de este experimento se muestra a la persona extendiendo ambos brazos (figura
3.30. La persona eleva los brazos (figuras 3.30(a), 3.30(b)) hasta llevarlos a una posicion vertical
(figura 3.30(c)). Finalmente los brazos son guiados a una posicion cercana al torso de la persona
(figuras 3.30(d), 3.30(e)).

(a) Posicion inicial la persona.

(b) Movimiento ligero del brazo derecho.

Figura 3.29: Resultados del seguimiento mientras la persona extiende el brazo derecho y posteriormente el brazo izquierdo (1/3).

84

(c) Extension lateral del brazo derecho.

(d) Inicia contraccion del brazo derecho hacia la posicion original.

(e) El brazo derecho regresa a la posicion original.

Figura 3.29: Resultados del seguimiento mientras la persona extiende el brazo derecho y posteriormente el brazo izquierdo (2/3).

85

(f) Se inicia movimiento ligero del brazo izquierdo.

(g) Extension lateral del brazo izquierdo.

(h) Contracci
on del brazo izquierdo hacia la posicion original.

Figura 3.29: Resultados del seguimiento mientras la persona extiende el brazo derecho y posteriormente el brazo izquierdo (3/3).

86

(a) La persona inicia el movimiento de extension de brazos.

(b) Extension de ambos brazos.

(c) Se elevan verticalmente.

Figura 3.30: Resultados del seguimiento mientras la persona extiende ambos brazos (1/2).

87

(d) Inicia el desplazamiento de los brazos hacia abajo.

(e) Ambos brazos se mantienen cercanos al torso.

Figura 3.30: Resultados del seguimiento mientras la persona extiende ambos brazos (2/2).

88

3.6.2.2

Movimientos laterales de los brazos.

Esta prueba exhibe el seguimiento de los brazos al mover el torso hacia el lado derecho y
posteriormente hacia el lado izquierdo (figura 3.31). La posicion inicial de la persona se indica
en la figura 3.31(a). El movimiento del torso se inicia hacia el lado derecho (figura 3.31(b).
Enseguida la persona regresa a la posicion inicial (figuras 3.31(c), 3.31(d)). La persona contin
ua
el movimiento del torso hacia el lado izquierdo (figuras 3.31(e), 3.31(f)). Finalmente la persona
regresa a la posicion inicial (figuras 3.31(g), 3.31(h)).

(a) Posicion inicial de la persona.

(b) Movimiento del torso hacia el lado derecho.

Figura 3.31: Resultados del seguimiento mientras la persona mueve el torso lateralmente (1/3).

89

(c) Se inicia el regreso de la persona a la posicion inicial.

(d) La persona regresa a la posicion inicial.

(e) Inicio del movimiento del torso hacia el lado izquierdo.

Figura 3.31: Resultados del seguimiento mientras la persona mueve el torso lateralmente (2/3).

90

(f) Movimiento del torso hacia el lado izquierdo.

(g) Regresando a la posicion inicial.

(h) El torso regresa a la posicion inicial.

Figura 3.31: Resultados del seguimiento mientras la persona mueve el torso lateralmente (3/3).

91

3.6.2.3

Manos sobre la cabeza.

La figura 3.32 ejemplifica el seguimiento de los brazos al posicionar las manos sobre la cabeza.
En la figura 3.32(a) se tiene la posicion inicial de la persona. Los brazos se elevan para que la
persona pueda tocarse la cabeza con las manos (figuras 3.32(b), 3.32(c)). Para despues llevar
los brazos hacia la posicion inicial (figuras 3.32(d), 3.32(e)).

(a) Posicion inicial de la persona.

(b) Se inicia la elevacion de los brazos sobre la cabeza.

Figura 3.32: Resultados del seguimiento cuando la persona dirige las manos sobre su cabeza (1/2).

92

(c) Las manos se elevan hasta tocar la cabeza.

(d) Se inicia el descenso de los brazos.

(e) Los brazos retornan a la posicion del inicio.

Figura 3.32: Resultados del seguimiento cuando la persona dirige las manos sobre su cabeza (2/2).

93

3.6.2.4

Manos frente al rostro.

La figura 3.33 analiza el movimiento del brazo cuando la mano derecha se aproxima al rostro.
En la figura 3.33(a) aparece la posicion de la que parte el seguimiento. La mano derecha se
aproxima al rostro (figuras 3.33(b), 3.33(c)). Cuando la mano derecha se encuentra frente al
rostro (figura 3.33(d)) se produce una confusion parcial entre el brazo derecho y el rostro, dada
la similitud en el color de la piel. Conforme la mano se aleja del rostro el reconocimiento del
brazo derecho se recupera (figuras 3.33(e), 3.33(f), 3.33(g), 3.33(h)).

(a) Posicion inicial de la persona.

(b) Se inicia el movimiento del brazo derecho.

Figura 3.33: Resultados del seguimiento del movimiento del brazo derecho en direccion al rostro
(1/3).

94

(c) Se contin
ua con la aproximacion de la mano al rostro.

(d) Mano derecha frente al rostro.

(e) Se inicia el movimiento de alejar la mano del rostro.

Figura 3.33: Resultados del seguimiento del movimiento del brazo derecho en direcci
on al rostro
(2/3).

95

(f) Contin
ua el alejamiento de la mano del rostro.

(g) Alejamiento de la mano del rostro.

(h) Recuperacion de la posicion inicial.

Figura 3.33: Resultados del seguimiento del movimiento del brazo derecho en direccion al rostro
(3/3).

96

Asimismo en la figura 3.34 se indica el movimiento del brazo al aproximar la mano izquierda al
rostro. De la postura en la figura 3.34(a) se inicia el acercamiento de la mano izquierda al rostro
(figuras 3.34(b), 3.34(c), 3.34(d), 3.34(e)), finalmente el brazo izquierdo retorna a su posicion
inicial (figuras 3.34(f), 3.34(g), 3.34(h)). Estos resultados son similares a los presentados por el
brazo derecho.
Al aproximarse las manos al rostro el sistema puede manejar la oclusion parcial, la cual se
produce cuando las manos se confunden con el rostro.

(a) Posicion inicial de la persona.

(b) Se inicia el movimiento del brazo izquierdo hacia el rostro.

Figura 3.34: Resultados del seguimiento del movimiento del brazo izquierdo en direccion al rostro
(1/3).

97

(c) Continuacion del movimiento del brazo izquierdo.

(d) La mano izquierda se encuentra proxima al rostro.

(e) La mano izquierda se encuentra frente al rostro.

Figura 3.34: Resultados del seguimiento del movimiento del brazo izquierdo en direcci
on al rostro
(2/3).

98

(f) Se inicia el movimiento del brazo izquierdo a la posicion inicial.

(g) Continuacion del retorno a la posicion inicial.

(h) Recuperacion de la posicion inicial.

Figura 3.34: Resultados del seguimiento del movimiento del brazo izquierdo en direccion al rostro
(3/3).

99

3.6.2.5

Brazos frente al torso.

Se probo tambien el seguimiento de los brazos cuando se colocan frente al torso de la persona.
Primero se detalla el seguimiento del brazo derecho (figura 3.35) y a continuacion el del brazo
izquierdo (figura 3.36). Para ambas situaciones, cuando el brazo derecho (figura 3.35(e)) y
el brazo izquierdo (figura 3.36(b)) se encuentran sobre el torso, la identificacion de estos se
conserva. El seguimiento permanece estable cuando el brazo derecho se reincorpora a su posicion
de inicio (figuras 3.35(f), 3.35(g), 3.35(h)); asimismo sucede para el caso del brazo izquierdo
(figuras 3.36(c), 3.36(d), 3.36(e)).

(a) Posicion inicial de la persona.

(b) Inicio del movimiento del brazo derecho hacia el torso.

Figura 3.35: Resultados del seguimiento cuando se posiciona el brazo derecho sobre el torso (1/3).

100

(c) Continuaci
on del movimiento del brazo derecho hacia el torso.

(d) Acercamiento del brazo derecho al torso.

(e) Brazo derecho sobre el torso de la persona.

Figura 3.35: Resultados del seguimiento cuando se posiciona el brazo derecho sobre el torso (2/3).

101

(f) Se inicia el alejamiento del brazo derecho.

(g) Contin
ua el alejamiento del brazo derecho.

(h) Retorno a la posicion inicial.

Figura 3.35: Resultados del seguimiento cuando se posiciona el brazo derecho sobre el torso (3/3).

102

(a) Posicion inicial de la persona.

(b) Brazo izquierdo sobre el torso de la persona.

(c) Inicio del alejamiento del brazo izquierdo.

Figura 3.36: Resultados del seguimiento cuando se posiciona el brazo izquierdo sobre el torso (1/2).

103

(d) Continuacion del alejamiento del brazo izquierdo.

(e) Retorno a la posicion inicial.

Figura 3.36: Resultados del seguimiento cuando se posiciona el brazo izquierdo sobre el torso (2/2).

Observe el seguimiento de los brazos si ambos son llevados frente al torso de la persona (figura
3.37).
En la figura 3.38 puede apreciarse el seguimiento de los brazos si se mantienen proximos al torso.
En este caso las manos se aproximan a la cintura de la persona. Las figuras 3.38(a), 3.38(b),
3.38(c) indican las diferentes etapas de este seguimiento.

104

(a) Ambos brazos se posicionan frente el torso de la persona.

(b) Se alejan los brazos del torso.

(c) Elevacion de ambos brazos.

Figura 3.37: Resultados del seguimiento cuando ambos brazos se posicionan sobre el torso de la
persona.

105

(a) Se inicia el movimiento de ambos brazos en direccion a la cintura.

(b) Las manos de la persona se aproximan a su cintura.

(c) La cintura de la persona es alcanzada por sus manos.

Figura 3.38: Resultados del seguimiento de los brazos al mantenerse proximos al torso.

106

3.6.2.6

Oclusi
on de los brazos.

El proceso de seguimiento en caso de oclusion de ambos brazos se exhibe en la figura 3.39. Los
brazos se ocultan al ser guiados hacia la espalda de la persona (figuras 3.39(a), 3.39(b), 3.39(c)).
Cuando los brazos aparecen nuevamente en escena son relocalizados (figuras 3.39(d), 3.39(e),
3.39(f)).

(a) Movimiento inicial de los brazos.

(b) Ambos brazos se dirigen hacia la espalda de la persona.

Figura 3.39: Resultados del seguimiento de los brazos despues de una oclusion (1/3).

107

(c) Los brazos se ocultan en la espalda de la persona.

(d) Se inicia la visibilidad de los brazos.

(e) Los brazos aparecen nuevamente en escena.

Figura 3.39: Resultados del seguimiento de los brazos despues de una oclusion (2/3).

108

(f) Relocalizacion de los brazos.

Figura 3.39: Resultados del seguimiento de los brazos despues de una oclusion (3/3).

3.6.3

Seguimiento de las piernas.

En el analisis del seguimiento de las piernas se probo el seguimiento: del movimiento lateral de
las piernas (figuras 3.40, 3.41), y del movimiento de elevacion de las piernas mientras el torso
permanece al frente (figuras 3.42 y 3.43).

3.6.3.1

Movimiento lateral de las piernas.

Puede distinguirse el movimiento lateral de la pierna derecha en la figura 3.40. A partir de


una posicion inicial (figura 3.40(a)), la persona inicia el movimiento lateral de la pierna derecha
(figuras 3.40(b), 3.40(c)) y finalmente la persona regresa a la primer posicion (figuras 3.40(d),
3.40(e), 3.40(f), 3.40(g)). Note que en la figura 3.40(c) se da un desajuste en la clasificacion,
mismo que es corregido despues de unos frames.
Para la pierna izquierda los resultados del movimiento lateral son similares a los obtenidos para
el movimiento de la pierna derecha. Ver la figura 3.41. El movimiento se inicia a partir de la
postura de la figura 3.41(a). Las figuras 3.41(b) y 3.41(c), muestran el movimiento lateral de la
pierna izquierda. Mientras que las figuras 3.41(d), 3.41(e), 3.41(f), indican lo que sucede cuando
la persona regresa a la posicion del inicio (figura 3.41(g)).

109

(a) Posicion inicial de la persona.

(b) Se inicia el movimiento lateral de la pierna derecha.

(c) Se tiene el movimiento lateral de la pierna.

Figura 3.40: Resultados del seguimiento de la pierna derecha mientras se mueve lateralmente (1/3).

110

(d) Se inicia el regreso a la posicion inicial.

(e) Continua la vuelta a la posicion inicial.

(f) Ajustes en el seguimiento.

Figura 3.40: Resultados del seguimiento de la pierna derecha mientras se mueve lateralmente (2/3).

111

(g) Regreso a la postura inicial.

Figura 3.40: Resultados del seguimiento de la pierna derecha mientras se mueve lateralmente (3/3).

(a) Postura inicial.

Figura 3.41: Resultados del seguimiento de la pierna izquierda mientras se mueve lateralmente (1/3).

112

(b) Inicia el movimiento de la pierna izquierda.

(c) Movimiento lateral de la pierna izquierda.

(d) Principia el regreso a la postura inicial.

Figura 3.41: Resultados del seguimiento de la pierna izquierda mientras se mueve lateralmente (2/3).

113

(e) Contin
ua el movimiento hacia la postura inicial.

(f) Ajustes en el seguimiento.

(g) Regreso a la postura inicial.

Figura 3.41: Resultados del seguimiento de la pierna izquierda mientras se mueve lateralmente (3/3).

114

3.6.3.2

Movimiento de las piernas al frente.

Esta prueba consiste en realizar el seguimiento de la pierna mientras se eleva. El torso de la


persona permanece de frente a la camara. Se distinguen el movimiento de la pierna derecha
(figura 3.42) y el movimiento de la pierna izquierda (figura 3.43).
Las figuras 3.42(a) y 3.42(b), ejemplifican el inicio del movimiento de elevacion de la pierna
derecha. En la figura 3.42(c) la pierna esta elevada. Y el regreso a la posicion inicial puede
observarse en las figuras 3.42(d) y 3.42(e).

(a) Postura inicial de la persona.

(b) Principia la elevacion de la pierna derecha.

Figura 3.42: Resultados del seguimiento de la pierna derecha mientras se eleva al frente (1/2).

115

(c) Elevacion de la pierna derecha.

(d) Moviendose hacia la posicion inicial.

(e) Se alcanza la postura inicial.

Figura 3.42: Resultados del seguimiento de la pierna derecha mientras se eleva al frente (2/2).

116

Similar al caso anterior, la elevacion de la pierna izquierda principia como indican las figuras
3.43(a) y 3.43(b). En la figura 3.43(c) la pierna esta elevada. El seguimiento de la pierna contin
ua hasta que se regresa a la posicion inicial (figuras 3.43(d), 3.43(e)).

(a) Posicion inicial de la persona.

(b) Se inicia el movimiento de la pierna izquierda.

Figura 3.43: Resultados del seguimiento de la pierna izquierda mientras se eleva al frente (1/2).

117

(c) Se eleva la pierna izquierda.

(d) Se retorna la pierna izquierda hacia la posicion inicial.

(e) Se regresa a la postura inicial.

Figura 3.43: Resultados del seguimiento de la pierna izquierda mientras se eleva al frente (2/2).

118

3.6.4

Seguimiento de la cabeza

Se analizo el seguimiento de la cabeza mientras la persona realiza movimientos laterales de la


misma, y cuando se inclina hacia delante y hacia atras.

3.6.4.1

Movimiento lateral de la cabeza

El seguimiento de la cabeza, mostrado en la figura 3.44 se realiza cuando la persona cambia


la posicion inicial de la cabeza (figura 3.44(a)) moviendose hacia la derecha (figuras 3.44(b),
3.44(c)), vuelve la cabeza al centro (figuras 3.44(d), 3.44(e)), se dirige hacia la izquierda (figuras
3.44(f), 3.44(g)), y regresa a la postura inicial (figuras 3.44(h), 3.44(i)).

3.6.4.2

Inclinaci
on hacia delante y hacia atr
as

Primero se distingue el seguimiento de la cabeza mientras la persona se inclina hacia delante


(figura 3.45). Inicialmente la persona esta erguida (figura 3.45(a)). El experimento contin
ua
cuando la persona inclina el torso hacia delante (figuras 3.45(b), 3.45(c)). Finalmente la persona
recupera la postura erguida (figuras 3.45(d), 3.45(e), 3.45(f)).
De modo semejante, en la figura 3.46 se aprecia el seguimiento cuando la persona se inclina
hacia atras. Las figuras 3.46(a), 3.46(b), 3.46(c), 3.46(d), 3.46(e) y 3.46(f) detallan los pasos
del proceso.

3.6.5

Seguimiento mientras la persona se desplaza lentamente

Las pruebas que se presentan en esta seccion comprenden el seguimiento de la persona mientras
se desplaza lentamente en las siguientes modalidades:

1. Hacia adelante
2. Hacia atras
3. Lateralmente, girando el torso
4. Lateralmente, manteniendo la postura del torso al frente

119

(a) Posicion inicial de la persona.

(b) Se inicia el movimiento de la cabeza a la derecha.

(c) La cabeza esta orientada hacia la derecha.

Figura 3.44: Resultados del seguimiento mientras la persona mueve lateralmente la cabeza (1/3).

120

(d) Se inicia el cambio hacia la postura inicial.

(e) La cabeza se mueve al centro.

(f) Se inicia el cambio de postura hacia la izquierda.

Figura 3.44: Resultados del seguimiento mientras la persona mueve lateralmente la cabeza (2/3).

121

(g) La cabeza esta orientada hacia la izquierda.

(h) Comienza el movimiento hacia la postura inicial.

(i) Se alcanza la postura inicial.

Figura 3.44: Resultados del seguimiento mientras la persona mueve lateralmente la cabeza (3/3).

122

(a) Postura inicial de la persona.

(b) Se inicia la inclinacion hacia delante.

(c) Persona inclinada al frente.

Figura 3.45: Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia adelante
(1/2).

123

(d) Principia el movimiento de regreso a la postura anterior.

(e) Se contin
ua regresando a la posicion inicial.

(f) Se alcanza la posicion del inicio.

Figura 3.45: Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia adelante
(2/2).

124

(a) Postura inicial.

(b) Inicia la inclinacion hacia atras.

(c) Contin
ua el movimiento de inclinacion.

Figura 3.46: Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia atr
as
(1/2).

125

(d) Persona inclinada hacia atras.

(e) Inicia la recuperacion de la postura inicial.

(f) Se consigue la posicion de inicio.

Figura 3.46: Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia atr
as
(2/2).

126

3.6.5.1

Desplazamiento hacia adelante

El movimiento realizado por la persona mientras se desplaza hacia adelante se observa en la


figura 3.47. El desplazamiento se inicia llevando al frente la pierna izquierda de la persona
(figuras 3.47(a), 3.47(b)). El resultado del primer paso puede verse en la figura 3.47(c). La
persona da otro paso al frente, esta vez la pierna derecha es la que inicia el movimiento (figuras
3.47(d), 3.47(e)).

(a) Posicion inicial la persona.

(b) Se mueve la pierna izquierda al frente para dar un paso.

Figura 3.47: Resultados del seguimiento mientras la persona se desplaza hacia adelante (1/2).

127

(c) Posicion alcanzada despues del primer paso.

(d) Se adelanta la pierna derecha para el siguiente paso.

(e) Posicion alcanzada despues de este u


ltimo paso.

Figura 3.47: Resultados del seguimiento mientras la persona se desplaza hacia adelante (2/2).

128

3.6.5.2

Desplazamiento hacia atr


as.

El desplazamiento hacia atras de la persona se aprecia en la figura 3.48. El proceso se inicia


moviendo la pierna derecha hacia atras (figuras 3.48(a), 3.48(b)), la pierna izquierda tambien se
dirige hacia atras para concluir con el primer paso (figuras 3.48(c), 3.48(d)). Las figuras 3.48(e)
y 3.48(f) detallan otro paso hacia atras dado por la persona.

(a) Postura de inicio.

(b) Se mueve la pierna derecha hacia atras para iniciar el desplazamiento.

Figura 3.48: Resultados del seguimiento mientras la persona se desplaza hacia atras (1/3).

129

(c) La pierna izquierda tambien se mueve hacia atras.

(d) Posicion alcanzada despues del primer paso.

(e) Se mueve nuevamente la pierna derecha hacia atras.

Figura 3.48: Resultados del seguimiento mientras la persona se desplaza hacia atras (2/3).

130

(f) Posicion alcanzada despues del u


ltimo paso.

Figura 3.48: Resultados del seguimiento mientras la persona se desplaza hacia atras (3/3).

3.6.5.3

Desplazarse lateralmente girando el torso

Se probo el seguimiento de la persona cuando esta se desplaza un paso hacia la derecha (figura
3.49), el movimiento lo realiza girando todo el torso (figuras 3.49(a) y 3.49(b)). Despues de
haber dado el paso (figuras 3.49(c), 3.49(d)) la persona regresa a la postura de inicio (figura
3.49(e)).
Se contin
ua con el movimiento hacia la derecha, la figura 3.50 muestra el seguimiento de la
persona cuando da otro paso es esta direccion, al igual que el paso anterior, gira todo el torso
(figuras 3.50(a), 3.50(b)). Despues del paso (figuras 3.50(c), 3.50(d)) se finaliza el movimiento
girando el torso al frente (figuras 3.50(e), 3.50(f)).
Un paso en la direccion contraria esta indicado en la figura 3.51. Se gira el torso hacia la izquierda
(figura 3.51(a)) y se inicia el paso (figuras 3.51(b), 3.51(c)). Se concluye con la postura frontal
del torso (figuras 3.51(d), 3.51(e)).
Continuando con el desplazamiento hacia la izquierda, la persona camina un paso mas en esta
direccion (figura 3.52). Nuevamente la persona gira el torso hacia la izquierda (figura 3.52(a)),
avanza moviendo la pierna derecha (figuras 3.52(b), 3.52(c)), y gira el torso al frente (figuras
3.52(d), 3.52(e)).

131

(a) Postura inicial de la persona.

(b) Se gira el torso hacia la derecha para iniciar el movimiento.

(c) Se adelanta la pierna izquierda para dar el paso.

Figura 3.49: Resultados del seguimiento de la persona mientras da un paso hacia la derecha (1/2).

132

(d) Se busca la postura inicial.

(e) Nuevamente se alcanza la postura inicial.

Figura 3.49: Resultados del seguimiento de la persona mientras da un paso hacia la derecha (2/2).

133

(a) Posicion inicial.

(b) Se inicia la rotacion del torso hacia la derecha.

(c) La pierna izquierda inicia el paso.

Figura 3.50: Resultados del seguimiento de la persona mientras da otro paso hacia la derecha (1/2).

134

(d) Se concluye el paso.

(e) Inicia el giro del torso hacia el frente.

(f) Postura que muestra el torso de frente.

Figura 3.50: Resultados del seguimiento de la persona mientras da otro paso hacia la derecha (2/2).

135

(a) La persona gira el torso hacia la izquierda.

(b) Mueve la pierna derecha para iniciar el paso.

(c) Primer paso hacia la izquierda.

Figura 3.51: Resultados del seguimiento de la persona mientras da un paso hacia la izquierda (1/2).

136

(d) Inicia el giro del torso hacia la posicion frontal.

(e) Posicion frontal del torso.

Figura 3.51: Resultados del seguimiento de la persona mientras da un paso hacia la izquierda (2/2).

137

(a) La persona gira su torso hacia la izquierda.

(b) Inicia el movimiento de la pierna derecha.

(c) Da el paso con la pierna derecha.

Figura 3.52: Resultados del seguimiento de la persona mientras da otro paso hacia la izquierda (1/2).

138

(d) Mueve la pierna izquierda para mover el torso al frente.

(e) Posicion con el torso girado hacia el frente.

Figura 3.52: Resultados del seguimiento de la persona mientras da otro paso hacia la izquierda (2/2).

139

3.6.5.4

Desplazarse lateralmente, manteniendo la postura del torso al frente

La siguiente prueba (figura 3.53) exhibe el seguimiento de la persona mientras se desplaza


lateralmente, la persona mantiene el torso al frente mientras se mueve. El seguimiento parte de
la posicion de la figura 3.53(a), se mueve la pierna derecha para realizar el primer desplazamiento
hacia la izquierda (figura 3.53(b)). La persona mueve la pierna izquierda y deja ambas piernas
visibles (figura 3.53(c), 3.53(d)), se mantiene la postura del torso al frente (figura 3.53(e)). Despues se inicia el movimiento lateral hacia la derecha (figuras 3.53(f), 3.53(g)). Se termina la
prueba mostrando ambas piernas visibles despues del desplazamiento (figura 3.53(h)).
Continuando con la ejemplificacion de este tipo de movimiento lateral, la figura 3.54 muestra
el desplazamiento hacia la derecha. La pierna izquierda inicia el movimiento (figuras 3.54(a),
3.54(b)). Este primer paso conduce a la postura de la figura 3.54(c). Posteriormente la persona
camina en direccion izquierda (figuras 3.54(d), 3.54(e)). Este movimiento concluye cuando la
persona muestra ambas piernas visibles (figura 3.54(f)).
Asimismo en la figura 3.55 la persona se desplaza un paso mas hacia la izquierda. Esta vez
la pierna derecha inicia el movimiento (figuras 3.55(a), 3.55(b)). La pierna izquierda realiza
un movimiento que deja visible ambas piernas (figura 3.55(c)), el seguimiento de la persona se
estabiliza en esta posicion (figura 3.55(d)). La persona regresa al centro de la escena con un
desplazamiento hacia la derecha (figura 3.55(e), 3.55(f), 3.55(g)). El seguimiento permanece
estable despues de este paso hacia la derecha (figura 3.55(h)).

140

(a) Posicion inicial.

(b) Inicio del desplazamiento hacia la izquierda.

(c) Inicia movimiento de la pierna izquierda.

Figura 3.53: Resultados del seguimiento de la persona mientras se desplaza lateralmente (1/3).

141

(d) Ambas piernas visibles.

(e) Postura del torso al frente despues del desplazamiento.

(f) Inicia desplazamiento hacia la derecha.

Figura 3.53: Resultados del seguimiento de la persona mientras se desplaza lateralmente (2/3).

142

(g) Contin
ua el desplazamiento a la derecha.

(h) Aparecen ambas piernas visibles despues del movimiento.

Figura 3.53: Resultados del seguimiento de la persona mientras se desplaza lateralmente (3/3).

143

(a) Inicio del desplazamiento hacia la derecha.

(b) La pierna izquierda inicia el desplazamiento.

(c) Postura obtenida despues del movimiento.

Figura 3.54: Resultados del seguimiento de la persona mientras se desplaza lateralmente (1/2).

144

(d) Inicio del desplazamiento en direccion izquierda.

(e) Continuacion del desplazamiento hacia la izquierda.

(f) Postura alcanzada despues del movimiento.

Figura 3.54: Resultados del seguimiento de la persona mientras se desplaza lateralmente (2/2).

145

(a) Inicio del movimiento hacia la izquierda.

(b) La pierna derecha inicia el desplazamiento.

(c) Se mueve la pierna izquierda para dejar ambas piernas visibles.

Figura 3.55: Resultados del seguimiento de la persona mientras se desplaza lateralmente (1/3).

146

(d) Muestra la estabilizacion del seguimiento.

(e) La pierna izquierda inicia el desplazamiento a la derecha.

(f) Contin
ua con el movimiento.

Figura 3.55: Resultados del seguimiento de la persona mientras se desplaza lateralmente (2/3).

147

(g) Movimiento de la pierna derecha que deja visibles ambas piernas.

(h) Postura estable despues del desplazamiento.

Figura 3.55: Resultados del seguimiento de la persona mientras se desplaza lateralmente (3/3).

148

3.6.6

Giros.

Se estudio el seguimiento de la persona bajo dos situaciones, la primera es cuando realiza un


giro lateral y la segunda es al ejecutar un giro completo.

3.6.6.1

Giro lateral.

La persona no se desplaza y solo gira el torso hacia la derecha y posteriormente hacia la izquierda
(figura 3.56). El giro del torso principia a partir de la posicion de la figura 3.56(a), primero se
inicia el giro del torso hacia la derecha (figuras 3.56(b), 3.56(c)), para enseguida retornar a la
primer postura (figuras 3.56(d), 3.56(e)). Despues se realiza el movimiento del torso hacia la
izquierda (figuras 3.56(f), 3.56(g)). Esta prueba termina cuando la persona regresa a la postura
inicial (figuras 3.56(h), 3.56(i)).

3.6.6.2

Giro completo.

Este experimento muestra el seguimiento mientras la persona da un giro completo en el sentido


de las manecillas del reloj (figura 3.57). El giro completo inicia con la postura de la persona
mostrada en la figura 3.57(a). La persona comienza a girar el torso hacia la derecha (figuras
3.57(b), 3.57(c), 3.57(d)). Conforme la persona gira algunas partes del cuerpo quedan ocultas,
el sistema maneja bien estas oclusiones (figuras 3.57(e), 3.57(k)). La persona comienza a dar la
espalda a la camara, a
un as la identificacion de las partes principales del cuerpo se mantiene
(figura 3.57(f), 3.57(g)). A la mitad del giro la persona esta de espaldas a la camara y pueden
ser reconocidos los seis blobs del modelo de la persona (figura 3.57(h)). El giro contin
ua (figuras
3.57(i), 3.57(j), 3.57(k), 3.57(l), 3.57(m), 3.57(n)) hasta que la persona se encuentra nuevamente
de frente a la camara (figura 3.57(o)).

149

(a) Posicion inicial de la persona.

(b) Se inicia el giro del torso hacia la derecha.

(c) Giro del torso hacia la derecha.

Figura 3.56: Resultados del seguimiento mientras la persona gira el torso lateralmente (1/3).

150

(d) La persona regresa a la posicion inicial.

(e) Se alcanza la postura inicial.

(f) Se inicia el giro del torso hacia la izquierda.

Figura 3.56: Resultados del seguimiento mientras la persona gira el torso lateralmente (2/3).

151

(g) Giro del torso hacia la izquierdo.

(h) Se inicia el regreso a la postura inicial.

(i) Retornando a la postura inicial.

Figura 3.56: Resultados del seguimiento mientras la persona gira el torso lateralmente (3/3).

152

(a) Postura inicial de la persona.

(b) Inicio del giro hacia la derecha.

(c) Continuacion del giro.

Figura 3.57: Resultados del seguimiento de la persona mientras realiza un giro completo (1/5).

153

(d) Continuacion del giro.

(e) Vista lateral de la persona mientras gira.

(f) Comienza a mostrarse la espalda de la persona.

Figura 3.57: Resultados del seguimiento de la persona mientras realiza un giro completo (2/5).

154

(g) Muestra la espalda de la persona casi por completo.

(h) Mitad del giro, la persona esta de espaldas.

(i) Se contin
ua el movimiento del giro.

Figura 3.57: Resultados del seguimiento de la persona mientras realiza un giro completo (3/5).

155

(j) La postura de la persona se aproxima a su vista lateral.

(k) Muestra la otra vista lateral de la persona.

(l) Se comienza recuperar la postura frontal de la persona.

Figura 3.57: Resultados del seguimiento de la persona mientras realiza un giro completo (4/5).

156

(m) Vista frontal de la persona.

(n) Se reacomoda la persona para alcanzar la postura de inicio.

(o) Fin del giro al retornar a la postura inicial.

Figura 3.57: Resultados del seguimiento de la persona mientras realiza un giro completo (5/5).

157

3.6.7

Seguimiento mientras la persona realiza movimientos verticales

El u
ltimo experimento ejemplifica el seguimiento de la persona a traves de movimientos verticales. Primero la persona se desplaza hacia abajo o se inclina (figura 3.58), y posteriormente la
persona recupera la postura inicial (se mueve hacia arriba) (figura 3.59).
La postura de inicio se observa en la figura 3.58(a). El proceso de inclinacion comienza seg
un
puede verse en las figuras 3.58(b) y 3.58(c). En la figura 3.58(d) aparece la persona con la
postura inclinada, la figura muestra la correspondencia entre la postura y el modelo multi-blob
de la persona. Enseguida la persona comienza a levantarse para regresar a la postura inicial
(figura 3.58(e)).
Para recuperar la postura erguida de la persona se ejecuta el movimiento vertical hacia arriba.
El ascenso de la postura es detallado por las figuras 3.59(a), 3.59(b), 3.59(c). Finalmente la
persona recupera la postura erguida y se consigue estabilidad en el seguimiento (figuras 3.59(d),
3.59(e)).

3.7

Una aplicaci
on del modelo de distribuci
on de color:
Seguimiento del blob de la mano aplicado a la teleoperaci
on de robots

Esta aplicacion explora un aspecto de la navegacion robotica, la teleoperacion de un robot movil


empleando ademanes. Por un lado se tiene el reconocimiento de ademanes sencillos, mediante
analisis de imagenes digitales; y por otro la teleoperacion del robot a traves de una red local,
recibiendo retroalimentacion de la ubicacion del robot por medio de una camara que se encuentra
en el mismo espacio que el robot [28].
Este proyecto se realizo con la colaboracion de un grupo de trabajo de la Maestra en Inteligencia
Artificial - UV. La teleoperacion del robot estuvo a cargo de la M.C. Angelica Garca Vega, y
los I.S.C. Grecia Lapizco Encinas y Rodrigo Sanchez Chacon. El modelado de la mano y el
reconocimiento de ademanes fueron desarrollado por el Dr. Homero V. Ros Figueroa y la I.C.
Hilda Caballero Barbosa.
En el apendice A se detalla el desarrollo de esta aplicacion.

158

(a) Posicion inicial de la persona.

(b) Inicia el movimiento vertical hacia abajo.

(c) Se contin
ua el descenso de la postura de la persona.

Figura 3.58: Resultados del seguimiento de la persona mientras realiza movimientos verticales hacia
abajo (1/2).

159

(d) Persona con la postura inclinada.

(e) Inicia el retorno a la postura inicial.

Figura 3.58: Resultados del seguimiento de la persona mientras realiza movimientos verticales hacia
abajo (2/2).

160

(a) Contin
ua el ascenso en la postura de la persona.

(b) La postura de la persona se sigue elevando.

(c) Recuperacion de la postura erguida de la persona.

Figura 3.59: Resultados del seguimiento de la persona mientras realiza movimientos verticales hacia
arriba (1/2).

161

(d) Postura erguida alcanzada.

(e) Estabilidad en el seguimiento.

Figura 3.59: Resultados del seguimiento de la persona mientras realiza movimientos verticales hacia
arriba (2/2).

162

Captulo 4
Conclusiones y trabajos futuros
4.1

Conclusiones

Se concluye que fue posible localizar y modelar a una persona por medio de blobs. Se cumplio
con el objetivo planteado dados los alcances del trabajo establecidos en la seccion 3.3.
La implementacion realizada permitio el estudio del movimiento de un objeto articulado, resolviendo el problema del seguimiento de un objeto no rgido en una escena. El seguimiento de
la persona se efect
ua en tiempo real bajo condiciones de iluminacion controladas.
El sistema funciona con una PC comercial. El seguimiento fue realizado sin la necesidad de
emplear un hardware especializado. Permitiendo una solucion menos restringida al problema.
La experimentacion estatica aporto conocimiento sobre las condiciones a controlar : colores del
fondo y la iluminacion en la escena (poca variacion) 1 .
En la fase de deteccion de la persona se probaron tecnicas de vision simples como la diferencia de
imagenes y la segmentacion por crecimiento de regiones, las cuales dieron resultados satisfactorios. Por otro lado el clasificador de distancia mnima de Mahalanobis efectuo una clasificacion
apropiada durante el seguimiento.
Se demostraron las ventajas del modelo de representacion por medio de blobs. Se combinaron las
1

En la literatura [5, 77, 74] se ha representado el color en el espacio de color Y U V ( Y es la luminosidad,

U V componentes de color), de modo que un blob tiene componentes espaciales (x, y) y color (Y , U , V ).
Para compensar el efecto de la sombra y la luminosidad sobre la imagen durante el seguimiento se emplea
la normalizaci
on U =

U
Y ,

V =

V
Y

163

propiedades espaciales y de color de las regiones de interes (cabeza, brazos, torso, y piernas) para
cada blob. Se probo la robustez del modelo en el seguimiento. Dado el modelo de los vectores
caractersticos elegidos (que involucran las propiedades de posicion y color (x, y, R, G, B)), se
requiere de poca memoria para representar a cada blob, una matriz de covarianza de dimension
5 5 y un vector medio de dimension 5.
El sistema fue analizado bajo una serie de experimentos, los resultados obtenidos pueden resumirse como sigue:
Fue capaz de realizar el seguimiento de los brazos bajo diferentes movimientos, siguio
a cada uno por separado y a ambos cuando el movimiento fue conjunto. Los resultados mostraron ser apropiados cuando la persona elevo los brazos, cuando movio el torso
lateralmente. Se exhibio recuperacion de oclusiones parciales: al acercar los brazos al
rostro, las manos se confunden parcialmente con el, debido a la similitud en el color de
la piel, el sistema recupera el blob del brazo al alejarlo del rostro. La identificacion de
los brazos se mantiene si la persona los coloca frente al torso. Si los brazos desaparecen momentaneamente de la escena, el sistema es capaz de relocalizarlos cuando estos
figuran nuevamente. Para que el seguimiento se conserve estable la persona no debe
realizar movimientos repentinos. En caso de oclusiones, estas deben ser momentaneas
(recuperacion satisfactoria).
Se experimento en seguir las piernas, bajo movimientos laterales y si estas se elevan manteniendo el torso al frente. Para el caso del movimiento lateral, puede haber cierta confusion
en la clasificacion, as que el movimiento debe ser lento, la recuperacion de estabilidad se
alcanza cuando la persona regresa a la postura de inicio. Los brazos deben estar alejados
del torso y visibles, as no podran confundirse con alg
un otro blob, causando inestabilidad
en el seguimiento.
La cabeza fue seguida cuando la persona realizo movimientos laterales y cuando inclino el
torso al frente y hacia atras. El seguimiento fue realizado satisfactoriamente.
Se probo seguir a la persona mientras se desplazaba lateralmente. Estos movimientos los
efect
uo girando el torso y manteniendo el torso frente a la camara. Los movimientos deben
ser los suficientemente lentos para darle tiempo al sistema de estabilizarse, de lo contrario
puede causar fallas en el seguimiento. La persona puede acercarse y alejarse de la camara
lentamente. Debido a la resolucion de la camara no puede alejarse demasiado, esto causa
confusion en la clasificacion e inestabilidad en el seguimiento. La oclusion de las piernas
cuando estas se cruzan, no es manejado por el sistema de manera apropiada, ya que no
164

puede identificarse en el modelo multi-blob, cual es la pierna que esta al frente y cual es
la pierna que esta hacia atras; el blob de cada pierna se recupera al separar las piernas y
dejarlas visibles.
Otra prueba consistio en seguir a la persona mientras efectuaba un giro, se muestra en este
experimento que el sistema puede manejar con la oclusion momentanea de un brazo y de
una pierna, cuando debido al movimiento la persona da una vista lateral. El movimiento
debe ser lento dandole tiempo al sistema de conservar estabilidad en las estadsticas de
los blobs.
Si la persona se mantiene en el mismo sitio y solo se inclina y posteriormente recupera la
posicion erguida, el seguimiento muestra buenos resultados. Hay correspondencia entre el
modelo multi-blob y las regiones de la persona.
Si el proceso de inicializacion del sistema falla, debido a que los parametros de la camara no
esten ajustados con la iluminacion de la escena, el seguimiento sera tambien erroneo. Si aparece
otra persona en escena, causa confusion en la clasificacion y el seguimiento se ve degradado.
La iluminacion debe mantenerse poco variable para no afectar la clasificacion y el seguimiento,
as como los movimientos deben ser lo suficientemente lentos. Las partes del cuerpo deben
mantenerse visibles para facilitar su clasificacion.

4.2

Trabajos futuros

Como trabajos futuros o extensiones de esta investigacion se ha pensado en los siguientes:


Agregarle un procedimiento de deteccion de contornos que permita mayor robustez durante
el seguimiento. Este modulo trabajara en conjuncion con el clasificador de Mahalanobis.
Con ambos metodos y con informacion a priori podra introducirse a mas personas en la
escena. Ya que la adicion de una o mas personas en la escena produce confusion en el
seguimiento. Es necesario tambien establecer restricciones de conectividad que definan a
la persona como una u
nica region conectada. Aunque para ello sera necesario tener un
hardware mas sofisticado o un cluster de PCs que permita la ejecucion en tiempo real.
Experimentar con un nuevo modelo deformable llamado Active Blobs. Este modelo tiene
como meta seguir en tiempo real objetos no rgidos [68]. Permitira experimentar con
un modelo de seguimiento hbrido, que considere la representacion por regiones y por
contornos.
165

Experimentar con el filtro de Kalman que ha sido ampliamente utilizado en sistemas de


seguimiento en tiempo real y que permite predecir la mejor ubicacion de un objeto. Las
predicciones del filtro de Kalman, tambien pueden emplearse para estabilizar el seguimiento, al proveer restricciones que ayudan a rechazar distracciones del medio ambiente.
Agregarle a los blobs otras de las propiedades que implcitamente poseen, como profundidad (blobs en 3D), textura o flujo optico.
Aplicar el sistema en mejorar la interaccion hombre - maquina. En particular, puede
ampliarse la experimentacion sobre la aplicacion descrita en este trabajo, que versa sobre
la teleoperacion de un robot. El conjunto de gestos que pueden ser reconocidos y traducidos
en ordenes al robot, es simple y se basa en la posicion del blob. Este conjunto de gestos
puede ser sustituido por un conjunto mas sofisticado, que involucre el reconocimiento del
lenguaje de gestos. Los blobs de la mano basados en el modelo oculto de Markov, han
mostrado su eficiencia en el reconocimiento del lenguaje de gestos americano en tiempo
real [70, 71].
Experimentar con la interpretacion de las actividades humanas. Estudiando los modelos
ocultos de Markov [78] y tecnicas basadas en reglas [25], que han probado su eficiencia en
la clasificacion de actividades humanas, con base en las caractersticas aportadas por un
modelo de blobs.

166

Ap
endice A
Seguimiento de la mano por medio de
distribuci
on de color, aplicado a la
teleoperaci
on de robots

167

A.1

Introducci
on

Anteriormente el uso de la robotica se enfocaba principalmente a tareas repetitivas que podan


ser desarrolladas en diferentes niveles de la produccion. Sin embargo, la integracion actual de
sensores en los sistemas produce robots mas adaptativos resultando en mayor autonoma. En
el caso del trabajo remoto, todo hace suponer que el robot realiza el trabajo de alto nivel,
pero es el operador humano presente en los controles quien toma las decisiones y el control
de la situacion. Es por ello que la telerobotica esta siendo empleada para instalar y mantener
equipo en medios ambientes hostiles o no accesibles, por ejemplo en la manipulacion de material
radioactivo, material qumico peligroso y en situaciones de guerra, entre otras.
El problema que se ataco en esta aplicacion es la teleoperacion de vehculos usando ademanes,
los cuales son interpretados mediante el analisis de imagenes digitales [67]. Se presenta un
metodo alternativo para el seguimiento de la mano y para la teleoperacion de un robot movil a
traves de una red local.
Dentro del marco de la percepcion aplicada a la robotica movil autonoma, los aspectos dinamicos
de la vision tienen una importancia primordial. Como en tareas asignadas a un robot, tales como
ir a una meta o seguir un blanco [19].
En esta propuesta se pretende demostrar que es posible teleoperar un robot de una manera
mas natural empleando el seguimiento de la mano. Se representa la mano en 2D por medio
de un modelo estadstico multi-clase de color y forma, es decir, la mano se modela a traves
de un blob. En este metodo los vectores que caracterizan cada pxel se forman agregando las
coordenadas espaciales (x, y) a los componentes de color (R, G, B). As los pxeles del blob
comparten similitud espacial y de color [77, 74].

A.2

Teleoperaci
on con ademanes

Para la teleoperacion con ademanes, se empleo un modelo blob que aproxima la posicion y
tama
no de la mano a traves de estadsticas de segundo orden y de su distribucion de color. Una
vez que el modelo se ajusta, la posicion de la mano, se traduce en comandos de navegacion para
el vehculo (ver figuras A.1, A.5).
Algunos comandos pueden ser proporcionados con movimientos de la mano permitiendo al
usuario una interaccion mas natural.

168

A.2.1

Reconocimiento de la mano

Como las manos son objetos no rgidos, la mejor manera de modelarlas es mediante modelos
deformables, con suficientes parametros para acomodar la mayora de las variaciones en forma.
Los contornos activos han sido empleados para detectar y seguir rasgos faciales y otras partes del
cuerpo [72, 53]. El problema es que los contornos activos o snakespueden adoptar cualquier
forma, en ocasiones formas no validas. Una solucion son los modelos deformables entrenables a
partir de ejemplos, como el modelo de distribucion de puntos propuestos por [22]. Otra alternativa son los modelos blob que aprovechan las estadsticas de segundo orden de la distribucion
de color para hacer el seguimiento de los objetos [77, 74].

A.2.1.1

Dise
no

El dise
no del modulo encargado de realizar el reconocimiento y seguimiento de la mano se divide
en dos etapas principales: La primera consiste en la inicializacion del sistema, y la segunda hace
el seguimiento de la mano en tiempo real, ver figura A.1.

A.2.1.2

Inicializaci
on

El proceso de inicializacion, semejante al descrito en la seccion 3.5.1, consiste en detectar y


construir el modelo de la mano. Para ello se almacena primero la escena sin la mano. Una vez
almacenado el fondo, el sistema detecta por medio de la diferencia de imagenes la presencia de
la mano. Sobre el resultado de la diferencia de imagenes se construye el modelo de blob de la
mano usando informacion del color de la piel humana [79, 80]. Explicaremos cada paso que se
realiza durante la inicializacion:

1. Se almacena la escena sin la mano, es decir guardamos la informacion del fondo.


2. Se incluye a la mano en la escena. Por medio de una diferencia de imagenes entre la
imagen del fondo y la imagen actual, obtenemos el area de interes. Sobre esta area de
interes y con base en la informacion del color de la piel definimos el modelo de blob de la
mano.
3. Una vez obtenida la region en 2D que corresponde a la mano, puede construirse el modelo
del blob y calcular sus estadsticas. El modelo de la mano se construye en funcion de
las caractersticas internas de los puntos contenidos en dicha region. Los vectores que
169

Figura A.1: Modulos del sistema de deteccion y seguimiento de la mano implementado en esta aplicacion.

170

caracterizan a cada pxel que pertenece al blob, contienen las coordenadas espaciales del
punto (x, y), y sus componentes de color (R, G, B). Los pxeles pertenecientes a un blob
en especfico, comparten propiedades de color y espacio.
4. El calculo de las estadsticas del blob, consiste en obtener al vector medio del blob de la
mano (mmano ), con componentes (x, y, R, G, B), y en calcular su matriz de covarianza,
denotada por Kmano . El vector medio representa el centroide del area descrita por el blob,
captura la posicion del mismo. El tama
no y orientacion del blob se obtiene a partir de la
matriz de covarianza. El vector medio del blob fue calculado seg
un la formula A.1, y la
matriz de covarianza con base en la formula A.2.

mmano = (x) =

K
1 X
xj
K j=1

(A.1)

Donde K es el n
umero de elementos que pertenecen al blob.

Kmano = x = (x mmano )(x mmano )t

(A.2)

La informacion del color de la piel se obtuvo de [79, 80], donde se estudia un modelo estadstico
del color de la piel y su adaptacion. Se da a conocer que los colores de la piel humana se agrupan
en peque
nas regiones en un espacio de color. Se ha dirigido mucha investigacion al entendimiento
y uso de la informacion del color. El color ha sido usado en el reconocimiento y segmentacion,
y recientemente ha sido exitosamente usado en la ubicacion y seguimiento de rostros. En
[79, 80] se realizo un prueba cuantitativa con una base de datos la cual contena cerca de 1000
imagenes de rostros. La base de datos cubra imagenes de rostros de personas de diferentes razas
(caucasicos, africanos, americanos y asiaticos), de diferente genero y bajo diferentes condiciones
de iluminacion. Para una muestra de 48 rostros humanos elegidos aleatoriamente de la base
de datos, en el espacio de color RGB, se obtuvieron los valores que muestra la tabla A.1. Esta
informacion fue utilizada para identificar a los pxeles que pertenecan a la mano.

A.2.1.3

Seguimiento

El modulo de seguimiento se divide en tres etapas:

171

Valores medios Desviaciones estandar


mR = 234.29

R = 26.77

mG = 185.72

G = 30.41

mB = 151.11

B = 25.68

Tabla A.1: Valores obtenidos de un grupo de 48 rostros en el espacio de color RGB.

1. Se obtiene la ventana de b
usqueda, sobre la que se hara la clasificacion de los pxeles, esta
es determinada por la diferencia de imagenes que se obtiene en cada ciclo, entre la imagen
del frame actual y la imagen del fondo.
2. Sobre el conjunto de pxeles que contiene la ventana de b
usqueda, se aplica distancia de
Mahalanobis para clasificar cada pxel al blob de la mano o al fondo. Para el calculo de
la distancia de Mahalanobis se emplean las estadsticas del blob (matriz de covarianza y
vector medio). Las estadsticas del fondo se obtienen en cada nuevo frame, para cada
punto de la ventana de b
usqueda, se determina la matriz de covarianza y el vector medio
del fondo, con base en la informacion que aportan los pxeles vecinos al punto (mascara
de convolucion de 33).
3. Finalmente se tiene la re-estimacion de las estadsticas del blob, es decir, obtenemos la
nueva matriz de covarianza y el vector medio para la nueva clasificacion de pxeles. La
actualizacion de las estadsticas se apoya en un modulo de estabilizacion. Este modulo
lleva una historia de las estadsticas estables del blob (almacenando su matriz de covarianza
y su vector medio). Inicialmente las estadsticas derivadas del proceso de inicializacion se
emplean como historia. La estabilidad se relaciona con el tama
no inicial del blob, la cual se
mantiene si durante el seguimiento el tama
no del blob no aumenta o disminuye en mas de
un uno por ciento. Si para alg
un blob en el f ramet esto no se cumple, sus estadsticas son
sustituidas por las estadsticas almacenadas en la historia. Si por el contrario la estabilidad
se mantiene, la estadsticas re-estimadas sustituyen a las estadsticas de la historia. La
historia mantiene las estadsticas estables recientes.

A.2.2

Teleoperaci
on

La teleoperacion es una tecnica particularmente interesante porque permite realizar trabajos


remotamente, que por ciertas circunstancias el manejo directo no es posible. Un sistema teleoperado es aquel que permite gobernar a un robot (controlar su movimiento y la fuerza ejercida)
172

Figura A.2: Esquemas de conexion entre la aplicacion y robot. a) La teleoperacion del robot se
hace a traves de la red por medio de sockets. b) La teleoperacion se hace a traves del
radio-modem.

ubicado en una zona remota (puede que el robot este realmente muy lejos o puede que este en
un entorno hostil del que haya que proteger al operador).
Para implementar la teleoperacion consideramos 2 esquemas de conexion (figura A.2).
a) El primer esquema consiste en ubicar la interfaz con el robot en la localidad remota,
enviando las ordenes de control desde la ubicacion del operador (a traves de sockets). La
PC en la localidad remota es la que enva las ordenes al robot a traves del radio-modem.
b) El segundo esquema ubica la interfaz con el robot en la ubicacion del operador. La
comunicacion de las ordenes de control al robot se hace a traves del radio-modem (esto es
posible por el alcance que tiene el radio-modem).

En ambos esquemas se utiliza una videoconferencia para la retroalimentacion visual de la operacion del robot.
Para la presente aplicacion se implementaron ambos esquemas de conexion.
Por cuestiones de seguridad, dado que la teleoperacion implica ciertos retardos en la comunicacion entre el operador y el robot, se decidio implementar un hbrido entre la operacion guiada
y un comportamiento autonomo reactivo. Este comportamiento se encarga de cuidar de la
integridad del robot y esta instrumentado de acuerdo a la arquitectura subsumcion propuesta
por Brooks [14]. A diferencia de las ordenes de control enviadas por el operador, los comportamientos reactivos son regidos por las entradas sensoras del robot para que este sea capaz de
173

Figura A.3: Arquitectura cliente/servidor de Pioneer.

interactuar con el ambiente, esto es, sea capaz de reaccionar con ciertas conductas de escape
ante eventos no determinados (como la aparicion de objetos dinamicos).
Se controlo a un robot Pioneer 2 de ActivMedia [66]. Pioneer utiliza una arquitectura cliente/servidor desarrollada por Kurt Konolige [52]. En este modelo el robot act
ua como el servidor y
maneja todos los detalles de bajo nivel del sistema, esto incluye operar los motores, activar los
sonares, colectar datos de los sonares y motores, entre otros. Para poder controlar al robot,
las acciones sobre este se programan en una aplicacion cliente, y se le envan a traves de una
interfaz con el sistema operativo Pionner 2 (P2OS).
Con esta arquitectura cliente/servidor, las aplicaciones de robotica de alto nivel no necesitan
los detalles del servidor particular del robot, debido a que la aplicacion cliente los aisla de este
control de bajo nivel.
Para este trabajo se desarrollo una aplicacion cliente que enva las ordenes de control provenientes de la interfaz del operador al robot (figura A.3).

A.3

Desarrollo

La teleoperacion que estamos utilizando se hace a traves de la red interna del Departamento
de Inteligencia Artificial. La meta es operar al robot remotamente, mediante la interfaz de
reconocimiento de ademanes utilizando la vision por computadora.
Como puede observarse en la figura A.3, la aplicacion como cliente consta de dos modulos: La

174

interfaz con el operador y la interfaz con el robot. Explicaremos a continuacion mas a detalle
cada uno.
El modulo de interfaz con el operador se divide a su vez en dos modulos:

Reconocedor de ademanes. El modulo reconocedor de ademanes procesa las imagenes y


realiza el seguimiento de la mano (seccion A.2.1). Utiliza las estadsticas de segundo orden
del blob para reconocer el ademan realizado por el operador. Con base en la informacion
que proporciona el vector medio del blob, es decir, el centroide de la mano, puede detectarse
la direccion del movimiento.
Codificador de Ordenes. Un movimiento de la mano se traduce en una orden para el robot.
El subconjunto de ordenes de control usado en nuestra aplicacion consta de las siguientes
ordenes: avanzar, retroceder, girar a la izquierda, girar a la derecha y detenerse. La
correspondencia entre los movimientos de la mano y las ordenes de control enviadas al
robot puede observarse en la figura A.4. El robot responde a los comandos y los mantiene
hasta que un nuevo comando sea recibido, es decir si se le enva el comando de avanzar,
el robot se mantendra avanzando hasta que una nueva orden sea recibida (el movimiento
del robot es suave, ya que la velocidad es constante). Si la mano permanece inmovil, se le
ordena al robot detenerse.

Una vez que el movimiento de la mano ha sido detectado y traducido en una instruccion para el
robot, el modulo de interfaz con el robot se encarga de enviarle dicha orden va el radio modem
o conexion por sockets. La retroalimentacion de la situacion del robot se logra mediante una
videoconferencia a traves de la red local.
En la figura A.5 puede apreciarse la interfaz del sistema que hemos descrito, la ventana del lado
izquierdo muestra el reconocimiento y modelado de la mano a traves de un blob, mientras que la
ventana del lado derecho contiene la imagen del robot, como ya se ha mencionado esta imagen
es recibida a traves de la red local .

A.3.1

Detalles de la implementaci
on

Para la manipulacion del procesamiento de imagenes en tiempo real, se utilizo Microsoft Vision
SDK, Version 1.2, estas son unas libreras de bajo nivel, desarrolladas por Vision Technology
Research Group de Microsoft [34], estas bibliotecas trabajan con el sistema operativo Microsoft
175

Figura A.4: Correspondencia entre los movimientos de la mano y las ordenes de control enviadas al
robot.

Figura A.5: Interfaz de la implementacion del sistema.

176

Windows y con Visual C++ Ver. 6.0. La secuencia de imagenes fueron obtenidas a traves del
puerto USB por medio de una QuickCam Express cuya resolucion maxima es de 320 240 [56].
El sistema fue ejecuta do en una PC Pentium III, 127 MB en RAM. Procesando en promedio 4
frames por segundo.

A.4

Conclusi
on

Se demostro que es posible teleoperar un vehculo de manera mas natural empleando ademanes
y con un reconocimiento apoyado en el modelo blobs. La aplicacion nos ayuda a superar algunas
desventajas de la teleoperacion como son:

La fatiga congnitiva del operador, dado que la interaccion hombre - maquina se da de


manera mas natural.
Falta de robustez en el comportamiento del robot, ocasionados por retrasos en la comunicacion. La robustez se consigue a
nadiendo comportamientos reactivos al robot que le
permiten contender con el ambiente.

177

Ap
endice B
Codificaci
on de las funciones
principales del sistema implementado
para el seguimiento de una persona en
tiempo real

178

B.1

Variables globales

//Variables que ayudan durante el proceso de segmentaci


on.
int **MatrixSemillas;
int **MatrixVisitas;
int **ValoresMedios;
//Variable que almacena el mapa de soporte: indica la segmentaci
on actual de la imagen.
int **MatrixMapa;
//Variables auxiliares para el c
alculo de eigenvalores
float **MatrizAlineada;
float *VectorDiagonal;
float *Eigenvalores;
float VectorDibuja[5];
//La dimensi
on de las siguientes variables es de 5 * 5.
float **CovFondo;//Matriz auxiliar para el c
alculo de la matriz de covariaza del fondo.
float **CovFondoInv;//Matriz de covariaza inversa del fondo.
long int NumComponentes; //Num. de componentes del vector caracter
stico.
long int NumElementos; //Num. de elementos del conjunto de datos.

B.2

Estructura que contiene toda la informaci


on de un
Blob

struct Blob{
float **MatrizDatos;//Matriz que contiene el conjunto de p
xeles que definen al blob.
//Su dimensi
on es de 5 * n, n es el n
um. de p
xeles del blob.
float **MatrizCovarianza; //Almacena la matriz de covarianza de los p
xeles del blob.
//Su dimensi
on es de 5 * 5 (el vector caracter
stico tiene 5
//componentes: x, y, R, G, B).
float *VectorMedio;//Almacena el vector medio del blob: su centroide y color promedio.
float *VectorDesviaciones;//Almacena las desviaciones est
andares del blob.
float Determinante;//Almacena el calculo del determinande de la matriz de covarianza.
float *NuevoVectorMedio;//Almacena el vector medio con respecto al nuevo sistema de
//coordenadas (necesaria para obtener la orientaci
on del blob).
float *NuevasDesviaciones;//Almacena la desviaciones est
andar con respecto al nuevo
//sistema de coordenadas (orientaci
on del blob).
float **G, **Gt;//G contiene el conjunto de eigenvectores de la matriz de covarianza.
//Gt es la transpuesta de G, es la transformaci
on lineal del sistema
//de coordenas original. Permite obtener las posiciones de los
//p
xeles en el nuevo sistema de coordenadas no correlacionado.
float **MatrizCovarianzaInv;//Almacena la matriz de covarianza inversa.
float **MatrizSuma;//Variable auxiliar, almacena la matriz de covarianza (seguimiento).
float **MatrizMedia;//Variable auxiliar, almacena el vector medio (seguimiento).
float *VectorMedioPunto;//Variable auxiliar, almacena el vector medio del blob durante
//el seguimiento, utilizado por el mecanismo de estabilizaci
on.
int Element;//Almacena el n
um. de elementos que pertenecen al blob.
//Variables para el historial
int ElementAnteriores;//conserva el num. de elementos del blob.

179

float **MatrizCovarianzaAnterior;//conserva la matriz de covarianza estable.


float *VectorMedioAnterior;//conserva el vector medio estable.
};

B.3

Estructura que almacena los pixeles de la imagen en


formato RGB

//Estructura que define un p


xel de la imagen.
struct pixel{
int R;
int G;
int B;
};
//Estructura que define el arreglo bidimensional en que se almacena la imagen.
struct matriz{
struct pixel *punto;
};
struct matriz *I;//Almacena la informaci
on de la imagen del frame actual.
struct matriz *IF;//Almacena la informaci
on de la escena del fondo.

B.4

Funci
on que obtiene el siguiente frame de la c
amara

//Esta funci
on se encuentra definida en el archivo ExCameraDoc.cpp, el cual contiene la
//implementaci
on de la clase CExCameraDoc, la cual se deriva de la clase CDocument.
//La clase CDocument proporciona la funcionalidad b
asica para que el usuario defina sus
//clases document. CDocument soporta las operaciones est
andar tales como crear
//documentos, cargarlos, guardarlos.
void CExCameraDoc::GrabNext(DWORD cmsTimeout){
int i, j, k, l, m, CuentaDiferentes, cuadrante; //contadores
float ppp; //variable que almacena la distancia de mahalanobis con respecto al fondo.
//Variables auxiliares que c
alculan la matriz de covarianza del p
xel del fondo.
float MFondo[5], DFondo[81][5],DetFondo;
int VectorPunto[5];//Varible auxiliar en el c
alculo de la matriz de cov. del fondo.
//Variables utilizadas durante la estabilizaci
on.
int Porcentaje;
int RestaPorcentaje;
//Con la siguiente imagen obtenida de la c
amara se a actualiza la vista.
CExCameraImage imageT;//Variable auxiliar que almacena la imagen del frame actual.
if (m_sequence.PopFront(imageT, cmsTimeout)){
//m_sequence es un objeto de la clase CVisSequence. Permite obtener las im
agenes de la
//c
amara. La funci
on PopFront obtiene la primer imagen de la secuencia.
//Si la imagen est
a disponible en cmsTimeout milisegundos, la imagen se remueve de la
//secuencia y se almacena en la variable imageT.
//Variables utilizadas para indicar el estatus del sistema.

180

++ m_cFrameGrabbed; //contador que guarda el n


um. de im
agenes en la secuencia.
//Permite almacenar en m_dblRateGrabbed el rango de frames promedio desplegados.
if (-(m_dblRateGrabbed = m_timerGrabbed.RateUpdate()) < 0.0)
m_dblRateGrabbed = 0.0;
//Almacenamos las dimensiones de la imagen desplegada.
LeftImg = m_image.Left();//l
mite izquierdo de la imagen.
RightImg = m_image.Right()-1;//l
mite derecho de la imagen.
TopImg = m_image.Top();//l
mite superior de la imagen.
BottomImg = m_image.Bottom()-1;//l
mite inferior de la imagen.
//Condici
on para entrar a realizar el procesamiento sobre la imagen del frame actual.
if(Resta==0 && Fondo == 1 && Segmentar == 1){
//Si Resta=0: indica que la diferencia de im
agenes no es visible.
//Si Resta=1: entoces la diferencia de im
agenes se marca de blanco.
//Si Fondo=1: indica que la imagen del fondo ya fue almacenada.
//Si Segmentar=1: indica que ya se di
o la orden de segmentar la imagen. El frame
//actual contiene a la persona en posici
on star fish.
//Almacenamos la imagen del frame actual en la estructura I.
//La funci
on imageT.Pixel(j,i).R() devuelve un valor entero entre 0 y 255 que
//corresponde al valor R del p
xel (i,j), de modo similiar funcionan
//imageT.Pixel(j,i).G() y imageT.Pixel(j,i).B(), devolviendo los valores G y B
//del p
xel respectivamente.
//Inicializamos la variable temporal MatrixSemillas, que servir
a para almacenar
//el resultado de la diferencia de im
agenes.
for(i=TopImg; i<BottomImg; i++){
for(j=LeftImg;j<RightImg;j++){
I[i].punto[j].R = imageT.Pixel(j,i).R();
I[i].punto[j].G = imageT.Pixel(j,i).G();
I[i].punto[j].B = imageT.Pixel(j,i).B();
MatrixSemillas[i][j] = -1;
}//for j
}//for i
//La variable TotalBlobs almacena el n
um. de blobs en que fue segmentada la imagen.
//Si TotalBlobs=0: significa que hay que relizar el proceso de inicializaci
on.
if(TotalBlobs == 0){
BlobsInitialization();//Segmenta a la persona por medio de crecimiento de
//regiones y obtiene el modelo multi-blob inicial de la persona.
//MatrizDatos contiene la informaci
on de la segmentaci
on inicial de la persona.
//matrixcolor contiene definido un conjunto de colores en el espacio RGB.
//En este bloque se cambia el color de los p
xeles de la imagen con base en la
//segmentaci
on inicial de la persona.
//La funci
on SetRGB recibe como par
ametros n
um. enteros entre 0 y 255 que
//corresponden con un valor R, G, y B, con estos valores se cambia el color del
//p
xel con coordenadas (Blobs[i].MatrizDatos[0][j],Blobs[i].MatrizDatos[1][j]).
for(i=0;i<TotalBlobs;i++){
for(j=0;j<Blobs[i].Element;j++)
imageT.Pixel(Blobs[i].MatrizDatos[0][j],Blobs[i].MatrizDatos[1][j]).SetRGB(
matrixcolor[i][0],matrixcolor[i][1],matrixcolor[i][2]);
}//for j
}//for i
}//if
//Si el proceso de inicializaci
on ya ha sido realizado se inicia el seguimiento.

181

else{
//Se inicializa las variables: MatrizSuma (matriz de covarianza), Element (n
um de
//elementos de cada blob), y VectorMedioPunto (vector medio), para cada blob.
//Son variables auxiliares usadas durante el seguimiento.
for(k=0;k<TotalBlobs;k++){
Blobs[k].Element = 0;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
Blobs[k].MatrizSuma[i][j] = 0.0;
}
Blobs[k].VectorMedioPunto[i] = 0.0;
}
}
//Obtenemos la diferencia de im
agenes: Para detectar el
area de b
usqueda sobre
//la cual se realizar
a la clasificaci
on de los p
xeles en blobs.
ImageDifference();
//Inicializamos la variable que almacenar
a el mapa de soporte
for(i=TopImg; i<BottomImg; i++)
for(j=LeftImg;j<RightImg;j++)
MatrixMapa[i][j]=-1;
//Recorremos los puntos de la imagen para determinar a que blob pertenecen.
for(i=TopImg; i<BottomImg; i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixSemillas[i][j] != -1){
//Si el valor de MatrixSemillas[i][j]=-1, significa que el p
xel (i,j)
//pertenece al fondo. As
que solo se analizan los p
xeles marcados
//pertenecientes a la diferencia de im
agenes.
//Proceso para calcular la matriz de covarianza y el vector medio del
//p
xel (i, j) del fondo.
CuentaDiferentes=0;//Inicializaci
on de contador.
//Inicializamos las variables que almacenan a la matriz de covarianza y
//al vector medio.
for(k=0;k<5;k++){
MFondo[k] = 0.0;
CovFondo[k][0] = 0.0;
CovFondo[k][1] = 0.0;
CovFondo[k][2] = 0.0;
CovFondo[k][3] = 0.0;
CovFondo[k][4] = 0.0;
}//for k
//Se calcula la matriz de covarianza del p
xel(i, j) con respecto a sus
//8 vecinos. Se consideran los datos de la matriz IF (fondo).
for(l=-1;l<2;l++){
for(k=-1;k<2;k++){
if(i+l>=0 && i+l<BottomImg && j+k>=0 && j+k<RightImg){
//Verifica si se trata de un p
xel que pertenezca a la imagen
DFondo[CuentaDiferentes][0] = j+k;
DFondo[CuentaDiferentes][1] = i+l;
DFondo[CuentaDiferentes][2] = IF[i+l].punto[j+k].R;
DFondo[CuentaDiferentes][3] = IF[i+l].punto[j+k].G;
DFondo[CuentaDiferentes][4] = IF[i+l].punto[j+k].B;

182

MFondo[0] += j+k;
MFondo[1] += i+l;
MFondo[2] += IF[i+l].punto[j+k].R;
MFondo[3] += IF[i+l].punto[j+k].G;
MFondo[4] += IF[i+l].punto[j+k].B;
CuentaDiferentes++;
}//if
}//for k
}//for l
//Obtenemos el vector medio del fondo
MFondo[0] /= CuentaDiferentes;
MFondo[1] /= CuentaDiferentes;
MFondo[2] /= CuentaDiferentes;
MFondo[3] /= CuentaDiferentes;
MFondo[4] /= CuentaDiferentes;
for(k=0;k<CuentaDiferentes;k++){
DFondo[k][0] -= MFondo[0];
DFondo[k][1] -= MFondo[1];
DFondo[k][2] -= MFondo[2];
DFondo[k][3] -= MFondo[3];
DFondo[k][4] -= MFondo[4];
}
for(k=0; k<CuentaDiferentes; k++)
for(l=0; l<5; l++)
for(m=l; m<5; m++)
CovFondo[l][m] += DFondo[k][l]*DFondo[k][m];
//Obtenemos la matriz de covarianza del fondo.
for(k=0; k<5; k++) {
for(l=k; l<5; l++) {
CovFondo[k][l] /= CuentaDiferentes;
CovFondo[l][k] = CovFondo[k][l];
}
}
//Obtenemos el determinante de la matriz de covarianza del fondo
DetFondo = Determinante5(CovFondo);
//Si el determinante es distinto de 0, puede obtenerse la matriz inversa
//de la matriz de covarianza.
if(DetFondo!=0){
//obtenemos la matriz de covarianza inversa del p
xel del fondo.
Inversa(CovFondo,CovFondoInv,DetFondo);
//obtenemos la dist. de Mahalanobis del punto (i, j) a la clase fondo.
ppp=PrF(MFondo, CovFondoInv, DetFondo, j, i,I[i].punto[j].R,
I[i].punto[j].G, I[i].punto[j].B);
}
else ppp=10.0;
//La funci
on Pr calcula la distancia de Mahalanobis del punto (i,j) a
//las 6 clases (blobs). Y determina a cual de las ellas est
a m
as cerca
//(considerando tambi
en a la clase del fondo). Regresa un entero entre 0
// y 5 si pertenece a un blob, y regresa -1 si pertenece al fondo.

183

k = Pr(Blobs, TotalBlobs, j, i, I[i].punto[j].R, I[i].punto[j].G,


I[i].punto[j].B, ppp);
//Construcci
on del mapa de soporte.
MatrixMapa[i][j] = k;
//Si el p
xel pertenece al fondo, se utiliza la informaci
on en color R,
//G, B de dicho p
xel para actualizar la estructura del fondo.
if(k==-1){//Actualizamos el fondo
IF[i].punto[j].R = I[i].punto[j].R;
IF[i].punto[j].G = I[i].punto[j].G;
IF[i].punto[j].B = I[i].punto[j].B;
}
}//if
}//for j
}//for i
//Recalculamos la matriz de covarianza con base en el nuevo MatrixMapa
for(i=TopImg; i<BottomImg; i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]!=-1){
//Construimos el vector del punto
VectorPunto[0] = j;
VectorPunto[1] = i;
VectorPunto[2] = I[i].punto[j].R;
VectorPunto[3] = I[i].punto[j].G;
VectorPunto[4] = I[i].punto[j].B;
//Construcci
on de la nueva matriz de covarianza y del nuevo vector medio.
for(k=0; k<5; k++){
for(l=0; l<5; l++)
Blobs[MatrixMapa[i][j]].MatrizSuma[k][l]+=
VectorPunto[k]*VectorPunto[l];
Blobs[MatrixMapa[i][j]].VectorMedioPunto[k] += VectorPunto[k];
}
Blobs[MatrixMapa[i][j]].Element += 1;//Contabiliza los puntos del blob
//definido por MatrixMapa[i][j].
}//if
}//for j
}//for i
for(i=0;i<TotalBlobs;i++){
if(Blobs[i].Element>0){
for(k=0; k<5; k++){
for(l=0; l<5; l++)
Blobs[i].MatrizSuma[k][l] /= Blobs[i].Element;
Blobs[i].VectorMedioPunto[k] /= Blobs[i].Element;
Blobs[i].VectorMedio[k] = Blobs[i].VectorMedioPunto[k];
}
}
}
for(i=0;i<TotalBlobs;i++){
if(Blobs[i].Element>0){
for(k=0; k<5; k++){
for(l=0; l<5; l++){
Blobs[i].MatrizMedia[k][l] =

184

Blobs[i].VectorMedioPunto[k]*Blobs[i].VectorMedioPunto[l];
}
}
}
}
//Obtenemos la Nueva Matriz de Covarianza, la almacenamos en MatrizSuma
for(i=0;i<TotalBlobs;i++){
if(Blobs[i].Element>0){
for(k=0; k<5; k++){
for(l=0; l<5; l++){
Blobs[i].MatrizSuma[k][l] -= Blobs[i].MatrizMedia[k][l];
}
}
}
}
//M
odulo de estabilizaci
on
for(i=0;i<TotalBlobs;i++){
//Obtenemos el 10 porciento de puntos del blob i
Porcentaje = Blobs[i].ElementAnteriores * 0.01;
Porcentaje = Porcentaje*Porcentaje;
//Obtenemos la diferencia entre los p
xeles actuales del blob i con respecto a
//los obtenidos en la inicializaci
on.
RestaPorcentaje = Blobs[i].ElementAnteriores - Blobs[i].Element;
RestaPorcentaje = RestaPorcentaje * RestaPorcentaje;
//Si la diferencia es menor o igual, se considera estable, y se actualiza la
//matriz de covarianza y el vector medio de la historia.
if(RestaPorcentaje <= Porcentaje){ //Actualizamos
for(k=0; k<5; k++){
for(l=0; l<5; l++)
Blobs[i].MatrizCovarianzaAnterior[k][l] = Blobs[i].MatrizSuma[k][l];
Blobs[i].VectorMedioAnterior[k] = Blobs[i].VectorMedioPunto[k];
}
}
//De lo contrario se considera inestable:
else{ // Sustituimos presente por pasado inmediato
for(k=0; k<5; k++){
for(l=0; l<5; l++)
Blobs[i].MatrizSuma[k][l] = Blobs[i].MatrizCovarianzaAnterior[k][l];
Blobs[i].VectorMedioPunto[k] = Blobs[i].VectorMedioAnterior[k];
}
}
}
//Recalculamos el determinante y la matriz de covarianza inversa para cada blob
for(i=0;i<TotalBlobs;i++){
Blobs[i].Determinante=Determinante5(Blobs[i].MatrizSuma);
Inversa(Blobs[i].MatrizSuma, Blobs[i].MatrizCovarianzaInv,
Blobs[i].Determinante);
}
//Obtenemos la orientaci
on de cada blob
for(i=0;i<TotalBlobs;i++){
NumComponentes = 2;

185

//Procesos necesarios para el calculo de eigenvectores


inicializam(MatrizAlineada,Blobs[i].MatrizSuma,NumComponentes,NumComponentes);
householder(MatrizAlineada, NumComponentes);
diag(MatrizAlineada, VectorDiagonal, NumComponentes, NumComponentes, 0);
for(j=1; j<NumComponentes; j++) Eigenvalores[j] = MatrizAlineada[j-1][j];
qr(VectorDiagonal, Eigenvalores, NumComponentes, TOL, 70);
qsort(VectorDiagonal, NumComponentes, sizeof(float), compara);
MatrizTransformada(MatrizAlineada,Blobs[i].G, VectorDiagonal, NumComponentes);
Blobs[i].NuevoVectorMedio = multmv(Blobs[i].G,NumComponentes,NumComponentes,
Blobs[i].VectorMedio);
Blobs[i].Gt = Transpuesta(Blobs[i].G,NumComponentes,NumComponentes);
for(k=0; k<NumComponentes; k++){
Blobs[i].NuevasDesviaciones[k] = sqrt(VectorDiagonal[k]);
}
}//for i
//Se asigna un color en particular a cada p
xel de la imagen seg
un lo indique el
//mapa de soporte, para hacer visible la actual segmentaci
on de la persona.
for(i=TopImg; i<BottomImg; i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]!=-1){
k = MatrixMapa[i][j];
imageT.Pixel(j,i).SetRGB(matrixcolor[k][0], matrixcolor[k][1],
matrixcolor[k][2]);
}//if
}//for j
}//for i
}//else
}//if
m_image = imageT;//La imagen manipulada imageT se asigna a m_image, para ser
//desplegada como la imagen actual.
if ((m_fUpdateDisplay) && (m_hwndView != 0))
::InvalidateRect(m_hwndView, 0, FALSE);
}//if
}

B.5

Almacenar la escena del fondo

//Funci
on que almacena la imagen del frame actual en la estructura del fondo IF
void CExCameraDoc::OnFondoGuardafondo(){
int i,j; //contadores.
for(i=TopImg; i<BottomImg; i++){//Inicializamos la estructura del fondo.
for(j=LeftImg;j<RightImg;j++){
IF[i].punto[j].R = backgroundimage.Pixel(j,i).R();
IF[i].punto[j].G = backgroundimage.Pixel(j,i).G();
IF[i].punto[j].B = backgroundimage.Pixel(j,i).B();
}//for j
}//for i
Fondo = 1; //Indicamos que el fondo ya fue almacenado.
Resta = 0; //Indicamos que la diferencia de im
agenes no es visible.

186

RR = 3000; //Inicializamos el valor del umbral emp


rico aplicado a la diferencia de
//im
agenes.
}

B.6

Proceso de inicializaci
on

//Funci
on que realiza el proceso de inicializaci
on : consiste en obtener la segmentaci
on
//por crecimiento de regiones de la persona y el primer modelo multi-blob.
void CExCameraDoc::BlobsInitialization(){
int x, y, xs, ys,k,l,CuentaDiferentes=0,m;
int RestaB, RestaG, RestaR, Restas;
int i, j;
int Convexo[5][2];
int Concavo[3][2];
int cuadrante;
int piernas[2];
int Maxx, Maxy, Minx, Miny;
int auxdx, auxdy;
int continuar;
int SemillaX=0, SemillaY=0;
long int ContPR=0, ContR, PInicio=0, PFinal=1;
int MitadX, MitadY;
PuntosSeed = 0;
Umbral = 1900;
MitadY = (TopImg + BottomImg)/2;
MitadX = (LeftImg + RightImg)/2;
//Obtenemos la diferencia de im
agenes.
ImageDifference();
//Actualizamos la estructura del fondo con base en la diferencia de im
agenes.
BackgroundUpdate(MatrixSemillas);
//Determinamos los puntos semilla
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixSemillas[i][j]==1 && i%3==0 && j%2==0){//Distribuci
on de puntos semilla.
MatrixSemillas[i][j] = 0;
if(PuntosSeed==0){
SemillaX = j;
SemillaY = i;
}//if
PuntosSeed+=1;
}//if
MatrixMapa[i][j] = -1;
MatrixVisitas[i][j] = -1;
}//for j
}//for i
//Generamos la matriz para almacenar los valores medios de las regiones encontradas.
ValoresMedios = matrix_int(PuntosSeed,12);

187

//Encontramos los vertices convexos.


for(i=BottomImg-1;i>MitadY;i--){
for(j=LeftImg;j<RightImg;j++){
if(MatrixSemillas[i][j] != -1) {
m=i;
j=RightImg;
i=MitadY;
}//if
}//for j
}//for i
m-=20;
for(i=m;i>MitadY;i--){ // vertice a
for(j=LeftImg;j<RightImg;j++){
if(MatrixSemillas[i][j] != -1) {
Convexo[0][0] = j;
Convexo[0][1] = i;
j=RightImg;
i=MitadY;
}//if
}//for j
}//for i
for(i=m;i>MitadY;i--){ // vertice b
for(j=RightImg-1;j>0;j--){
if(MatrixSemillas[i][j] != -1) {
Convexo[1][0] = j;
Convexo[1][1] = i;
j=0;
i=MitadY;
}//if
}//for j
}//for i
for(i=0;i<MitadY;i++){ // vertice d
for(j=0;j<MitadX;j++){
if(MatrixSemillas[i][j] != -1){
Convexo[3][0] = j;
Convexo[3][1] = i;
j=MitadX;
i=MitadY;
}//if
}//for j
}//for i
for(i=0;i<MitadY;i++){ // vertice e
for(j=RightImg-1;j>MitadX;j--){
if(MatrixSemillas[i][j] != -1) {
Convexo[4][0] = j;
Convexo[4][1] = i;
j=MitadX;
i=MitadY;
}//if
}//for j
}//for i

188

m = (Convexo[3][0] + Convexo[4][0])/2;
for(i=0;i<MitadY;i++){ // vertice c
if(MatrixSemillas[i][m] != -1) {
Convexo[2][0] = m;
Convexo[2][1] = i;
break;
}//if
}//for i
// Encontramos los vertices concavos
Concavo[0][0] = Convexo[3][0]; // vertice 1
Concavo[0][1] = Convexo[3][1];
for(j=Convexo[3][0]+5;j<Convexo[2][0];j+=3){
for(i=Convexo[3][1];i<MitadY;i++){
if(MatrixSemillas[i][j] != -1) {
if(Concavo[0][1]<i){
Concavo[0][0] = j;
Concavo[0][1] = i;
}//if
i=MitadY;
}//if
}//for i
}//for j

Concavo[1][0] = Convexo[2][0]; // vertice 2


Concavo[1][1] = Convexo[2][1];
for(j=Convexo[2][0]+5;j<Convexo[4][0];j+=3){
for(i=Convexo[2][1];i<MitadY;i++){
if(MatrixSemillas[i][j] != -1) {
if(Concavo[1][1]<i){
Concavo[1][0] = j;
Concavo[1][1] = i;
}//if
i=MitadY;
}//if
}//for i
}//for j
Concavo[2][0] = (Convexo[0][0]+Convexo[1][0])/2; // vertice 3
Concavo[2][1] = (Convexo[0][1]+Convexo[2][1])/2;
//Realizamos la segmentaci
on por crecimiento de regiones.
for(k=0; k<PuntosSeed; k++){ //Realizamos el crecimiento de regi
on en cada punto semilla
MatrixSemillas[SemillaY][SemillaX]=1;
xs = SemillaX;
ys = SemillaY;
if(MatrixMapa[ys][xs]== -1){
//Verifica si es un punto semilla que no pertenezca a una regi
on ya crecida
ContPR++;
ValoresMedios[k][11] = 1;
if(MatrixVisitas[ys][xs]== -1){
MatrixVisitas[ys][xs]= PInicio;
x = xs;
y = ys;

189

Maxx = x;
Minx = x;
Maxy = y;
Miny = y;
continuar = 0;
}//if
MatrixMapa[ys][xs] = k;
while(continuar == 0){
if(x>LeftImg && x<RightImg-1 && y>TopImg && y<BottomImg-1 ){
for(i=-1; i<2; i++){
for(j=-1; j<2; j++){
RestaR = I[ys].punto[xs].R - I[y+i].punto[x+j].R;
RestaG = I[ys].punto[xs].G - I[y+i].punto[x+j].G;
RestaB = I[ys].punto[xs].B - I[y+i].punto[x+j].B;
Restas = RestaR*RestaR + RestaG*RestaG + RestaB*RestaB;
if(Restas<Umbral){
if(MatrixMapa[y+i][x+j]== -1 && MatrixSemillas[y+i][x+j] != -1){
MatrixMapa[y+i][x+j]= k;
MatrixVisitas[y+i][x+j] = PFinal;
PFinal ++;
if(Maxx<(x+j))
Maxx = x+j;
if(Minx>(x+j))
Minx = x+j;
if(Maxy<(y+i))
Maxy = y+i;
if(Miny>(y+i))
Miny = y+i;}
//fin de if
}//fin del if
}//fin del for j
}//fin del for i
}//fin del if
PInicio++;
buscan(MatrixVisitas, Minx, Maxx, Miny, Maxy, PInicio);
if(CoorXY[0][0]==-1){
PFinal=PInicio+1;
continuar=1;
}
else{
x = CoorXY[0][0];
y = CoorXY[0][1];
}
}//fin del while
}//fin del if
else
ValoresMedios[k][11] = 0;
//Buscamos el siguiente punto semilla
for(i=SemillaY;i<BottomImg;i++){ // Inicializamos la matriz de puntos semilla
for(j=LeftImg;j<RightImg;j++){
if(MatrixSemillas[i][j] == 0){
SemillaX=j;
SemillaY=i;
i=j=RightImg;

190

}//if
}//for j
}//for i
}//fin del for k
//Inicializamos los valores de ValoresMedios
for(i=0;i<PuntosSeed;i++){
ValoresMedios[i][0] = 0;
ValoresMedios[i][1] = 0;
ValoresMedios[i][2] = 0;
ValoresMedios[i][3] = 0;
ValoresMedios[i][4] = 0;
ValoresMedios[i][5] = 0;
ValoresMedios[i][6] = 0;
ValoresMedios[i][7] = 0;
ValoresMedios[i][8] = 0;
ValoresMedios[i][9] = 0;
ValoresMedios[i][10] = 0;
}//for i
//Obtenemos totales
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]!=-1){
ValoresMedios[MatrixMapa[i][j]][5] += j;
ValoresMedios[MatrixMapa[i][j]][6] += i;
ValoresMedios[MatrixMapa[i][j]][7] += I[i].punto[j].R;
ValoresMedios[MatrixMapa[i][j]][8] += I[i].punto[j].G;
ValoresMedios[MatrixMapa[i][j]][9] += I[i].punto[j].B;
ValoresMedios[MatrixMapa[i][j]][10] +=1;
}//if
}//for j
}//for i
//Obtenemos medios
for(i=0;i<PuntosSeed;i++){
if(ValoresMedios[i][11]
ValoresMedios[i][0] =
ValoresMedios[i][1] =
ValoresMedios[i][2] =
ValoresMedios[i][3] =
ValoresMedios[i][4] =
}//if
}//for i

!= 0){
ValoresMedios[i][5]/ValoresMedios[i][10];
ValoresMedios[i][6]/ValoresMedios[i][10];
ValoresMedios[i][7]/ValoresMedios[i][10];
ValoresMedios[i][8]/ValoresMedios[i][10];
ValoresMedios[i][9]/ValoresMedios[i][10];

for(i=TopImg;i<BottomImg;i++){ // Inicializamos la matriz de puntos visitas


for(j=LeftImg;j<RightImg;j++){
MatrixVisitas[i][j] = -1;
}//for j
}//for i
ContR = 0;
//Realizamos el procedimiento Merge entre las regiones similares
//Buscamos las regiones que pertenecen a la cabeza - regi
on 1
for(k=0; k<PuntosSeed; k++){
if(ValoresMedios[k][11]==1){

191

if(ValoresMedios[k][0]>Concavo[0][0] && ValoresMedios[k][0]<Concavo[1][0] &&


ValoresMedios[k][1]>Convexo[2][1]-5 &&
ValoresMedios[k][1]<((Concavo[1][1]+Concavo[0][1])/2)){
ValoresMedios[k][11]=0;
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]==k){
MatrixVisitas[i][j]=0;
}//if
}//for j
}//for i
FindSimilarRegions(k, Concavo[0][0], Concavo[1][0], Convexo[2][1]-5,
((Concavo[1][1]+Concavo[0][1])/2), 11000, 0);
MatrixVisitas[ContR][351] = ValoresMedios[k][10];
ContR++;
k=PuntosSeed;
}//if
}//if
}//for k
//Buscamos las regiones que pertenecen al brazo derecho - regi
on 2
for(k=0; k<PuntosSeed; k++){
if(ValoresMedios[k][11]==1){
if(ValoresMedios[k][0]>Convexo[3][0]-5 &&
ValoresMedios[k][0]<Concavo[0][0] &&
ValoresMedios[k][1]>Convexo[3][1] &&
ValoresMedios[k][1]<Concavo[0][1]){
ValoresMedios[k][11]=0;
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]==k){
MatrixVisitas[i][j]=1;
}//if
}//for j
}//for i
FindSimilarRegions(k, Convexo[3][0]-5, Concavo[0][0],
Convexo[3][1], Concavo[0][1], 6000, 1);
MatrixVisitas[ContR][351] = ValoresMedios[k][10];
ContR++;
k=PuntosSeed;
}//if
}//if
}//for k
//Buscamos las regiones que pertenecen al brazo izquierdo - regi
on 3
for(k=0; k<PuntosSeed; k++){
if(ValoresMedios[k][11]==1){
if(ValoresMedios[k][0]>Concavo[1][0] &&
ValoresMedios[k][0]<Convexo[4][0]+5 &&
ValoresMedios[k][1]>Convexo[4][1] &&
ValoresMedios[k][1]<Concavo[1][1]){
ValoresMedios[k][11]=0;
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]==k){
MatrixVisitas[i][j]=2;

192

}//if
}//for j
}//for i
FindSimilarRegions(k, Concavo[1][0], Convexo[4][0]+5,
Convexo[4][1], Concavo[1][1], 11000, 2);
MatrixVisitas[ContR][351] = ValoresMedios[k][10];
ContR++;
k=PuntosSeed;
}//if
}//if
}//for k
//Buscamos las regiones que pertenecen a las piernas - regi
on 4
for(k=0; k<PuntosSeed; k++){
if(ValoresMedios[k][11]==1){
if(ValoresMedios[k][0]>Convexo[0][0]-5 &&
ValoresMedios[k][0]<Convexo[1][0]+5 && ValoresMedios[k][1]>Concavo[2][1]
&& ValoresMedios[k][1]<((Convexo[0][1]+Convexo[1][1])/2)+5){
ValoresMedios[k][11]=0;
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]==k){
MatrixVisitas[i][j]=3;
}//if
}//for j
}//for i
FindSimilarRegions(k, Convexo[0][0]-5, Convexo[1][0]+5, Concavo[2][1],
((Convexo[0][1]+Convexo[1][1])/2)+5, 25000, 3);
MatrixVisitas[ContR][351] = ValoresMedios[k][10];
ContR++;
k=PuntosSeed;
}//if
}//if
}//for k
//Buscamos las regiones que pertenecen al torso - regi
on 5
for(k=0; k<PuntosSeed; k++){
if(ValoresMedios[k][11]==1){
if(ValoresMedios[k][0]>Concavo[0][0]-5 &&
ValoresMedios[k][0]<Concavo[1][0]+5 &&
ValoresMedios[k][1]>((Concavo[1][1]+Concavo[0][1])/2) &&
ValoresMedios[k][1]<Concavo[2][1]){
ValoresMedios[k][11]=0;
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]==k){
MatrixVisitas[i][j]=4;
}//if
}//for j
}//for i
FindSimilarRegions(k, Concavo[0][0]-5, Concavo[1][0]+5,
((Concavo[1][1]+Concavo[0][1])/2),Concavo[2][1],5000,4);
MatrixVisitas[ContR][351] = ValoresMedios[k][10];
ContR++;
k=PuntosSeed;
}//if

193

}//if
}//for k
k=0;
//Dividimos la regi
on de las piernas en dos, una regi
on para cada pierna.
for(i=Concavo[2][1];i<BottomImg;i++){
for(j=Concavo[2][0];j<RightImg;j++){
if(MatrixVisitas[i][j]==3){
MatrixVisitas[i][j]=5;
k++;
}//if
}//for j
}//for i
//Reasignamos el n
um. de elementos de cada pierna.
MatrixVisitas[ContR-2][351] = MatrixVisitas[ContR-2][351] - k;
MatrixVisitas[ContR][351] = k;
ContR++;
//Actualizamos el mapa de soporte con base en la segmentaci
on inicial
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
MatrixMapa[i][j] = MatrixVisitas[i][j];
}//for j
}//for i
//Creamos el n
um. de blobs necesarios
if(Blobs==NULL){
Blobs = Reserva_Blob(Blobs, ContR);
NumComponentes = 5;
if(Blobs){
//Asignamos memoria para cada Blob
for(i=0;i<ContR;i++){
NumElementos = MatrixVisitas[i][351];
Blobs[i].MatrizDatos = matrix(NumComponentes,NumElementos);
Blobs[i].MatrizCovarianza = matrix(NumComponentes,NumComponentes);
Blobs[i].MatrizSuma = matrix(NumComponentes,NumComponentes);
Blobs[i].MatrizMedia = matrix(NumComponentes,NumComponentes);
Blobs[i].VectorMedio = vector(NumComponentes);
Blobs[i].VectorMedioPunto = vector(NumComponentes);
Blobs[i].VectorDesviaciones = vector(NumComponentes);
Blobs[i].NuevasDesviaciones = vector(2);
Blobs[i].NuevoVectorMedio = vector(2);
Blobs[i].MatrizCovarianzaInv = matrix(NumComponentes,NumComponentes);
Blobs[i].G = matrix(2,2);
Blobs[i].Gt = matrix(2,2);
Blobs[i].Element = 0;
Blobs[i].MatrizCovarianzaAnterior = matrix(NumComponentes,NumComponentes);
Blobs[i].VectorMedioAnterior = vector(NumComponentes);
}//for i
//Guardamos cada regi
on en un blob
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]!=-1){
Blobs[MatrixMapa[i][j]].MatrizDatos[0][Blobs[MatrixMapa[i][j]].Element]=j;

194

Blobs[MatrixMapa[i][j]].MatrizDatos[1][Blobs[MatrixMapa[i][j]].Element]=i;
Blobs[MatrixMapa[i][j]].MatrizDatos[2][Blobs[MatrixMapa[i][j]].Element]
=I[i].punto[j].R;
Blobs[MatrixMapa[i][j]].MatrizDatos[3][Blobs[MatrixMapa[i][j]].Element]
=I[i].punto[j].G;
Blobs[MatrixMapa[i][j]].MatrizDatos[4][Blobs[MatrixMapa[i][j]].Element]
=I[i].punto[j].B;
Blobs[MatrixMapa[i][j]].Element += 1;
}//if
}//for j
}//for i
//Calculamos la matriz de covarianza de cada blob y sus estadisticas.
for(i=0;i<ContR;i++){
if(Blobs[i].Element>1)
CalculaMatrizCovarianza(NumComponentes,
Blobs[i].Element, Blobs[i].MatrizDatos,
Blobs[i].MatrizCovarianza, Blobs[i].VectorMedio,
Blobs[i].VectorDesviaciones);
}//for i
for(i=0;i<ContR;i++){ // Guardamos la historia.
Blobs[i].ElementAnteriores = Blobs[i].Element;
for(k=0; k<5; k++){
for(l=0; l<5; l++)
Blobs[i].MatrizCovarianzaAnterior[k][l] = Blobs[i].MatrizCovarianza[k][l];
Blobs[i].VectorMedioAnterior[k] = Blobs[i].VectorMedio[k];
}//for k
}//for i
for(i=0;i<ContR;i++){
if(Blobs[i].MatrizCovarianza[0][4]!=0.0){
NumComponentes = 2;
//Procesos necesarios para el calculo de eigenvectores.
inicializam(MatrizAlineada, Blobs[i].MatrizCovarianza, NumComponentes,
NumComponentes);
householder(MatrizAlineada, NumComponentes);
diag(MatrizAlineada, VectorDiagonal, NumComponentes, NumComponentes, 0);
for(j=1; j<NumComponentes; j++) Eigenvalores[j] = MatrizAlineada[j-1][j];
qr(VectorDiagonal, Eigenvalores, NumComponentes, TOL, 70);
qsort(VectorDiagonal, NumComponentes, sizeof(float), compara);
MatrizTransformada(MatrizAlineada, Blobs[i].G, VectorDiagonal, NumComponentes);
Blobs[i].NuevoVectorMedio=multmv(Blobs[i].G,NumComponentes,NumComponentes,
Blobs[i].VectorMedio);
Blobs[i].Gt = Transpuesta(Blobs[i].G,NumComponentes,NumComponentes);
for(k=0; k<NumComponentes; k++){
Blobs[i].NuevasDesviaciones[k] = sqrt(VectorDiagonal[k]);
}//for k
}//if
}//for i
TotalBlobs = ContR;
for(i=0;i<ContR;i++){ //Calculamos el determinante de los blobs
Blobs[i].Determinante=Determinante5(Blobs[i].MatrizCovarianza);
}//for i

195

for(i=0;i<ContR;i++){
Inversa(Blobs[i].MatrizCovarianza, Blobs[i].MatrizCovarianzaInv, Blobs[i].Determinante);
}//for i
for(i=0;i<ContR;i++){
for(k=0; k<5; k++){
for(l=0; l<5; l++)
Blobs[i].MatrizSuma[k][l] = Blobs[i].MatrizCovarianza[k][l];
Blobs[i].VectorMedioPunto[k] = Blobs[i].VectorMedio[k];
}//for k
}//for i
}//if
}//if
//Eliminaci
on de variables din
amicas no necesarias
if(ValoresMedios)
free_matrix_int(ValoresMedios);
}

B.7

Combinaci
on de regiones

//Funci
on que ayuda a realizar la combinaci
on de regiones, empleado en la segmentaci
on
//por crecimiento de regiones.
void CExCameraDoc::FindSimilarRegions(int RegionOrigen, int x_min, int x_max, int y_min,
int y_max, int UmbralMerge, int LabelRegion){
int l;
int i, j;
int RestaB, RestaG, RestaR, Restas;
for(l=RegionOrigen+1; l<PuntosSeed; l++){
if(ValoresMedios[l][11]==1 && ValoresMedios[l][0]>x_min && ValoresMedios[l][0]<x_max
&& ValoresMedios[l][1]>y_min && ValoresMedios[l][1]<y_max){
RestaR = ValoresMedios[RegionOrigen][2] - ValoresMedios[l][2];
RestaG = ValoresMedios[RegionOrigen][3] - ValoresMedios[l][3];
RestaB = ValoresMedios[RegionOrigen][4] - ValoresMedios[l][4];
Restas = RestaR*RestaR + RestaG*RestaG + RestaB*RestaB;
if(Restas <= UmbralMerge){ // Las regiones se intersectan.
ValoresMedios[l][11] = 0; //Indicamos que la regi
on ya pertenece a otra.
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(MatrixMapa[i][j]==l)
MatrixVisitas[i][j]=LabelRegion;
}//for j
}//for i
//Actualizaci
on de valores Totales de cada regi
on RegionOrigen.
ValoresMedios[RegionOrigen][5]=ValoresMedios[RegionOrigen][5]+ValoresMedios[l][5];
ValoresMedios[RegionOrigen][6]=ValoresMedios[RegionOrigen][6]+ValoresMedios[l][6];
ValoresMedios[RegionOrigen][7]=ValoresMedios[RegionOrigen][7]+ValoresMedios[l][7];
ValoresMedios[RegionOrigen][8]=ValoresMedios[RegionOrigen][8]+ValoresMedios[l][8];
ValoresMedios[RegionOrigen][9]=ValoresMedios[RegionOrigen][9]+ValoresMedios[l][9];
ValoresMedios[RegionOrigen][10]=

196

ValoresMedios[RegionOrigen][10]+ValoresMedios[l][10];
//Actualizaci
on de valores medios de cada regi
on.
ValoresMedios[RegionOrigen][0]=
ValoresMedios[RegionOrigen][5]/ValoresMedios[RegionOrigen][10];
ValoresMedios[RegionOrigen][1]=
ValoresMedios[RegionOrigen][6]/ValoresMedios[RegionOrigen][10];
ValoresMedios[RegionOrigen][2]=
ValoresMedios[RegionOrigen][7]/ValoresMedios[RegionOrigen][10];
ValoresMedios[RegionOrigen][3]=
ValoresMedios[RegionOrigen][8]/ValoresMedios[RegionOrigen][10];
ValoresMedios[RegionOrigen][4]=
ValoresMedios[RegionOrigen][9]/ValoresMedios[RegionOrigen][10];
}//if Restas
}//if
}//for l
}

B.8

Actualizaci
on del fondo

//Funci
on que actualiza la estructura del fondo con base en el resultado de la diferencia
//de im
agenes. Si el p
xel pertenece al fondo, se actualiza la estructura del fondo.
void CExCameraDoc::BackgroundUpdate(int **M){
int i,j;
for(i=TopImg;i<BottomImg;i++){
for(j=LeftImg;j<RightImg;j++){
if(M[i][j]==-1){//Significa que el p
xel (i,j) fue detectado como parte del fondo.
IF[i].punto[j].R = I[i].punto[j].R;
IF[i].punto[j].G = I[i].punto[j].G;
IF[i].punto[j].B = I[i].punto[j].B;
}//if
}//for j
}//for i
}

B.9

Diferencia de im
agenes

//Funci
on que obtiene la diferencia de im
agenes, el resultado lo almacena en la variable
//MatrixSemillas. Se consideran regiones conectadas de 9 p
xeles para la diferencia.
void CExCameraDoc::ImageDifference(){
int x, y, k,l,CuentaDiferentes=0;
int RestaB, RestaG, RestaR, Restas;
//Obtenemos la diferencia de im
agenes.
for(y = TopImg+1; y < BottomImg; y ++){
for(x=LeftImg+1; x < RightImg; x++){
//Si el p
xel y sus 8 vecinos satisfacen la condici
on de la diferencia de im
agenes
//el p
xel es marcado como diferente.
for(k=-1;k<2;k++){
for(l=-1;l<2;l++){
RestaR = I[y+k].punto[x+l].R - IF[y+k].punto[x+l].R;

197

RestaG = I[y+k].punto[x+l].G - IF[y+k].punto[x+l].G;


RestaB = I[y+k].punto[x+l].B - IF[y+k].punto[x+l].B;
Restas = RestaR*RestaR + RestaG*RestaG + RestaB*RestaB;
if(Restas<RR){
CuentaDiferentes = 1;
k=l=2;
}//if
}//for l
}//for k
if(CuentaDiferentes == 0){
MatrixSemillas[y][x] = 1;
}//if CuentaDiferentes
CuentaDiferentes = 0;
}//for x
}//for y
}

B.10

Visualizaci
on del modelo multi-blob

//Esta funci
on est
a definida en el archivo ExCameraView.cpp, el cual contiene la
//implementaci
on de la clase CExCameraView. La clase CExCameraView se dervia de la clase
//CView que proporciona la funcionalidad b
asica para que el usuario defina sus clases
//vista. Una vista se agrega a un documento y act
ua como un intermediario entre el
//documento y el usuario: la vista proporciona un imagen del documento en pantalla o en
//impresi
on e interpreta las entradas del usuario como operaciones sobre el documento.
void CExCameraView::OnDraw(CDC* pDC){
CExCameraDoc* pDoc = GetDocument();//Se obtiene un apuntador del objeto CDocument
//asociado con la vista. Permite llamar a las
//funciones miembro del documento.
ASSERT_VALID(pDoc);//Prueba la validez del estado interno del objeto pDoc.
//Variables auxiliares utilizadas para dibujar al modelo multi-blob
CPoint c, d;
CRect BackgroundRect;
CBrush bkBrush1(RGB(255, 255, 255));
//Establecemos el
area donde se dibujar
a el modelo multi-blob de la persona.
c.x = 177;
c.y = 0;
d.x = 353;
d.y = 350;
BackgroundRect.SetRect(c,d);//Se especifica un rect
angulo del tama~
no definido por c, d.
//asigna la imagen obtenida del frame actual a la variable image.
CExCameraImage image = pDoc->Image();
if(image.IsValid()){//Si se reserv
o memoria para la imagen.
//Trata de desplegar la imagen a trav
es de un dispositivo de contexto de windows.
image.DisplayInHdc(pDC->m_hDC);
}
else{
//Se establece la informaci
on que contendr
a la imagen, las dimensiones, color y
//formato.
unsigned long *rgul = new unsigned long[640 * 480];

198

for(int i = 0; i < 640 * 480; ++i){


rgul[i] = 0xff << 8 * ((i % 640) / 160);
}
int dx = 640;
int dy = 480;
BITMAPINFOHEADER bitmapinfoheader;
bitmapinfoheader.biSize = sizeof(BITMAPINFOHEADER);
bitmapinfoheader.biWidth = 640;
bitmapinfoheader.biHeight = - 480;
bitmapinfoheader.biPlanes = 1;
bitmapinfoheader.biBitCount = 32;
bitmapinfoheader.biCompression = BI_RGB;
bitmapinfoheader.biSizeImage = 0;
bitmapinfoheader.biXPelsPerMeter = 2700;
bitmapinfoheader.biYPelsPerMeter = 2700;
bitmapinfoheader.biClrUsed = 0;
bitmapinfoheader.biClrImportant = 0;
//Funci
on que establece los p
xeles en el rect
agulo especificado usando los datos de
//color provenientes de la imagen.
SetDIBitsToDevice(pDC->m_hDC, 0, 0, dx, dy, 0, 0, 0,
dy, rgul, (BITMAPINFO *) &bitmapinfoheader,
DIB_RGB_COLORS);
delete[] rgul;
}

pDoc->ImageDisplayed();//Indica al documento que se despleg


o una nueva imagen.
if(Segmentar == 1){//Si la persona ya ha sido segmentada.
//Se dibuja un rect
angulo relleno de color blanco que permite actualizar la ventana.
CBrush *CurrentBrush = pDC->SelectObject(&bkBrush1);
pDC->FillRect(BackgroundRect,&bkBrush1);
//Despu
es de la inicializaci
on puede dibujarse el modelo multi-blob de la persona.
for(i=0;i<TotalBlobs;i++){
//funci
on que dibuja cada blob: representado como una elipse a partir de las
//estad
sticas del blob.
ElipseOrientada((Blobs[i].NuevasDesviaciones[0]*FactorDesviacion),
(Blobs[i].NuevasDesviaciones[1]*FactorDesviacion),
176 + Blobs[i].VectorMedio[0],Blobs[i].VectorMedio[1],Blobs[i].Gt,
Blobs[i].VectorMedio[2],Blobs[i].VectorMedio[3],
Blobs[i].VectorMedio[4]);
}//for i
pDC->SelectObject(&CurrentBrush);
DeleteObject(bkBrush1);
}//if Segmentar
}

B.11

Dibuja la elipse que describe al blob

//Funci
on que dibuja una elipse orientada en un nuevo plano de coordenadas definido por
//gt, que es la matriz traspuesta de la matriz de covarianza, recibe adem
as el centroide
//del blob cx, cy, el color promedio R, G, B, y el tama~
no a, b1.

199

void CExCameraView::ElipseOrientada(int a, int b1, int cx, int cy, float **gt, int R,
int G, int B){
float e1[2],e2[2],e3[2],e4[2],e5[2],e6[2];
float r1, r2;
float t1, t2;
int i;
CDC *pdc = GetDC();
CPen *CurrentPen = pdc->GetCurrentPen();
CBrush *CurrentBrush = pdc->GetCurrentBrush();
CBrush bkBrush1(RGB(R,G,B));//Establece el color del blob
CPen pen(PS_SOLID,15,RGB(R,G,B));
pdc->SelectObject(&pen);
pdc->SelectObject(&bkBrush1);
for(i=-a; i<=a ; i++){//Se dibuja la elipse bas
andose en la ecuaci
on de elipse.
t1 = (b1*b1*(a*a - i*i))/(a*a);
t2 = (b1*b1*(a*a - ((i+1)*(i+1))))/(a*a);
if(t1>0)
r1 = pow((float)t1,0.5);
else
r1 = 0;
if(t2>0)
r2 = pow((float)t2,0.5);
else
r2 = 0;
e1[0] = i;
e1[1] = (int)r1;
multmV(gt,2,2,e1);//Obtenemos la orientaci
on de las coordenadas almacenadas en e1
//La variable global VectorDibuja almacena el resultado de calcular la orientaci
on
//por ello su contenido se asigna a una variable temporal, y se reinicializarla a 0.0
e3[0] = VectorDibuja[0];
e3[1] = VectorDibuja[1];
VectorDibuja[0]=0.0;
VectorDibuja[1]=0.0;
e2[0] = i+1.0;
e2[1] = (int)r2;
multmV(gt,2,2,e2);//Obtenemos la orientaci
on de las coordenadas almacenadas en e2
e4[0] = VectorDibuja[0];
e4[1] = VectorDibuja[1];
VectorDibuja[0]=0.0;
VectorDibuja[1]=0.0;
e1[0] = i;
e1[1] = (int)((-1.0)*r1);
multmV(gt,2,2,e1);//Obtenemos la orientaci
on de las coordenadas almacenadas en e1
e5[0] = VectorDibuja[0];
e5[1] = VectorDibuja[1];
VectorDibuja[0]=0.0;
VectorDibuja[1]=0.0;
e2[0] = i+1.0;

200

e2[1] = (int)((-1.0)*r2);
multmV(gt,2,2,e2);//Obtenemos la orientaci
on de las coordenadas almacenadas en e2
e6[0] = VectorDibuja[0];
e6[1] = VectorDibuja[1];
VectorDibuja[0]=0.0;
VectorDibuja[1]=0.0;
//Dibujamos la elipse que representa al blob
pdc ->MoveTo((int)(cx+e3[0]),5+(int)(cy+e3[1]));
pdc ->LineTo(cx+(int)e5[0],5+(int)(cy+e5[1]));
pdc ->MoveTo((int)(cx+e4[0]), 5+(int)(cy+e4[1]));
pdc ->LineTo(cx+(int)e6[0], 5+(int)(cy+e6[1]));
}//for i
//Eliminamos memoria din
amica para las variables auxiliares.
pdc->SelectObject(&CurrentPen);
pdc->SelectObject(&CurrentBrush);
DeleteObject(bkBrush1);
DeleteObject(pen);
ReleaseDC(pdc);
}

201

Bibliografa
[1] Daro Maravall Gomez Allende. Reconocimiento de formas y visi
on Artificial. AddisonWesley, 1993.
[2] Emilio Aguirre Altieri. Analisis automatizado de rostros. Tesis de maestra, Maestra en
Inteligencia Artificial - UV, Xalapa-Enrquez, Ver., Julio 2000.
[3] Ali Azarbayejani. Real-time self-calibrating stereo person tracking using 3-d shape estimation from blob features. Disponible en
http://www-white.media.mit.edu/ali/research/6. person-tracking/index.html, February
1996. MIT Media Lab.
[4] Ali Azarbayejani and Alex Pentland. Real-time self-calibrating stereo person tracking using
3-d shape estimation from blob features. Technical Report 363, M.I.T. Media Laboratory,
Perceptual Computing Section, Cambridge, MA, USA, August 1996. ICPR96.
[5] Ali Azarbayejani, Christopher Wren, and Alex Pentland. Real-time 3-d tracking of the human body. Technical Report 374, M.I.T Media Laboratory, Perceptual Computing Section,
Cambridge, MA, USA, May 1996.
[6] Junior Barrera, Roberto de Alencar Lotufo, and Gerald Banon.

Dilation example.

Disponible en http://elgva1.usc.es/web/tutor/toolbox/basicl/dilation/frontpage.html,
July 1997. Introduce dilation and erosion, the most fundamental operators of Mathematical
morphology.
[7] Junior Barrera, Roberto de Alencar Lotufo, and Gerald Banon. Erosion example. Disponible
en http://elgva1.usc.es/web/tutor/toolbox/basicl/erosion/eros.html, July 1997. Introduce dilation and erosion, the most fundamental operators of Mathematical morphology.
[8] Benedicte Bascle, Rachid Deriche, F. Meyer, and Patrick Bouthemy. Tracking complex
primitives in an image sequence. Technical Report RR-2428, INRIA, Sophia-Antipolis,
France, December 1994. Disponible en http://citeseer.nj.nec.com/bascle94tracking.html.
202

[9] Jon Bates and Tim Tompkins. Descubre Visual C++ 6.0. Prentice Hall, C/Tellez, 54,
28007 Madrid, Espa
na, primera edition, 1999.
[10] David Beymer and Kurt Konolige. Real-time tracking of multiple people using stereo.
Disponible en http://www.eecs.lehigh.edu/FRAME/Beymer/, August 1999. Artificial Intelligence Center, SRI International, Menlo Park, CA 94025.
[11] Dustin Boswell. How can we apply the Kolor-klustering to learning?

Disponible en

http://www.cs.caltech.edu/boswell/cns148/kolorapply.html, April 2001.


[12] Yuri Boykov and Daniel Huttenlocher. A bayesian framework for model based tracking.
Technical Report TR99-1762, Cornell University, Computer Science, Ithaca, NY, 14850,
August 1999. Disponible en
http://cs-tr.cs.cornell.edu:80/Dienst/UI/1.0/Display/ncstrl.cornell/TR99-1762.
[13] Christoph Bregler and Jitendra Malik. Tracking people with twists and exponential maps.
Proc. IEEE CVPR, 1998.
Disponible en http://graphics.stanford.edu/bregler/pubs.html.
[14] Rodney A. Brooks. A robust layered control system for a mobile robot. A. I. Memo 864,
September 1985. Massachusetts Institute of Technology Artificial Intelligence Laboratory.
[15] Chad Carson, Serge Belongie, Hayit Greenspan, and Jitendra Malik. Region-based image
querying. CAIVL97, June 1997.
Disponible en http://www.cs.berkeley.edu/carson/papers/cvpr97.pdf.
[16] R. Murrieta Cid, M. Briot, B. Marcel, and H. H. Gonzalez Banos. Aspectos dinamicos de
la vision: Seguimiento de objetos no rgidos y estimacion de la rotacion de una camara.
LAAS Report 97370, Laboratory for Analysis and Architecture of Systems, 7, avenue du
Colonel Roche - 31077 Toulouse Cedex 4 - France, October 1997.
[17] R. Murrieta Cid, M. Briot, and V. Ayala Ramrez. Scene interpretation: Segmentation and
identification of regions by color and texture analysis. LAAS Report 98183, Laboratory for
Analysis and Architecture of Systems, 7, avenue du Colonel Roche - 31077 Toulouse Cedex
4 - France, May 1998.
[18] R. Murrieta Cid, P. Lasserre, and M. Briot. Color segmentation in principal regions for
natural outdoor scenes. LAAS Report 97097, Laboratory for Analysis and Architecture of
Systems, 7, avenue du Colonel Roche - 31077 Toulouse Cedex 4 - France, April 1997.

203

[19] R. Murrieta Cid, C. Parra, M. Devy, and M. Briot. Scene modelling from 2d and 3d
sensory data acquired from natural environments. LAAS Report 98418, Laboratory for
Analysis and Architecture of Systems, 7, avenue du Colonel Roche - 31077 Toulouse Cedex
4 - France, October 1998.
[20] Rafael Murrieta Cid, Maurice Briot, Nicolas Vandapel, and Hector H. Gonzalez. Seguimiento visual de objetos. Soluciones Avanzadas, (58):3646, Junio 1998.
[21] Roberto Cipolla and Alexander Pentland. Computer Vision and Human-Computer Interaction. Cambridge University PRESS, 1998.
[22] T. F. Cootes. Training models of shape from sets of examples. Proceedings of the British
Machine Vision Conference, 1992.
[23] Olivier Cuisenaire. Mathematical morphology operators.
Disponible en http://ns1.tele.ucl.ac.be/PEOPLE/OC/these/node37.html, October 1999.
Olivier Cuisenaires PhD. Thesis.
[24] Ross Cutler. Gesture recognition.
Disponible en http://research.microsoft.com/rcutler/gesture/gesture recognition.htm, June 2000.
[25] Ross Cutler and Matthew Turk. View-based interpretation of real-time optical flow for
gesture recognition. IEEE International Conference on Automatic Face and Gesture Recognition, April 1998. Disponible es http://www.cs.umd.edu/rgc/pub/fg98.pdf.
[26] Larry Davis, Sandor Fejes, David Harwood, Yaser Yacoob, Ismail Hariatoglu, and Michel J.
Black. Visual surveillance of human activity. ACCV-98, 1998. Mumbai-India.
[27] Richard O. Duda. Mahalanobis metric.
Disponible en http://www-engr.sjsu.edu/knapp/HCIRODPR/PR Mahal/M metric.htm,
1997. Department of Electrical Engineering, San Jose State University.
[28] Homero V. Ros Figueroa, Angelica Garca Vega, Hilda Caballero Barbosa, Rodrigo Sanchez
Chacon, and Grecia Lapizco Encinas. Seguimiento de la mano por medio de distribucion
de color, aplicado a la teleoperacion de robots. Artculo aceptado para ser presentado en
el 3er. Encuentro Internacional de Ciencias de la Computacion ENC01. Sera publicado en
las memorias del evento, Septiembre 2001.
[29] James D. Foley, Andries van Dam, Steven K. Feiner, and John F. Hughes. Computer
Graphics. Addison-Wesley, second edition, November 1992.
204

[30] Institute for Computer Graphics Page. How to develop opengl application with visual c++.
Disponible en http://tangle.seas.gwu.edu/graphics/cs206/opengl win32 howto.html, January 2001.
[31] The Industry 0 s for High Performance Graphics. Opengl current headlines. Disponible en
http://www.opengl.org/, April 2001.
[32] K. S. Fu and J. K. Mui. A survey on image segmentation. Pattern Recognition, 13:316,
June 1980.
[33] Rafael C. Gonzalez and Richard E. Woods. Digital Image Processing. World Student Series.
Addison-Wesley, Septiembre 1993.
[34] Vision Technology Group. The microsoft vision sdk version 1.2.
Disponible en http://www.research.microsoft.com/research/vision/, May 2000. Microsoft
Research.
[35] I. Haritaoglu, D. Harwood, and L. Davis. Ghost: A human body part labeling system using
silhouettes. Fourteenth International Conference on Pattern Recognition, Brisbane, August
1998. Disponible en http://www.umiacs.umd.edu/users/hismail/PublicationsList.html.
[36] I. Haritaoglu, D. Harwood, and L. Davis. w4 s: A real time system for detecting and
tracking people in 2.5 d. Fifth European Conference on Computer Vision, Freiburg, June
1998. Disponible en http://www.umiacs.umd.edu/users/hismail/PublicationsList.html.
[37] Ismail Haritaoglu. A Real Time System for Detection and Tracking of People and Recognizing Their Activities. Phd. proposal, University of Maryland, College Park, 1998. Disponible
en http://www.umiacs.umd.edu/users/hismail/PublicationsList.html.
[38] Donald Hearn and M. Pauline Baker. Gr
aficas por computadora. Prentice Hall, Enrique
Jacob 20, Col. El Conde, 53500 Naucalpan de Juarez, Edo. De Mexico, segunda edition,
1995.
[39] Antonio Marn Hernandez. Segmentacion y seguimiento de objetos aplicando tecnicas de
vision activa. Tesis de maestra, Maestra en Inteligencia Artificial - UV, Xalapa-Enrquez,
Ver., 1998.
[40] A. Hoover, G. Jean-Baptiste, D. Goldgof, K. W. Boywer, P. J. Flynn, X. Jiang, and
H. Bunke. Range image segmentation: The users dilemma. SCV95, 1995. Disponible en
ftp://figment.csee.usf.edu/pub/segmentation-comparison/Miami-symposium.ps.Z.

205

[41] A. Hoover, G. Jean-Baptiste, D. B. Goldgof, and K. W. Bowyer. A methodology for evaluating range image segmentation techniques. WACV94, pages 264271, 1994. Disponible en
ftp://figment.csee.usf.edu/pub/segmentation-comparison/TechReport.Methodology.ps.Z.
[42] A. Hoover, G. Jean-Baptiste, X. Jiang, P. Flynn, H. Bunke, D. Goldof, K. Bowyer, D. Eggert, A. Fitzgibbon, and R. Fisher. An experimental comparison of range image segmentation algorithms. PAMI, 18(7):673689, July 1996.
Disponible en http://vision.ucsd.edu/hoover/seg-comp.ps.gz.
[43] T. Horparasert, I. Haritaoglu, D. Harwood, L. Davis, C. Wren, and A. Pentland. Real-time
3d motion capture. Second Workshop on Perceptual Interfaces, San Francisco, November
1998. Disponible en http://www.umiacs.umd.edu/users/hismail/PublicationsList.html.
[44] Toby Howard. The local mesa (quite a bit like opengl) installation. Disponible en http://www.cs.man.ac.uk/applhax/OpenGL/, February 2001.
[45] Daniel P. Huttenlocher, Jae J. Noh, and William J. Rucklidge. Tracking non-rigid objects
in complex scenes. Technical Report TR92-1320, Cornell University, Computer Science,
Ithaca, NY, 14850, December 1992.
Disponible en http://ncstrl.cs.cornell.edu:80/Dienst/UI/1.0/Display/ncstrl.cornell/TR921320.
[46] Stephen S. Intille, James W. Davis, and Aaron F. Bobick. Real-time closed-world tracking.
Technical Report 403, M.I.T. Media Laboatory, Perceptual Computing Section, Cambridge,
MA, USA, November 1996.
[47] Ramesh Jain, Rangachar Kasturi, and Brian G. Schunck. Machine Vision. McGraw-Hill,
1995.
[48] Nebojsa Jojic, Matthew Turk, and Thomas S. Huang. Tracking self-occluding articulated object in dense disparity maps. Proc. IEEE International Conference on Computer Vision,Corfu, Greece. Beckman Institute, University of Illinois at Urbana-Champaign.,
September 1999.
Disponible en http://research.microsoft.com/users/mturk/papers/mturk.iccv1999.pdf.
[49] Ramiro Jordan, Roberto Lotufo, and The Khoros Group Khoral Research. Dilation, erosion,
opening, closing. Disponible en
http://greta.cs.ioc.ee/khoros2/nonlinear/dileroopenclose/front-page.html, June1995. Digital Image Processing (DIP) with Khoros 2.

206

[50] Yacine Kabir and Yazid Cherfa. A new co-operative segmentation method applied to x-ray
images. Disponible en http://www.ndt.net/article/wcndt00/papers/idn577/idn577.htm,
October 2000. Proceedings, Roma 2000 15th WCNDT.
[51] Mark J. Kilgard. The opengl utility toolkit (glut) programming interface: api version
3. Disponible en http://charon.fi.muni.cz/hales/opengl/glut/spec3.html, February 1996.
Disponible ademas en http://www.crs4.it/riccardo/Didattica/GLUT spec.pdf.
[52] Kurt G. Konolige. Saphira Software Manual. ActivMedia Robotics, version 6.1 edition,
August 1998.
[53] K.M. Lam and H. Yang. Locating and extracting the eye in human face images. Pattern
Recognition, 29(5):771779, 1996.
[54] Ze-Nian Li and Yingchen Yang. 3.3. color in image and video. Disponible en
http://www.cs.sfu.ca/CC/365/li/material/notes/Chap3/Chap3.3/Chap3.3.html, February
2000. CMPT 365 Course Contents Spring 2000.
[55] Michael H. Lin. Tracking articulated objects in real-time range image sequences. International Conference on Computer Vision, pages 648653, September 1999. Interval Research
Corporation.
[56] Logitech. Quickcam express.
Disponible en http://www.logitech.com/cf/products/productfeatures.cfm/38, 2001.
[57] David Marr. Vision: A Computational Investigation into the Human Representation and
Processing of Visual Information. W. H. Freeman and Company, 41 Madison Avenue, New
York, NY 10010, 1982.
[58] Jackie Neider, Tom Davis, and Mason Woo. Opengl programming guide (addison-wesley
publishing company). Disponible en
http://ask.ii.uib.no/ebt-bin/nph-dweb/dynaweb/SGI Developer/opengl pg/, April 2001.
[59] Perry Newhook. Opengl and os/2: A model viewer - part 1.
Disponible en http://www.edm2.com/0609/opengl.html, September 1998.
[60] Scott Owen. Color. Disponible en
http://www.udayton.edu/cps/cps560/siggraph/hypgraph/color/color0.htm, April 1997.
[61] Robyn Owens. Mathematical morphology. Disponible en
http://www.dai.ed.ac.uk/cvonline/ local copies/owens/lect3/node3.html, October
1997. Division of Informatics, Artificial Intelligence, The University of Edinburgh.
207

[62] Vladimir I. Pavlovic, Rajeev Sharma, and Thomas S. Huang. Visual interpretation of
hand gestures for human-computer interaction: A review. Technical Report UIUC-BIAI-RCV-95-10, University of Illinois, Urbana-Champaign, December 1995. Disponible en
http://www.crl.research.digital.com/who/people/vladimir/pubs/publications.htm.
[63] Roman Podobedov. Work with opengl and glut: Part i. basics of glut and basic operations
with windows.
Disponible en http://romka.demonews.com/opengl/doc/opengl glut eng.htm, September
2000.
[64] John A. Richards. Remote Sensing Digital Image Analysis: An Introduction. SpringerVerlag, Germany, 2nd edition, 1993.
[65] Nate Robins. Nate robins: Main opengl chronicles allies, glut for win32. Disponible en
http://www.xmission.com/nate/glut.html, October 2000.
[66] ActivMedia Robotics. Manual Pioneer Mobile Robots. ActivMedia Robotics, January 1999.
[67] Homero Vladimir Ros, Juan Manuel Gutierrez, and Joaqun Pe
na. Navegacion robotica y
telecontrol con ademanes. Memorias del primer Cogreso de Rob
otica, AMRob, CICESE,
pages 7178, 1999.
[68] Stan Sclaroff and John Isidoro. Active blobs. Technical Report TR97-008, Boston University, May 1997.
Disponible en http://www.cs.bu.edu/techreports/pdf/1997-008-activeblobs.pdf.
[69] Sonka, Hlavac, and Boyle. Binary morphology.
Disponible en http://www.eee.bham.ac.uk/pycockd/MAT/sld008.htm, March 2001. The
School of Electronic and Electrical Engineering, The University of Birmingham.
[70] Thad Starner and Alex Pentland. Real-time american sign language recognition from video
using hidden markov models. Proceedings of International Symposium on Computer Vision.
IEEE Computer Society Press., 1995.
[71] Thad Starner, Joshua Weaver, and Alex Pentland. Real-time american sign language recognition using desk and wearable computer bases video. Technical Report 466, M.I.T. Media
Laboratory Perceptual Computing, 20 Ames Street, Cambridge MA 02139, April 1996.
[72] D. Terzopoulos and R. Szeliski. In Active Vision, chapter Tracking with Kalman Snakes.
Blake, A. and Yuille, A. (Eds.). MIT Press., 1992.

208

[73] Friedrich M. Wahl. Digital Image Signal Processing. Springer-Verlag, Braunschweig, english
edition, 1987.
[74] Christopher Wren, Ali Azarbayejani, Trevor Darrell, and Alex Pentland. Pfinder:real-time
tracking of the human body. Technical Report 353, M.I.T Media Laboratory, Perceptual
Computing Section, 20 Ames Street; Cambridge MA 02139 USA, July 1997.
[75] Christopher R. Wren. Pfinder: Real-time tracking of the human body. Disponible en
http://vismod.www.media.mit.edu/vismod/demos/pfinder/ms/mainhtml.html, September
1996. Massachusetts Institute of Technology.
[76] Christopher Richard Wren, Ali Azarbayejani, Trevor Darrell, and Alex Paul Pentland.
Real-time tracking of the human body.
Disponible en http://vismod.www.media.mit.edu/vismod/demos/pfinder, October 1995.
[77] Christopher Richard Wren, Ali Azarbayejani, Trevor Darrell, and Alex Paul Pentland.
Pfinder:real-time tracking of the human body. IEEE Transactions on Pattern Analysis and
Machine Intelligence, 19(7):780785, July 1997.
[78] Christopher Richard Wren and Alex Paul Pentland. Dynamic models of human motion.
Proceedings of the Third IEEE International Conference on Automatic Face and Gesture
Recognition, April 1998. Nara, Japan.
[79] Jie Yang, Weier Lu, and Alex Waibel. Skin-color modeling and adaptation. Proceedings of
ACCV98, II:687694, 1998. Disponible en http://www.mic.atr.co.jp/skawato/FG200022.pdf.
[80] Jie Yang, Rainer Stiefelhagen, Weier Lu, and Alex Waibel. Visual tracking for multimodal
human computer interaction. Proceedings of CHI98, pages 140147, 1998. Disponible en
http://www.ri.cmu.edu/pub files/pub1/yang jie 1998 2/yang jie 1998 2.pdf.
[81] David Young. Active contour models (snakes).
Disponible en http://www.cogs.susx.ac.uk/users/davidy/teachvision/vision7.html, March
1995. University of Sussex.
[82] Steven W. Zucker. Region growing: Childhood and adolescence. Computer Graphics and
Image Processing, 5:382399, April 1975.
[83] Nello Zuech. Applying Machine Vision. John Wiley and Sons, 605 Third Avenue, New
York, N.Y. 10158-0012, 1988.

209

Potrebbero piacerti anche