Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Julio, 2001
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
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
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
29
2.5.4.2
30
2.5.4.3
32
2.5
2.6
2.7
2.5.4.4
. . . . . . . . . . . . . . .
33
2.5.4.5
Combinacion de regiones. . . . . . . . . . . . . . . . . . . . . .
33
2.5.5
Seleccion de caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . .
34
2.5.6
Reconocimiento e interpretacion . . . . . . . . . . . . . . . . . . . . . . .
34
35
2.6.1
38
2.6.2
40
42
2.7.1
Distancia de Mahalanobis . . . . . . . . . . . . . . . . . . . . . . . . . .
45
2.7.1.1
46
2.7.1.2
Clasificador de Mahalanobis . . . . . . . . . . . . . . . . . . . .
48
50
3.1
51
3.2
Propuesta de solucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
3.3
Alcances de la implementacion . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
3.4
53
3.4.1
54
3.4.2
58
3.4.3
Dilatacion y erosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
3.4.4
64
Dise
no . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
3.5.1
Inicializacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
3.5.1.1
70
3.5.1.2
71
3.5.1.3
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
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
82
3.6.2.1
Extendiendo brazos. . . . . . . . . . . . . . . . . . . . . . . . .
82
3.6.2.2
89
3.6.2.3
92
3.6.2.4
94
3.6.2.5
3.6.2.6
3.6.3
3.6.4
3.6.5
3.6.3.2
3.6.4.2
3.6.5.2
3.6.5.3
3.6.5.4
3.6.6
3.6.7
3.7
Giros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
3.6.6.1
3.6.6.2
163
4.1
Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
4.2
Ap
endices
167
167
178
iv
Indice de Figuras
2.1
Area
iluminada que se proyecta perpendicular a la trayectoria de los rayos de luz
11
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]. . . . . . . . .
11
2.3
2.4
13
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
16
2.7
17
2.8
20
2.9
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
23
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
37
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
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
56
3.4
Los puntos blancos son los pxeles del blob, cuya distribucion es paralela al eje x.
56
3.5
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
3.9
57
57
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
61
62
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
. . . . . . . . . . . . . . . . . . . . . . . . .
67
3.22 Experimento cinco: la region fue segmentada en solo dos regiones. Segmentacion
erronea. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
68
. . . . . . . . . . . . . . . . . .
. . . .
69
70
72
79
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.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
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 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:
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
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).
1.3
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:
Figura 2.1: Area
iluminada que se proyecta perpendicular a la trayectoria de los rayos de luz que
llegan, 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
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
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]:
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
(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
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
B = {x|(Bx )
A 6= }
(2.2)
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].
2.4.3
Erosi
on
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.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
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
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
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
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
Rj = para toda i y j, i 6= j,
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.
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].
2.5.4.3
Selecci
on del umbrales.
k
S(x, y) =
(2.4)
k = 0, 1, 2, ..., m.
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]:
(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.
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
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
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)
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
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)
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
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)
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
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)
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
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
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)
45
2.7.1.1
Interpretaci
on geom
etrica de la distancia de Mahalanobis
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 ,
46
X1
X
2
X=
Xn
m1
m
2
m=
mn
(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
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].
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
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:
El sistema emplea las siguientes tecnicas de vision para llevar a cabo el seguimiento de 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
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
3.4.1
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-
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.
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.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
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
(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
(c) Diferencia de im
agenes con un um-
bral de 8.0625.
bral de 11.3578.
61
(a) Fondo.
(c) Diferencia de im
agenes con un umbral de
8.4261.
11.6619.
62
rencia de im
agenes sobre la que seran
aplicadas las operaciones morfologicas
b
asicas.
(c) Diferencia de im
agenes erosionada.
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
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.
fondo.
imagenes.
(d) Diferencia de im
agenes di-
latada.
sionada.
Figura 3.17: Experimentacion de las operaciones morfologicas basicas sobre imagenes naturales.
3.4.4
Segmentaci
on por crecimiento de regiones
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-
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.
Figura 3.19: Experimentos dos: la segmentacion por crecimiento de regiones dio como resultado cinco
regiones.
66
(a) Distribuci
on de los puntos semilla.
Figura 3.20: Experimentos tres: la segmentacion por crecimiento de regiones dio como resultado
cuatro regiones.
(a) Area
a segmentar y puntos semilla.
Figura 3.21: Experimento cuatro: la region fue segmentada en seis regiones. La segmentaci
on es
erronea, abarca parte del fondo.
67
Figura 3.22: Experimento cinco: la region fue segmentada en solo dos regiones.
Segmentaci
on
erronea.
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
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
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.
3.5.1.1
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
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
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
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
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
3.5.1.7
Construcci
on del modelo de la persona : Blobs
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)
my =
my x
!
(3.6)
my y
mR
mB
3.5.2
(3.7)
Seguimiento
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)
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.
Xi
(3.10)
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:
(3.13)
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
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
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)).
Figura 3.29: Resultados del seguimiento mientras la persona extiende el brazo derecho y posteriormente el brazo izquierdo (1/3).
84
Figura 3.29: Resultados del seguimiento mientras la persona extiende el brazo derecho y posteriormente el brazo izquierdo (2/3).
85
(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
Figura 3.30: Resultados del seguimiento mientras la persona extiende ambos brazos (1/2).
87
Figura 3.30: Resultados del seguimiento mientras la persona extiende ambos brazos (2/2).
88
3.6.2.2
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)).
Figura 3.31: Resultados del seguimiento mientras la persona mueve el torso lateralmente (1/3).
89
Figura 3.31: Resultados del seguimiento mientras la persona mueve el torso lateralmente (2/3).
90
Figura 3.31: Resultados del seguimiento mientras la persona mueve el torso lateralmente (3/3).
91
3.6.2.3
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)).
Figura 3.32: Resultados del seguimiento cuando la persona dirige las manos sobre su cabeza (1/2).
92
Figura 3.32: Resultados del seguimiento cuando la persona dirige las manos sobre su cabeza (2/2).
93
3.6.2.4
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)).
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.
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.
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.
Figura 3.34: Resultados del seguimiento del movimiento del brazo izquierdo en direccion al rostro
(1/3).
97
Figura 3.34: Resultados del seguimiento del movimiento del brazo izquierdo en direcci
on al rostro
(2/3).
98
Figura 3.34: Resultados del seguimiento del movimiento del brazo izquierdo en direccion al rostro
(3/3).
99
3.6.2.5
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)).
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.
Figura 3.35: Resultados del seguimiento cuando se posiciona el brazo derecho sobre el torso (2/3).
101
(g) Contin
ua el alejamiento del brazo derecho.
Figura 3.35: Resultados del seguimiento cuando se posiciona el brazo derecho sobre el torso (3/3).
102
Figura 3.36: Resultados del seguimiento cuando se posiciona el brazo izquierdo sobre el torso (1/2).
103
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
Figura 3.37: Resultados del seguimiento cuando ambos brazos se posicionan sobre el torso de la
persona.
105
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)).
Figura 3.39: Resultados del seguimiento de los brazos despues de una oclusion (1/3).
107
Figura 3.39: Resultados del seguimiento de los brazos despues de una oclusion (2/3).
108
Figura 3.39: Resultados del seguimiento de los brazos despues de una oclusion (3/3).
3.6.3
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
109
Figura 3.40: Resultados del seguimiento de la pierna derecha mientras se mueve lateralmente (1/3).
110
Figura 3.40: Resultados del seguimiento de la pierna derecha mientras se mueve lateralmente (2/3).
111
Figura 3.40: Resultados del seguimiento de la pierna derecha mientras se mueve lateralmente (3/3).
Figura 3.41: Resultados del seguimiento de la pierna izquierda mientras se mueve lateralmente (1/3).
112
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.
Figura 3.41: Resultados del seguimiento de la pierna izquierda mientras se mueve lateralmente (3/3).
114
3.6.3.2
Figura 3.42: Resultados del seguimiento de la pierna derecha mientras se eleva al frente (1/2).
115
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)).
Figura 3.43: Resultados del seguimiento de la pierna izquierda mientras se eleva al frente (1/2).
117
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
3.6.4.1
3.6.4.2
Inclinaci
on hacia delante y hacia atr
as
3.6.5
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
Figura 3.44: Resultados del seguimiento mientras la persona mueve lateralmente la cabeza (1/3).
120
Figura 3.44: Resultados del seguimiento mientras la persona mueve lateralmente la cabeza (2/3).
121
Figura 3.44: Resultados del seguimiento mientras la persona mueve lateralmente la cabeza (3/3).
122
Figura 3.45: Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia adelante
(1/2).
123
(e) Se contin
ua regresando a la posicion inicial.
Figura 3.45: Resultados del seguimiento de la cabeza de la persona mientras se inclina hacia adelante
(2/2).
124
(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
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
Figura 3.47: Resultados del seguimiento mientras la persona se desplaza hacia adelante (1/2).
127
Figura 3.47: Resultados del seguimiento mientras la persona se desplaza hacia adelante (2/2).
128
3.6.5.2
Figura 3.48: Resultados del seguimiento mientras la persona se desplaza hacia atras (1/3).
129
Figura 3.48: Resultados del seguimiento mientras la persona se desplaza hacia atras (2/3).
130
Figura 3.48: Resultados del seguimiento mientras la persona se desplaza hacia atras (3/3).
3.6.5.3
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
Figura 3.49: Resultados del seguimiento de la persona mientras da un paso hacia la derecha (1/2).
132
Figura 3.49: Resultados del seguimiento de la persona mientras da un paso hacia la derecha (2/2).
133
Figura 3.50: Resultados del seguimiento de la persona mientras da otro paso hacia la derecha (1/2).
134
Figura 3.50: Resultados del seguimiento de la persona mientras da otro paso hacia la derecha (2/2).
135
Figura 3.51: Resultados del seguimiento de la persona mientras da un paso hacia la izquierda (1/2).
136
Figura 3.51: Resultados del seguimiento de la persona mientras da un paso hacia la izquierda (2/2).
137
Figura 3.52: Resultados del seguimiento de la persona mientras da otro paso hacia la izquierda (1/2).
138
Figura 3.52: Resultados del seguimiento de la persona mientras da otro paso hacia la izquierda (2/2).
139
3.6.5.4
140
Figura 3.53: Resultados del seguimiento de la persona mientras se desplaza lateralmente (1/3).
141
Figura 3.53: Resultados del seguimiento de la persona mientras se desplaza lateralmente (2/3).
142
(g) Contin
ua el desplazamiento a la derecha.
Figura 3.53: Resultados del seguimiento de la persona mientras se desplaza lateralmente (3/3).
143
Figura 3.54: Resultados del seguimiento de la persona mientras se desplaza lateralmente (1/2).
144
Figura 3.54: Resultados del seguimiento de la persona mientras se desplaza lateralmente (2/2).
145
Figura 3.55: Resultados del seguimiento de la persona mientras se desplaza lateralmente (1/3).
146
(f) Contin
ua con el movimiento.
Figura 3.55: Resultados del seguimiento de la persona mientras se desplaza lateralmente (2/3).
147
Figura 3.55: Resultados del seguimiento de la persona mientras se desplaza lateralmente (3/3).
148
3.6.6
Giros.
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.
149
Figura 3.56: Resultados del seguimiento mientras la persona gira el torso lateralmente (1/3).
150
Figura 3.56: Resultados del seguimiento mientras la persona gira el torso lateralmente (2/3).
151
Figura 3.56: Resultados del seguimiento mientras la persona gira el torso lateralmente (3/3).
152
Figura 3.57: Resultados del seguimiento de la persona mientras realiza un giro completo (1/5).
153
Figura 3.57: Resultados del seguimiento de la persona mientras realiza un giro completo (2/5).
154
(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
Figura 3.57: Resultados del seguimiento de la persona mientras realiza un giro completo (4/5).
156
Figura 3.57: Resultados del seguimiento de la persona mientras realiza un giro completo (5/5).
157
3.6.7
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
158
(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
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.
Figura 3.59: Resultados del seguimiento de la persona mientras realiza movimientos verticales hacia
arriba (1/2).
161
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
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
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
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
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.
(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
171
R = 26.77
mG = 185.72
G = 30.41
mB = 151.11
B = 25.68
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
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
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:
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.
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:
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
B.2
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
B.3
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
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
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
B.5
//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
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
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
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];
191
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
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
B.11
//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
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