Está en la página 1de 212

1

INSTITUTO TECNOLGICO Y DE ESTUDIOS SUPERIORES DE


MONTERREY
RECTORA ZONA CENTRO
MAESTRA EN CIENCIAS DE LA INGENIERA

DESARROLLO E IMPLEMENTACIN DE
ALGORITMOS PARA EL SISTEMA DE PERCEPCIN Y
LOCALIZACIN DE LOS ROBOTS BOGOBOTS

TESIS PARA OPTAR POR EL GRADO DE MAESTRO EN CIENCIAS DE


LA INGENIERA

LUCIA BARRERA TOVAR


Asesor:
Comit de Tesis:

Dr. ALEJANDRO ACEVES LPEZ


Dr. MIGUEL GONZLEZ MENDOZA (ITESM-CEM)
Dr. JESS SAVAGE CARMONA (UNAM)
Dr. JUAN MANUEL IBARRA ZANNATHA
(CINVESTAV)

Atizapn de Zaragoza, Edo. Mx., 26 de Abril de 2010.

Resumen
En los ltimos aos el campo de la robtica ha crecido considerablemente. Se han
desarrollado nuevas tecnologas para mejorar los sistemas de visin, localizacin,
exploracin, navegacin y comunicacin en diversas reas de aplicacin. Uno de los
requisitos ms fuertes se ha generado en el campo de la visin, a travs del cual el robot
determina parmetros tiles como son la orientacin, distancia o color de objetos en el medio
ambiente. Posteriormente esta informacin es utilizada por el sistema de localizacin para
tomar decisiones adecuadas con respecto a la posicin que guarda en el entorno y ejecutar
acciones.
Este trabajo de tesis surge como parte de la labor que se lleva a cabo en el Proyecto
Humanoide, en los robots que llevan por nombre Bogobots. El proyecto pertenece a la
Ctedra de Investigacin en Control Avanzado, Adaptable e Inteligente del Campus Estado
de Mxico.
RoboCup es una iniciativa internacional cuyo principal objetivo busca impulsar la
investigacin en inteligencia artificial y robtica a travs de la aplicacin e integracin de
diferentes soluciones tecnolgicas alrededor de un problema comn: encuentros de ftbol
soccer. La visin de esta organizacin es desarrollar un equipo de humanoides completamente
autnomos que compita con el equipo campen de la FIFA y le gane. Para lograr este
objetivo, RoboCup se divide en 4 reas de investigacin: RoboCupSoccer, RoboCupRescue,
RoboCup@Home y RoboCupJunior [32].
El rea en la cual se enfoca esta tesis es RoboCupSoccer, la cual se subdivide en cinco
categoras, entre ellas la categora Humanoide. Esta es una de las categoras ms dinmicas y
cercanas al objetivo planteado para el 2050. La categora Humanoide se divide en dos clases:
KidSize (30-60 cm de altura) y TeenSize (100-160 cm de altura). Los algoritmos propuestos
toman en cuenta el ambiente proyectado por las reglas de la primera categora.
El objetivo final de este proyecto de investigacin consiste en que los algoritmos de
percepcin y localizacin sean funcionales y mejoren el desempeo los robots Bogobots en
las prximas competencias.
Para el logro de esta meta se utiliza el software de MATLAB, el cual tambin funge
como un excelente apoyo para la creacin de la interfaz grfica que contribuye a visualizar

3
los resultados. Otra de las herramientas utilizadas fue una cmara web Live! Cam Vista
VF0420 de la marca Creative. La cmara se conecta por puerto USB a la computadora y en
conjunto con el toolbox Image Acquisition de Matlab se procede con la captura de imgenes.
Esta ser la primera de las seis etapas que al agruparse conforman los procesos de bajo, medio
y alto nivel en el procesamiento de imgenes. A continuacin se describen las etapas estas
etapas.
Adquisicin de imgenes a travs de la cmara web y MATLAB: Se realiza a travs del
toolbox Image Acquisition. Los programas desarrollados permiten tomar las fotos requeridas
y despus evaluar cules de ellas tienen mejor calidad para determinar los umbrales de
anlisis.
Clasificacin de color: Se probaron dos tcnicas. La primera se refiere al uso de
superficies implcitas en el espacio de color RGB. Esta tcnica genera tablas de bsqueda
para cada componente a travs de los pixeles encerrados dentro de formas geomtricas
especiales creadas a partir de una funcin matemtica particular que consiste en unir esferas.
La segunda se realiza a travs de seis umbrales de evaluacin para cada una de las
componentes del espacio HSI. El espacio HSI a diferencia del RGB separa la informacin del
color en formas comprensibles para el ojo humano, siendo H la componente relacionada con
el tono, S la saturacincmo se diluye el color con la luz blanca e I, la intensidad o
cantidad de luz que posee un color. Debido a que las cmaras captan imgenes en el espacio
RGB o YUV, se recurri a conversiones entre espacios de color, de tal forma que la imagen
captada por la cmara pasa por un proceso de conversin al espacio HSI.
Segmentacin: Recibe como entrada principal el resultado de la clasificacin de color.
Se probaron diversas tcnicas tanto con las superficies implcitas en RGB como con los
umbrales en HSI. Dentro de estas tcnicas se encuentran: procesamiento rengln por rengln,
crecimiento de regiones a partir de pixeles semilla y procesamiento a travs de lneas de
escaneo. Para este ltimo se proponen dos diferentes mtodos para la creacin de las lneas.
Representacin y descripcin de las regiones: Se extrae informacin importante de las
regiones segmentadas tal como el rea que abarcan los pixeles dentro de la regin, el
centroide de esta rea y el color al que pertenecen. Para realizar esta extraccin se emplea
una conversin a imgenes binarias para poder etiquetar y clasificar las regiones encontradas.
Identificacin de objetos y estimacin de relaciones espaciales: El resultado de la
extraccin de caractersticas, en las regiones encontradas, abre paso a poder identificar los
objetos a partir de la tcnica de rboles de decisin. Estos rboles de decisin toman en cuenta
las caractersticas de los objetos determinadas por las reglas de la categora. Al conocer la
dimensin real y la cantidad de pixeles en la imagen que forman esa dimensin es posible

4
establecer una relacin paramtrica que permita, por medio de un muestre, ajustar los valores
a una funcin. El ajuste se logra a travs de la tcnica de mnimos cuadrados con lo cual se
obtienen ciertas constantes que permiten la generalizacin del mtodo y que en cada
fotografa adquirida en la cual se refleje un objeto conocido en el ambiente de la competencia
se pueda estimar la distancia entre l y el robot.
Localizacin del robot (cmara) en el campo: Al conocer la distancia de dos objetos
fijos, como es el caso de las porteras y los postes, se utiliza la tcnica de triangulacin que
por medio de los ngulos formados entre los objetos y la distancia a la cual se ubican, puede
estimarse la posicin del robot.
El experimento final consiste en trazar una trayectoria real que permite verificar la
efectividad de los algoritmos desarrollados al obtener una diferencia entre la trayectoria
deseada y la obtenida realmente. Todo esto a travs de la interfaz grfica generada en
MATLAB.

Contenido
Captulo 1 .............................................................................................................................................. 13
1

INTRODUCCIN ........................................................................................................................ 13
1.1

PROYECTO HUMANOIDE CAMPUS ESTADO DE MXICO ....................................... 14

1.2

DESCRIPCIN DEL AMBIENTE ...................................................................................... 18

1.2.1

DESCRIPCIN DE ELEMENTOS .............................................................................. 18

1.2.2

DESARROLLO DE UN ENCUENTRO ...................................................................... 21

1.2.3

REGLAS DEL PARTIDO ............................................................................................ 22

1.2.4

CARACTERSTICAS DEL BOGOBOT ..................................................................... 23

1.3

MOTIVACIN ..................................................................................................................... 24

1.4

OBJETIVOS ......................................................................................................................... 25

1.5

CONSIDERACIONES IMPORTANTES DEL DOMINIO Y TESIS .................................. 26

1.6

ORGANIZACIN DE LA TESIS ........................................................................................ 26

Captulo 2 .............................................................................................................................................. 28
2

MARCO TEORICO ...................................................................................................................... 28


2.1

CONCEPTOS SOBRE EL PROCESAMIENTO DE IMGENES .................................... 28

2.1.1

Etapas del procesamiento de imgenes ......................................................................... 29

2.1.2

Nociones bsicas sobre imgenes.................................................................................. 30

2.1.3

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

2.1.4

La iluminacin como factor clave en el procesamiento de imgenes ........................... 37

2.2
PROCESAMIENTO NIVEL BAJO: ADQUISICIN DE
IMGENES
EN MATLAB.................................................................................................................................... 39
2.2.1

Proceso para adquirir imgenes en MATLAB .............................................................. 39

2.3
PROCESAMIENTO NIVEL INTERMEDIO: CLASIFICACIN DE COLOR Y
SEGMENTACIN ........................................................................................................................... 43

2.3.1

Clasificacin de color .................................................................................................... 44

2.3.2

Segmentacin ................................................................................................................ 49

2.3.3

Representacin y descripcin de las regiones ............................................................... 53

2.3.4

Representacin y caracterizacin de imgenes binarias ................................................ 55

2.4

Procesamiento de alto nivel: Identificacin de objetos y estimacin de relaciones espaciales


56

2.5

SISTEMAS DE LOCALIZACIN....................................................................................... 58

CLASIFICACION DE COLOR.................................................................................................... 60
3.1

Superficies implcitas ............................................................................................................ 61

3.1.1

Construccin del algoritmo ........................................................................................... 62

3.1.2

Programacin en MATLAB .......................................................................................... 68

6
3.1.3
3.2

Pruebas y resultados obtenidos...................................................................................... 71

Determinacin de umbrales simples en el espacio HSI......................................................... 75

3.2.1

Algoritmo en MATLAB................................................................................................ 76

3.2.2

Pruebas experimentales y resultados ............................................................................. 78

3.3

Observaciones respecto a los criterios de clasificacin de color ........................................... 82

Captulo 4 .............................................................................................................................................. 83
4

SEGMENTACIN ....................................................................................................................... 83
4.1

Procesamiento rengln por rengln....................................................................................... 84

4.1.1
4.2

Crecimiento de regiones a travs de una semilla .................................................................. 87

4.2.1
4.3

Algoritmo de construccin procesamiento rengln por rengln ................................... 85


Algoritmo de construccin para crecimiento de regiones a partir de un pixel semilla . 89

Crecimiento de regiones a partir de lneas de escaneo ......................................................... 91

4.3.1

Sistema Coordenado ...................................................................................................... 92

4.3.2

Lnea de Horizonte ........................................................................................................ 93

4.3.4

Algoritmos de construccin para generar las lneas de escaneo .................................... 94

4.3.5

Algoritmos de construccin para los dos tipos de lneas de escaneo ............................ 96

4.3.6
Algoritmos de construccin para el crecimiento de regiones a partir de semillas
obtenidas por lneas de escaneo..................................................................................................... 97
4.4

Resultados obtenidos para cada tcnica ................................................................................ 98

4.4.1

Procesamiento rengln por rengln ............................................................................... 99

4.4.2

Crecimiento de regiones por pixel semilla .................................................................. 101

4.4.3

Crecimiento de regiones por lneas de escaneo ........................................................... 105

4.5

Conclusiones para la etapa de segmentacin ...................................................................... 111

Captulo 5 ............................................................................................................................................ 112


5

IDENTIFICACIN DE OBJETOS ............................................................................................ 112


5.1

Criterios para identificacin de los objetos ......................................................................... 112

5.1.1

Identificacin de porteras ........................................................................................... 113

5.1.2

Identificacin de los beacons ...................................................................................... 114

5.1.3

Identificacin de la pelota ........................................................................................... 116

5.2

Calculo de dimensiones espaciales...................................................................................... 118

5.2.1

Aproximacin de la distancia por muestreo e interpolacin ....................................... 118

5.2.2

Resultados para las dimensiones espaciales de cada objeto ........................................ 123

5.3

Algoritmo para la identificacin de objetos y estimacin de distancias ............................. 125

5.4

Conclusiones para la etapa de identificacin y estimacin de distancias ............................ 128

Captulo 6 ............................................................................................................................................ 129


6

SISTEMA DE LOCALIZACIN ............................................................................................... 129


6.1

Metodologa para el algoritmo de triangulacin ................................................................. 129

6.2

Rutina de procesamiento para realizar la triangulacin ...................................................... 131

6.3

Algoritmo para mostrar la trayectoria ................................................................................. 133

6.4

Resultados obtenidos para el sistema de Localizacin ........................................................ 133

Captulo 7 ............................................................................................................................................ 138

7
7

ALGORITMO Y EXPERIMENTO FINAL ............................................................................... 138


7.1

Experimento final ................................................................................................................ 139

Captulo 8 ............................................................................................................................................ 144


8

CONCLUSIONES Y TRABAJO FUTURO ............................................................................... 144

ANEXO A ........................................................................................................................................... 146


9
10

ALGORITMOS........................................................................................................................... 146
REFERENCIAS ...................................................................................................................... 210

Lista de Figuras
Figura 1.1 Diseo en CAD del prototipo Mayra ...................................................................... 15
Figura 1.2 Se muestran cinco posturas generadas por una persona que inicia un caminado
hacia adelante partiendo de una postura erguida ...................................................................... 15
Figura 1.3 Modelo Vitruvian-MAYRA. ................................................................................... 16
Figura 1.4 Robonova modificado con cmara cmucam3 y procesador dsPIC. ........................ 17
Figura 1.5 Bogobot 1 (Graz Austria, 2009) .............................................................................. 18
Figura 1.6 Campo de juego (No escalado). Imagen tomada de [31] ........................................ 19
Figura 1.7 Porteras [31] ........................................................................................................... 19
Figura 1.8 Lneas de la cancha [31].......................................................................................... 20
Figura 1.9 Vista del campo con porteras y postes. Objetos fijos. [30] .................................... 20
Figura 1.10 a) Beacon1 b) Pelota c) Beacon2 d) Portera amarilla e) Portera azul ................. 21
Figura 1.11 Dimensiones reglamentarias del Robot [31] ......................................................... 23
Figura 2.1 Diagrama proceso de adquisicin y anlisis de imgenes propuesto por Gonzlez &
Woods [13] ............................................................................................................................... 29
Figura 2.2 Pixeles como arreglos de columnas y renglones. .................................................... 31
Figura 2.3 Extraccin de pixeles de una imagen binaria [19] .................................................. 31
Figura 2.4 Representacin del espacio RGB. Imagen tomada de [36] ..................................... 33
Figura 2.5 Representacin del espacio HSI. Imagen tomada de [36]....................................... 34
Figura 2.6 Modelo de color basado en una luz que incide en una superficie y dicha superficie
lo refleja .................................................................................................................................... 37
Figura 2.7 Proceso de adquisicin de imgenes en MATLAB ................................................ 40
Figura 2.8 Resultado obtenido a partir de la funcin imaqhwinfo en MATLAB ..................... 41
Figura 2.9 Extraccin de pixeles muestra para definir los umbrales a) Imagen RGB con la
seleccin de pixeles a travs de MATLAB c) Pixeles seleccionados en el espacio RGB c)
Conversin y seleccin de pixeles en espacio HSI................................................................... 44
2.10 Esquema para clasificacin de color y segmentacin de imagen ..................................... 45
Figura 2.11 Volumen que define un subespacio de color bajo seis umbrales .......................... 46
Figura 2.12 Ejemplo de imgenes obtenidas en las pruebas entre cmaras bajo diversas
condiciones de iluminacin. a) Imagen en laboratorio cae en la clasificacin de imagen oscura
b) Imagen con ms brillo e iluminacin natura, pero con bajo contraste ................................. 47
Figura 2.13 a) Ejemplo conectividad 4. b) Ejemplo conectividad 8 ........................................ 50
Figura 2.14 Mscara general de 3x3 ......................................................................................... 50
Figura 2.15 Mscara empleada para detectar diferentes puntos aislados en un fondo constante
[13] ........................................................................................................................................... 51
Figura 2.16 Mscaras de lnea. a) Horizontal. b) +45. c) Vertical. d) -45. [13] .................... 51
Figura 2.17 a) Resultado operador de Sobel. b) Resultado con operador Canny. c) Imagen
original ...................................................................................................................................... 52

9
Figura 2.18 a) Regiones encontradas b) Etiquetado de esas regiones ...................................... 56
Figura 3.1 a) Nube de pixeles representadas por elipses b) Nube de pixeles representadas por
esferas c) Imagen a partir de la cual se tomaron las muestras de color .................................... 61
Figura 3.2 Datos y centros obtenidos a partir del ejemplo de K-means ................................... 64
Figura 3.3 a) Superficie con fusin grande b) Superficie con fusin pequea ......................... 65
Figura 3.4 Representacin de micro cubos alineados en direccin z y y ................................. 67
Figura 3.5 Proceso para formar tablas de bsqueda a travs del algoritmo de superficies
implcitas .................................................................................................................................. 68
Figura 3.6 Seleccin de muestras a travs de roipoly(f) ........................................................... 69
Figura 3.7 Representacin grfica. Izquierda: Muestras seleccionadas. Derecha: Esferas
resultantes ................................................................................................................................. 70
Figura 3.8 Muestra de pixeles seleccionados. .......................................................................... 72
Figura 3.9 Esferas creadas a partir de n-clusters. Izquierda: seis clusters, resultado esferas de
mayor tamao. Derecha: doce clusters ..................................................................................... 72
Figura 3.10 Esferas para clases de color azul, amarillo y naranja ............................................ 73
Figura 3.11 Diferencia entre imgenes en RGB y HSI. Derecha: RGB. Izquierda: HSI ......... 75
Figura 3.12 Proceso para la obtencin de rangos HSI.............................................................. 76
Figura 3.13 Extraccin de muestras en HSI a) Imagen tomada con Live!Creative b) Imagen
tomada con VGPVCC2 de Sony .............................................................................................. 77
Figura 3.14 Histogramas obtenidos a partir de la seleccin de muestras en el espacio HSI. a)
Muestras de color naranja b) Muestras de color azul ............................................................... 78
Figura 3.15 Adquisicin de imgenes bajo diferentes condiciones de iluminacin. a) Imagen
tomada en el laboratorio con luz artificial. b) Imagen tomada en una casa con luz natural ..... 80
Figura 3.16 Imgenes para revisar componente H. a) Pelota bajo iluminacin natural b) Pelota
bajo iluminacin artificial......................................................................................................... 81
Figura 4.1 Proceso de conversin a imagen binaria y etiquetado de regiones para obtener cajas
de limitacin y caractersticas................................................................................................... 86
Figura 4.2 Segmentacin de Beacon1. a) Regiones limitadas por cajas blancas. b) Regiones
limitadas por cuadros del color de clase a la que pertenecen ................................................... 87
Figura 4.3 Problemas al contar solo con una semilla para el crecimiento de regiones ............ 88
Figura 4.4 Seleccin de pixel semilla con la funcin getpts .................................................... 90
Figura 4.5 Regin segmentada y el contorno de la regin en caja de limitacin .................... 90
Figura 4.6 Sistema Coordenado para Campo ........................................................................... 92
Figura 4.7 Sistema coordenado para la cmara ........................................................................ 93
Figura 4.8 Sistema coordenado para Imagen............................................................................ 93
Figura 4.9 Clculo del horizonte a partir de la interseccin entre el plano de proyeccin P y el
plano H paralelo al campo ........................................................................................................ 94
Figura 4.10 Primer mtodo para formar el patrn de lneas de escaneo utilizado para
superficies implcitas ................................................................................................................ 95
Figura 4.11 Segundo mtodo para aplicar el patrn de escaneo .............................................. 96
Figura 4.12 Imgenes para las pruebas de segmentacin por crecimiento de regiones a partir
de una matriz de semillas.......................................................................................................... 98
Figura 4.13 Segmentacin a partir de semilla color naranja y verde. Tiempo de proceso 31
segundos ................................................................................................................................. 102

10
Figura 4.14 Segmentacin a partir de semilla color verde y azul. Tiempo de proceso 122
segundos ................................................................................................................................. 102
Figura 4.15 Patrones de escaneo para ambos criterios de color. Tomando como ejemplo el
beacon2................................................................................................................................... 105
Figura 5.1 Ejemplos de la representacin de cajas de limitacin ........................................... 113
Figura 5.2 Reglas de identificacin para las porteras ............................................................ 114
Figura 5.3 Reglas de identificacin para beacons .................................................................. 116
Figura 5.4 Imagen de la pelota tomada a 1.70 cm que equivale a 484 pixeles en la imagen 117
Figura 5.5 Reglas para identificar la pelota ............................................................................ 117
Figura 5.6 Diagrama de proyeccin de los objetos sobre el plano de la imagen. d es la
distancia real del objeto y Dx Dy son las medidas de los objetos en pixeles ........................... 118
Figura 5.7 Comparacin entre las muestras y curva que aproxima del beacon1 ................... 124
Figura 5.8 Comparacin entre las muestras y curva que aproxima de la portera amarilla.... 124
Figura 5.9 Comparacin entre las muestras y curva que aproxima para la pelota ................. 124
Figura 5.10 Resultados del programa de identificacin de objetos para beacon1 y portera
amarilla ................................................................................................................................... 126
Figura 5.11 Resultados de identificacin de objetos y estimacin de distancia para la pelota
................................................................................................................................................ 127
Figura 5.12 Resultados de identificacin de objetos y estimacin de distancia para beacon2 y
portera azul ............................................................................................................................ 127
Figura 6.1 Esquema de triangulacin ..................................................................................... 129
Figura 6.2 Cancha en Matlab con ejes de referencia y sentido en el cual deben introducirse los
objetos fijos identificados para llevar a cabo el proceso de triangulacin ............................. 131
Figura 6.3 Resultados del sistema de localizacin a partir de la identificacin de portera
amarilla y beacon2.................................................................................................................. 133
Figura 6.4 Imagen de la trayectoria real ................................................................................. 134
Figura 6.5 Trayectoria Real (asteriscos) Vs. Trayectoria Estimada (crculos) ....................... 137
Figura 7.1 Ejemplo de la interfaz grfica generada por el algoritmo final, completafotos .... 139
Figura 7.2 Imagen de la trayectorial real ................................................................................ 140
Figura 7.3 Resultados grficos para P1 .................................................................................. 141
Figura 7.4 Resultados grficos para P3 .................................................................................. 142
Figura 7.5 Resultados grficos para P5 .................................................................................. 142
Figura 7.6 Trayectoria Real (asteriscos) Vs. Trayectoria Estimada (crculos) ....................... 143

11

Lista de Tablas
Tabla 1-1Dimensiones de la cancha en cm .............................................................................. 19
Tabla 3-1 Ejemplo de datos para Clasificacin K-means......................................................... 62
Tabla 3-2. Centros iniciales ...................................................................................................... 63
Tabla 3-3 Resultado de distancias y pertenencias para ejemplo de K-means .......................... 63
Tabla 3-4 Ejemplo de tabla de bsqueda .................................................................................. 66
Tabla 3-5 Etiquetas de color asignadas para cada clase ........................................................... 70
Tabla 3-6 Resultado de experimentos con diversos valores de rho y mltiplo de sigma......... 73
Tabla 3-7 Ejemplo de Tabla reducida para la clase de color azul, cuyo orden es RGB ........... 74
Tabla 3-8 Datos generados para la tabla de bsqueda .............................................................. 75
Tabla 3-9 Ejemplo de la tabla obtenida a partir del anlisis de histogramas en el espacio HSI
.................................................................................................................................................. 78
Tabla 3-10 Rangos HSI para cada clase de color ..................................................................... 79
Tabla 3-11 Relacin No. de muestras y tiempo de procesamiento para rangos en HSI ........... 79
Tabla 3-12 Comparacin de valores obtenidos para las componentes HSI bajo diferentes
condiciones de iluminacin ...................................................................................................... 80
Tabla 3-13 Resultado de rangos al evaluar ls fotografas con el programa RoiPoly_HSI........ 81
Tabla 4-1 Combinaciones de algoritmos para el proceso de segmentacin ............................. 84
Tabla 4-2 Combinacin entre los tipos de lneas de escaneo y las clasificaciones de color .... 96
Tabla 4-3 Comparativo de resultados arrojados por la tcnica de procesamiento rengln por
rengln utilizando ambos criterios de color, Tabla de bsqueda y superficies implcitas vs.
Conversin de RGB a HSI clasificada en regiones cbicas ................................................... 100
Tabla 4-4 Comparativo de tiempos a partir del procesamiento rengln por rengln ............. 101
Tabla 4-5 Comparativo de resultados arrojados por la tcnica de crecimiento de regiones con
un pixel semilla utilizando ambos criterios de color, Tabla de bsqueda y superficies
implcitas vs. Conversin de RGB a HSI clasificada en regiones cbicas ............................. 103
Tabla 4-6 Comparativo de tiempos a partir del crecimiento de regiones por un pixel semilla
................................................................................................................................................ 104
Tabla 4-7 Comparativo de tiempos para diferentes tomas del objeto Pelota ......................... 104
Tabla 4-8 Tiempos obtenidos para generar la matriz semilla con cada patrn y clasificador de
color ........................................................................................................................................ 105
Tabla 4-9 Resultados de segmentacin del crecimiento de regiones con lneas de escaneo
Tipo I ...................................................................................................................................... 107
Tabla 4-10 Tiempos obtenidos para la tcnica de crecimiento de regiones con lneas de
escaneo tipo I .......................................................................................................................... 108
Tabla 4-11 Resultados de la segmentacin usando ambos criterios de color ......................... 109
Tabla 4-12 Tiempos de procesamiento para la segmentacin por medio de crecimiento de
regiones................................................................................................................................... 110
Tabla 4-13 Resumen de los tiempos obtenidos para cada tcnica de segmentacin .............. 111

12
Tabla 5-1 Muestreo de distancia y dimensiones en la imagen capturada a esa distancia para las
porteras .................................................................................................................................. 120
Tabla 5-2 Muestreo de distancia y dimensiones en la imagen capturada a esa distancia para los
beacons ................................................................................................................................... 121
Tabla 5-3 Muestreo de distancia y dimensiones en la imagen capturada a esa distancia para la
pelota ...................................................................................................................................... 122
Tabla 5-4 Parmetros a y b obtenidos mediante la interpolacin y aproximacin por mnimos
cuadrados para cada objeto ..................................................................................................... 123
Tabla 6-1 Posiciones conocidas de los objetos determinadas con el eje de referencia definido
y las caractersticas del campo de juego ................................................................................. 132
Tabla 6-2 Caractersticas de la Trayectoria Real .................................................................... 134
Tabla 6-3 Imgenes adquiridas para obtener la trayectoria deducida por el instrumento de
adquisicin .............................................................................................................................. 135
Tabla 7-1 Caractersticas de la Trayectoria Real .................................................................... 139
Tabla 7-2 Posiciones para la trayectoria estimada.................................................................. 143

13

Captulo 1
1 INTRODUCCIN

Este trabajo de tesis surge como parte de la labor que se lleva a cabo con los Bogobots. Se
enfoca a los requerimientos en el rea de visin artificial para la generacin de algoritmos de
percepcin y localizacin que les permitan obtener y procesar de una forma ms efectiva la
informacin de su entorno y tomar decisiones que se concreten en acciones. Todo esto en el
ambiente de las competencia de RoboCup. El Proyecto Humanoide pertenece a la Ctedra de
Investigacin en Control Avanzado, Adaptable e Inteligente del Campus Estado de Mxico
RoboCup es una iniciativa internacional cuyo principal objetivo es impulsar la
investigacin en inteligencia artificial y robtica a travs de la aplicacin e integracin de
diferentes soluciones tecnolgicas alrededor de un problema comn: encuentros de ftbol
soccer. La visin de esta organizacin es desarrollar un equipo de humanoides completamente
autnomos que compita con el equipo campen de la FIFA y le gane. Para lograr este
objetivo, RoboCup se divide en 4 reas de investigacin: RoboCupSoccer, RoboCupRescue,
RoboCup@Home y RoboCupJunior [32].
Este trabajo de tesis est enfocado al rea de RoboCupSoccer, la cual se subdivide en
cinco categoras, entre ellas la categora Humanoide. Estos robots autnomos cuentan con
estructuras similares al cuerpo humano, cabeza, torso y extremidades inferiores y superiores.
Compiten dos equipos conformados por tres integrantes cada uno y el equipo victorioso ser
aqul que anote ms goles. Adicionalmente a estas competencias de soccer, tambin se llevan
a cabo retos tcnicos. La categora humanoide se divide en dos clases KidSize (30-60 cm de
altura) y TeenSize (100-160 cm de altura). Entre los temas de investigacin que se busca
desarrollar, mejorar e implementar se encuentran: caminata dinmica, carrera, patear la pelota
manteniendo el balance, percepcin visual de los objetos que forman parte del juego (otros
jugadores, porteras, el campo y la pelota), sistemas de auto localizacin y trabajo en equipo
[18].
A pesar de que el primer torneo de RoboCup se realiz en 1997, la liga humanoide
vio la luz hasta el ao 2002. Los primeros robots que compitieron fueron sometidos a retos de
caminado o tandas de penales e incluso se permita el control remoto de los mismos. Con el

14
tiempo las categoras adquirieron forma y las reglas restringieron muchos aspectos tcnicos
antes permitidos, todo esto con el objetivo de alcanzar la meta propuesta para el 2050 y
construir humanoides cada vez ms autnomos y similares en comportamiento al humano.
Por ejemplo, a partir del 2008 la torsin de 360 se restringi al giro normal de un humano, es
decir 180 y las competencias de tres contra tres iniciaron. A partir de este momento dos tipos
diferentes de programacin se requirieron, una para portero y otra para jugadores en busca de
anotar gol.
Es en el 2008 que por primera vez particip el equipo del Tecnolgico de Monterrey,
Campus Estado de MxicoBogobotsquedando en dcimo segundo lugar en la categora
KidSize y en sptimo en la categora TeenSize. Para llegar a este punto y lograr un mejor
lugar en las competencias del 2009 (sptimo lugar en KidSize) el proyecto humanoide
atraves un largo proceso de evolucin que se describir en la siguiente seccin.

1.1

PROYECTO HUMANOIDE CAMPUS ESTADO DE MXICO

El proyecto humanoide pertenece a la Ctedra de Investigacin en Control Avanzado,


Adaptable e Inteligente del Campus Estado de Mxico y fue autorizado desde 2004 para ser
apoyado con fondos propios de la institucin, los cuales que se han renovado cada ao hasta
la fecha. Los tres grandes objetivos de este proyecto son:
Construir un robot de dimensiones comparables al ser humano, capaz de
interactuar con l y ayudarlo en tareas cotidianas.
El robot debe ser completamente autnomo, capaz de desplazarse sobre
diferentes superficies as como de manipular y transportar objetos.
Establecer una plataforma de alto grado de dificultad para estudiantes de reas
afines (electrnica, mecnica y computacin) tanto a nivel licenciatura como
posgrado.

En el 2004 se inici la construccin del primer prototipo bpedo, llamado MAYRA, el


cual fue diseado y construido en aluminio, con servo-motores comerciales y una altura de
cincuenta centmetros. Su fuente de alimentacin y su procesador estaban embarcados,
dotndolo de autonoma, y se desarrollaron los algoritmos necesarios para caminar en lnea
recta en superficies lisas y sin inclinacin. Dentro de los logros cientficos se destacan la
resolucin analtica de las ecuaciones de cinemticas inversa y el desarrollo de los clculos de
trayectorias semicirculares de cada pie para lograr equilibrio esttico. Estos resultados fueron

15
publicados en [38] y fueron objeto del trabajo de tesis del actual maestro en ciencias Ral
Serna Hernndez cuya tesis fue defendida en enero del 2005 [37].

Figura 1.1 Diseo en CAD del prototipo Mayra

Durante el 2005, se hicieron recomendaciones con objeto de modificar la forma de la


planta del pie del prototipo MAYRA y hacer un caminado ms estable, gracias la
combinacin de informacin proveniente de la captura de movimientos de caminado real de
seres humanos (Human-Motion Captured Data) y a las tcnicas clsicas de caminata de
humanoides con equilibrio estticamente estable [26]. El resultado de estos estudios fue
demostrar la posibilidad de simplificar el algoritmo de control requerido [25].

Figura 1.2 Se muestran cinco posturas generadas por una persona que inicia un caminado hacia
adelante partiendo de una postura erguida

El propsito de los trabajos de investigacin desarrollados en el 2006 fue obtener un


modelo dinmico del bpedo MAYRA y el diseo de una ley de control para lograr el
movimiento basado en una tcnica de caminado con balanceo. Como resultado se desarroll
el modelo llamado Vitruvian-MAYRA y los resultados del control, as como la
recomendacin de servomotores ms adecuados, fueron reportados a detalle en [10-11] y
fueron el objeto de investigacin de la tesis de maestra de Enrique Gonzlez quien defendi
su trabajo en el 2007 [9]

16

Figura 1.3 Modelo Vitruvian-MAYRA.

En el 2007 se incorporan al proyecto tres estudiantes destacados de la carrera de


ingeniera mecatrnica que previamente haban participado y logrado excelentes resultados en
torneos de robtica. En ese ao se logr la construccin de dos prototipos de humanoides
pequeos (30cm de alto) totalmente autnomos y basados en piezas de los kits comerciales
ROBONOVA [40] [16] y LYNXMOTION [23], incluyendo una cmara CMUCAM2 [33],
una brjula electrnica y un microprocesador central. Los algoritmos de caminado
mencionados anteriormente fueron implementados de manera satisfactoria y se lograron las
primeras acciones integradas de alto nivel, tales como reconocer una pelota naranja, acercarse
y patearla en una direccin establecida.
Se comenz la modificacin de la estructura mecnica del ROBONOVA para
incorporar los movimientos del cuello y la instalacin de sensores (giroscopio, acelermetros,
brjula). Con este prototipo se llev a cabo la primera aplicacin de un jugador de ftbol con
comportamiento de delantero y posteriormente con comportamiento de portero utilizando en
todo momento los recursos embarcados del robot y sin hacer uso de computadora externa.
Posteriormente se inici el diseo y construccin de un humanoide basado en piezas
de LYNXMOTION incluyendo mejoras en la estructura mecnica, incrementando el nmero
de grados de libertad, colocando servomotores ms potentes y desarrollando una tarjeta de
procesamiento central basado en un DSPIC de montaje superficial. La ventaja de estas
modificaciones fue la obtencin de robots ms rpidos y con mejores capacidades para jugar
ftbol.
Para este prototipo, llamado Bogobot se desarroll un modelo geomtrico utilizando
el software de diseo ProEngineering y se obtuvo un robot virtual modelado con tcnicas de
realidad virtual as como un modelo cinemtico basado en el mtodo de D-H con los que se
desarroll un excelente simulador. Adems se aplicaron los algoritmos desarrollados en los

17
trabajos en el rea de visin computacional que se haban publicados previamente en el 2004
en [3] y posteriormente en un captulo de libro [4].
El diseo del mecanismo de movimiento de la cabeza, la electrnica de control de
servomotores y la tarjeta de procesamiento central fueron desarrollados y reportados en el
Team Description Paper sometido al comit organizador de RoboCup para lograr la
clasificacin a las competencias del 2008 en la categora de humanoides KidSize [1]

Figura 1.4 Robonova modificado con cmara cmucam3 y procesador dsPIC.

Desde el 2008 y hasta la fecha, se trabaja en la integracin de algoritmos de


segmentacin robusta de colores, localizacin, planeacin de movimiento, comunicacin
entre robots y cooperacin.
Como resultado de estos trabajos, se logr la clasificacin y participacin en las
competencias de robtica humanoide en la categora de humanoides KidSize y TeenSize en
RoboCup celebradas en Julio de 2008 en Suzhou, China, donde se obtuvo un dcimo segundo
lugar en la categora KidSize y sptimo lugar en TeenSize.
Con la experiencia del torneo del 2008, las mejoras en los algoritmos y los avances
electrnicos logrados en el ltimo ao, se clasific nuevamente a las competencias de
humanoides de RoboCup celebradas en junio 2009 en Graz, Austria, en donde se obtuvo el
sptimo lugar.

18

Figura 1.5 Bogobot 1 (Graz Austria, 2009)

1.2

DESCRIPCIN DEL AMBIENTE

Este trabajo se ha desarrollado considerando las reglas del 2009. Cabe destacar que las reglas
del juego de la categora de los robots humanoides se actualizan ao con ao y es posible que
a la fecha en que se presente esta tesis se haya publicado la versin 2010 de las reglas. A
continuacin se esbozan los principales componentes de la Liga de Robots Humanoides en la
categora KidSize [31] la cual incluye robots con una altura de 30 a 60 cm. Esto permitir
comprender los factores que dictaminan el diseo de los algoritmos, la toma de decisiones y
los requerimientos que se deben cumplir.

1.2.1 DESCRIPCIN DE ELEMENTOS


Un partido se desarrolla en un terreno similar al campo de ftbol para los humanos, pero de
menor tamao. Cuenta con dos porteras, dos postes en la mitad del campo, lneas que definen
reas importantes del campo y seis marcas a lo largo de la cancha.
Todos los objetos dentro del ambiente en el que se desenvuelve el robot cuentan con
un patrn de color definido y dimensiones. Estos parmetros contribuyen a una identificacin
ms simple y veloz de los objetos con base a forma y color. A continuacin se presenta una
descripcin de los elementos que componen este ambiente.
El campo est cubierto por una alfombra color verde en la cual se dibujan las franjas
que delimitan las diferentes zonas que componen el campo. En la tabla 1.1 se presentan sus
dimensiones.

19

Figura 1.6 Campo de juego (No escalado). Imagen tomada de [31]


Tabla 1-1Dimensiones de la cancha en cm
KidSize
A
B
C
D
E
F
G
H
I
J
K

Longitud del campo


Ancho del campo
Profundidad portera
Ancho portera
Longitud rea de gol
Ancho rea de gol
Marca de la distancia de penal
Marca de reinicio de juego
Dimetro del crculo central
Ancho de la lnea de bordes
Distancia de los postes al campo

Teen Size
600
400
50
60
150
260
60
300
180
100
120
70
40

Las porteras se localizan en los extremos de la cancha en el centro de la lnea de gol.


Una portera es amarilla y la otra azul. Ambas cuentan con tres paredes en esos colores y con
postes blancos de 90 cm de altura que bordean la portera.

Figura 1.7 Porteras [31]

20
El campo se encuentra rodeado por bordes de madera pintados en color blanco. Las
lneas de color blanco que se encuentran a lo largo y ancho de la cancha tienen un grueso de 5
cm.

Figura 1.8 Lneas de la cancha [31]

Existen dos postes que se localizan en la parte media de la cancha. Tienen un dimetro
de 20 cm y una altura total de 60 cm. Cuentan con tres secciones de colores (20 cm cada una);
el segmento de arriba y abajo tienen el mismo color que la portera localizada a la izquierda,
lo cual sirve como referencia al robot para ubicar la cancha en la cual debe anotar. Para
efectos de este trabajo el poste con la combinacin amarillo-azul-amarillo se ha denominado
beacon1 y el otro, es decir azul-amarillo-azul, ser denominado beacon2.

Figura 1.9 Vista del campo con porteras y postes. Objetos fijos. [30]

Por ltimo en cuanto a objetos se refiere, tambin se utiliza una pelota de tenis color
naranja de 18 cm de dimetro y peso de 294 g

21
Los robots participantes deben ser 90% color negro y menos del 1% con colores
diferentes a los que poseen los objetos en el campo. La Figura 1.10 muestra la apariencia real
de los componentes con los cuales se trabaj para el desarrollo de esta tesis.

b)
a)

c)

d)

e)

Figura 1.10 a) Beacon1 b) Pelota c) Beacon2 d) Portera amarilla e) Portera azul

1.2.2 DESARROLLO DE UN ENCUENTRO

Cada encuentro consiste de dos perodos de diez minutos entre los cuales existe un descanso
mximo de cinco minutos. Es posible agregar tiempo extra si el referee lo considera necesario
debido a tiempo perdido o tiempo fuera. En caso de existir un empate se juegan dos tiempos
de cinco minutos. Si el encuentro contina sin decidirse se procede a la ronda de cinco
penales.
Antes de comenzar el juego, los participantes pueden acceder al campo durante quince
minutos. Como primera accin se realiza el volado, a travs del cual el equipo ganador
decidir hacia qu cancha tirar y el otro equipo inicia el partido. En el segundo tiempo el
equipo ganador da la patada de inicio. El juego se inicia y reinicia a travs del kick-off o
patada de salida. Cada vez que se anota un gol el juego se reinicia a mitad de la cancha. Una
restriccin importante es que no se puede anotar desde el punto de kick-off. En caso de que
esto suceda, se concede el punto al equipo contrario.
El procedimiento para iniciar el encuentro es el siguiente: todos los jugadores deben
estar en el lado de su cancha y el equipo que no da la patada de salida debe ubicarse alrededor

22
del crculo central y esperar a que la pelota se encuentre en movimiento. En caso de que la
pelota no se patee adecuadamente, el juego iniciar diez segundos despus de que el rbitro
haya dado la seal.
La forma de ganar un encuentro es contar con la mayor cantidad de goles. Se
considera vlido un gol cuando la pelota entra completamente en la portera. Si antes de
terminar el partido en el tiempo regular ya existe una diferencia de diez goles, el rbitro da
por terminado el encuentro.
No debe existir contacto o fuerza entre los jugadores de equipos contrarios, en caso de
presentarse esta situacin el robot agresor deber salir del campo durante treinta segundos. En
caso de cometer alguna falta contra miembros contrarios, se concede al equipo agredido un
tiro libre indirecto.
1.2.3 REGLAS DEL PARTIDO
El partido se lleva a cabo entre dos equipos. Cada uno consiste de tres jugadores y uno de
ellos debe operar como portero. Los encuentros no pueden empezar si no se cuenta con al
menos un jugador. A aquellos jugadores incapaces de pararse o caminar autnomamente no se
les permite continuar en el encuentro. Solo es posible cambiar hasta dos jugadores por
encuentro y el rbitro debe autorizar ese cambio. Cualquiera de los robots puede fungir como
portero, pero se debe informar previamente al rbitro. Cuando se necesita dar servicio al robot
por alguna complicacin dentro del encuentro, ste se debe retirar del campo y no regresar
hasta treinta segundos despus de haber sido retirado. Al regresar debe ser posicionado en
alguno de los dos extremos de la lnea central con la vista hacia el centro de la cancha.
Los robots que participan en las competencias deben cumplir con las siguientes
caractersticas: dos extremidades inferiores y dos superiores, una cabeza y un tronco; todo en
proporcin como lo muestra la Figura 1.11 y deben ser capaces de levantarse y caminar por
cuenta propia.

23

Figura 1.11 Dimensiones reglamentarias del Robot [31]

La altura del robot se determina de la siguiente forma:


Acm= altura del robot de los pies al centro de masa
At= altura total del robot considerando que est de pie y derecho
A= min (At, 2.2 Hcm)
La categora KidSize debe cumplir con una altura entre treinta y sesenta centmetros,
as como con otras dimensiones del cuerpo tales como el tamao del pie (debe encontrarse en
un rectngulo de A2/28) y la extensin de los brazos (debe ser menor a 1.2* A).
Los sensores autorizados en las competencias deben colocarse en una posicin similar
a la del funcionamiento biolgico humano. Por ejemplo la cmara, que funge como sensor de
visin, debe colocarse en la cabeza y los movimientos se encuentran restringidos a los mismos
que experimenta el cuello humano, 180 de izquierda a derecha, 270 de arriba abajo y 180
de hombro a hombro. Los sensores de fuerza, temperatura y tacto pueden ubicarse en
cualquier posicin. Tambin pueden colocarse sensores interiores para medir ciertos
parmetros como el voltaje, la corriente, aceleracin, fuerza y rotacin.
Cabe resaltar que los robots no pueden ser operados va remota y que, a pesar de que
es posible la comunicacin entre ellos a travs de una red inalmbrica, sta no debe exceder
1MBaud.
1.2.4 CARACTERSTICAS DEL BOGOBOT
A continuacin se describen las caractersticas del robot humanoide que compiti en Graz,
Austria. Est fabricado en aluminio y las cadenas cinemticas se encuentran motorizadas a
travs de seis servomotores de alto torque en cada pierna y tres en cada brazo. Para darle
movimiento al cuello se cuenta con dos servomotores ms que estn conectados al procesador
de la cmara y por tanto, resultan independientes de los anteriores. El procesador central es un

24
DSPic30f4013 el cual posee una tarjeta de control para los servomotores, la cmara
CMUCAM3 conectada, cuatro brjulas digitales conectadas a la entrada analgica, un
dispositivo electrnico IMU tambin conectado a entradas analgicas y una fuente de poder
compuesta por dos bateras de litio. La tarjeta del control de servomotores recibe todas las
posiciones angulares solicitadas y las enva a travs de seales elctricas a los servomotores.
La cmara CMUCAM3 tiene programados los algoritmos para identificacin de objetos,
seguimiento y estimacin de distancia, sin embargo todos los resultados se mandan al
procesador para la toma de decisiones.
La cmara CMUCAM3 [34] pertenece a un proyecto desarrollado por la Universidad
Carnegie-Mellon. El objetivo del proyecto es integrar un ambiente de desarrollo flexible y
sencillo con un hardware de bajo costo. La cmara es capaz de procesar veintisis cuadros por
segundo, cuenta con una resolucin CIF (352x288) en el espacio RGB, se programa en C con
el compilador GCC, puede desarrollarse en ambiente Windows o Linuxpara compilar en
Windows requiere del Cygwin, cuenta con cuatro puertos PWM para controlar los servos
de acuerdo a las imgenes que perciba. La programacin de esta cmara se lleva a cabo con
una aplicacin especial llamada Phillips Flash Utility relacionada con el procesador LPC2000,
importante componente de la cmara. A este procesador se le transfieren archivos .hex a
travs del cable serial.

1.3

MOTIVACIN

Hasta este momento, el robot Bogobot desarrollado en el Tecnolgico de Monterrey utiliza


algoritmos simples para la deteccin de colores y con ellos identifica los objetos en el medio
ambiente.
Esto ha permitido analizar hasta cinco cuadros por segundo logrando un buen
seguimiento de objetos mviles como es el caso de la pelota. Sin embargo los algoritmos de
visin embarcados en los Bogobots no permiten deducir la auto-localizacin del robot, la
ubicacin de los robots compaeros de equipo o de los contrarios. Como consecuencia de esta
situacin el equipo de robots Bogobots cuenta con un bajo desempeo en lo individual y
colectivo para mantener el control de la pelota, marcar gol rpidamente o generar una
estrategia defensiva colectiva cuando no se tiene el control de la pelota u ofensiva cuando se
encuentran en el caso contrario.
Para otorgar a los robots la capacidad de jugar como equipo y establecer acciones de
juego, en funcin de la ubicacin de la pelota y de los robots en el campo de juego, resulta
crtico que los algoritmos de visin permitan la auto-localizacin de los autmatas. Lo

25
anterior se efecta a partir del anlisis de los objetos fijos reconocidos en la cancha.
Por lo tanto, si los robots Bogobots contaran con algoritmos de auto-localizacin se
podran construir algoritmos de planeacin de trayectorias, navegacin y evasin de
obstculos. Los cuales mejoraran sustancialmente el desempeo de los robots al ejecutar
acciones que tomen en cuenta su posicin y la ubicacin de la pelota. Dada esta situacin, el
primer paso consistir en desarrollar un algoritmo de auto-localizacin efectivo.

1.4

OBJETIVOS

El proyecto elegido est orientado a la creacin de sistemas de percepcin y localizacin para


el equipo Bogobots que participa en la Liga RoboCup en la categora KidSize. El sistema de
percepcin se refiere a cmo el robot observa su entorno a travs de la cmara, lo cual implica
adentrarse en los algoritmos de segmentacin y clasificacin de imgenes. Una vez que puede
identificar colores ser posible identificar objetos y determinar la distancia a la cual se
localizan. El siguiente paso ser fijar su posicin en el campo al contar con puntos de
referencia definidos. La conjuncin de ambos sistemas proveer suficiente informacin al
procesador para la toma de decisiones adecuadas en momentos fundamentales tales como
pasar la pelota a un compaero, tirar a gol o defender la portera.
La meta final de este proyecto de investigacin radica en crear algoritmos de
percepcin y localizacin que funcionen y mejoren el desempeo de los Bogobots en las
siguientes competencias.
Para lograr esta meta se ha establecido el uso de una cmara comercial tipo Web con
entrada USB conectada a una computadora personal y el desarrollo de los algoritmos a travs
de MATLAB.
Se espera que una vez desarrollados y optimizados los algoritmos de percepcin, estos
puedan ser codificados en lenguaje C y colocados en la cmara CMUCAM3 que actualmente
tienen los robots Bogobots. Esto ltimo no forma parte de los alcances de este trabajo y se
plantea como trabajo futuro en el rea.
Para desarrollar el algoritmo de auto-localizacin mencionado en la seccin anterior
resulta importante trabajar en varias etapas previas, las cuales se abarcan en este trabajo. Estas
son: adquisicin de imgenes, determinacin de criterio de color para realizar la clasificacin,
segmentacin de la imagen, extraccin de caractersticas del rea segmentada, identificacin
de objetos de acuerdo a las reglas planteadas por el ambiente, estimacin de distancias y
finalmente estas distancias sern fundamentales para efectuar la localizacin del robot en el

26
campo de juego. En algunas de estas etapas se evaluarn diferentes tcnicas a fin de
determinar lo ms conveniente respecto a tiempo de ejecucin y resultados de procesamiento.
Como parte complementaria se desarrollar una interfaz grfica en MATLAB que
permita visualizar la salida de cada algoritmo y los resultados finales alcanzados, despus de
ejecutar el programa de localizacin.

1.5

CONSIDERACIONES IMPORTANTES DEL DOMINIO Y TESIS

Aunque la cmara CMUCAM3 cuenta con su propio procesador para almacenar y procesar
algoritmos en lenguaje C, se opt por utilizar una Webcam comercial

y generar los

algoritmos en MATLAB debido a su gran versatilidad y facilidad para depurar cdigo. Todos
los algoritmos desarrollados y evaluados en este programa se podrn fcilmente transferir a
otro sistema de procesamiento.
La cmara web utilizada se llama Live! Cam Vista VF0420 de la marca Creative.
Entrega treinta cuadros por segundo en el espacio RGB y se pueden obtener cinco
resoluciones diferentes: baja (160 x120 y 176 x144), media (320x240 y 352x288) y alta
(640x480). La cmara tambin puede configurarse con algunos parmetros, tales como:
compensacin en la luz de fondo, brillantez, contraste, saturacin, balance de blancos,
exposicin, y modo de exposicin. La cmara puede girar 360 horizontal y 45 vertical. La
resolucin elegida para el desarrollo de este trabajo fue 352x288. Por otro lado, dado que
MATLAB ha sido la herramienta de programacin seleccionada, en captulos posteriores se
explicar el proceso de adquisicin de imgenes y los parmetros que pueden modificarse,
tales como el disparo o la tasa a la cual se almacenan las fotos.

1.6

ORGANIZACIN DE LA TESIS

En el siguiente captulo, se explican las nociones bsicas sobre imgenes y su procesamiento,


se definen algunas generalidades de los sistemas de clasificacin, segmentacin y
localizacin. Tambin existe un apartado especial para explicar el proceso de adquisicin de
imgenes por medio de MATLAB. Los conceptos expuestos permiten una mejor comprensin
de las tcnicas evaluadas y seleccionadas en captulos posteriores. En el Captulo 3 se
describe el proceso para determinar las clases de color. Se evalan dos criterios, superficies
implcitas y umbrales simples en HSI. Como salida se generan tablas de color reducidas y
tablas de umbrales para las tres componentes de HSI, mismas que son utilizadas en los
algoritmos de segmentacin de imgenes expuestos en el Captulo 4. En ste se explica el

27
proceso de segmentacin a travs de algunas tcnicas tales como el procesamiento rengln
por rengln o crecimiento de regiones a travs de un pixel semilla, el cual podr elegir el
usuario u obtener varias semillas a travs de lneas de escaneo. Se verifican los resultados
obtenidos al evaluar cada tcnica con el fin de optar por la de mejor comportamiento. En el
Captulo 5 con la informacin procesada es posible proceder con las tareas de alto nivel, tales
como la identificacin de objetos y estimacin de parmetros espaciales de objetos, cunto
miden y a qu distancia de encuentran. En el Captulo 6 se describe la implementacin del
algoritmo de localizacin. El captulo 7 explica la interfaz grfica desarrollada en MATLAB,
as como el experimento final realizado. Las conclusiones y trabajo futuro se exponen en el
captulo 8. Todos los algoritmos elaborados, adems de explicarse en cada etapa del proceso
se presentan en el captulo 9 de Anexos.

28

Captulo 2
2 MARCO TEORICO
La integracin a este proyecto implica proponer algoritmos en el campo de percepcin y
localizacin que mejoren el desempeo de los robots dentro de las competencias. La literatura
que se puede encontrar referente a estas reas tan extensas de investigacin es vasta, sin
embargo la aplicacin de los mtodos conocidos est sujeta a las restricciones que imponga el
objeto de aplicacin. Para entender mejor las tcnicas expuestas en captulos subsecuentes,
este captulo abarcar nociones bsicas sobre las imgenes y su procesamiento, espacio de
color y conversiones entre los mismos, histogramas, el papel determinante de la iluminacin
en la toma de imgenes, conceptos bsicos en los algoritmos de segmentacin y localizacin.
Los conceptos y definiciones presentados en este captulo con fundamentales para la
comprensin de los algoritmos de segmentacin de colores que sern expuestos en el captulo
4. El lector experimentado puede obviar este captulo y continuar con el siguiente.

2.1

CONCEPTOS SOBRE EL PROCESAMIENTO DE IMGENES

El campo del procesamiento de imgenes deriva en dos reas principalmente: mejorar la


informacin pictrica para la percepcin humana, incluyendo la impresin y transmisin, y
procesar los datos de una escena para la percepcin autnoma por una mquina. Una imagen
digital se define como una imagen descrita por la funcin f(x,y), donde x y y son las
coordenadas espaciales y f representa la intensidad de esas coordenadas. Las coordenadas
espaciales se relacionan con la resolucin de la imagen entre mayor sea el valor que
adquieran, mayor ser la resolucin. De esta forma

. Tambin

puede considerarse como una matriz cuyos ndices de fila y columna identifican un punto de
la imagen y el valor correspondiente al elemento de la matriz indica el nivel de color en ese
punto. Los elementos de esa distribucin digital se conocen como pixeles, por su abreviatura
en ingls picture elements. La cantidad de valores empleados para describir un pixel depende
de cuanta informacin es empleada para representar el color de tales elementos de la imagen.

29
2.1.1 Etapas del procesamiento de imgenes
Gonzlez y Woods [13] en su libro proponen diversas etapas en el procesamiento de las
imgenes, tal como lo muestra la Figura 2.1. La primera es la etapa de adquisicin de
imgenes para lo cual es necesario un sensor de imgenes y la posibilidad de digitalizar la
seal producida por el sensor, el cual puede ser una cmara digital. Una vez adquirida, el
siguiente paso es preprocesar esa imagen. El objetivo principal de esta etapa es mejorar la
imagen de forma tal que se aumenten las posibilidades de xito en los procesos posteriores. Se
puede eliminar el ruido, aislar regiones que contengan informacin importante, mejorar el
contraste, aplicar filtros, etc. La tercera etapa trata de la segmentacin que consiste en dividir
una imagen de entrada en sus partes constituyentes u objetos. La salida dar como resultado
datos del pixel en bruto, que conformarn el contorno de una regin o bien todos los puntos
de una regin determinada. En la etapa subsecuente de representacin y descripcin se extrae
la informacin fundamental para diferenciar una clase de objetos de otra. Trasladando este
proceso al dominio de esta tesis, en esta etapa se sabra el color y la cantidad de pixeles que
posee esa regin. Esto brinda informacin a la siguiente fase de reconocimiento e
interpretacin, de tal forma que se pueda asignar una etiqueta al objeto identificado que cubra
ciertas caractersticas.

Figura 2.1 Diagrama proceso de adquisicin y anlisis de imgenes propuesto por Gonzlez & Woods [13]

Acompaando a estas etapas se encuentra una base de conocimiento que permite


detallar las regiones de una imagen o definir las condicionantes para reconocer y asignar
etiquetas a una imagen. En este trabajo la base del conocimiento son todas las caractersticas
de tamao y color de los objetos del ambiente en la competencia de ftbol de la categora
humanoide KidSize de RoboCup.

30
Dentro de cada etapa mostrada en la Figura 2.1 se aplican distintos algoritmos. Las
tcnicas utilizadas pueden dividirse en tres reas bsicas que agruparn a una o dos de las
etapas descritas previamente: procesado de bajo nivel, procesado de nivel intermedio y
procesado de alto nivel.
El procesado de bajo nivel considera un tipo de funciones a las que se puede
considerar reacciones automticas y que no requieren inteligencia por parte del sistema de
anlisis de imgenes. Las dos primeras etapas, adquisicin y pre procesamiento, entran en esta
clasificacin. Los algoritmos destinados a preprocesar la imagen son aquellos que buscan
reducir el ruido, mejorar el contraste u homogeneizar el color. El procesamiento de nivel
intermedio se refiere a la labor de extraer y caracterizas los componentes de la imagen, por lo
tanto la etapa de segmentacin y descripcin se consideran en este procesamiento. El
procesamiento de alto nivel se encarga de entender la imagen, por lo que la etapa de
identificacin de objetos en una imagen y estimacin de parmetros recae en esta
clasificacin.
En este trabajo se aplica el esquema propuesto por Woods [13] y Firket [8] de procesar
la imagen en tres niveles, primero con algoritmos de adquisicin y discriminacin de
regiones, seguidos por los algoritmos de segmentacin y extraccin de caractersticas de las
regiones, para finalmente entregar los resultados de esta etapa y comenzar el procesamiento
de alto nivel con tareas como la identificacin de objetos, estimacin de caractersticas
espaciales y localizacin del autmata en su entorno.
2.1.2 Nociones bsicas sobre imgenes
Las imgenes son proyecciones bidimensionales de escenas tridimensionales, representadas
por f(x,y) donde x y y son las coordenadas espaciales y el valor de f representa la intensidad en
dichas coordenadas. Cuando las imgenes son en blanco y negro solo se requiere de una
funcin. En cambio una imagen a color necesita de tres funciones independientes f1, f2 y f3, en
las cuales se representa la intensidad del pixel para cada componente.

Las imgenes

capturadas durante un encuentro en RoboCup son a color, tratadas en diferentes espacios


dependiendo de las caractersticas de la cmara. Por ejemplo el equipo Darmstadt, campen
de las competencias 2009, utiliza el espacio YUV, mientras que el equipo del TEC-CEM
emplea el espacio RGB.
La Figura 2.2.a muestra la idea de los pixeles como arreglos de columnas y filas que
almacenan un valor de intensidad. Para una imagen compuesta de grises slo se tendr una
malla o canal, pero cuando la imagen es de color, sin importar el espacio elegido, se hablar

31
de tres mallas o canales. La Figura 2.2 b explica la resolucin de una imagen ya que se define
como el nmero de columnas x renglones que posee la imagen, lo cual significa que una
imagen con resolucin de 388 x252, tendr 352 columnas por 288 renglones.

Figura 2.2 Pixeles como arreglos de columnas y renglones.

Para una imagen en escala de grises, el pixel se representa por un dgito de ocho bits,
por lo tanto el rango de cuantificacin es [0,255] con cero correspondiendo al negro y el 255
al blanco. La escala de grises se distribuye en ese rango. Si el pixel se representa por un bit, el
rango ir de 0 a 1, y esta se denominar imagen binaria. Entender el concepto de imgenes
binarias ser de gran utilidad para el desarrollo de este trabajo. La Figura 2.3 muestra un
ejemplo de la extraccin de pixeles de una imagen binaria en la cual el blanco est
representado por 1 y el negro por 0.

Figura 2.3 Extraccin de pixeles de una imagen binaria [19]

Para las imgenes a color basadas en el espacio RGB se presenta la siguiente


ecuacin: a(i,j)=[R,G,B] T donde cada canal de color se cuantifica por un entero de ocho bits,
es decir, el nmero de colores posibles representado por un pixel se determinar 28 x 28 x 28 y
por lo tanto habr 1.677 x 107 colores posibles.

32
El contenido de una imagen se encuentra codificado en un espacio de color que se
define mediante la combinacin de sus componentes y la distribucin del color en el espacio
delimitado por el rango de sus valores. Forsyth y Ponce describen en su libro [29] dos tipos
de clasificaciones: espacios lineales y espacios no lineales.
2.1.3 Espacios de color
La base de los espacios lineales se encuentra en el uso de un conjunto de colores primarios.
Los espacios de color RGB y YUV pertenecen a esta categora. Dentro de este trabajo la
primera aproximacin para la clasificacin de color se hizo a travs del espacio RGB.
Los espacios no lineales incluyen propiedades propensas a perderse en los espacios
lineales y que describen los colores en trminos ms comprensibles para el ojo humano.
Dentro de estas descripciones se encuentran el tono, la saturacin y

la intensidad o

luminosidad. Ejemplos de estos espacios son: HSI (Hue, Saturation and Intensity) HSV (Hue
Saturation and Value), HLS (Hue, lightness and saturation). De acuerdo a J.Russ [36], el tono
describe al color por su longitud de onda, por ejemplo la diferencia entre amarillo y rojo es
fcil identificar por las caractersticas que cada uno posee y que marcan la diferencia con los
dems. La saturacin es la cantidad de ese color o cmo se diluye con la luz blanca. Ejemplo:
la diferencia entre rosa y rojo. La tercera componente de los espacios mencionados es la
intensidad, luminosidad o valor, trminos que describen la cantidad de luz en un color. Por
ejemplo, la distincin entre un color rojo carmn y un rojo bandera.
Despus de analizar las ventajas del uso de este tipo de espacios se modificaron los
algoritmos para trabajar en el espacio HSI y se realizaron las conversiones pertinentes entre el
espacio RGB y HSI, ya que las fotos adquiridas por las cmaras solo es posible obtenerlas en
espacios lineales como RGB o YUV.
RGB es un espacio de color lineal que utiliza los colores primarios Rojo (Red), Verde
(Green) y Azul (Blue), definidos por las longitudes de onda 645.16nm, 526.32nm y 444.44nm
respectivamente. Las imgenes representadas en RGB se forman con las tres componentes
definidas por los colores primarios mencionados. Con estas tres componentes el nmero de
combinaciones posibles ser 1.677 x 107, tal como se mencion en la seccin previa.
Una imagen en el espacio RGB es un arreglo tridimensional M x N x 3, donde M se
refiere al nmero mximo de renglones, N al nmero mximo de columnas y 3 a cada uno de
las componentes de este espacio, es decir rojo, verde y azul, generalmente se representa a
travs de un cubo para mostrar la progresin de cada color tal como se muestra en la Figura
2.4 . El eje de referencia muestra que una combinacin particular de intensidad las tres

33
componentes dar como resultado un color en especfico. Por ejemplo el color Cyan se
obtiene con R=0, B=255 y G=255. Los extremos de este cubo sern los colores negro y
blanco, cuyas intensidades sern (0,0,0) para el caso del negro y (255,255,255) para el blanco.

B (0,0,255)

G (0,255,0)

R (255,0,0)
Figura 2.4 Representacin del espacio RGB. Imagen tomada de [36]

YUV se trata de un espacio lineal, con una profundidad de pixel de veinticuatro bits.
En este modelo, la componente o canal representa la luminosidad del pxel, mientras que la u
(cb) y la v (cr) definen el color o croma. Particularmente, el canal u representa la cantidad de
azul, mientras que el canal v manifiesta la cantidad de rojo.
El espacio HSI describe el tono, saturacin e intensidad de un color. Este espacio tiene
la capacidad de separar la intensidad de la informacin intrnseca del color, la cual se referira
al tono y saturacin. Por tal motivo su uso es recomendable para el procesamiento de
imgenes. Estos valores se pueden graficar en un espacio circular, hexagonal, triangular,
cnico o cilndrico. Sin embargo la forma ms comn de representarlo es con un doble cono,
como el que se muestra en la Figura 2.5. El centro de este doble cono ser una circunferencia
dividida en ngulos de igual magnitud. Para mostrar los seis colores representados en el cubo
de RGB, cada seccin ser de 60. Por tal motivo R, Y, G, C, B, M se refieren a Red, Yellow,
Green, Cyan, Blue y Magenta respectivamente. La distancia del centro de esa circunferencia
al exterior representa la saturacin encontrada en cada color y finalmente el eje que atraviesa
ambos conos corresponde a la componente de la intensidad. Esta tendr un valor normalizado
de 0 (negro) a 1 (blanco). Al extraer una pequea circunferencia de la figura formada por
ambos conos, los colores cercanos a una intensidad de 1 sern ms claros que aquellos
cercanos a cero.

34

Figura 2.5 Representacin del espacio HSI. Imagen tomada de [36]

La capacidad de separar la intensidad o luminosidad de las otras componentes provoca


que el espacio HSI resulte til para el procesamiento de imgenes ya que permite dejar de
lado los cambios de iluminacin que se presenten en el ambiente a trabajar.
Ren Honge y Zhong Qiubo en su artculo A new Image Segmentation Method Base
on HSI Color Space for a Biped Soccer Robot [17], exponen el uso del HSI para la
segmentacin en el sistema de visin de un robot bpedo. Su sistema de visin se basa en un
anlisis dinmico de la componente I, referente a la intensidad y aplican el algoritmo de Fuzzy
K-means para llevar a cabo la segmentacin. Calin Rotaru, el Dr. Thorsten Graf y el Dr.
Zhang Jianwei en su estudio sobre la segmentacin de imgenes en aplicaciones
automovilsticas para Volkswagen [35] tambin emplean el espacio HSI para realizar el
algoritmo de visin. La ventaja que encontraron es la relacin que guarda este espacio con la
iluminacin. Mientras que en el espacio RGB cada componente est relacionada entre s y
aparentemente en el anlisis un mismo color con diferente iluminacin puede clasificarse
errneamente, en el espacio HSI ese color conserva las caractersticas esenciales sin importar
la iluminacin ya que las componentes son independientes.
Dado que los componentes del espacio HSI no corresponden a la forma en la que la
mayora de los dispositivos trabajan, ya sea para la adquisicin o el despliegue de la imagen,
es necesario convertir de imgenes codificadas bajo RGB a imgenes en HSI y viceversa. La
posibilidad de esta conversin tiene su origen en el hecho de que el espacio RGB est
compuesto por tres intensidades monocromticas y si partimos del cubo que define el espacio

35
observaremos que en los extremos diagonalmente se ubican el vrtice de color negro y el
blanco. Al dibujar un plano imaginario perpendicular a ese eje diagonal, que incluya alguna
de las otras seis esquinas del cubo, la interseccin de los mismos representar las intensidades
con valores del cero al uno para cada color: rojo, amarillo, azul, verde, cyan y magenta. Otro
aspecto a denotar es que la pureza del color o saturacin incrementar en funcin de la
distancia al eje de la intensidad. El ltimo punto que falta es el tono, para lo cual haremos uso
de la Figura 2.4, al imaginar un plano formado entre los puntos blanco, negro y cian. El hecho
de que los puntos referentes al blanco y negro pertenezcan al plano indica que el eje de la
intensidad se encuentra en ese plano tambin. Todos los puntos contenidos en ese plano tienen
el mismo tono, pero con diferentes combinaciones formadas al mezclar los tres colores, lo que
da como resultado componentes en intensidad y saturacin. Al rotar el plano 360 alrededor
del eje vertical de la intensidad se obtendran diferentes tonalidades. Bajo esta explicacin se
encuentra el fundamento de que las componentes requeridas para el espacio HSI se pueden
obtener del cubo RGB.

A continuacin se presentan las frmulas de conversin entre HSI y RGB. Estas


frmulas fueron tomadas de [12].

Conversin RBG a HSI


Sea R, G, B las intensidades normalizadas que van de 0 a 1, se tiene lo siguiente:

(2.1)

(2.2)

(2.3)

(2.4)

36
Conversin HSI a RGB
La ecuacin a aplicar depender de los valores de la componente H, la cual se dividir
en tres sectores de 120. Estos intervalos corresponden a la separacin existente entre los
colores primarios: Rojo, Verde y Azul. Considerando que los valores para cada componente
HSI estarn normalizados y que

Sector RG
(
2.5)
(
2.6)
(
2.7)
Sector RG
(2.8)

(2.9)

(2.10)

(2.11)

Sector RG
(2.12)
(2.13)

(2.14)

(2.15)

Los algoritmos para efectuar la conversin entre espacios fueron tomados del libro
Digital Image Processing de Gonzlez y Woods [12] y emplean las ecuaciones descritas
anteriormente. Se presentan al final de este trabajo en el Anexo A.1 y A.2

37
Conocer los espacios de color ser crucial para el desarrollo del trabajo pues
determinan la distribucin que presentan las coloraciones de los objetos, lo cual se requiere
para realizar la clasificacin de color.

2.1.4 La iluminacin como factor clave en el procesamiento de imgenes


Como se mencion anteriormente, una imagen se refiere a una funcin bidimensional
donde el valor o la amplitud de f en las coordenadas espaciales (x, y) dan la intensidad o
iluminacin de la imagen en ese punto. Las imgenes percibidas en las actividades cotidianas
provienen normalmente de la luz reflejada por los objetos, de tal forma que la funcin antes
descrita estar caracterizada por dos componentes, uno referente a la cantidad incidente
procedente de la fuente sobre la escena contemplada y la segunda relacionada con la cantidad
de luz reflejada por los objetos. Dicho fenmeno se ilustra en la Figura 2.6. Estos elementos
reciben el nombre de componentes de iluminacin y refractancia y describirn a la funcin de
la intensidad:
(2.16)

Figura 2.6 Modelo de color basado en una luz que incide en una superficie y dicha superficie lo
refleja

Forsyth [29] en su libro indica que existen dos tipos de superficies de acuerdo a estas
condiciones de incidencia y refractancia, las superficies difusas y las especulares. Las
primeras resultan ideales para el procesamiento de imgenes, pero a la vez son poco
frecuentes. Su BRDF1 es independiente de la direccin de salida y de entrada, lo cual significa
que lucir igual de brillante desde cualquier ngulo. Por otro lado las superficies especulares
son aquellas brillantes como los espejos. En ellas la radiacin que llega en una direccin
particular solo puede salir en direccin normal a la superficie. Esta salida forma zonas
brillantes alrededor de ella, conocidas como especularidades, las cuales pueden provocar
1

Radio de la radiacin en la direccin de salida con respecto a la potencia de luz total que incide en un rea.

38
ruido en el proceso de segmentacin. Debido a que una imagen se puede capturar bajo
diferentes condiciones de iluminacin y esto provocar variaciones en el color, esta
caracterstica afecta de forma importante la segmentacin de la imagen. Al respecto es posible
atacar dos variables para solucionar el problema, una de ellas hace referencia al control de las
condiciones de iluminacin y la otra a la aplicacin de algoritmos que afronten este tipo de
dificultades.
La primera es sencilla, pues despus de probar diferentes tipos de luminarias se
encontrar aquella en la cual se perciban mejor los colores para la aplicacin deseada. Al
controlar esta variable, ser posible implementar algoritmos de segmentacin que consideren
una umbralizacin global simple. Lo anterior significa que se fijarn rangos en el espacio de
color deseado dentro de los cuales se analizarn y evaluarn los pixeles, pero esos rangos no
sern dinmicos y no ofrecern alternativas a variaciones en la iluminacin. Este tipo de
soluciones son frecuentes en aplicaciones de inspeccin industrial. Dentro del ambiente de
RoboCup esta opcin no es factible pues hasta el 2008 las condiciones de iluminacin se
encontraban controladas y abarcaban un rango de 600 a 1200 lux. Posteriormente estas
limitantes se eliminaron y las reglas solo marcan que el encuentro se lleva a cabo en un campo
iluminado. Restringir estos controles tiene relacin con la evolucin de la categora y por ende
con un acercamiento a condiciones ms reales.
De no ser posible el control de la iluminacin existen varias alternativas. La primera
depende de tener acceso a la fuente de iluminacin y consiste en proyectar el patrn de
iluminacin sobre una superficie reflejante blanca constante. Esta solucin produce una
imagen

donde k es una constante que depende de la superficie e

el patrn de iluminacin. Cualquier imagen


resultar en una funcin normalizada

es

dividida entre
y as

se puede

segmentar empleando un umbral nico T. Este mtodo descrito por John Russ [36] solamente
funcionar correctamente si el patrn de iluminacin producido por

no cambia de

imagen a imagen.
La siguiente opcin [36] emplea la tcnica de sustraccin de fondo o background
substraction. Los pasos a seguir son: adquirir la imagen, extraer el fondo de la misma y
almacenar la intensidad. Posteriormente cada punto de la imagen de fondo se restar de cada
punto de las imgenes subsecuentes. La desventaja es que durante este proceso algunos datos
de las imgenes podran perderse adems de que existir un gran ruido estadstico al elaborar
la operacin.

39
Otra de las tcnicas [36] analiza los datos arrojados por el histograma de la imagen y
obtiene una funcin densidad de la probabilidad de brillo. Lamentablemente solo es aplicable
si existieran dos regiones de brillo principales, es decir imgenes en blanco y negro.

2.2 PROCESAMIENTO NIVEL BAJO: ADQUISICIN DE


IMGENES EN MATLAB
Una vez definido el espacio en el cual se trabajar y antes de pasar a la seccin de
procesamiento de alto y bajo nivel se explicar cmo se realizar la adquisicin y
procesamiento de imgenes en MATLAB a travs de sus aplicaciones Image Acquisition
Toolbox e Image Processing Toolbox [19]. Tambin se describirn algunos conceptos
importantes para una mayor comprensin de los algoritmos programados.
Una de las ventajas en la seleccin de MATLAB como programa para elaborar esta
tesis fue el hecho de contar con una librera dedicada a la adquisicin y procesamiento de
imgenes. Esta adquisicin era posible con tan solo conectar un dispositivo.
La librera de adquisicin de imgenes posee un enfoque orientado a objetos. Todo
inicia con la creacin de un objeto que ser la conexin entre MATLAB y el dispositivo de
adquisicin. Usando las propiedades de ese objeto se pueden controlar diversas caractersticas
tales como la cantidad de cuadros que se quieren almacenar y cada cundo almacenarlos. La
adquisicin inicia con el accionamiento del trigger, este puede ser manual o automtico. Para
trabajar con las imgenes adquiridas, stas deben llevarse al espacio de MATLAB. Cuando
las imgenes se adquieren se guardan como cuadros y se deben convertir a imgenes para
manipularlas como cualquier otro arreglo.

2.2.1 Proceso para adquirir imgenes en MATLAB


En trminos generales, la adquisicin de imgenes a travs de MATLAB es muy
sencilla si se siguen los pasos descritos en la Figura 2.7.

40

1.Instalar el
dispositivo de
adquisicin

2. Obtener la
informacin del
Hardware

3. Crear el objeto
de video

6. Borrar y limpiar
la memoria

5. Adquirir la
imagen

4. Vista previa y
configurar las
propiedades del
objeto

Figura 2.7 Proceso de adquisicin de imgenes en MATLAB

1.

Instalar el dispositivo de adquisicin:

El primer paso es conectar el dispositivo con el cual se trabajar, en este caso conectar
la Live! Cam Creative a travs del cable USB. Tambin es importante instalar el software que
incluya y correr una primera prueba con dicha aplicacin para verificar que funciona
correctamente.

2.

Obtener la informacin del hardware:

El segundo paso incluir el nombre del adaptador, los dispositivos conectados a l y el


formato de adquisicin que manejen esos dispositivos. Se denomina adaptador al software
que realizar la comunicacin entre el dispositivo de adquisicin, la cmara y MATLAB.
Para conocer los adaptadores disponibles se utiliza la funcin imaqhwinfo, la cual arroja como
resultado coreco y winvideo, adaptadores que vienen cargados en el sistema operativo del
equipo de cmputo. A partir de esta informacin se podr conocer cuntos dispositivos estn
conectados a cada uno ya que los adaptadores asignan un nmero a cada dispositivo. Al inicio
es difcil conocer a qu adaptador estn conectados los dispositivos, por lo tanto se utiliza
nuevamente la funcin imaqhwinfo. A partir de esto se conoce que ambas cmaras, VGPVCC2 y Live! Cam Vista, estn conectadas a travs de winvideo. Se asigna un nmero de
dispositivo (device) a cada una. Lo anterior se muestra en la Figura 2.8.

41

Figura 2.8 Resultado obtenido a partir de la funcin imaqhwinfo en MATLAB

Despus se deben verificar los formatos que cada cmara maneja. La cmara web
Sony soporta diez formatos diferentes, entre los cuales los valores de resolucin van desde
160x120 a 640x480 pasando por 352x288, resolucin utilizada por la CMUCAM3. La cmara
Creative soporta nicamente un formato, RGB24 de 320x240 pixeles.

3.

Crear el objeto de video

El siguiente paso, una vez conocidos los adaptadores y dispositivos conectados a ellos,
consiste en crear un objeto con el cual se pueda trabajar en MATLAB y el cual nos ayudar
para llevar a cabo la adquisicin. La creacin de este objeto se realiza con la funcin
videoinput(), la cual tendr tres argumentos, el primero referente al adaptador, el segundo al
nmero de dispositivo conectado y el tercero referente al formato en el cual se tomar la
imagen. Los dispositivos de adquisicin traen de fbrica formatos predefinidos los cuales a su
vez tienen relacin con la resolucin de la imagen. Para el desarrollo de este trabajo y debido
al

dispositivo

elegido,

el

objeto

creado

quedar

vid=videoinput('winvideo',2,'RGB24_320x240'),

de

la

siguiente

forma:

el cual hace referencia a la cmara

Live! Cam de Creative.

4.

Vista previa y Configurar las propiedades del dispositivo

Una vez creado el objeto con el cual se trabajar es posible desplegar la vista previa
del objeto a travs de la funcin preview() cuya entrada ser la variable del objeto creado.
Para el ejemplo realizado, esta ser vid. Despus de visualizar la vista previa ser posible

42
modificar ciertos parmetros referente a la calidad de las imgenes tales como el brillo, la
nitidez o el contraste y otras propiedades referentes a la adquisicin. Dentro de estas
caractersticas se encuentran los ajustes para el trigger, dentro de las cuales se puede activar
de forma inmediata o contar con un retraso, tambin hacer disparos despus de determinada
cantidad de tiempo, hacerlo de forma manual o de manera automtica con algn impulso
externo. Otro aspecto importante sern los cuadros que se adquirirn por cada trigger y los
cuadros que se almacenarn en la memoria. Este ltimo parmetro permitir que al momento
de tomar un video y se busque analizar las imgenes tomadas en ese video no se considere el
total de cuadros por segundo que contiene la cmara sino solo la cantidad requerida para el
anlisis. Existe otro parmetro que contabiliza el nmero de cuadros adquiridos. A travs de
este se puede establecer una condicin de paro en la toma de imgenes. Otro factor importante
para la adquisicin de video se refiere a la forma en la cual se almacenarn los datos. Existen
tres vas para guardar esta informacin: en la memoria del sistema, la cual tienen un lmite y
se perder con una nueva adquisicin sino se ha guardado en una variable especfica, en el
disco duro a travs de una extensin de archivo AVI o una combinacin de ambas.

5.

Adquirir la imagen

Despus de crear y configurar las propiedades del objeto de video, se procede a la


adquisicin de imgenes. Esta adquisicin inicia con el comando start(vid). A partir de que se
dispara este comando las propiedades ajustadas del trigger (nmero de cuadros y forma de
almacenaje) comenzarn a trabajar. Para guardar la informacin adquirida se utilizar la
funcin getdata(vid), la cual se almacenar en una variable para posteriormente trabajar con
ella en el espacio de MATLAB. Las funciones start() y getdata(), as como las
configuraciones de trigger, cuadros y loggmode son sumamente importantes para la
adquisicin de video. MATLAB cuenta con una herramienta que permite aplicar la funcin
roipoly() para adquirir la informacin de un rea definida de la imagen. Para tomar fotografas
especficas la funcin ms conveniente y la utilizada en este trabajo es getsnapshot(), la cual
combinada con una pausa en el programa permite la adquisicin.

6.

Limpiar el espacio

Finalmente cuando el objeto creado no se requiera ms, el nico paso a efectuar ser
aplicar la funcin delete(vid) para borrar un objeto en especfico clear para borrar todas las
variables creadas hasta el momento.
Despus de esta breve introduccin, se crearon dos programas para la toma de
fotografas y muestra de las fotografas tomadas. El objetivo del primero es que dentro de las

43
competencias se tomen cuantas fotografas sean necesarias bajo diferentes condiciones de luz.
Con el segundo programa se seleccionan aquellas con las cuales se desee trabajar para
elaborar los criterios de anlisis en HSI a travs de otro programa denominado HSI_roipoly.
El programa tomafotos_hsi, (Anexo A-3) recibe como entrada la cantidad de cuadros
que se busca adquirir y la salida ser un arreglo que contenga las fotos tomadas, as como los
objetos de video creados. Esto ltimo con el objetivo de verificar las propiedades y cambiarlas
en la siguiente adquisicin realizada. De tal forma la funcin para este programa ser:
[f vid vid_src]=tomafotos_hsi(ncuadros)

Donde:
ncuadros = Cantidad de fotos deseadas; f =Matriz de fotos tomadas; vid = Objeto de
video creado; vid_src = variable para verificar las propiedades del objeto creado

Otro de los programas elaborados fue muestrafotos() (Anexo A-4), el cual acepta la
variable de fotos creada y al presionar la tecla Enter se mostrarn las fotos adquiridas. Para
realizar esto, se emple la funcin frame2im, que permite convertir una fotografa tomada por
la webcam en un arreglo de tres dimensiones con el nmero de columnas y renglones igual al
nmero de la resolucin de la imagen. De esta forma la conversin permitir trabajar con esa
imagen en el espacio de MATLAB como si fuera una matriz, y es compatible con otras
funciones u operaciones. Una vez convertida, la imagen se puede mostrar en MATLAB a
travs de la funcin imshow().

2.3 PROCESAMIENTO NIVEL INTERMEDIO: CLASIFICACIN DE


COLOR Y SEGMENTACIN
El primer paso se encarga de la clasificacin de pixeles para concentrarlos en un criterio que
sirva como parmetro para identificar regiones de inters agrupadas bajo el esquema
seleccionado. La mayora de las clasificaciones se basan en un criterio de color, pero tambin
existe la segmentacin a travs de la textura de un objeto. La decisin de tomar el color como
referencia se debe a que en el ambiente de RoboCup todos los objetos tienen un pigmentacin
particular, lo cual facilita la clasificacin y restringe el dominio a clasificar cinco colores
principalmente: naranja, amarillo, azul, verde y blanco, siendo los primeros tres los ms
importantes para la identificacin de objetos.
El segundo paso est relacionado con la rutina utilizada para detectar las regiones
visuales de inters. Las regiones de inters, representadas mediante su abstraccin en un
formato determinado, constituyen la salida de todo el componente dentro del sistema. La

44
segmentacin y el criterio de clasificacin son el corazn de un sistema de visin. Para el
primero se requiere determinar la mejor tcnica en cuanto a tiempo de procesamiento e
inclusin de caractersticas y el segundo resulta vital para todo el proceso. Una mala
clasificacin de color generar un sistema de visin pobre e ineficiente.

2.3.1 Clasificacin de color


La clasificacin de color consiste en definir un conjunto de clases de color que caracterizan a
los objetos conocidos en el ambiente, dividiendo el espacio de color. La forma ms comn de
crear las clases de color es recolectando muestras de color distintivas de los objetos. Esta
recoleccin se realiz a travs de la funcin roipoly() de MATLAB, como lo muestra la
Figura 2.9.

Figura 2.9 Extraccin de pixeles muestra para definir los umbrales a) Imagen RGB con la seleccin de pixeles
a travs de MATLAB c) Pixeles seleccionados en el espacio RGB c) Conversin y seleccin de pixeles en
espacio HSI

La clasificacin de color resulta importante para este trabajo debido a que cada objeto
del ambiente posee un color nico o una combinacin de colores que hace posible su
identificacin a travs de la distincin de colores.

45
Existen dos mtodos para obtener estas clases de color: fuera de lnea y en lnea.
Durante el proceso en lnea la clasificacin de color se actualiza conforme las condiciones en
el ambiente, generalmente la iluminacin, cambia. El proceso fuera de lnea considera un
entrenamiento previo a travs del cual se obtienen valores, mismos que se cargarn al objeto
y a travs de los cuales se efecta la segmentacin de nuevas imgenes. Para el proceso fuera
de lnea se deben tomar muestras de cada objeto del ambiente y posteriormente clasificar las
muestras mediante umbrales o tablas de bsqueda.
La ventaja de la clasificacin en lnea radica en el dinamismo con el cual puede
adaptarse a los cambios del ambiente, sin embargo esta adaptacin puede conllevar un
incremento en la memoria de programa utilizada y por ende en un tiempo de respuesta. Al
considerar esos cambios se debe tomar en cuenta la correcta calibracin para no generar falsos
positivos y poseer mecanismos que permitan discernir entre las muestras recolectadas.
El mtodo fuera de lnea reduce esa complejidad al generar clases definidas de forma
ms segura. Raziel [2] en su trabajo plantea que estas clases sern estticas pues se toman
bajo condiciones de iluminacin constantes. Esto es cierto si se trabaja en un espacio de color
lineal, tal como RGB o YUV, sin embargo el espacio HSI al considerar el tono como una de
las principales componentes permite incluir variaciones en la iluminacin.
En otro trabajo previo, realizado por Fei Liu, Huimin Lu y Zhiqiang Zhen [22] se
expone la combinacin de espacio de color HSI y YUV para determinar una tabla de color
con mejores resultados para la categora MiddleSize de RoboCup. Este mismo grupo de
investigadores realiz otro trabajo [24] que expone la combinacin de estos espacios, pero
con el objetivo de detectar las lneas blancas en el campo.
En este trabajo la clasificacin y entrenamiento se realiza a travs de imgenes
adquiridas fuera de lnea, pero la segmentacin se efecta con imgenes en lnea tomadas
durante las competencias. La toma de imgenes en lnea demandar que los algoritmos
cuenten con tiempos de ejecucin cortos. La figura 2.10 muestra esquemticamente este
proceso.
Imgenes
Off-line

Usuario

Entrenamiento

Imgenes
On-line

Sub-espacios
de colores
separables

Clasificador
de color

2.10 Esquema para clasificacin de color y segmentacin de imagen

Imagen
segmentada

46
Una vez tomada esta decisin, el siguiente paso consiste en seleccionar la tcnica de
clasificacin de color. Para definir las clases de color se pueden encontrar diversas tcnicas en
la literatura que buscan cumplir con una definicin precisa de los colores caractersticos para
proceder a una generalizacin y constancia de color. Las clases de color se entregan al
algoritmo de segmentacin a travs de rangos de valores o de tablas de color. Los rangos de
valores se generan a travs de un muestreo e histogramas. Las tablas de bsqueda se generan
por medio del valor de las componentes de color encontradas al ajustar las muestras a una
forma geomtrica particular, la cual puede ser esfrica, elptica, parablica o implcita.
Para este trabajo se revisaron tanto las tcnicas de umbrales simples como el uso de
superficies implcitas desarrollado por lvarez et al [4].Al inicio los esfuerzos se enfocaron
en trabajar con esta ltima en el espacio de color RGB y obtener las superficies implcitas que
permitieran la formacin de tablas de bsqueda durante el proceso de segmentacin. La
segmentacin se realiz con buenos resultados, sin embargo el tiempo que tardaba no
contribuy a continuar sobre esta lnea y se revis el uso de umbrales simples en el espacio
HSI. Trabajar en este espacio con umbrales simples es una gran opcin, pues su simplicidad y
rapidez aunadas al factor de que los colores del ambiente se pueden diferenciar fcilmente con
la componente H provocan una segmentacin factible en trminos de tiempo.
La tcnica de umbrales simples consiste en determinar seis umbrales a partir de un
valor mximo y mnimo de intensidad para cada componente de color. Con esto se formar un
paraleleppedo como el que se muestra en la Figura 2.11.

Figura 2.11 Volumen que define un subespacio de color bajo seis umbrales

Existen varias formas de definir estos umbrales, una de ellas es a travs de los
histogramas de las muestras de color obtenidas. Un histograma representa la frecuencia de
distintas categoras dentro de un conjunto de datos. De tal forma que en el eje x de la grfica
se presentarn los centros de los datos evaluados y la altura de los rectngulos ser el nmero
de veces que se repite ese dato. Esta clasificacin se realiza al dividir el rango de datos en
determinados intervalos y despus calcular cuntos valores caen en cada rango.

El

histograma de una imagen digital con niveles de gris en el rango [0, L-1] es una funcin

47
discreta

, donde rk es el k-simo nivel de gris, nk es el nmero de pixeles de la

imagen con ese nivel de gris, n es el nmero total de pixeles en la imagen y k =0,1,2,, L-1.
La probabilidad de que aparezca un nivel de gris rk estar representada por p(rk). La
representacin grfica de esta funcin, es decir, el histograma, proporciona una descripcin
global de la apariencia de la imagen.
La Figura 2.13 muestra los histogramas de fotografas tomadas bajo diferentes
condiciones de iluminacin.

Figura 2.12 Ejemplo de imgenes obtenidas en las pruebas entre cmaras bajo diversas condiciones de
iluminacin. a) Imagen en laboratorio cae en la clasificacin de imagen oscura b) Imagen con ms brillo e
iluminacin natura, pero con bajo contraste

Para obtener el histograma en MATLAB es necesario convertir la imagen de RGB a


escala en grises a travs de la funcin rgb2gray, ya que los histogramas solo se pueden
efectuar en este espacio. Una vez que se convierten, el siguiente paso es aplicar la funcin
hist() a la imagen convertida.
Cada imagen obtenida tiene su propio histograma. Factores como los cambios de
iluminacin y parmetros de la cmara pueden modificar estos histogramas, por tal motivo la
tcnica de ecualizarlos puede resultar efectiva para reducir estas variaciones y mejorar la
clasificacin de color.
A partir de este concepto, al generar histogramas tridimensionales se pueden generar
los umbrales y definir clases de color. El procedimiento consiste en extraer los componentes
del espacio de color para los pixeles a partir de las imgenes tomadas por la cmara. Esas
imgenes se toman buscando abarcar diferentes condiciones a las cuales estar sometido el

48
robot. Posteriormente se obtienen los histogramas de esas muestras para verificar en donde se
encuentra la mayora de los valores. En caso de que el muestreo incluye especularidades
provocadas por reflexiones de luz en el objeto, cuando estas muestras se comparen con la
cantidad total obtenida se podrn discriminar y no resultarn importantes.
Estos umbrales tal como John C.Russ lo indica en su libro [36] pueden establecerse de
forma manual u automtica. Las tcnicas automticas para generar umbrales generalmente se
utilizan en la industria para los sistemas de visin que evalan caractersticas de calidad. Estos
mtodos automticos tambin utilizan los histogramas, pero en lugar de evaluar histogramas
de imgenes tomadas previamente se recalculan despus de determinado periodo de tiempo
para tomar en cuenta posibles variaciones en la iluminacin. En ocasiones y con el fin de que
este parmetro no afecte las condiciones de la evaluacin, se recurre a fijar una luz adicional
que provoque la constancia en la toma de parmetros.
Una de las tcnicas ms sencillas es localizar los picos del histograma y proponer los
umbrales alrededor de los mismos. Esta tcnica es robusta porque los picos encontrados
tendrn formas definidas, fciles de ubicar. Si a esto sumamos el hecho de que se conocen los
colores del ambiente, resultar una tcnica sencilla y rpida de aplicar. El algoritmo elaborado
en esta tesis se basa en esa tcnica. Ms adelante se describirn los pasos de construccin.
Entre otros algoritmos automticos se encuentran el seleccionar un porcentaje fijo de
pixeles brillantes u oscuros que generarn una imagen binaria. El procedimiento consiste en
iniciar en una de las puntas hasta que el porcentaje del rea de la imagen a analizar se alcance
y se toma el valor ms alto encontrado en esa cuenta. Generalmente se aplica al localizar
orificios en una tarjeta de circuitos impresos.
Otro de los algoritmos automticos de mayor uso por los resultados que arroja es el
algoritmo de Trussell. Su objetivo es encontrar los umbrales producidos por dos poblaciones
de pixeles (brillantes y oscuros) a travs del mayor valor de la t-student, la cual se calcula a
travs de la media, la desviacin estndar y el nmero de pixeles en cada grupo. Esta prueba
estadstica mide la probabilidad de que las dos poblaciones sean diferentes por lo tanto al
encontrar el valor de la t se encontrar la separacin de ese grupo de pixeles. Existen otros
mtodos para generar umbrales de forma automtica, sin embargo la seleccin depender de
la escena y el equipo utilizado para la adquisicin.
Las superficies implcitas son formas geomtricas en dos dimensiones que existen en
el espacio tridimensional, definidas de acuerdo a una forma matemtica particular. Lo anterior
implica una funcin f que define la superficie y es igual a un umbral dado, usualmente 0 1.
Esto significa que al evaluar los puntos en la funcin de superficies implcitas, el resultado
arrojar si stos se encuentran dentro, fuera o en el borde de las mismas.

49
Los algoritmos desarrollados para obtener los umbrales simples, tcnica seleccionada
para el desarrollo de este trabajo, y las superficies implcitas as como sus resultados se
describirn con mayor detalle en el captulo 3, titulado Clasificacin de Color.
2.3.2 Segmentacin
Gonzlez & Woods [13] definen a la segmentacin con el primer paso para extraer
informacin de la imagen y consiste en dividirla en regiones. El nivel al cual se lleve esta
subdivisin depender de la aplicacin. En esta etapa se busca cumplir con dos objetivos
primordiales: descomponer la imagen en regiones de inters y proveer una nueva
representacin en la cual los pixeles se organicen de tal forma que generen la entrada para el
procesamiento de alto nivel referente a la deteccin de objetos y estimacin de parmetros.
Las tcnicas de segmentacin se dividen en tres categoras: tcnicas de umbral,
tcnicas basadas en el crecimiento de regiones y tcnicas que buscan detectar los contornos de
los objetos. Una vez seleccionada la tcnica ms conveniente, sta debe satisfacer idealmente
los siguientes postulados [39]: las regiones deben ser uniformes y homogneas respecto a
alguna caracterstica, el interior debe ser simple y sin muchos hoyos pequeos, las regiones
deben ser distintas respecto a un criterio de uniformidad y los contornos deben ser lo ms
precisos posibles. El cumplimiento de estas caractersticas facilitar la identificacin de
objetos.
La segmentacin se puede efectuar al encontrar lmites entre regiones basndose en
discontinuidades de la intensidad, tambin en umbrales basndose en la distribucin de los
pixeles, tales como la intensidad y el color o bien en la localizacin de regiones a travs de un
pixel semilla provocando el crecimiento de las mismas. Una regin se define como un
conjunto de pixeles conectados, es decir todos son adyacentes y se tocan. La conectividad
entre pixeles se define como el hecho de compartir fronteras o esquinas con pixeles vecinos.
Existen dos tipos de conectividad: conectividad cuatro y conectividad ocho. La primera se
refiere a que un pixel con coordenadas (r,c) es adyacente a pixeles con coordenadas (r-1,c),
(r+1,c), (r,c-1) y r(c+1). En otras palabras los pixeles que se encuentren arriba, abajo,
izquierda y derecha. Cuando esta conectividad se extiende a los pixeles de las esquinas, se
tiene una conectividad de ocho, agregando pixeles con las siguientes coordenadas (r-1,c-1),(r1,c+1),(r+1,c-1),(r+1,c+1). Lo anterior se muestra grficamente en la Figura2.13:

50

Figura 2.13 a) Ejemplo conectividad 4. b) Ejemplo conectividad 8

Como se mencion, las tcnicas de segmentacin se dividen en tres categoras:


tcnicas basadas en deteccin de discontinuidades, tcnicas basadas en umbrales y tcnicas
basadas en regiones. Dentro de ellas existir el dilema entre el costo computacional, es decir
el tiempo de procesamiento, y la efectividad del algoritmo.
Tcnicas basadas en deteccin de discontinuidades. Los tres tipos bsicos de
discontinuidades de una imagen digital son: puntos, lneas y bordes. La forma ms comn de
ver las discontinuidades es pasar una mscara a travs de la imagen. Una mscara se define
como una pequea distribucin bidimensional (por ejemplo 3x3) en la que los valores de los
coeficientes determinan la naturaleza del proceso. Uno de estos procesos sera la acentuacin
de bordes. Tomando en cuenta la mscara mostrada en la Figura 2.14, el procedimiento
implica calcular la suma de los productos de los coeficientes por los niveles de gris contenidos
en la regin encerrada por la mscara. La respuesta de la mscara en un punto cualquiera de la
imagen se determinar por la ecuacin 2.17:

(2.17)

Donde zi es el nivel de gris asociado con el coeficiente de la mscara wi.


Habitualmente la respuesta de la mscara se define con respecto a la posicin de su centro. Al
ubicarse en un pixel lmite, la respuesta se calcula utilizando el entorno parcial apropiado.

W
w1

W
w2

W
w4

w3
W

w5
W

w7

W
w6

W
w8

W
w9

Figura 2.14 Mscara general de 3x3

51
La deteccin de puntos resulta sencilla al utilizar la mscara de la Figura 2.15 y se
conocer que se ha detectado un punto en la posicin que est centrada la mscara si el valor
absoluto de R es mayor a un umbral T. Lo que har esta formulacin es medir las diferencias
ponderadas entre el punto central y los vecinos.

Figura 2.15 Mscara empleada para detectar diferentes puntos aislados en un fondo constante [13]

El siguiente nivel de complejidad incluye la deteccin de lneas y existen mscaras


predefinidas para detectar lneas horizontales, verticales y a 45, en sentido negativo o
positivo. La forma de identificar la lnea detectada consistir en pasar todas las mscaras
expuestas en la Figura 2.16 sobre una imagen y evaluar si los valores i en la posicin (x,y) de
la mscara son mayores a los valores j (x,y) de la imagen. Estos valores estarn representados
por

. De tal forma que si

este punto ser el que tenga la

mayor probabilidad de estar asociado con una lnea en la direccin de la mscara i.

Figura 2.16 Mscaras de lnea. a) Horizontal. b) +45. c) Vertical. d) -45. [13]

El mtodo ms comn para detectar discontinuidades es la deteccin de bordes. Un


borde es la frontera entre dos regiones con propiedades de nivel de gris relativamente
distintas. Esto supone que las regiones en cuestin son lo suficientemente homogneas para
que la transicin entre dos de ellas se pueda determinar sobre la base de discontinuidades.
Cuando esta suposicin no es vlida se sugiere utilizar la tcnica de umbrales o el crecimiento
de regiones. Para el caso de este trabajo la tcnica de bordes se revis nicamente a travs de
las funciones de MATLAB, las cuales realizan la deteccin de bordes a travs de distintos
operadores. Lo anterior se debe a que la mayor parte de las tcnicas de deteccin subyace en
el clculo de un operador local de derivacin. Cada uno de los detectores disponibles en
MATLAB utiliza mscaras diferentes. Los detectores disponibles en la funcin edge son:
Sobel, Prewitt, Roberts, Gausiano Laplaciano, Cruce de ceros y Canny [12]. Los primeros tres
utilizan las mscaras de la Figura 2.17. El cuarto busca los cruces de cero despus de filtrar la

52
funcin f(x,y) con un filtro gausiano y el filtro de Canny busca los mximos locales del
gradiente de f(x,y) calculado usando la derivada del filtro Gausiano.

Figura 2.17 a) Resultado operador de Sobel. b) Resultado con operador Canny. c) Imagen original

Las tcnicas de deteccin de bordes podran ser factibles si se analizaran imgenes con
intensidades definidas en colores contrastantes, en un dominio en el cual la iluminacin
permanezca constante. Una opcin sera en aplicaciones industriales para la deteccin de
defectos. Por lo tanto este grupo queda descartado para el presente trabajo.
Tcnicas basadas en regiones. Consiste en agrupar pixeles en la imagen formando
regiones. La base de este agrupamiento radica en compartir propiedades similares entre
pixeles conexos. Se deben cumplir diversas condiciones tales como: todos los pixeles deben
estar en una regin, los pixeles de esas regiones deben ser conexos, las regiones deben ser
identificables a travs de una propiedad especfica, como lo es la intensidad. El crecimiento
de regiones por agregacin de pixeles es la tcnica ms usual de este grupo. A partir de un
pixel semilla se comienzan a agregar los pixeles que cumplen con un criterio de
homogeneidad basado en nivel de grises, color o textura. El algoritmo se detendr hasta que
no existan ms pixeles que satisfagan el criterio elegido. Un resultado satisfactorio en esta
tcnica depender fuertemente de que los generadores iniciales representen correctamente a la
regin y de una seleccin adecuada de las propiedades para determinar la inclusin. En caso

53
de que esto no est bien delimitado se podra incurrir en el error de agregar pixeles que no
pertenecen a la regin. Otro mtodo consiste en subdividir la imagen inicialmente en un
conjunto de regiones arbitrarias separadas y despus fusionar o dividir estas regiones y
generar pixeles semilla para cada una de ellas. Esto implica que diversos crecimientos
tendran lugar, lo cual puede traer ventajas y desventajas ya que si bien el tiempo se puede
reducir el costo computacional incrementar.
Tcnicas basadas en umbrales: Este proceso se base en la evaluacin de las
intensidades de los pixeles dentro de rangos definidos. Cuando se analiza una imagen en
escala de grises se utilizar un umbral nico, pero en el caso de las imgenes a color se
pueden manejar de tres a seis umbrales, dependiendo del espacio de color seleccionado. El
fundamento de esta tcnica consiste en evaluar un punto de la imagen dentro de rangos
mximos y mnimos, tal como lo demuestra la siguiente ecuacin:

donde f(x,y), ser el pixel evaluado. Al establecer umbrales mltiples el aspecto a revisar es
que efectivamente aslen y definan las regiones pues en caso contrario se provocarn
problemas de clasificacin y segmentacin.
Una herramienta importante para este tipo de tcnicas son los histogramas de la
imagen o los generados a partir de una seleccin de color particular, expuestos previamente en
la seccin 2.3.1. Este tipo de tcnicas son ideales cuando se tienen objetos de color definidos
sobre un ambiente contrastante.
2.3.3 Representacin y descripcin de las regiones
Despus de la deteccin de regiones tiene lugar la descripcin y representacin de las mismas
en trminos tiles para ser procesadas y con ello definir los objetos del ambiente.
Principalmente, se utilizan dos enfoques [13]:
-

A travs de las caractersticas externas o contorno

En trminos de las caractersticas internas relacionados con los pixeles que


comprendan la regin.

Se elegir una representacin externa cuando el objeto principal se centra en las


caractersticas de forma y una representacin interna cuando el principal inters se concentra
en propiedades de reflexividad tales como color y textura. Cualquiera que sea el caso, las
caractersticas seleccionadas debern ser sensibles a variaciones como los cambios en tamao
y direccin. En la prctica las regiones se describen y representan haciendo uso de una mezcla
de ambos enfoques.

54
Esquemas de representacin [13]. Dentro de los esquemas de representacin se
encuentran varias tcnicas que se describirn con mayor detalle a continuacin.
Cdigos de cadena: se utilizan para representar un contorno por medio de una
sucesin conexa de segmentos de longitud y direccin particular. Esta tcnica tiene su base en
los criterios de conectividad cuatro y ocho mencionados previamente al inicio de esta seccin.
Las imgenes digitales normalmente se procesan en un formato cuadriculado con el mismo
espacio en las direcciones x y y, este cdigo se genera siguiendo un contorno en determinada
direccin, por ejemplo, en sentido de las manecillas de reloj, y conforme a esto se asigna la
orientacin a los segmentos que conectan cada par de pixeles. Este mtodo generalmente no
se utiliza porque las cadenas resultantes pueden ser bastante largas y cualquier ruido o
imperfeccin a lo largo del contorno origina cambios en el cdigo. En otras palabras, para el
funcionamiento ptimo se debera contar con regiones muy bien limitadas
Aproximaciones poligonales: consiste en tratar el contorno digital aproximndolo a un
polgono y su objetivo radicar en captar la esencia del contorno con un polgono del menor
nmero posible de lados. Esta aproximacin puede resultar en una bsqueda iterativa de gran
consumo de tiempo, pero existen diversas tcnicas de complejidad moderada; por ejemplo,
bsqueda de polgonos con permetro mnimo o las tcnicas de fusin y divisin. La primera
consiste en fusionar puntos a lo largo del contorno hasta que el ajuste de la curva contenga
errores mnimos y la segunda consiste en subdividir en forma sucesiva el lado en dos partes
hasta que satisfaga un criterio dado.
Firmas: consiste en representar el contorno en funcin de una variable, una de las
formas ms simples es representar la distancia del centro de la regin al contorno en funcin
del ngulo. La idea bsica ser representar el contorno en una funcin unidimensional,
presumiblemente ms sencilla que una bidimensional. Estas formas no variarn con la
traslacin, pero si con la rotacin y la escala. La desventaja de este mtodo es que depende de
la homogeneidad de las regiones.
Lados del contorno: basada en la descomposicin de un contorno en lados y cuando
estos lados son curvos se recurre a la tcnica del cerco convexo en la cual se analizarn los
lados para detectar transiciones hacia adentro o fuera de la superficie convexa. Debido a que
en la prctica los contornos digitales tienden a ser irregulares a causa de la digitalizacin, el
ruido y las variaciones en la segmentacin, se intenta reducir ese efecto a travs de otras
tcnicas antes de aplicar la descomposicin de los lados.
Esqueleto de una regin: se obtiene al transformar esa regin en su eje medio,
quedando nicamente su estructura. Esta tcnica consume mucho tiempo computacional pues
se debe calcular la distancia desde cada punto interior al contorno para as poder obtener el eje

55
medio. Por ltimo se encuentra el confinamiento de la regin [28] el cual se realiza a travs
de cajas de limitacin en forma rectangular que encierran a la regin segmentada.
Caracterizacin externa e interna. Se referir al contorno de la regin y parte de
formas y definiciones simples como la longitud, dimetro y curva, para formar el permetro,
rea y densidad de una regin. El permetro se definir como la longitud de su contorno, el
rea como el nmero de pixeles en ese contorno y la densidad por el permetro al cuadrado
entre el rea. Este ltimo es el menos utilizado por ser insensible a la rotacin. Los ejes
principales de una regin son los vectores propios de la matriz de covarianza obtenida al usar
los pixeles de la regin y determinarn las direcciones mximas de expansin de la regin. La
caracterizacin interna tendr relacin con el color de los pixeles encerrados en el rea de la
regin o la textura de los mismos. Ms adelante se explicar que esta caracterizacin resulta
fundamental para el desarrollo de la tesis pues una combinacin entre conocer ambas, el rea
y el color de los pixeles, dar como resultado el reconocimiento de objetos.
Tanto la representacin como la caracterizacin otorgan un mayor significado al
proceso y traducen las regiones segmentadas en informacin importante para procesos de ms
alto nivel.
2.3.4 Representacin y caracterizacin de imgenes binarias
Una vez introducidos estos conceptos tambin resulta importante mencionar que se revisaron
las tcnicas de representacin y caracterizacin relacionadas con el proceso de imgenes
binarias. Lo anterior se debe al hecho de que en MATLAB las conversiones entre espacios de
color a imgenes binarias resultan sencillas y a travs de algoritmos propios se pueden
desarrollar unos de segmentacin e identificacin que produzcan resultados en un menor
tiempo. A continuacin se exponen algunos conceptos relacionados con la representacin y
caracterizacin en las imgenes binarias. Posteriormente, en el captulo 4, se explicar con
mayor detalle el algoritmo y las funciones empleadas.
Propiedades geomtricas importantes. El tamao, la posicin y la orientacin son
las tres propiedades ms importantes de las regiones identificadas. El tamao o rea se refiere
al nmero de pixeles que conforman la regin encontrada. La cual puede encerrarse en una
caja de limitacin compuesta por un largo y ancho. La posicin se define como el centro de
esa rea. La orientacin ser la inclinacin detectada en la regin.
Etiquetado de las regiones. Esta tcnica es sumamente importante pues dar pie a la
obtencin de las propiedades mencionadas anteriormente. Este algoritmo agrupar las
regiones en trminos de conectividad y asignar una etiqueta a cada regin identificada,
generalmente esta etiqueta es un nmero entero. La Figura 2.18 muestra el resultado de

56
etiquetar las regiones encontradas. A partir de este etiquetado tambin es posible describir
propiedades geomtricas importantes. Tomando como ejemplo la regin etiquetada con el
nmero 2 se tiene que est compuesta por 6 pixeles, cuenta con una caja de limitacin de 3
pixeles de largo por 2 de ancho y el centroide se ubicar entre el pixel 2 y 5. Las cajas de
limitacin abarcarn pixeles iniciales y finales de la regin. Para el caso de la regin 3, la caja
de limitacin ser de 2 pixeles de largo por 3 de ancho y contendr 4 pixeles. La desventaja de
utilizar el criterio de cajas de limitacin es que se incluirn pixeles ajenos a la regin original.

Figura 2.18 a) Regiones encontradas b) Etiquetado de esas regiones

2.4

Procesamiento de alto nivel: Identificacin de objetos y estimacin de


relaciones espaciales

En el procesamiento de alto nivel se realizar la identificacin de objetos y la estimacin de


su posicin y tamao en trminos de la imagen, o en otras palabras, las relaciones espaciales.
Esta informacin ser de gran utilidad para contar con una distancia aproximada entre objetos
y con esta distancia trabajar para la localizacin del robot en el campo de juego. El proceso de
identificacin consistir en determinar si el objeto est o no presente en la escena al
compararlo contra una serie de parmetros como los descritos en la seccin 2.3.3. Dichos
parmetros recibirn el nombre de caractersticas. Al conjunto de variables que permiten
identificar un objeto se le llamar patrn. Las caractersticas de todos los componentes,
objetos y clases a buscar dentro de la imagen deben contar con las siguientes propiedades [7]:

Discriminacin: Deben existir diferencias marcadas entre las caractersticas.


Confiabilidad: Deben tomar valores similares para los objetos de la misma
clase.
Independencia: No debe existir correlacin entre las mismas.

57
Nmeros pequeos: Buscar el menor nmero de ellas para reducir la
complejidad del sistema de reconocimiento.

Los enfoques para disear el clasificador son muy variados, y van desde la estadstica
a las redes neuronales pasando por rboles de decisin. Dentro de estos enfoques la
clasificacin puede ser supervisada o no supervisada. En el primer caso se forzar el sistema a
una salida deseada y en el segundo caso se extraern las caractersticas de los datos a travs de
medidas de distancias (Euclidiana o Mahalanobis) o de anlisis factorial. A continuacin se
exponen los requerimientos de un sistema de reconocimiento junto con ejemplos relacionados
con la categora Kid-Size de RoboCup:
Definicin de las clases. Qu se desea reconocer y qu marcar la diferencia
con los otros objetos. Ejemplo: pelota, portera, poste.
Representacin de los patrones. A travs de qu variable se reconocern esos
objetos. Ejemplo: geometra y color.
Extraccin de las caractersticas. Preprocesar la imagen para extraer la
informacin til para el reconocimiento. Ejemplo: Tamao de la regin encontrada y
la clase de color a la que pertenece.
Anlisis de cluster. Buscar diferencias y similitudes entre las clases. Ejemplo:
Diferenciar el orden de apariencia de colores para los postes o el color para las
porteras (tienen la misma geometra).
Diseo del clasificador. Con base en las variables y el dominio buscar el mejor
clasificador. Ejemplo: rbol de decisin.
Evaluar desempeo del clasificador. Se realizar a travs de la
experimentacin y la obtencin de resultados despus de evaluar determinada cantidad
de fotografas. Ejemplo: Tiempo necesario para identificar un objeto.

Para el sistema de visin desarrollado se utiliz la tcnica de rboles de decisin, a


travs de la cual se establecieron reglas particulares para cada objeto tomando en cuenta
caractersticas como la geometra de los objetos, los patrones de color y la ubicacin fija de
algunos de ellos (tal es el caso de los postes y las porteras). Este conjunto de reglas se explica
con mayor detalle en el captulo 5.
Clculo de las propiedades espaciales de los objetos. Una vez identificado el objeto,
lo valioso del algoritmo consistir en establecer una relacin entre lo que se muestra en la
imagen y la realidad, es decir, a travs de la cantidad de pixeles que definen a ese objeto

58
buscar una relacin que permita calcular la distancia a la que se encuentra. Esto se logra a
travs de muestreo e interpolacin. Se deben tomar fotografas de cada objeto a diferentes
distancias y posteriormente hacer una interpolacin por medio de la tcnica de mnimos
cuadrados. Esta tcnica permitir obtener constantes que en conjunto con los resultados
obtenidos de la caracterizacin de las regiones, tales como el rea o el permetro, contribuirn
a conocer la distancia a la que se encuentra el objeto de la cmara o del robot.
Mnimos cuadrados. Es una tcnica de anlisis numrico en la que dados diferentes
datos se intenta encontrar una funcin que mejor se aproxime a los datos, de acuerdo con el
criterio del mnimo error cuadrtico. Es importante buscar una funcin a la cual aproximar los
datos.

2.5

SISTEMAS DE LOCALIZACIN

La localizacin [44] es uno de los problemas ms importantes a resolver en un robot


autnomo. Su precisin contribuir al desarrollo de un mapa de localizacin y a la planeacin
de la trayectoria a seguir. El objetivo principal de la localizacin [14] es estimar la posicin en
relacin con el medio que lo rodea basndose en las lecturas de los sensores (cmaras).
Gutman et al [14] proponen los siguientes enfoques para abordar el problema de la
localizacin:
1)

Basados en comportamiento: Radican en la interaccin entre las acciones del

robot y su medio. Por ejemplo un robot que recorra un espacio siguiendo la regla de la
mano derecha y regrese por el mismo camino realizando un procedimiento inverso. La
desventaja de este tipo de enfoques es que el autmata no es capaz de ubicarse
geomtricamente pues su capacidad de navegacin est implcita en la lectura de los
sensores de movimiento y en la historia de los mismos.
2)

Basados en puntos de referencia (landmarks). Consisten en ubicar al robot a

travs de puntos de referencia en el campo. Esto es muy similar a cmo los GPS se
ubican su posicin por medio de los satlites. Recurrir a esta tcnica resulta eficiente si
se cuenta con objetos de referencia que no se muevan al momento de interactuar con el
robot. Este enfoque es bastante til en el dominio de RoboCup pues se cuenta con
cuatro objetos que no sufrirn cambio de lugar a lo largo de un encuentro: los dos
postes y las dos porteras.
3)

Basado en el ajuste de datos a los sensores: La mecnica de este enfoque se

fundamenta en actualizar la posicin del robot a travs de la informacin captada por


los sensores. Comparan esa informacin con un mapa de la superficie del medio sin
tomar en cuenta referencias.

59

Dentro de estos enfoques se clasificarn diversos mtodos para llevar a cabo la


localizacin, entres los cuales se encuentran el Mtodo de Markov, Filtros de Kalman, lgica
difusa, triangulacin y el Mtodo de Montecarlo. Varias de ellas se basan en la probabilidad
de ubicar al robot en cierta posicin.
El mtodo de Markov se centra en una aproximacin discreta de la funcin de
probabilidad sobre todas las posibles posiciones en el ambiente. Generalmente esa
distribucin se realizar empleando mallas regulares o mapas topolgicos. Los Filtros de
Kalman realizan un escaneo y lo comparan con un mapa obtenido a priori para efectuar la
estimacin de la posicin. Es necesario presentar la posicin inicial del robot para que la
tcnica funcione. Ambos mtodos entran en el enfoque basado en ajuste de datos por medio
de los sensores. El Mtodo de Montecarlo consiste en representar la probabilidad de la
posicin actual del robot p(l) mediante un conjunto de muestras < l,w > que describen la
hiptesis de la posicin de l dentro del entorno. W es el nivel de certeza de la hiptesis que se
presenta, el cual tambin se actualiza junto con la posicin. Este mtodo se basa en la
localizacin de Markov por lo que tambin emplea las fases de prediccin y actualizacin a
travs de los datos recibidos por los sensores. Triangulacin es el mtodo ms sencillo de
bajo consumo computacional que recae en el enfoque de puntos de referencia. Esta tcnica
hace uso los generados a partir de la distancia entre el objeto y dos puntos de referencia.
La tcnica seleccionada para el desarrollo del sistema de localizacin fue
triangulacin, pues existen referencias fijas en el ambiente. A travs de la salida generada en
la estimacin de distancia se conoce la distancia entre el punto de captura de la imagen y los
objetos de referencia, por consiguiente se puede estimar el punto del campo en el cual se
ubica el robot. En el captulo 6 se describen las ecuaciones, el programa generado en
MATLAB y la interfaz grfica que muestra la posicin terica del robot. En el experimento
final se marcan posiciones arbitrarias en el campo y se compara con la distancia arrojada por
el programa.

60

Captulo 3
3 CLASIFICACION DE COLOR

Como se mencion en la seccin 2.3.1, el criterio de clasificacin seleccionado tiene


como base el color. Se define un conjunto de clases de color que caracterizan a los objetos
conocidos en el ambiente, dividiendo el espacio de color en distintas clases o subespacios. La
definicin de tales umbrales consiste en ajustar un volumen a una nube de muestras de los
pixeles pertenecientes a los objetos del entorno. De tal forma que se establezca la pertenencia
a una clase. La seleccin de la tcnica depender en gran medida del espacio de color con el
cual se vaya a trabajar. Los espacios RGB y YUV son difciles de subdividir. La precisin de
las clases en los enfoques geomtricos se debe entender como una medida de qu tan bien
refleja el volumen construido a la forma y dimensiones de la nube de muestras. Una clase de
calidad es aquella que contiene la mayora de las muestras y a su vez disminuye la distancia
entre ellas y la superficie.
La dificultad de dividir los espacios lineales como RGB y YUV incrementar la
precisin y calidad con la que se deben representar esos subespacios. Las formas geomtricas
que se utilizan para describirlos abarcan desde cubos hasta superficies implcitas, pasando por
esferas y elipses que se obtendrn al emplear criterios de distancias euclidianas o de
mahalanobis. Tambin es posible utilizar conos y paraboloides los cuales delimitarn la nube
de pixeles. De las formas expresadas anteriormente, las que se utilizan comnmente son las
esferas y elipses. Esto se puede entender mejor si se analiza la Figura 3.1, en la cual se
presentan nubes de pixeles tomadas a partir de la imagen (c) y se ha encerrado a esa nube de
pixeles en elipses (a) y esferas (b). A partir de esa imagen se puede ver que la Figura 3.1.a
tiene un mejor ajuste con las formas elpticas a las formas esfricas presentadas en la 3.1.b.
Las superficies implcitas fusionan esferas de diversos tamaos formando una nica funcin.
La cantidad de esferas depender del nmero de clases seleccionado y la fusin de un factor
rho asignado. Todo esto se explicar en la siguiente seccin.

61

Figura 3.1 a) Nube de pixeles representadas por elipses b) Nube de pixeles representadas por esferas c)
Imagen a partir de la cual se tomaron las muestras de color

Antes de concluir esta breve introduccin

es importante sealar que para esta

investigacin se trabaj en dos etapas esenciales. La primera consisti en generar la


clasificacin a partir del espacio lineal RGB y hacer uso del algoritmo de superficies
implcitas. Posteriormente al analizar las ventajas de trabajar con un espacio no lineal como lo
es HSI, se continu la labor bajo este esquema y la clasificacin se elabor a travs de la
asignacin de umbrales mximos y mnimos a cada componente. En este captulo se describe
cada una de las tcnicas con mayor detalle, as como los algoritmos desarrollados en
MATLAB y los resultados obtenidos a partir de ellos. Dentro de estos resultados se seala el
tiempo de procesamiento requerido.

3.1 Superficies implcitas


La tcnica de superficies implcitas para la clasificacin de color fue desarrollada e
implementada por Raziel Alvarez en su trabajo de tesis Creacin de Sistemas de Percepcin
y Localizacin para Robots Cuadrpedos [2]. A travs de esta tcnica se puede determinar
cuando los puntos del espacio se encuentran fuera o dentro de la funcin de agrupamiento al
llevar a cabo la evaluacin.
De acuerdo a Bloomenthal [5] las superficies implcitas son figuras bidimensionales
que existen en tercera dimensin. La superficie estar compuesta por puntos que satisfacen
cierto criterio. En trminos matemticos ese criterio estar determinado por una funcin

62
especfica f. Al evaluar f(p)1 eso significar que el punto p se encuentra en la superficie, si
f(p) > 1 entonces p no pertenece a la superficie.
3.1.1 Construccin del algoritmo
3.1.1.1 Obtencin de primitivas esfricas
El primer paso para construir las superficies implcitas consiste en obtener muestras de color
de los objetos del ambiente a partir de imgenes capturadas por la cmara. Posteriormente se
establece un nmero k de primitivas esfricas distribuidas a lo largo de las muestras y se lanza
el algortimo K-means. A partir de este algoritmo se obtienen los centros de las esferas y
mediante la desviacin estndar de las muestras que pertenecen a cada esfera se obtendrn los
radios de las mismas.
El algoritmo K-means [19] se basa en la minimizacin de un criterio y divide la
informacin analizada en un nmero k de conjuntos no jerarquizados y excluyentes entre
ellos. Este algoritmo trata cada dato como un objeto con un lugar especfico en el espacio. La
decisin de que cada dato pertenezca a un cluster (conjunto) determinado depender de la
cercana que tenga con los elementos de dicho conjunto y que exista una lejana con
elementos de otros conjuntos. A partir de un criterio de distancia se determinar esa
pertenencia. Existen diversos criterios de distancia aplicables a este algoritmo, pero el ms
comn corresponde a la distancia euclidiana con la cual se obtienen grupos esfricos.
K-means se realiza de forma iterativa a fin de minimizar la sumatoria de las distancias
entre cada objeto que pertenece al cluster y su centro. Mover los objetos a nuevos conjuntos
hasta que esa suma ya no pueda disminuir ms. El resultado consistir en un grupo de clusters
diferenciables. Los pasos a seguir se enlistan a continuacin, junto con un ejemplo para una
mejor comprensin. Se toman como punto de partida los datos de la Tabla 3.1
Tabla 3-1 Ejemplo de datos para Clasificacin K-means.

i
1
2
3
4
5
6
7
8

Px
0
1
0
1
4
5
4
5

Py
0
0
1
1
4
4
5
5

i es el ndice que va desde el primer dato hasta el ltimo. Cada dato estar compuesto
por valores en las coordenadas x y y.

63
1. Determinar, arbitrariamente, la posicin inicial de centros y la cantidad de los
mismos. A partir del ejemplo, se toma como centros iniciales: c1(0.1,0.2) y
c2(0,0.3).
Tabla 3-2. Centros iniciales

j
1
2

cx
0.1
0

cy
0.2
0.3

2. Obtener la distancia, a partir de la ecuacin 3.1, de cada muestra a los centros con
el fin de identificar pertenencias. La mnima distancia encontrada ser la que
determine a qu centro pertenece la muestra.
(3.1)
Del ejemplo expuesto, las distancias resultantes y la pertenencia para la
primera iteracin queda de la siguiente forma:
Tabla 3-3 Resultado de distancias y pertenencias para ejemplo de K-means

i
1
2
3
4
5
6
7
8

0.2236
0.922
0.8062
1.2042
5.4452
6.2008
6.1847
6.8593

0.3
1.044
0.70
1.2207
5.4489
6.2201
6.1717
6.8622

cj
c1
c1
c2
c1
c1
c1
c2
c1

3. Recalcular los centros al promediar las posiciones de las muestras que han sido
identificadas como parte de un determinado cluster. Con la primera iteracin los
nuevos centros son: c1(2.4,2.2) y c2(2.6,3.3)
4. Repetir los pasos anteriores hasta que el cambio en la posicin de los centros sea
despreciable. Los centros finales son: c1(0.5,0.5) y c2(4.5,4.5) y se muestran en la
Figura 3.2

64
Centro del
grupo 2

Centro del
grupo 1

Figura 3.2 Datos y centros obtenidos a partir del ejemplo de K-means

El ejemplo expuesto fue muy sencillo y fcil de comprender, pero a travs de este
algoritmo se garantiza que cada muestra pertenecer a un grupo y que se converger a un
mnimo local. Los conjuntos declarados inicialmente que no contengan muestras, conforme
avanzan las iteraciones del algoritmo, quedarn eliminados.
El resultado que arroja K-means toma en cuenta la ubicacin de los centros y arroja el
cluster al que pertenece cada muestra. El ejemplo anterior fue en 2D, pero aplica para
cualquier dimensin. Particularmente para el anlisis de imgenes se requiere una versin 3D
de este algoritmo. En ese caso, las coordenadas de los centros estarn determinadas por los
tres ejes (x, y, z). Con la informacin referente a las coordenadas de los centros y de cada
punto que conforma los clusters es posible obtener la distancia. Posteriormente, a partir de
esta matriz de distancia, se obtendr la desviacin estndar de las mismasecuacin 3.2
donde N=n-1, y n es el nmero de datos. Esta desviacin se debe calcular para cada cluster
obtenido, identificado por el j-simo trmino. De acuerdo a Murray Spiegel [40] cuando el
tamao de muestra es muy grande (N>30) prcticamente no existir diferencia en usar N o n.
La desviacin estndar informar sobre la variabilidad existente entre las distancias o, en otras
palabras, cunto tienden a alejarse los valores puntuales del promedio.
(3.2)

Partiendo de que las muestras seleccionadas presentan una distribucin normal, se


pueden aplicar las siguientes propiedades de la desviacin estndar tpica:
a) El 68.7% de los casos estn comprendidos entre
b) El 95.45% de los casos estn comprendidos entre

, es decir el

doble de la desviacin tpica a ambos lados de la media.


c) El 99.73% de los casos estn comprendidos entre

, es decir el

triple de la desviacin tpica a ambos lados de la media.


Dado que el objetivo es cubrir un mayor nmero de muestras resulta ms conveniente
emplear el segundo y tercer caso, de tal forma que el radio (r) de la esfera se obtendr al

65
sumar la media encontrada en las distancias y el mltiplo seleccionado de la desviacin
estndar, tal como lo muestra la ecuacin 3.3.

(3.3)

Otra forma de obtener el radio consiste en que a partir de la misma matriz de


distancias obtenidas se considere la mayor distancia encontrada, pero el problema de este
criterio radicar en que la probabilidad de incluir pixeles que no pertenecen a la clase de color
ser mayor.
3.1.1.2 Construccin de la superficie implcita
Partiendo de los centros y radios obtenidos, el esquema de construccin se fundamenta en las
funciones propuestas por Lin et al [15] y Ricci [30]. El primero propone la ecuacin 3.4 para
la representacin de las esferas y el segundo la ecuacin 3.5 para la fusin de las esferas
encontradas. Resulta importante definir que P estar descrito por las coordenadas (x,y,z) que
en otras palabras es el valor de las componentes (R, G, B)
(3.4)

(3.5)

Donde
El valor de representa el ajuste que tiene la superficie implcita a las esferas que la
conforman. Se emplear para establecer una tolerancia para agregar o eliminar regiones muy
alejadas de la superficie formada. Un valor muy grande significar que la superficie ha
quedado muy ajustada a las primitivas, mientras que un valor pequeo se traducir en un
menor grado de ajuste, como se ilustra en la Figura 3.3:

Figura 3.3 a) Superficie con fusin grande b) Superficie con fusin pequea

66
La funcin 3.5 definir cada clase de color, sin embargo si se realiza una evaluacin
en lnea tomando en cuenta esta funcin se consumira mucho tiempo ya que cada pixel de la
imagen deber evaluarse en cada funcin de clase de color para determinar a cul pertenece.
Como ejemplo al tener una imagen con una resolucin de 288x322 y contar con 5 clases de
color esto da como resultado 92, 736 pixeles que debern ser evaluados en 5 funciones
diferentes. Por eso ser importante contar con una tabla de bsqueda que indique la
combinacin en el espacio de color RGB de los puntos que hayan resultado contenidos dentro
de una clase de color particular.
Para construir la tabla de bsqueda se deben evaluar los puntos del espacio y
determinar mediante la funcin 3.5 aquellos que pertenezcan a cada clase de color resultante.
La Tabla 3.4 muestra un ejemplo de tabla de bsqueda. Para que un dato sea considerado en
la tabla de bsqueda ste debe cumplir el criterio

. Esto parte de las siguientes

propiedades de la funcin:
f (P)<1 Para todos los puntos P(x,y,z) interiores
f (P)=1 Para todos los puntos P(x,y,z) sobre la superficie
f (P)>1 Para todos los puntos P(x,y,z) exteriores
Tabla 3-4 Ejemplo de tabla de bsqueda

R
207
207
129
208
113

G
204
205
178
217
144

B
16
16
46
59
46

57
58
181

106
114
57

140
135
93

Color
Amarillo
Amarillo
Verde
Blanco
Verde
Azul
Azul
Naranja

Como se mencion anteriormente y como se muestra en la Tabla 3-4, el espacio de


color RGB est discretizado en cada componente de color y las intensidades van de 0 hasta
255.
Al definir una funcin implcita para un color particular se est definiendo un subespacio dentro del cubo RGB. Dicho cubo tiene 255x255x255 micro cubos diferentes. Un
grupo de ellos quedar dentro de la superficie implcita.

67

Figura 3.4 Representacin de micro cubos alineados en direccin z y y

Todos estos micro cubos pueden ser enlistados uno por uno en forma de tabla o en
forma de columnas alineadas en una determinada direccin, ya sea x, y o z. Esta direccin
debe ser la que cuente con mayor nmero de micro cubos. La Figura 3.4 es una
representacin de micro cubos y se resaltan alineaciones en direccin y y z. Cada una de
estas alineaciones producir una tabla organizada de forma distinta. La alineacin que se toma
en este caso es en direccin z pues cuenta con un mayor nmero de micro cubos.
Al enlistar los micro cubos en columnas alineadas en la direccin z, el resultado
ser una tabla con secciones en la cual las coordenadas x y y son la misma pero z es un
nmero consecutivo que va desde un valor z hasta un valor z. Entonces es posible
compactar dicha seccin de la tabla original en un solo rengln de la forma

Partiendo de esta lgica la tabla de bsqueda resultante de evaluar la funcin 3.5 se


podr compactar llevando a cabo lo siguiente. Primero es necesario verificar los valores
mximos y mnimos para cada componente R, G, B. Posteriormente el orden en la tabla
compacta se determinar de menor a mayor rango.
Ejemplo: Despus de haber analizado los rangos se obtiene que los valores mximos y
mnimos son: R[50 130] G[40-70] B [30-50]. Por lo tanto la diferencia para cada rango ser:
R=80, G=30, B=20, de tal forma que el orden de los componentes se invertir de la siguiente
manera: RGB a BGR. As, en la matriz compacta ste ser el orden para los pixeles
encontrados.
Lo anterior har ms eficiente la bsqueda o el comparativo de los pixeles durante la
etapa de segmentacin.

68

3.1.2 Programacin en MATLAB


El objetivo de esta seccin consistir en explicar el algoritmo creado para generar las tablas de
color para cada clase. En total son cinco clases de color: naranja, verde, amarillo, azul y
blanco. La secuencia de programacin se sintetiza en el diagrama de proceso mostrado en la
Figura. 3.5:

Fotos

Algoritmo

Seleccin de muestras
representativas de cada
clase de color

K-means

Centros
esferas

Evaluacin de las
muestras en la superficie
implcita
f(P)<=1

Superficie implcita
formada por la fusin de
las esferas

Radios
esferas

Definir

Matriz
pertenencia

Distancia de puntos a
centros, media y
desviacin estndar
Xmean + 3 Rmax

Tabla de color para cada


clase

Figura 3.5 Proceso para formar tablas de bsqueda a travs del algoritmo de superficies implcitas

En MATLAB, este proceso se dividi en dos programas para su ejecucin:


supimplicitpaso1 y supimplicitpaso2, cuyos algoritmos se muestran en el Anexo A.5 y A.6.
El primero abarca desde la seleccin de muestras hasta la obtencin de radios, tomando en
cuenta los dos criterios mencionados en la seccin previa radio mayor y radio con media ms
desviacin estndar, y centros de la esfera. Tambin incluye muestras grficas de los puntos
seleccionados y las esferas creadas a partir de ambos criterios. El segundo toma la salida del
primero para crear la superficie y hacer la evaluacin de las muestras seleccionadas para
determinar si cumplen con el criterio marcado. En caso de que esto ocurra se agregan a la
tabla de color. Tambin se incluye la generacin de la tabla reducida.
Supimplicitpaso1. Este programa recibe como entradas las fotos de las cuales se har
la seleccin de las muestras, el nmero inicial de clusters y el mltiplo deseado de la

69
desviacin estndar. La salida sern tres matrices, una que corresponde a los centros, otra que
corresponde a los radios y otra que indica a qu cluster pertenece cada muestra de los datos.
[Centros Radios DatosYpertenencia]=supimplicitpaso1(fotos,nclusters,sigma)

Este programa se subdivide en cuatro partes. La primera corresponde a la seleccin de


muestras, la cual se hace a travs de la funcin roipoly(f). Ser posible alimentar la cantidad
de fotos deseada y en cada foto se podrn elegir muestras encerradas por polgonos. El
trmino de esta etapa consistir en contar con una matriz que agrupe todos los datos elegidos.

Figura 3.6 Seleccin de muestras a travs de roipoly(f)

Con la matriz de datos se procede a lanzar el algoritmo K-means, el cual forma parte
de las funciones de MATLAB. Como entrada recibe la matriz de datos y el nmero de
clusters inicial, posteriormente se agregan parmetros que facilitan el proceso. El primer
parmetro es Empty Action con la variable drop. Lo anterior provocar que si un cluster no
tiene muestras se elimine del resultado. Otra parte importante es Replicates, lo cual indicar
el nmero de veces que se repetir el algoritmo, cada una con una inicializacin diferente.
Finalmente Options mostrar la convergencia en cada repeticin y esto se define en la
variable opts a travs de la funcin statset en la cual se pedir desplegar el resultado final
para cada iteracin o repeticin realizada. Cuando se alcanza el mismo resultado significa que
el proceso ha sido exitoso. La salida ser una matriz de pertenencia y los centros de los
clusters.
[IDX Centros]=kmeans(Matrizdatos,nclusters,'EmptyAction',
'drop','Replicates',3,'Options',opts);

La tercera parte consiste en obtener los radios a partir de los centros y la matriz de
pertenencia. Con estos datos se calcula la desviacin estndar de la distancia de cada punto al
centro del cluster , y se obtiene la media para realizar la suma entre esta y el mltiplo de la

70
desviacin seleccionado en el criterio de entrada sigma. Tambin se obtiene el radio mayor a
partir de la matriz de distancias.
La cuarta parte corresponde a una representacin grfica de los puntos seleccionados y
las esferas creadas a partir de la desviacin estndar y los centros del cluster. La Figura 3.7
muestra un ejemplo de ellas. En esta imagen se puede apreciar las diferentes tonalidades
encontradas en las muestras seleccionadas y esto es punto de partida para encontrar
superficies que incluyan la mayora de ellas. En los experimentos tambin se evaluar el
efecto del nmero de clusters en el tamao de las esferas encontradas.

Figura 3.7 Representacin grfica. Izquierda: Muestras seleccionadas. Derecha: Esferas resultantes

Supimplicitpaso2. Este segundo algoritmo generar como salida la tabla de color


reducida para cada clase deseada. Como entrada se alimentar con la matriz de datos, centros,
radios, el factor de aglutinamiento y una etiqueta del color correspondiente. Dichas etiquetas
han sido asignadas como lo muestra la Tabla 3-5.
tablabusq=supimplicitpaso2(datos,centros,radios,rho,color)
Tabla 3-5 Etiquetas de color asignadas para cada clase

Color

Etiqueta

Naranja

Verde

Amarillo

Azul

Blanco

Este programa se compone de dos ciclos concatenados, el primero har un barrido de


las muestras de las clases de color y el segundo crear la sumatoria de cada esfera. Al finalizar
se obtendr un resultado a partir de 3.5 que se evaluar mediante un condicional, el criterio de
f(P)<= 1. Si el resultado es positivo se agregar a la tabla de color, en caso contrario, esa
muestra se elimina.

71
Una de las mejoras al programa consiste en no solo evaluar el total de las muestras
seleccionadas, sino que a partir del rango obtenido para cada componente de color se genera
una tabla de pixeles con la combinacin entre cada rango (Anexo A.7). Lo anterior se explica
a travs del siguiente ejemplo: Las muestras seleccionadas para un determinado color fueron
32,167 despus de realizar el algoritmo supimplicitpaso1 y al evaluar las esferas obtenidas en
la funcin implcita, la tabla de bsqueda queda reducida a 542 datos. Ahora bien, la
diferencia entre los rangos obtenidos produce una matriz de 49x50x41 datos, es decir un total
de 100,450. Cuando esta nueva tabla se evala en la funcin implcita genera una tabla de
1071 datos. Lo anterior muestra que al considerar la matriz de 100450 datos, la tabla de
bsqueda increment, lo cual puede producir mejores resultados en la segmentacin, pero
habr que considerar el tiempo de procesamiento. En ambos casos la ventaja con la tabla
reducida consiste en disminuir un 98% la cantidad de datos. En tiempo no se produjo una
diferencia significativa: para el primer caso fue de 85 ms y para el segundo 86.98 ms.
3.1.3 Pruebas y resultados obtenidos
En esta seccin se presentan algunos resultados experimentales que ejemplifican los pasos
mencionados anteriormente. Las pruebas fueron realizadas en una computadora con
procesador Intel Centrino Duo a 1.83 GHz con 1GB de memoria RAM y al ser de los
primeros algoritmos elaborados, se utilizaron imgenes tomadas con la cmara Live!Creative
la cual cuenta con una resolucin de 320x240 pixeles. El tiempo de adquisicin de imagen es
menor a 1 segundo ya que la tasa de adquisicin es de 30 fps. Se mostrarn las esferas
creadas para las diversas clases de color, los tiempos de procesamiento y el resultado
compacto2 de las tablas de color obtenidas.
Una de las primeras observaciones correspondi a las grficas que muestran los puntos
seleccionados en el espacio RGB (Figura 3.8) para los colores azul, naranja, verde, amarillo y
blanco del ambiente. A travs de ellas se confirm que una de las ventajas de las superficies
implcitas al crear una tabla de bsqueda consiste en que se toman en cuenta las diferencias
encontradas en un mismo color.

El resultado compacto se refiere a los rangos mximos y mnimos encontrados en cada tabla, las muestras
que incluye y las muestras que se seleccionaron.

72

Figura 3.8 Muestra de pixeles seleccionados.

A partir de la Figura 3.8 tambin se puede ubicar cada color en el espacio RGB y se
aprecia que algunos compartirn valores en determinado rango. Por ejemplo el amarillo y
verde.
Para ejecutar las pruebas se probaron diferentes valores para el nmero de clusters, el
mltiplo de la desviacin estndar y el factor de aglutinamiento. Al finalizar algunos
experimentos se concluy que estos tres factores se encuentran relacionados. El nmero de
clusters para K-means permitir la creacin de un mayor nmero de esferas que al fusionarse
reducirn el nmero de puntos incluidos, sin embargo algo muy importante es que conviene
tener un nmero grande de clusters. Esto es por la dispersin encontrada en las muestras
presentadas en la Figura 3.8. En caso de ser un menor nmero se incluirn ms muestras y eso
provocar un radio de esfera grande que puede causar inclusiones no deseadas. La Figura 3.9
muestra esa diferencia.

Figura 3.9 Esferas creadas a partir de n-clusters. Izquierda: seis clusters, resultado esferas de mayor tamao.
Derecha: doce clusters

Otro parmetro es el mltiplo de la desviacin estndar. Como se mencion en la


seccin 3.1.1.1 ste puede ser dos o tres. Para las pruebas se us este ltimo. Tambin se
probaron diversos valor de rho, entre los ms comunes se experiment con = 0.5,1,2,5,10.

73
Se comprob que al incrementar este valor, un menor nmero de muestras quedaban incluidas
en la tabla.
Tabla 3-6 Resultado de experimentos con diversos valores de rho y mltiplo de sigma

Muestras
3550
3550
3550
3550
13550
13550
13550
13550

Sigma

3
3
3
3
4
4
4
4

0.5
1.5
2
5
0.5
1.5
2
5

No. Datos
Porcentaje
Tabla de
inclusin
bsqueda
3550
100.0%
3095
87.2%
2937
82.7%
2668
75.2%
13550
100.0%
13500
99.6%
13338
98.4%
13032
96.2%

La Tabla 3-6 muestra el condensado de las pruebas realizadas para cuatro valores de
rho y dos diferentes mltiplos de sigma. Se tomaron dos diferentes muestras, y a partir de
ellas se comprueba el valor del factor de aglutinamiento para la inclusin de muestras y
tambin la importancia del mltiplo de sigma, ya que con un mayor valor el factor de
aglutinamiento resulta casi despreciable por el porcentaje de inclusin de arroja. De esta
forma, para los experimentos realizados se eligi n-clusters =10, =2 y 3. La Figura 3.10
muestra el resultado de las esferas obtenidas con estos parmetros.

Azul

Amarillo

Naranja

Figura 3.10 Esferas para clases de color azul, amarillo y naranja

Una vez establecidos los parmetros se procedi a obtener las tablas de bsqueda para
cada clase de color. Se utilizaron dos tablas para cada clase. Ambas tablas toman como base
las muestras seleccionadas y se reducen de la forma explicada en la seccin 3.1.1.2. La Tabla
3-7 muestra un ejemplo de la tabla generada para la clase de color azul.

74
Tabla 3-7 Ejemplo de Tabla reducida para la clase de color azul, cuyo orden es RGB

R
32
32
32
32
32
32
32
32
32
32
32

G
58
59
60
61
62
63
64
65
66
67
68

Bmin
94
92
90
89
88
88
87
87
87
87
87

Bmax
100
102
103
104
105
106
106
106
107
107
107

La diferencia entre las tablas obtenidas radica en que la primera solamente evalaen
la funcin implcitalos datos de las muestras seleccionadas y la segunda genera una tabla
con la combinacin de pixeles encontrados en la diferencia de rangos. Por ejemplo si R = [30
40], G = [1 3] B = [20 25], el nmero de renglones en la matriz creada ser: 10x2x5 = 100,
donde los primeros tres renglones sern de la siguiente forma:

Otro factor importante es en el tiempo que tarda el algoritmo para crear la tabla de
bsqueda. Respecto a este tema, se comprob a travs de los experimentos que depender del
nmero de muestras seleccionadas, as como del factor de aglutinamiento, aunque la
consecuencia de ste ser menor.
Dado que se obtuvieron dos tablas se evalu el tiempo para cada una de ellas. La
Tabla 3-8 muestra el resultado de los experimentos para cada clase de color. La tabla se divide
en dos secciones la primera se refiere a las caractersticas de la tabla reducida obtenida a partir
de las muestras de cada color. La segunda se enfoca al resultado que arroja la formacin de
tablas reducidas considerando todos los valores ubicados dentro del rango que forman el total
de las muestras para todas las clases de color. Para cada mtodo se muestra la cantidad de
datos contenidos en las tablas y el tiempo de generacin de la tabla, representado por T(s).
De acuerdo a la tabla mostrada el primer mtodo cuenta con un menor tiempo de
ejecucin y esto se relaciona con la cantidad de datos que toma en cuenta para la evaluacin
de la funcin. En el captulo correspondiente a la segmentacin se evaluarn ambas tablas

75
para revisar el tiempo de proceso que toma segmentar cada imagen y los resultados que arroja
cada una. .
Tabla 3-8 Datos generados para la tabla de bsqueda

Naranja
Verde
Amarillo
Azul
Blanco

Muestras
iniciales

T (s)

Datos
Tabla
reducida

9140
79442
85002
70739
11443

1.1
5.131
3.36
1.79
0.625

1851
801
1001
488
668

Rangos a partir muestras


Rmin Rmax Gmin Gmax Bmin Bmax
162 255 75 207 43 133
75 164 86 176 75 169
96 173 108 168 35
88
31
68
54 112 73 153
152 218 154 213 140 208

Datos
Datos a partir
Tabla
de rangos
reducida
1,104,840.00
752,940.00
244,860.00
171,680.00
264,792.00

5302
2046
1864
1069
2277

Ts
28.2
4.4097
2.73
1.068
3.98

Rangos a partir de tabla reducida


Rmin Rmax Gmin Gmax Bmin Bmax
162 255 75 205 43 133
88 164 94 172 83 152
90 170 108 168 38
82
31
66
54 107 78 145
152 218 154 214 140 208

3.2 Determinacin de umbrales simples en el espacio HSI


Como se mencion en la seccin 2.1.3, existen dos tipos de espacios de color, lineales y no
lineales. El espacio RGB corresponde a la primera clasificacin y HSI a la segunda. A travs
de este espacio se describe el tono, la saturacin e intensidad de un color. Resulta bastante
prctico para el procesamiento de imgenes ya que separa la informacin del color en formas
comprensibles para el ojo humano.
Una de las principales desventajas es que usualmente las cmaras no cuentan con una
captura de imgenes en este espacio por lo que resulta necesario aplicar las ecuaciones de
conversin descritas en 2.1.3 para obtener los valores en HSI. La Figura 3.11 muestra la
captura de imgenes en RGB y su conversin al espacio HSI.

Figura 3.11 Diferencia entre imgenes en RGB y HSI. Derecha: RGB. Izquierda: HSI

Una ventaja importante al utilizar el espacio HSI es que la tercera componente se


refiere a la intensidad o cantidad de luz en el color, lo cual se traduce en la diferencia
existente entre azul cielo y marino. Con el fin de evaluar la posibilidad de reducir las
componentes a analizar en los algoritmos de segmentacin, se compararon los valores de HSI
en diversas fotografas del mismo objeto tomadas bajo diferentes condiciones de iluminacin.

76
3.2.1 Algoritmo en MATLAB
El algoritmo desarrollado denominado HSIroipoly(f) y descrito en el Anexo A.8

es

sumamente sencillo. Como entrada recibir una matriz de imgenespreviamente capturados


por el dispositivo de adquisicin de imgenesy la salida sern los histogramas a partir de
los cuales el usuario analizar los rangos que mejor describen la clase de color.
El primer paso consiste en convertir las imgenes de RGB a HSI. Posteriormente, en la
imagen convertida se hace la seleccin de las muestras para cada clase en un determinado
nmero de imgenes, las cuales deben ser representativas del objeto a identificar. La suma de
todos los datos se clasificar en un histograma. La finalidad de ste se basa en detectar los
rangos de color que aparecen con mayor frecuencia. A partir del anlisis de las grficas se
determinan los valores mximos para cada componente (H, S e I) de cada clase de color.
Dicha secuencia se muestra de forma grfica en el diagrama de la Figura 3.12

Conversin
RGB a HSI
rgb2hsi(f)

Imagen
HSI

Seleccin de
muestras de
color

Matriz
datos

Anlisis
grfica

Histograma

Rangos HSI
Valores max y min

roipoly(f)

Figura 3.12 Proceso para la obtencin de rangos HSI

La conversin RGB a HSI se realiza con la funcin rgb2hsi(f), la cual tiene como
entrada un arreglo de tres dimensiones que representa la imagen capturada. Cada dimensin
se relaciona con un componente del espacio RGB. El algoritmo se encuentra en el Anexo A.1
y bsicamente consiste en la extraccin de las componentes individuales para ser utilizadas en
las ecuaciones 2.1 a 2.4. El primer paso de estas ecuaciones consiste en encontrar el valor del
ngulo . La importancia de este valor radica en que a partir de l se calcular la componente
H. Las otras componentes se calcularn nicamente con los valores asignados en RGB. El
resultado ser una matriz de salida en tres dimensiones normalizada, en otras palabras, de cero
a uno.
Una vez realizada la conversin, se seleccionan las muestras por medio de la funcin
roipoly(f), la cual recibe como entrada la imagen normalizada en el espacio HSI y como salida
arroja una matriz binaria de tamao igual a la resolucin de la imagen; si la resolucin es de
320x288, ste ser el tamao de esa matriz. En la matriz binaria se representar con un
nmero 1 el rea seleccionada. Esta seleccin se muestra en la Figura. 3.12. Tambin se puede
apreciar la diferencia entre las cmaras probadas, VGPVCC2 de Sony vs Live! Creative. La
resolucin es de 352x288 pixeles para la primera y 320x240 para la segunda. Debido a que la

77
imagen obtenida a travs de la cmara Live! Creative resulta ms ntida se opt por utilizar
esta ltima para llevar a cabo todos los experimentos.

a)

b)

Figura 3.13 Extraccin de muestras en HSI a) Imagen tomada con Live!Creative b) Imagen tomada con
VGPVCC2 de Sony

A partir de la matriz binaria obtenida mediante roipoly(f) se deben ubicar las


posiciones que ocupan los unos y posteriormente estas posiciones substituirlas por los valores
de las componentes H, S e I. De esta forma a partir de cada seleccin se obtendr una matriz
con los valores en este espacio. Dicha matriz ser la entrada para los histogramas.
El ltimo paso consiste en obtener los histogramas para cada componente. Se eligi
utilizar esta herramienta estadstica para acotar los valores mximos y mnimos a las clases
que tuvieran el mayor nmero de observaciones. Para efectuar esto se recurre a la funcin de
MATLAB hist(f), donde f se refiere a la matriz de datos, en este caso los valores
seleccionados de cada componente del espacio HSI. En la Figura 3.13.a se seleccion el color
naranja y en la 3.13.b el amarillo. La Figura 3.14 muestra los histogramas obtenidos para esta
seleccin. Conforme se analicen ms fotos y se obtenga un mayor nmero de muestras, el
resultado que arroje el anlisis de los histogramas ser ms confiable.

78
H

a)

b)

Figura 3.14 Histogramas obtenidos a partir de la seleccin de muestras en el espacio HSI. a) Muestras de
color naranja b) Muestras de color azul

Con los resultados del histograma se generar una matriz mxn donde m son los colores
y n los valores mximos y mnimos para cada componente del espacio HSI. Esta matriz ser
de 5x7. Se agrega una columna para asignar una etiqueta numrica a cada color, tal y como se
hizo para la tabla de bsqueda en el algoritmo de superficies implcitas. La Tabla 3-9 muestra
un ejemplo de esta matriz para los colores naranja, verde y blanco con las etiquetas 1, 2 y 5
respectivamente. A partir de este ejemplo tambin se puede observar otra de las ventajas al
utilizar este espacio como clasificacin de color y esta se refiere al hecho de que los colores se
pueden diferenciar claramente a travs de la componente H, cuestin que no sucede con el
espacio RGB.
Tabla 3-9 Ejemplo de la tabla obtenida a partir del anlisis de histogramas en el espacio HSI

Hmin
Hmax
Smin
Smax
Imin
Imax
0.00727663 0.15077219 0.19831933 0.73529412 0.41176471 0.77777778
0.31919362 0.4853395 0.30035336
1
0.13071895 0.40261438
0
0
0
0
1
1

Color
1
2
5

3.2.2 Pruebas experimentales y resultados


Para llevar a cabo las pruebas y obtener la matriz de rangos para cada color, se utiliz una
computadora personal con un procesador Intel Core 2 Duo, memoria RAM de 1 GB y la
cmara Live!Creative. El primer paso consisti en tomar n imgenes que definieran cada
color. Aqu cabe destacar que existen objetos a identificar que comparten colores, como es el

79
caso de los beacons y las porteras. Por tal motivo para las muestras de los colores amarillo y
azul se utiliz una mezcla de fotografas de ambos elementos. Para las muestras de verde se
utilizaron fotografas de cada objeto que estuviera rodeado por pasto artificial y para el color
blanco se utilizaron tanto las marcas como los postes de las porteras. Es importante
mencionar que durante las competencias todo el campo se encuentra rodeado por mamparas
blancas que contribuyen a una disminucin del ruido visual generado por el pblico presente
en el encuentro, sin embargo en el laboratorio no se cuenta con estas mamparas. Una vez
tomadas las fotografas, al ejecutar el algoritmo se obtuvieron los rangos para cada color. La
Tabla 3-10 muestra el resultado obtenido a partir de este anlisis. Esta tabla ser la entrada
para el siguiente paso: la segmentacin de regiones que antecede a la identificacin de
objetos. Dado que los objetos a identificar, requeridos para llevar a cabo la triangulacin,
presentan solamente tres clases de color, la tabla obtenida se reducir a estos tres colores:
naranja (etiqueta 1), amarillo (etiqueta 3) y azul (etiqueta 4) .
Tabla 3-10 Rangos HSI para cada clase de color

Hmin
0.0256
0.2093
0.1557
0.5339
0.7

Hmax
0.065
0.4252
0.1887
0.5911
0.85

Smin
0.4079
0.0338
0.37
0.357
0

Smax
0.5728
0.0877
0.56
0.4679
0.018

Imin
0.4175
0.3275
0.3881
0.27
0.8

Imax
0.6745
0.6007
0.485
0.4555
1

Color
1
2
3
4
5

Se tom el tiempo para obtener los histogramas y a partir de ah realizar el anlisis


para los rangos mximos y mnimos. Este tiempo abarca desde que se genera la matriz con
todas las muestras seleccionadas por el usuario hasta la entrega final de los histogramas. Dado
que los objetos son de diferente tamao, las muestras generadas para cada color no son las
mismas, sin embargo esta diferencia aporta una idea de la relacin muestras-tiempo de
procesamiento ya que, como en el caso de superficies implcitas, entre mayor sea la muestra
el tiempo de proceso incrementar proporcionalmente. La Tabla 3-9 seala las muestras
utilizadas para la obtencin de la tabla anterior y el tiempo de proceso.
Tabla 3-11 Relacin No. de muestras y tiempo de procesamiento para rangos en HSI

Color
Naranja
Amarillo
Azul
Verde
Blanco

No.Muestras
42059
70930
84840
93096
16156

Tiempo
12 ms
24.6 ms
26.8 ms
30.5 ms
5.7 ms

80
Como se mencion en el marco terico, uno de los factores esenciales para la
clasificacin de color radica en las condiciones de iluminacin; sin embargo el espacio HSI
tiene una fuerte ventaja y es que la componente de Intensidad est fuertemente relacionada
con la iluminacin. A partir del algoritmo generado tambin se experiment esta premisa y a
continuacin se muestran los resultados.
La Figura 3.15 muestra un ejemplo de las imgenes adquiridas para clasificar el
beacon1. Por otro lado, el rango de valores obtenidos se muestra en la Tabla 3.10.

Figura 3.15 Adquisicin de imgenes bajo diferentes condiciones de iluminacin. a) Imagen tomada en el
laboratorio con luz artificial. b) Imagen tomada en una casa con luz natural
Tabla 3-12 Comparacin de valores obtenidos para las componentes HSI bajo diferentes condiciones
de iluminacin

Tono
Luz natural
Luz artificial

Hmin
0.16
0.16

Hmax
0.22
0.2

Saturacin
Smin
Smax
0.55
0.9
0.3
0.7

Intensidad
Imin
Imax
0.4
0.52
0.63
0.83

La primera componente, referente al tono en este caso amarillo, permanece en el


mismo rango. La variacin de la segunda componente se debe a la saturacin que cada uno
tiene y el poste de la primera imagen se aprecia ms opaco. La diferencia resulta ms notable
en la componente de la intensidad y esto se debe principalmente a las condiciones de
iluminacin en el lugar donde fueron tomadas las fotos. La primera foto fue tomada
aproximadamente a las 10:00 hrs. en una casa y la ubicacin del objeto fue frente a un
ventanal. Para la segunda toma se utiliz la luz artificial de un laboratorio y se realiz
alrededor de las 15:00 hrs. La conclusin ms importante de este experimento radica en el
hecho de que la componente H no sufre variacin a pesar de que el objeto se someta a
diferentes condiciones de iluminacin. Esto deriva en la reduccin de factores a analizar
durante el procesamiento de imgenes. Por estas razones, para este trabajo slo se tomaron en

81
cuenta H y S para la segmentacin. Se ha incluido la componente S para asegurar que los
resultados obtenidos son confiables, aunque en las pruebas de laboratorio y despus de
realizar varias clasificaciones de color, la diferencia principal fue encontrada en la
componente H.
En otros experimentos, realizados cuando se tomaron fotografas de los objetos en
diferentes condiciones de iluminacin, se observ que an los colores ms parecidos dentro
de este espacionaranja y amarilloseguan conservando la diferencia de rango en la
componente H, lo que contribuye a que ste sea el factor determinante en la segmentacin sin
presentar alteraciones relacionadas con la iluminacin. La Figura 3.16 muestra ejemplos de
las fotografas adquiridas para el color naranja.

Figura 3.16 Imgenes para revisar componente H. a) Pelota bajo iluminacin natural b) Pelota bajo
iluminacin artificial
Tabla 3-13 Resultado de rangos al evaluar ls fotografas con el programa RoiPoly_HSI

AMARILLO
Luz natural
Luz artificial

Tono
Hmin
0.16
0.16

NARANJA
Luz natural
Luz artificial

Hmax
0.22
0.2

Saturacin
Smin
Smax
0.55
0.9
0.3
0.7

Intensidad
Imin
Imax
0.4
0.52
0.63
0.83

Hmax
0.02
0.06

Saturacin
Smin
Smax
0.4
0.6
0.4
0.55

Intensidad
Imin
Imax
0.2
0.4
0.4
0.6

Tono
Hmin
0.01
0.02

82

3.3 Observaciones respecto a los criterios de clasificacin de color


El tiempo de ejecucin para ambas tcnicas fue muy rpido, pero tom menos tiempo
formar la tabla de valores mximos y mnimos en HSI. La seleccin de la tcnica para
continuar con la identificacin de objetos quedar definida en la siguiente seccin pues
aquella que se elija deber cumplir dos caractersticas muy importantes: un tiempo de
procesamiento menor a un segundo y adecuada definicin de las regiones segmentadas.
Tambin las clases en HSI probaron tener una menor variabilidad con respecto a la
iluminacin. A pesar de que las superficies implcitas pueden abarcar una gran gama de
valores en el espacio RGB, las tablas de bsquedas obtenidas para cada color tienen un
promedio de 2000 datos y al agrupar las de los tres colores principales se obtiene una tabla de
9000 datos aproximadamente. Comparando con la cantidad de pixeles que conforman el
espacio RGB, representan solo el 0.05% de los datos, pero al momento de realizar la
bsqueda a travs de los algoritmos de segmentacin esta cantidad de informacin consumir
mayor tiempo de proceso. Por otro lado la tabla HSI generada para los tres colores principales
provocar que slo se requieran seis datos (en la tabla obtenida se puede apreciar que a partir
de las dos primeras componentes se puede elaborar la clasificacin, dado que la tercera se
encuentra ms relacionada con las condiciones de iluminacin presentes al momento de la
adquisicin de imgenes).

83

Captulo 4
4 SEGMENTACIN

En este captulo se presenta el proceso de segmentacin de imgenes que es el ltimo


paso del procesamiento de nivel intermedio. A partir de la segmentacin se busca alcanzar dos
objetivos: el primero es descomponer la imagen en regiones para su anlisis y el segundo
reorganizar los pixeles que pertenezcan a las regiones encontradas. De tal forma que se pueda
trabajar con ellas y constituyan la entrada para los procesamientos de mayor nivel, es decir, la
identificacin de objetos y estimacin de parmetros. La segmentacin se basa en la
utilizacin de un criterio de color a partir del cual se clasifican los pixeles y se forman las
regiones. Debido a esto recibe como entrada las clases de color generadas en el captulo
anterior, tabla de bsqueda en RGB a partir de la evaluacin de la funcin de superficies
implcitas y tabla de valores mximos y mnimos en HSI a travs de la conversin de RGB y
la clasificacin en regiones cbicas.
Se trabaj con tres tcnicas de segmentacin: procesamiento rengln por rengln,
crecimiento de regiones a partir de un pixel semilla y crecimiento de regiones a partir de
lneas de escaneo. La Tabla 4.1 muestra las diferentes combinaciones entre tcnicas que se
abordarn a lo largo de este captulo y los algoritmos creados para cada una.
El captulo se organiza en dos secciones, la primera describe brevemente el
funcionamiento de cada tcnica y los algoritmos desarrollados. La segunda muestra los
resultados y la eleccin del mejor algoritmo. Esto depende de los resultados obtenidos y el
tiempo de proceso requerido.

84
Tabla 4-1 Combinaciones de algoritmos para el proceso de segmentacin

Clasificador de color

Tabla de bsqueda &


Superficies implcitas

Tcnica de segmentacin
Procesamiento rengln por rengln

segmentacin_colores

Conversin RGB a HSI


& Clasificacin en
regiones cbicas
opti_reshape

Crecimiento de regiones por semilla

segsemilla_colores

segsemilla_coloresHSI

Crecimiento de regiones a partir de


lneas de escaneo tipo I

seg_scanlines
segmentacin_semillaRGB

Crecimiento de regiones a partir de


lneas de escaneo tipo II

scanlinesRGB
segmentacin_semillaRGB

seg_scanlinesHSI
segsemilla_linscanHSI
segsemillaHSI
scanlines
segsemilla_linscanHSI
segsemillaHSI

4.1 Procesamiento rengln por rengln


En este algoritmo se analizan todos los pixeles de la imagen y se determina si pertenecen a
cierto color al evaluarlo mediante un criterio de color, en este caso, las tablas de color
obtenidas a travs de las superficies implcitas y la tabla de valores mximos y mnimos para
cada color en el espacio HSI.
El algoritmo creado se bas en el trabajo de Bruce et al. [6]. El algoritmo original
plantea un anlisis de todos los pixeles de izquierda a derecha de manera horizontal.
Conforme se realiza la lectura, los pixeles se clasifican de acuerdo a las clases de color
predefinidas y se van formando las corridas horizontales con aquellos pixeles adyacentes de la
misma clase. Un pixel inicial puede deberse a un inicio de rengln o un cambio de clase.
Cuando una corrida inicial se completa, se verifica si puede ser agrupada en alguna caja al
cumplir con la pertenencia a la clase. Al ser fusionada una corrida con la caja de limitacin
existente, las coordenadas finales e iniciales de la caja se actualizan. Si no se cumplen las
condiciones de fusin, se crea una nueva caja. En las cajas de limitacin se almacena el punto
inicial y el punto final de la caja y adems puede contener otros parmetros como color,
centroide, ejes de la regin y tamao del rea.
Se utiliz la funcin find(c) de MATLAB que funge como una primera corrida de
anlisis en toda la imagen buscando pixeles que cumplan con una condicinen este caso
pertenecer a la tabla de bsqueda generada a partir de la funcin de superficies implcitas o
bien encontrarse dentro de los umbrales asignados en el espacio HSI. Como resultado de esta
corrida se genera una matriz con las posiciones de los pixeles que cumplieron con la
condicin. Posteriormente sta ser la entrada para el siguiente proceso, el cual consistir en
etiquetar las regiones en una imagen binaria, tal como se explic en la seccin 2.3.3. El

85
resultado de este etiquetado ser contar con cajas de limitacin que contenga informacin
importante como el centroide, el rea y el color.
Estas cajas de limitacin sern las estructuras con las cuales deba lidiar el
procesamiento de alto nivel. Generalmente se formarn cajas como consecuencia de ruido en
la imagen o se integre rea que no aporte informacin relevante para identificar los objetos del
ambiente. Por tal motivo, una vez obtenidas las cajas se puede realizar un barrido y eliminar
las cajas cuya rea se encuentre debajo de un umbral o aquellas que se encuentren contenidas
dentro de otras.

4.1.1 Algoritmo de construccin procesamiento rengln por rengln


Se desarrollaron dos algoritmos bajo esta tcnica de segmentacin a travs de umbrales. La
diferencia entre ambos radica en la arquitectura para la clasificacin de color, ya que uno
recibe como entrada la tabla de bsqueda generada a partir de las superficies implcitas y el
otro la tabla de valores mximos y mnimos en el espacio HSI. Esta diferencia provocar que
los criterios de evaluacin sean diferentes y que para el segundo se deba realizar una
conversin del espacio RGB a HSI en la imagen a segmentar. El primer programa se titula
segmentacin_colores y el segundo opti_reshape. Ambos se encuentran en los anexos A.9 y
A.11. A pesar de esas diferencias, los pasos a seguir en la construccin del algoritmo cuentan
con una lgica comn expuesta a continuacin junto con las variantes encontradas para cada
caso.
1. Como entrada se introduce la imagen a segmentar y la tabla de bsqueda o tabla de
valores mximos y mnimos en HSI. En caso de que se introduzca la tabla de
bsqueda y debido al reordenamiento que tiene lugar cuando sta se compacta, se debe
agregar una matriz de orden que indique la secuencia de aparicin de cada
componente en la tabla de bsqueda. Cabe recordar que la tabla de bsqueda se
entrega de esta forma: [Vmin Vmean Vmax

min

Vmaxmax]. Tambin es importante

agregar una matriz que indique las etiquetas de los colores. Por ejemplo: [3,4,1]. Para
el caso de amarillo, azul y naranja. Se debe colocar en el orden en que se realice la
introduccin de las tablas.
2. A travs de la funcin find(c) se buscarn los pixeles en la imagen cuyos valores
cumplan ciertos criterios. Para el caso de la tabla de bsqueda se harn dos barridos de
la imagen. El primero para encontrar pixeles cuyos valores en las componentes Vmin y
Vmean sean iguales a los presentados en la tabla de bsqueda, y el segundo para que
de entre los pixeles encontrados se localicen aquellos cuya componente Vmax se

86
encuentre dentro de los rangos expresados en la tabla de bsqueda. En caso HSI la
situacin se torna ms sencilla, pues se buscan aquellos pixeles cuyas componentes H,
S e I se encuentren dentro de los valores mximos y mnimos de la tabla de entrada. Se
evalan las clases de color contenidas en la tabla de bsqueda, es decir, si la tabla slo
contiene naranja, azul y amarillo, solamente estos colores se segmentarn. Si el pixel
cumple el criterio seleccionado, se guarda la posicin y el valor.
3. Con la tabla de posiciones se genera una matriz binaria de la imagen a partir de la cual
se etiquetarn las regiones.
4. Una vez obtenidas las regiones se obtienen las siguientes caractersticas: punto inicial,
punto final de la regin, rea y etiqueta de color. La figura 4.1 muestra grficamente
ambos pasos. Primero se obtiene la imagen, posteriormente se hace la conversin a
imagen binaria y se etiquetan las regiones, y finalmente se otorga una etiqueta
diferente por regin.
1
1
2
3
4
5
6
7
8
9
10
11

9 10

2
2
2
2
2

2
2
2
2

1
1

1
1

1
1
3
3
3
3
3

1
1

3
3
3
3
3

Figura 4.1 Proceso de conversin a imagen binaria y etiquetado de regiones para obtener cajas de limitacin
y caractersticas

87
5. El resultado es una matriz con las regiones encontradas [No. Regin, color de

pertenencia, Xi, Yi, Xf, Yf, rea, ancho y alto] y una imagen, como lo muestra la
Figura 4.2 a, que encierra dentro de una caja delimitadora blanca las regiones de color
encontradas. Tambin se cuenta con la variante de slo mostrar el contorno de la
regin, de acuerdo con la Figura 4.3 b.

a)

b)

Figura 4.2 Segmentacin de Beacon1. a) Regiones limitadas por cajas blancas. b) Regiones limitadas por
cuadros del color de clase a la que pertenecen

Para llevar a cabo los ltimos tres pasos y as obtener las propiedades de las regiones se
emplean otros algoritmos dentro del mismo programa. Por un lado, segmentacin_colores
hace uso de: regiones que a la vez contiene crea_imagen y busca_regin, los cuales se
encuentran en el Anexo 10. El objetivo del primero es crear una matriz binaria con las
coordenadas x y y de los pixeles clasificados dentro de alguna clase de color. Despus dentro
del programa regiones se encuentra tambin la funcin bwlabel. La cual etiquetar las
regiones conectadas y el programa busca regin toma la informacin generada por bwlabel
para encontrar el principio y fin de esas regiones y almacenarlas en una matriz [Xi, Yi, Xf, Yf]
Opti_reshape se apoya en regioneshsi_reshape (Anexo A.12) que tambin manda llamar al
programa busca_regin y la diferencia radica que como entrada ya recibe una matriz binaria
al sustituir el valor de los pixeles en alguna de las componentes por 1s en las coordenadas de
aquellos clasificados. Esto evita mandar llamar al programa crea_imagen.

4.2 Crecimiento de regiones a travs de una semilla


Este algoritmo evala la informacin relacionada con la vecindad de los pixeles utilizando
cualquiera de los dos tipos de conectividad: conectividad de cuatro o conectividad de ocho
(Ver Figura 2.14). Se basa en el trabajo propuesto por Wasik y Safotti [43] para el dominio de
RoboCup. Su propuesta consiste en utilizar semillas de cada color para llevar a cabo el

88
crecimiento y fusionar aquellas regiones adyacentes que compartan el mismo criterio de color.
El crecimiento se detiene cuando al evaluar un pixel vecino, ste ya no cumple con los
parmetros definidos. El criterio de color que ellos proponen utiliza un conjunto de umbrales
que determinan los cambios mximos permisibles entre pixeles, de tal forma que la expansin
implica primero evaluar el contraste entre el pixel y la semilla. Cabe resaltar que ese pixel
antes de ser evaluado debi cumplir con uno de los dos criterios de conectividad.
Posteriormente se analiza el valor del pixel bajo el criterio de homogeneidad. Si entra dentro
de los valores estipulados, se agrega a la regin. De lo contrario se contina el proceso hasta
que ya no se encuentren ms pixeles que pertenezcan al criterio de color y con esto se detiene
el crecimiento.
El criterio de comparacin utilizado en este trabajo es la bsqueda del pixel en la tabla
generada a partir de las superficies implcitaso en la tabla de valores mximos y mnimos
en HSIy el algoritmo desarrollado busca la conectividad de cuatro pixeles.
Existen dos vas para seleccionar las semillas. Una opcin requiere que el usuario
seleccione semillas representativas de la clase de color y a partir de ellas se comience el
crecimiento, la otra consiste en entregar una matriz de semillas a travs de la cual se realice.
La desventaja del primer mecanismo radica en que si slo se selecciona una semilla de cada
color, el crecimiento se detendr dejando fuera algunas zonas importantes para el
reconocimiento del objeto. La Figura 4.3 ejemplifica este caso. Al segmentar el Beacon1
(amarillo-azul-amarillo) se selecciona un pixel semilla de cada color, amarillo y azul. Sin
embargo el pixel seleccionado para el color amarillo pertenece a la regin inferior. Por ende
cuando el algoritmo realiza el crecimiento no cuenta con informacin de la regin superior y
en consecuencia no la toma en cuenta cuando presenta los resultados. Debido a esto el
Beacon1 no aparece completo en la imagen segmentada.

Figura 4.3 Problemas al contar solo con una semilla para el crecimiento de regiones

89
Otra de las complicaciones que plantea esta forma de seleccin de semillas es que
durante las competencias es casi imposible que el usuario realice ese proceso por la dinmica
del encuentro y tambin no coincide con el objetivo de crear un sistema de segmentacin
autnomo. Por tal motivo es indispensable contar con un conjunto de semillas para iniciar el
crecimiento, y dicho conjunto se puede obtener a travs de una bsqueda inicial de los pixeles
que pertenezcan a cada clase de color ubicada en la imagen. Para obtener esta matriz inicial se
recurre a la tcnica de lneas de escaneo, la cual se explica con detalle la seccin 4.3.

4.2.1 Algoritmo de construccin para crecimiento de regiones a partir de un


pixel semilla
Se desarrollaron dos algoritmos cuya diferencia radica en la clasificacin de color que recibe
como entrada. El algoritmo segsemilla_colores (Anexo A.13) acepta la tabla de bsqueda a
partir de la tcnica de superficies implcitas. Sus variables de entrada son la imagen a
segmentar, el nmero de clases de color, la tabla de bsqueda reducida, el orden de los
componentes RGB y las etiquetas de color. Como salida las propiedades de las regiones
segmentadas y el tiempo de cmputo requerido. El otro algoritmo segsemilla_coloresHSI
(Anexo A.14) recibe como variables de entrada la imagen que se desea segmentar, el nmero
de colores por segmentar, las etiquetas de cada color y la tabla de umbrales en HSI. La salida
ser la misma que en el otro algoritmo.

Ambos algoritmos constan de cuatro etapas

esencialmente:
1. Lectura de la imagen, obtencin del nmero de renglones y columnas y creacin de
una matriz de ceros sobre la cual se dibujarn las regiones encontradas.
2. Seleccin de las semillas iniciales para cada clase de color a travs de la funcin getpts
de MATLAB. En esta funcin se da clic derecho sobre el pixel deseado y se
almacenan las coordenadas del mismo. La Figura 4.4 muestra este proceso. En l se
pise que el usuario seleccione el pixel con el botn derecho del mouse. Una vez que se
realiza esta seleccin, el programa comienza a trabajar. Tambin en esta etapa se
inicializan los valores como el tamao de la regin y los pixeles que pertenezcan a esa
regin.

90

Figura 4.4 Seleccin de pixel semilla con la funcin getpts

3. Crecimiento de la regin por medio de la evaluacin de conectividad entre pixeles tipo


cuatro. Esto se realizar a travs de un ciclo while; la condicin es que mientras se
encuentre un pixel vecino que pertenezca al criterio de color seleccionado la regin
crecer. En cuanto ya no se encuentren pixeles vecinos, el ciclo se detiene. Cada pixel
adyacente se busca en la tabla de color que corresponda a la clase evaluada en ese
momento. La salida de este crecimiento ser una lista con la posicin de los pixeles
que forman las diferentes regiones de color.
4. Al contar con esa matriz de pixeles es posible la generacin de dos imgenes, una que
muestre las regiones encontradas y otra los contornos de esas regiones. A partir de
estos contornos se obtienen propiedades como la posicin inicial y final tanto en x
como en y, el rea que abarca ese contorno o los pixeles que pertenecen. Este proceso
de regiones a contornos se basa en la tcnica explicada en la seccin 4.1.1 inciso
cuatro, y se representa en la Figura 4.5.

a)

b)

Figura 4.5 Regin segmentada y el contorno de la regin en caja de limitacin

91

4.3 Crecimiento de regiones a partir de lneas de escaneo


Las lneas de escaneo realizan un barrido inicial de la imagen en coordenadas que cuenten con
una separacin determinada. Los pixeles que pertenezcan a las coordenadas de barrido se
evaluarn en los criterios de color seleccionados. De esta forma se genera una matriz de
semillas para cada clase de color. Posteriormente con esta matriz de semillas se inicia el
crecimiento de regiones. Muchas de estas semillas se incluirn en el crecimiento y poco a
poco se reducir la lista de bsqueda ya que una semilla contenida en la regin no se evala
nuevamente.
La ventaja de utilizar lneas de escaneo radica en la reduccin de informacin que se
tomar para el anlisis. A diferencia de un procesamiento rengln por rengln en el cual se
evaluaran todos los pixeles que conforman la resolucin de la imagen. Las lneas de escaneo
se concentran en un porcentaje.
Para dar una idea de la reduccin de pixeles a evaluar, tomemos como base una
imagen con resolucin 352x288, lo cual da como resultado 101,376 pixeles. Las lneas de
escaneo con la distribucin propuesta en este trabajo tomarn para el anlisis slo el 16% de
esta informacin y al evaluar este nuevo conjunto de pixeles la reduccin puede alcanzar un
5% del total. Esto provee una ventaja en tiempo de cmputo para el anlisis, sin embargo el
efecto de procesar todas las semillas en vez de una como lo ofreca el algoritmo anterior
puede provocar que esa reduccin se invalide.
El algoritmo por lneas de escaneo fue propuesto por Jngel et al [20], [21] con el
objetivo de detectar objetos en la imagen y medir sus tamaos. La propuesta de este grupo de
investigacin consiste en combinar la extraccin de informacin por medio de lneas de
escaneo y la segmentacin por deteccin de bordes. En este trabajo slo se rescata la utilidad
de las lneas de escaneo como herramienta para la reduccin de informacin como punto de
partida para generar una matriz de semillas que se evaluarn en el crecimiento de regiones.
No se abarca el implementar una tcnica de deteccin de bordes.
De acuerdo a Jngel [20], las lneas de escaneo se alinean perpendicularmente al
horizonte de la imagen y se distribuyen con una mayor densidad en las zonas que requieren
mayor atencin para la deteccin de objetos. La densidad se refiere a la cantidad de lneas en
una seccin de la imagen. La cual depender de la separacin entre ellas. A mayor densidad,
menor separacin y viceversa. De forma tal que la densidad aumenta en zonas ms cercanas al
horizonte porque ah se encuentran los objetos ms alejados y en consecuencia los ms
pequeos en la imagen.

92

4.3.1

Sistema Coordenado

El clculo de la lnea de horizonte se realiza a partir del modelo cinemtico de la cabeza del
robot con respecto al plano del campo de juego. Ese modelo debe tomar en cuenta la posicin
del robot con respecto al campo as como la rotacin y traslacin de la cmara. En este
trabajo no se contempla la generacin del modelo cinemtico con esas consideraciones porque
se emplea una webcam para las pruebas. Sin embargo resulta importante definir los siguientes
sistemas de coordenadas para comprender el concepto de lnea de horizonte y las razones de
establecer la lnea de horizonte a cierta distancia.

Campo: Su origen se encuentra debajo del punto en donde se coloca la cmara para
adquirir las imgenes. El eje x apunta en direccin frontal de la cmara. El eje y se dirige a la
izquierda y el eje z apunta hacia arriba de la cmara.
z

y
cmara

Campo

Figura 4.6 Sistema Coordenado para Campo

Cmara: Sistema coordenado que tiene su origen en el centro ptico de la cmara y


los ejes estn orientados de la misma forma que el sistema Campo. Con respecto a la imagen
el eje x apunta al centro de la imagen. El eje y es paralelo a los bordes superiores e inferiores.
El eje z es paralelo a los bordes laterales. Se considera que el centro ptico se encuentra a una
distancia d del campo

93
z

x
y
o

cmara
d

Campo

Figura 4.7 Sistema coordenado para la cmara

Imagen: Sistema coordenado de dos dimensiones cuyo origen se localiza en el centro


de la imagen. El eje x es paralelo a los bordes superior e inferior de la imagen con direccin
hacia la derecha. El eje y es paralelo a los bordes laterales con direccin hacia arriba.
y

Figura 4.8 Sistema coordenado para Imagen

4.3.2 Lnea de Horizonte


La lnea de horizonte en una imagen se define como todos los pixeles que se encuentren al
nivel de los ojos. Esto agrupa a todos aquellos cuya representacin real tiene la misma
distancia al plano del campo que el centro ptico de la cmara del robot. En otras palabras, el
horizonte queda definido como la lnea de interseccin (h) entre el plano de proyeccin de la
cmara P y el plano H, paralelo al campo que pasa por el origen c del sistema coordenado de
la cmara. El plano de proyeccin quedar definido por el sistema coordenado Imagen. La
Figura 4.9 ilustra esta definicin.

94

H
c

Campo

Figura 4.9 Clculo del horizonte a partir de la interseccin entre el plano de proyeccin P y el plano H
paralelo al campo

Cuando una toma se realiza colocando la cmara a 90 respecto al eje x del sistema
coordenado Campo y esta no cuenta rotacin sobre el eje x del sistema coordenado Cmara,
la lnea de horizonte se sita en la mitad de la imagen. Debido a que todas las imgenes
adquiridas a los largo de este trabajo cuentan con este caracterstica, es a partir de esta lnea
que se ha definido la ubicacin y separacin de las lneas de escaneo.

4.3.4 Algoritmos de construccin para generar las lneas de escaneo


Tomando como punto de partida que la lnea de horizonte, para todas las imgenes
adquiridas, se encuentra a la mitad de la imagen se busc probar el efecto de la separacin de
las lneas de escaneo en el tiempo de procesamiento y se generaron dos mtodos.
Ambos toman como punto de referencia un 20% ms arriba de la lnea de horizonte,
localizada al centro de la imagen. Esto con el fin de abarcar un mayor rango y poder incluir
postes y porteras.
4.3.4.1

Lneas de escaneo tipo I

El primer criterio tiene su base en la propuesta hecha por Alvarez [2] y Jngel [20]. Consiste
en formar tres lneas de escaneo con diferente densidad o separacin que corren a partir del
margen de referencia dado, por arriba del horizonte (20% arriba del mismo). Las distintas
longitudes permiten controlar la densidad de escaneo. Estas tres lneas estn intercaladas con
el siguiente patrn: una lnea completa de la referencia hasta el fin de la imagen, una lnea de
la referencia hasta 30% por debajo del horizonte, una lnea de la referencia a 60% por debajo

95
del horizonte y nuevamente una lnea de la referencia al 30% por debajo del horizonte. La
secuencia se repite con aproximadamente 16 pixeles de diferencia entre cada lnea con
diferente longitud. Este patrn se muestra en la Figura 4.10.

Figura 4.10 Primer mtodo para formar el patrn de lneas de escaneo utilizado para superficies implcitas

4.3.4.2 Lneas de escaneo tipo II


El segundo mtodo propuesto consiste en contar con lneas de escaneo de la misma longitud
que abarcan desde la referencia que se extiende por arriba del horizonte hasta el final de la
imagen con una separacin dada por el usuario y que, preferentemente, puede ir de diez a
veinte pixeles de separacin. De ser mayor esta separacin, es posible no incluir objetos
importantesprincipalmente la pelota, cuando se encuentre muy alejada de la toma.
Este patrn se ilustra en la Figura 4.11. En esta figura tambin se aprecia la
importancia de tomar como punto de partida un porcentaje por arriba de la lnea de horizonte.
Ya que de otra forma, los pixeles que pertenecen a la portera, no seran tomados en cuenta y
no se identificara ninguna regin de inters.

96

Figura 4.11 Segundo mtodo para aplicar el patrn de escaneo

4.3.5 Algoritmos de construccin para los dos tipos de lneas de escaneo


El objetivo de estos algoritmos radica en generar una matriz de semillas que sea el punto de
partida para el algoritmo de crecimiento de regiones. Esta matriz de semillas sern las
coordenadas de los pixeles que hayan resultado clasificados dentro de alguna clase de color.
Se generaron cuatro algoritmos en total en los cuales se combinan los diferentes mtodos de
escaneo y las clasificaciones de color. La Tabla 4.2 muestra el nombre de los algoritmos,
resultados de dichas combinaciones.
Tabla 4-2 Combinacin entre los tipos de lneas de escaneo y las clasificaciones de color

Clasificador de color
Tipo de lnea de escaneo
Tipo 1: Tres densidades diferentes

Tipo II: Densidad uniforme

Tabla de bsqueda &


Superficies implcitas
seg_scanlines
Anexo A.15

Conversin RGB a HSI


& Clasificacin en
regiones cbicas
seg_scanlinesHSI
Anexo A.16

scanlinesRGB
Anexo A.17

scanlines
Anexo A.18

El proceso de los algoritmos se puede generalizar de la siguiente forma:


1. Determinar las caractersticas de las lneas de escaneo de acuerdo a la resolucin de la
imagen y considerando las propiedades de cada tipo propuesto. Es decir tres
densidades diferentes o una densidad uniforme con la separacin indicada por el
usuario.
2. Extraer la informacin de los pixeles, en trminos de componentes de color, que
guardan las coordenadas x y y de los puntos que forman las lneas de escaneo.

97
3. Evaluar los valores RGB o HSI en los criterios de color correspondiente
4. Obtener la matriz de coordenadas x, y de los pixeles clasificados.

4.3.6 Algoritmos de construccin para el crecimiento de regiones a partir de


semillas obtenidas por lneas de escaneo
Este algoritmo de procesamiento se compone de tres etapas principalmente. La primera
consiste en la extraccin de semillas a travs de alguno de los dos patrones de lneas de
escaneo presentados anteriormente. La segunda es la creacin de una matriz de semillas que
nace de la evaluacin de los pixeles que pertenecen a las lneas de escaneo en una de los dos
tcnicas de color propuestas: tabla de bsqueda por superficies implcitas o umbrales HSI. La
tercera etapa busca el crecimiento de las regiones, tomando como base las semillas generadas
y evaluando los pixeles vecinos con conectividad tipo cuatro bajo el criterio de color
seleccionado.
Se generaron dos algoritmos en esta etapa, uno para cada criterio de color. La
diferencia estriba en los parmetros de entrada, pero ambos comparten la misma secuencia de
pasos durante el procesamiento. Esta secuencia resultar familiar al lector, pues parte de ella
se ha explicado en secciones previas.
El algoritmo que utiliza como criterio de color la tabla de bsqueda reducida recibe
por nombre segmentacin_semillaRGB (Anexo A.19) y maneja como entrada la imagen a
segmentar, la tabla de bsqueda reducida, el orden de las componentes, los colores a
segmentar, la separacin de las lneas de escaneo y etiqueta numrica para la identificacin
del patrn de escaneo (1-tipo I y 2-tipo II). En este programa se llama a la funcin
seg_scanlines scanlinesRGB para llevar a cabo la extraccin de los pixeles semillas y
tomarlos como base para el crecimiento.
Por otro lado el algoritmo generado para el criterio de umbrales en el espacio HSI,
nombrado segsemilla_linscanHSI (Anexo A.20), tiene como variables iniciales: la imagen a
segmentar, la tabla de umbrales, la separacin deseada en las lneas de escaneo y la etiqueta
del patrn de escaneo. Este algoritmo integra las funciones de los patrones de escaneo
(seg_scanlinesHSI scanlines) para obtener las matrices e iniciar el crecimiento. Tambin se
apoya de segsemillaHSI (Anexo A.21) para realizar propiamente el crecimiento de las
regiones.
La tercera etapa se realiza con una modificacin del algoritmo 4.2.1, y consiste en
evaluar todos los pixeles semilla para cada clase de color. De la etapa anterior cada semilla se
relaciona con una clase de color mediante una etiqueta. As, las semillas color naranja se
utilizarn nicamente para el crecimiento de una regin que pertenezca a ese color. Se evala

98
tambin si las semillas se incluyeron en el crecimiento. De ser as, son eliminadas y se inicia
un nuevo crecimiento slo con aquellas que no hayan sido integradas. Al final se deben
evaluar todas las semillas.
Como salida de ambos programas se contar con la imagen que presenta las regiones
encontradas y las cajas que encierran estas regiones. Se ha propuesto este tipo de contorno
porque cuatro de los cinco objetos a identificar se relacionan con objetos rectangulares, sin
embargo, al presentar la pelota dentro de una caja de limitacin se puede incurrir en
considerar pixeles que no pertenecen a las clases. Una modificacin, a este objeto en
particular, podra ser aplicar la deteccin de bordes tal como lo propone Jngel [20] en su
trabajo de tesis.

4.4 Resultados obtenidos para cada tcnica


A continuacin se presentan algunos de los resultados experimentales obtenidos al probar las
tcnicas explicadas anteriormente. Se probaron ambos criterios de clasificacin de color para
cada tcnica. El objetivo a partir de estos experimentos es definir el criterio y la tcnica de
segmentacin ms conveniente para realizar la identificacin de objetos. Se busc segmentar
los cinco objetos de inters en el campo de juego: beacon1, beacon2, pelota, portera azul y
portera amarilla. Las imgenes que se tomaron para las pruebas se muestran en la Figura 4.12

1 -Beacon1

2-Pelota

4-Portera amarilla

2 Beacon2

5-Portera azul

Figura 4.12 Imgenes para las pruebas de segmentacin por crecimiento de regiones a partir de una matriz
de semillas

99
Los resultados se enfocan principalmente a las imgenes de segmentacin generadas
como salida de los algoritmos y al tiempo de proceso requerido. Tambin se realizaron
pruebas con el color verde y blanco, sin embargo al no contar con la mampara divisoria se
produca mucho ruido en la clasificacin y se decidi, por el momento, descartar la
clasificacin de estos colores.
4.4.1 Procesamiento rengln por rengln
En general los resultados obtenidos a partir de esta tcnica fueron bastante satisfactorios y
ambos criterios de color utilizados generaron salidas similares, tal como lo muestra la Tabla
4-3, en la cual se comparan las imgenes segmentadas.
A pesar de que en la tcnica de HSI se producen algunas reas de ruido, stas se
eliminarn con el parmetro umbralregs en el algoritmo de identificacin de objetos el cual se
refiere al nmero de pixeles contenidos en la regin. De esta forma no se tomarn en cuenta
aquellas regiones menores a ese parmetro que ms adelante, en la seccin correspondiente,
se definir con mayor detenimiento.

100
Tabla 4-3 Comparativo de resultados arrojados por la tcnica de procesamiento rengln por rengln
utilizando ambos criterios de color, Tabla de bsqueda y superficies implcitas vs. Conversin de RGB a HSI
clasificada en regiones cbicas

Tabla bsqueda (SUP.IMPLICIT)

Tabla rangos (HSI)

Beacon1

Beacon1

Beacon2

Beacon2

Pelota

Pelota

Portera amarilla

Portera amarilla

Portera azul

Portera azul

101
La diferencia obtenida radica en el tiempo que tarda la segmentacin con cada criterio
de color utilizado. El promedio de segmentacin a partir de la tabla de bsqueda fue de 7.043
s, mientras que por tabla de rangos HSI fue de 210 ms: veintiocho veces menor (consume
97% menos tiempo). Esta cuestin ser de vital importancia en un proceso continuo de
identificacin de objetos. Los resultados de tiempo obtenidos para cada objeto se muestran en
la Tabla 4-4.
Tabla 4-4 Comparativo de tiempos a partir del procesamiento rengln por rengln

Objetos

Beacon1
Beacon2
Pelota
Portera amarilla
Portera azul

Tabla Bsqueda Sup. Implicta


RGB
(ms)
6290
6048
11000
6300
5580

Tabla umbrales en HSI


(ms)
220
235
200
177
220

4.4.2 Crecimiento de regiones por pixel semilla


Los objetivos de los experimentos realizados bajo esta tcnica se enfocaron a los siguientes
puntos:
1. Evaluar el tiempo de cmputo que consume utilizando slo una semilla.
2. Medir cunto incrementa el procesamiento de las regiones al incluir el color verde.
3. Comparar el tiempo con diferentes imgenes para el objeto pelota

Se decidi evaluar el tiempo requerido para la segmentacin del verde con esta tcnica
porque el usuario elige la semilla inicial y desde este momento el enfoque puede estar en un
color especfico. Situacin que no ocurre con los otros algoritmos.
Como se recordar en los experimentos anteriores, el color verde representa el pasto y
al ser una de las mayores reas de la imagen consume mucho tiempo. Para esto se tomaron
como base dos imgenes. Una en la cual se muestra la pelota sobre el csped y otra de la
portera azul. Para la primera fotografa, cuya segmentacin se muestra en la Figura 4.12, el
tiempo requerido fue de 31 s. Para la segunda, ilustrada por la Figura 4.13, se requirieron
122 s.
Al incluir el color verde el algoritmo se torna ms lento y los tiempos obtenidos no son
ptimos para ocuparlo en las competencias. Esto sucede utilizando una semilla seleccionada
por el usuario para cada color, pero al emplear una matriz de semillas este tiempo puede
duplicarse o triplicarse. Se decidi que en los experimentos subsecuentes la bsqueda solo se
realizara en tres clases de color: naranja, amarillo y azul debido a que son los colores de los 5

102
objetos ms importantes a identificar: pelota, beacon1, beacon2, portera azul y portera
amarilla.

Figura 4.13 Segmentacin a partir de semilla color naranja y verde. Tiempo de proceso 31 segundos

Figura 4.14 Segmentacin a partir de semilla color verde y azul. Tiempo de proceso 122 segundos

Una vez definidos los colores a segmentar, se procedi a verificar los resultados de las
regiones segmentadas y el tiempo que toma este proceso comparando los algoritmos
generados para cada criterio de color. La Tabla 4-5 muestra el comparativo de los resultados
y la Tabla 4-6 los tiempos de ejecucin.

103
Tabla 4-5 Comparativo de resultados arrojados por la tcnica de crecimiento de regiones con un pixel semilla
utilizando ambos criterios de color, Tabla de bsqueda y superficies implcitas vs. Conversin de RGB a HSI
clasificada en regiones cbicas

Tabla bsqueda (SUP.IMPLICIT)

Tabla rangos (HSI)

Beacon1

Beacon1

Beacon2

Beacon2

Pelota

Pelota

Portera amarilla

Portera amarilla

Portera azul

Portera azul

104
Tabla 4-6 Comparativo de tiempos a partir del crecimiento de regiones por un pixel semilla

Objetos

Tabla Bsqueda Sup. Implicta


RGB
(ms)
894
362
96
18200
7000

Beacon1
Beacon2
Pelota
Portera amarilla
Portera azul

Tabla umbrales en HSI


(ms)
909
366
24
12000
6500

Por su naturaleza dentro del juego uno de los objetos para los cuales se debe buscar el
menor tiempo de proceso la pelota. Continuamente se busca su ubicacin para cumplir el
propsito de marcar goles y ganar un encuentro. Se analiz tambin el tiempo que toma la
segmentacin de la misma en tres tomas con tamaos diferentes. La Tabla 4-7 muestra las
imgenes por segmentar, las regiones encontradas, el tamao de la regin y el tiempo que
toma encontrar esas regiones.
Tabla 4-7 Comparativo de tiempos para diferentes tomas del objeto Pelota

Imgenes

Pixeles

Tiempo

1512

3.5 ms

4554

4.7 ms

7052

5.2ms

105
A partir de la tabla anterior se concluyen dos cosas: a pesar de que la pelota puede
incrementar en el nmero de pixeles encontrados casi cinco veces, el tiempo slo aumenta dos
milisegundos; lo segundo, an ms importante que el primero, es que ha sido el menor tiempo
registrado para la segmentacin de la pelota.
La desventaja de utilizar el crecimiento de regiones con la seleccin de un pixel es que
el usuario debe hacer la seleccin y calibrar la semilla inicial de crecimiento. Lo cual resulta
poco prctico dentro de los encuentros.
4.4.3 Crecimiento de regiones por lneas de escaneo
El primer experimento realizado consisti en evaluar el tiempo que toma la creacin de la
matriz de semilla a partir de cada patrn de escaneo en combinacin con el clasificador de
color. La figura 4.14 muestra la imagen del beacon2 con los diferentes patrones de escaneo.
Esta imagen fue el punto de partida para la toma de mediciones.

Figura 4.15 Patrones de escaneo para ambos criterios de color. Tomando como ejemplo el beacon2
Tabla 4-8 Tiempos obtenidos para generar la matriz semilla con cada patrn y clasificador de color

Clasificador de color

Tabla de bsqueda &


Superficies implcitas

Tipo 1: Tres densidades diferentes

(ms)
1580

Conversin RGB a HSI


& Clasificacin en
regiones cbicas
(ms)
578

Tipo II: Densidad uniforme

413

200

Tipo de lnea de escaneo

106
La Tabla 4-8 muestra los tiempos obtenidos en este experimento. El menor tiempo se
registr para el segundo patrn en combinacin con el criterio de color a travs de la tabla de
umbrales en el espacio HSI, siendo ste de 200 ms.
El segundo experimento evala la tcnica completa del crecimiento de regiones para
cada criterio de color y patrn de escaneo. Los resultados se comparan a partir de la imagen
segmentada y el tiempo de proceso.
La Tabla 4-9 muestra las imgenes segmentadas partiendo de una matriz de semillas
generada por el patrn de escaneo tipo I. La diferencia encontrada es que a travs del criterio
de tablas de bsquedas reducidas se cuenta con una mejor definicin de la imagen, pero
tambin consume mayor tiempo. En promedio consume 50% ms de tiempo que el algoritmo
para los umbrales de HSI.
Uno de los inconvenientes detectados es que para la imagen del beacon2 no se realiza
la segmentacin completa debido a que la primera seccin de color azul se encuentra por
arriba de la referencia a partir de la cual se elaboran las lneas de escaneo.

107
Tabla 4-9 Resultados de segmentacin del crecimiento de regiones con lneas de escaneo Tipo I

Tabla bsqueda (SUP.IMPLICIT)

Beacon1

Tabla rangos (HSI)

Beacon1

Pelota

Pelota

Beacon2

Beacon2

Portera azul

Portera azul

Portera amarilla

Portera amarilla

108
Tabla 4-10 Tiempos obtenidos para la tcnica de crecimiento de regiones con lneas de escaneo tipo I

Objetos

Beacon1
Beacon2
Pelota
Portera amarilla
Portera azul

Tabla Bsqueda Sup. Implicta


RGB
(ms)
6200
3100
3200
19000
6480

Tabla umbrales en HSI


(ms)
818
516
600
13000
4000

Los resultados obtenidos en el crecimiento de regiones usando el patrn de escaneo


dos y aceptando el criterio de color por tabla de bsqueda reducida a travs de las superficies
implcitas o la tabla de umbrales en el espacio HSI fueron muy similares, pero nuevamente la
diferencia principal radica en el tiempo. El primer criterio de color muestra resultados con
mayor definicin, sin embargo cuando las regiones segmentadas se transforman en contornos
los resultados son iguales. Es entonces cuando la decisin recae nicamente en el tiempo de
cmputo que toma a cada tcnica el procesar la salida.
La Tabla 4.11 muestra los resultados de las regiones encontradas utilizando los dos
diferentes criterios de color y la Tabla 4.12 muestra los tiempos de proceso requeridos para
obtener el rango de estas regiones.

109
Tabla 4-11 Resultados de la segmentacin usando ambos criterios de color

Tabla bsqueda (SUP.IMPLICIT)

Tabla rangos (HSI)

Beacon1

Beacon1

Pelota

Pelota

Beacon2

Beacon2

Portera azul

Portera azul

Portera amarilla

Portera amarilla

110

Tabla 4-12 Tiempos de procesamiento para la segmentacin por medio de crecimiento de regiones

Objetos

Beacon1
Beacon2
Pelota
Portera amarilla
Portera azul

Tabla Bsqueda Sup. Implicta


RGB
(ms)
4000
9580
1600
4300
3208

Tabla umbrales en HSI


(ms)
613
313
456
3125
2080

De la tabla anterior se concluye que los mejores resultados para este tcnica se
obtienen utilizando como criterio de color los rangos en HSI, y tiene mucha lgica, pues cada
matriz slo se evala en tres umbrales y no en una tabla que contenga ms de 500 elementos,
como es el caso de la tabla reducida generada a partir de las superficies implcitas.
Al comparar la segmentacin de las Tablas 4-9 y 4-11 los resultados son idnticos.
Esto se debe a que las matrices de semillas generadas por cada patrn contienen pixeles
similares a partir de los cuales se genera el crecimiento y que por la naturaleza del algoritmo
de crecimiento, no se analizarn aquellos pixeles que ya estn contenidos dentro de una
regin. Sin embargo al analizar el tiempo que toma la generacin de la imagen segmentada se
encontr que con el patrn II este se reduce en un 50%. De tal forma que para esta seccin el
algoritmo que tuvo mejores resultados fue la clasificacin de color por medio de umbrales
HSI y el patrn de escaneo tipo II.
Otro de los aspectos observados fue el efecto que tiene la referencia a partir de la cual
se elaboran las lneas de escaneo (20% arriba de la lnea de horizonte). Esto se aprecia en la
segmentacin generada por ambos criterios para la imagen del beacon2. A pesar de que la
imagen muestra al objeto completo, las lneas de escaneo no llegan a la primera seccin y esto
provocar que no exista una semilla inicial para el crecimiento. Por lo que si este fuera el
algoritmo que resulte ganador despus de evaluar las diversas tcnicas planteadas en este
captulo, habra que replantear la forma de generar las lneas de escaneo. Una posibilidad
seran lneas de escaneo del inicio al fin de la imagen con una separacin constante. Es decir
una extensin a la imagen completa del patrn tipo II.
Otro punto importante fue que el crecimiento de semillas tarda demasiado tiempo para
la segmentacin de porteras, pero result aceptable para la identificacin de la pelota cuando
solo se emplea una semilla.

111

4.5 Conclusiones para la etapa de segmentacin


Despus de evaluar los resultados con las tcnicas de segmentacin probadas y los criterios de
color creados en el captulo anterior, la decisin final respecto a qu algoritmo utilizar para la
identificacin de objetos se basar en aquel que consuma menor tiempo de proceso. La Tabla
4-13 muestra el resumen de los tiempos que requiri cada algoritmo mostrado en este
captulo.

Objetos

Beacon1
Beacon2
Pelota
Portera
amarilla
Portera azul
Promedio

Tabla 4-13 Resumen de los tiempos obtenidos para cada tcnica de segmentacin
Procesamiento rengln por Crecimiento de regiones a Crecimiento de regiones a Crecimiento de regiones
rengln
partir de un pixel semilla partir de lneas de escaneo
a partir de lneas de
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Bsqueda Sup. umbrales Bsqueda Sup. umbrales Bsqueda Sup. umbrales
Bsqueda umbrales
Implicta RGB
en HSI
Implicta RGB
en HSI
Implicta RGB
en HSI Sup. Implicta en HSI
RGB
(ms)
(ms)
(ms)
(ms)
(ms)
(ms)
(ms)
(ms)
6290
220
894
909
6200
818
4000
613
6048
235
362
366
3100
516
9580
313
11000
200
96
24
3200
600
1600
456
6300
177
18200
12000
19000
13000
4300
3125
5580
7,043.60

220

210.40

7000
5,310.40

6500
3,959.80

6480
7,596.00

4000
3,786.80

3208
4,537.60

A partir de esta tabla se concluye el mejor resultado se gener al combinar el criterio


de umbrales HSI como criterio de color y la tcnica de bsqueda de pixeles y etiquetado de
las regiones para hacer la segmentacin.
Otras consideraciones futuras radicarn en solo buscar tres clases de color para la
identificacin de objetos: naranja, azul y amarillo.
En el siguiente captulo, haciendo uso de la salida de estos algoritmos se proceder a
identificar los objetos en el campo. La atencin se centra en cinco objetos: pelota, beacon1,
beacon2, portera azul y portera amarilla. A partir de este momento resta una etapa para
completar los algoritmos de percepcin, pero se ha concluido la etapa de algoritmos de nivel
intermedio.

2080
1,317.40

112

Captulo 5
5 IDENTIFICACIN DE OBJETOS
Hasta este momento se ha abarcado el procesamiento de nivel bajo e intermedio para el
sistema de percepcin. En este captulo se explica el componente final del sistema de
percepcin, el cual consiste en realizar tareas de alto nivel como la identificacin de objetos y
la estimacin de parmetros espaciales para determinar la distancia a la cual se ubican. Una
vez que se ha identificado el objeto y se conoce la distancia, ser posible pasar a la etapa de
localizacin.
La metodologa utilizada para identificar los objetos se basa en rboles de decisin y la
estimacin de parmetros espaciales se realiza mediante un muestreo e interpolacin de esas
muestras a travs de mnimos cuadrados. A continuacin se explican con mayor detalle estas
tcnicas para cada caso particular.
Los objetivos de este captulo se centrarn en describir los algoritmos que conforma el
programa de identificacin de objetos y estimacin de distancias. Y en calcular el error que
arrojan los parmetros a y b calculados a partir del muestreo.

5.1 Criterios para identificacin de los objetos


La identificacin de objetos parte de las regiones entregadas por la etapa de segmentacin, sin
embargo para simplificar las tareas, estas regiones se codifican empleando una representacin
intermedia que tendr asociados parmetros como el rea, coordenadas de centro, lados
mximos y mnimos y color; se emplea la representacin por cajas de limitacin. La Figura
5.1 muestra ejemplos de las cajas de limitacin.

113

Figura 5.1 Ejemplos de la representacin de cajas de limitacin

La identificacin de objetos utiliza reglas simples agrupadas en flujo de decisino


rboles de decisinpara los cuales el primer discriminante es el color, debido a que el
ambiente es conocido y se encuentra codificado a travs de ese parmetro. Despus de evaluar
el color, se analiza la cantidad de pixeles encerrados en cada caja de color y si dentro de la
imagen aparecen otros colores que permitan descubrir el objeto, as como el orden en el cual
aparecen. Lo anterior principalmente se utiliza para los beacons, ya que ambos tienen los
mismos colores (el orden y la incidencia en cada uno es diferente y el poder diferencia cada
uno le permitir identificar al robot en qu lado de la cancha se encuentra).
Un aspecto importante es que los algoritmos suponen que no se pueden ver dos objetos
en la misma imagen. Es decir no se puede ver en una misma foto un beacon y una portera.
Esto simplifica el proceso de identificacin.
Se reconoce que existen situaciones en las cuales la identificacin se enfrenta a una
gran incertidumbre por cuestiones de oclusiones o vistas parciales, sin embargo este trabajo se
centra en la identificacin de objetos que aparezcan completos en la imagen.
El algoritmo principal que identifica los objetos y estima la distancia a la cual se
encuentran lleva por nombre objetos2v (Anexo A.27). Este contiene como subprogramas las
reglas de identificacin para cada objeto y el clculo de la distancia. A continuacin se
describen los algoritmos para cada objeto, la metodologa y el algoritmo desarrollado para el
clculo de distancias y finalmente la integracin de ambos en el programa general.
5.1.1 Identificacin de porteras
Las porteras sern las cajas de color azul o amarillo de mayor tamao en la imagen. A pesar
de que los beacons cuentan con los mismos colores, stos pueden identificarse fcilmente al
no estar combinados entre s. La regla de discriminacin inicial busca las cajas del color
deseado, amarillo o azul, y posteriormente identifica la mayor y la compara con un valor de
rea determinado. Este valor de rea debe ser lo suficientemente grande para identificar una
portera y diferenciarse de un beacon cuya imagen capturada sea muy cercana. En caso de ser

114
menor a esta rea el objeto se eliminar. Por otro lado tambin se comprueba que no existan
regiones amarillas; en caso de haberlas se obtendr la regin mayor y posteriormente se
evaluar para analizar si no se refiere a un beacon. La Figura 5.2 ilustra las reglas del
algoritmo generado para la portera azul (Anexo A.22). Un razonamiento similar se aplica
para la portera amarilla cuyo algoritmo se encuentra en el Anexo A.23
Inicio

Encontrar cajas
del color Azul

Definir rea y
buscar la caja de
mayor tamao

Buscar regiones
del color Amarillo

Se encontraron
regiones del color
Amarillo

SI

Obtener la caja de
mayor tamao
para este color

|Xfazul -Xiamarilla| >=tol

NO
NO

SI

Evaluar rea >umbral


mnimo

Portera azul no
identificada

SI
NO
Portera azul
identificada

Fin

Figura 5.2 Reglas de identificacin para las porteras

Este sistema tiene la ventaja de ser muy simple y por lo mismo no consume mucho
tiempo de proceso, pero tambin se puede incurrir en problemas de falsos positivos al no
considerar cuando la portera se pueda ver slo parcialmente debido a alguna obstruccin (por
ejemplo el portero).
5.1.2 Identificacin de los beacons
Los beacons son objetos cilndricos que en una imagen de dos dimensiones tienden a verse
como rectngulos, y por tal motivo se facilita su identificacin a travs de cajas de limitacin.
Se caracterizan por la combinacin de dos colores, amarillo y azul. El orden en el que

115
aparecen estos colores determinar qu portera se encuentra a la izquierda. Si el color
amarillo se encuentra en los extremos, la portera amarilla se ubica a la izquierda. Por el
contrario si es el azul, la portera del mismo color se encontrar a la izquierda. Esto resulta de
vital importancia para que el robot pueda ubicar y anotar en la portera correcta.
En el proceso de reconocimiento, los beacons se definen como la combinacin de tres
cajas de limitacin en el orden adecuado. Para el beacon1 esta combinacin ser amarilloazul-amarillo y para el beacon2 azul-amarillo-azul. La identificacin seguir los siguientes
pasos:
1. Buscar regiones amarillas y azules.
2. Evaluar que existan ms regiones de un color que otro.
3. Ordenar las regiones encontradas por la coordenada inicial en y (Yi).
4. Comprobar que la superposicin de las tres cajas sea en el orden correcto al evaluar las
coordenadas iniciales de cada regin a travs de las funciones:
para el caso del beacon1
para el beacon2

(5.1)
(5.2)

5. Obtener las alturas de cada regin mediante:


(5.3)
6. Evaluar que las alturas obtenidas cumplan con alguna de las siguientes caractersticas:
(5.4)
(5.5)

Cuando estas condiciones se cumplen, el objeto encontrado ser un beacon. Los algoritmos
para la identificacin de beacons se ubican en el Anexo A.24 para el beacon1 y A.25 para el
beacon2. La Figura 5.3 muestra las reglas generadas para la identificacin del beacon1.

116

Inicio

Ubicar regiones de color


amarillo y azul

NO
El nmero de regiones amarillas
es mayor que el nmero
de regiones azules?

Beacon1 no
identificado

SI

Ordenar las regiones


encontradas por
valor Yi

Fin

NO
Yiamar1<Yiazul<Yiamar2

No
SI

Obtener las alturas


mediante:
A=|Yf1c-Yi1c|

SI
A1=A2=A3

|A1-A2|<=tol y |A1-A3|<=tol

Beacon1 identificado

Figura 5.3 Reglas de identificacin para beacons

5.1.3 Identificacin de la pelota


La pelota es un objeto esfrico de color naranja, pero debido a la prdida de profundidad se
presenta como un crculo. La regla inicial que define a la pelota es la caja de limitacin ms
grande de color naranja. Posteriormente se compara su rea con un umbral de rea mnima. La
definicin de este umbral requerir tomar fotografas a diferentes distancias.
Tomando como punto de partida el muestreo realizado para la estimacin de distancia,
se tiene que a una distancia de 1.70 m la caja de limitacin encontrada fue de 22x22, es decir
484 pixeles. La Figura 5.4 muestra la fotografa de la pelota a esta distancia.

117

Figura 5.4 Imagen de la pelota tomada a 1.70 cm que equivale a 484 pixeles en la imagen

Entre ms alejada se encuentre la pelota, ms difcil se tornar su identificacin y


puede confundirse con ruido del ambiente. Para el algoritmo elaborado (Anexo A.26) solo se
tomar en cuenta la comparacin respecto a un umbral mnimo definido como 400 pixeles. El
diagrama de la Figura 5.5 describe las reglas para su identificacin.
Inicio

Obtener la caja
color naranja de
mayor tamao

rea > umbral


mnimo

Pelota no
identificada

Pelota identificada

Fin

Figura 5.5 Reglas para identificar la pelota

118

5.2 Calculo de dimensiones espaciales


Una vez que se han identificado los objetos se conocen los parmetros como la posicin
inicial y final de los mismos, pero en trminos de la imagen. Lo importante es traducir estos
parmetros bidimensionales en informacin tridimensional relativa a la posicin del robot, o
en este caso la cmara. Lo anterior se lleva a cabo al tomar muestras de los objetos a
diferentes distancias y comparar el rea representada en la imagen con la distancia a la cual se
encuentran para establecer una relacin que permita definir situaciones futuras. Este mtodo
se apoyo de la tcnica de mnimos cuadrados y se explicar con ms detalle en la siguiente
seccin. Al finalizar este proceso se obtendr la tabla de constantes para cada objeto.
5.2.1 Aproximacin de la distancia por muestreo e interpolacin
Este esquema se base en un muestreo del tamao de los pixeles en las imgenes a distintas
distancias [2]. Con las muestras se realiza una interpolacin de la funcin real fr que relaciona
el tamao de la imagen con la distancia a la que se encuentra el objeto capturado por la
cmara, y de esta forma se encuentra una funcin fa que la aproxima. La medida de tamao de
la imagen est en trminos de la dimensin de los lados (Dx, Dy) del rectngulo que forman
las cajas de limitacin que encierran a cada objeto. La base de esta proyeccin se ilustra en la
siguiente figura:

Figura 5.6 Diagrama de proyeccin de los objetos sobre el plano de la imagen. d es la distancia real del objeto
y Dx Dy son las medidas de los objetos en pixeles

La relacin entre la distancia d a la cual se encuentra el objeto y el tamao aparente en la


imagen (Dx, Dy) es inversamente proporcional. Esto implica que entre ms cercano se
encuentre el objeto, la dimensin en la imagen aumenta y cuando la distancia aumenta, la
dimensin disminuye. Esto se expresa mediante las siguientes relaciones:

(5.6)

119
(5.7)

Partiendo del hecho de que estas constantes se pueden obtener al multiplicar la distancia por
su tamao aparente en la imagen, resulta factible obtener muestras de estos datos y realizar la
estimacin de esas constantes aproximando una ecuacin mediante mnimos cuadrados. Esta
funcin de distancia debe estar en trminos de Dx, y Dy para dar mayor robustez al clculo.
Por tal motivo la funcin de aproximacin a la funcin real de la distancia ser:
(5.8)
La estructura de la ecuacin propuesta es:
(5.9)
De la misma forma como se reporta en [2]. Donde a y b son los parmetros a estimar y
los que se utilizarn para posteriores clculos de cualquier distancia.
Para calcular estos parmetros se deben generar muestras con las distancias y las
dimensiones del objeto en la imagen. Para este trabajo se tomo una distancia de cinco
centmetros para beacons y porteras y de uno a cinco centmetros para la pelota, por ser el
objeto ms pequeo del dominio. Las siguientes tablas muestran la toma de mediciones
realizada y las dimensiones obtenidas en la imagen al correr el programa opti_reshape.
La Tabla 5-1 muestra los datos obtenidos para las porteras. Se tomaron 30 muestras y
se comenz la medicin a partir de 237 cm pues a partir de este punto la portera se ve
completa en la imagen. El muestreo finaliz 382 cm. Las dimensiones Dx y Dy son muy
similares para ambas porteras.
En la Tabla 5-2 se aprecian los datos adquiridos para los beacons. De igual forma se
tomaron 30 datos cada 5 cm, pero la diferencia radica en el punto de partida ya que este fue a
124 cm. A partir de esta distancia el objeto beacon se aprecia completo en la imagen.
El caso de la pelota por ser el componente de menor tamao se tomaron 15 muestras
cada centmetro, 10 muestras cada dos centmetros, 10 muestras cada 5 centmetros y 6
muestras cada 10 centmetros. Los resultados se muestran en la Tabla 5-3.

120
Tabla 5-1 Muestreo de distancia y dimensiones en la imagen capturada a esa distancia para las porteras

Portera amarilla
d
(cm)

Dx
237
242
247
252
257
262
267
272
277
282
287
292
297
302
307
312
317
322
327
332
337
342
347
352
357
362
367
372
377
382

Portera azul

Dy
313
304
298
294
288
286
282
276
276
272
266
260
254
250
248
246
239
236
231
226
223
220
214
212
208
208
202
200
198
196

Dx
124
121
120
115
115
116
115
114
111
109
108
102
106
105
103
102
99
98
92
93
92
91
87
87
86
86
84
81
83
82

Dy
317
311
302
298
293
286
282
275
271
267
263
259
253
251
245
241
237
235
230
227
224
220
217
215
212
208
206
201
198
196

129
128
124
121
117
116
111
112
107
108
107
104
102
101
98
98
96
94
93
91
91
86
87
88
87
85
84
82
81
80

121
Tabla 5-2 Muestreo de distancia y dimensiones en la imagen capturada a esa distancia para los beacons

Beacon1
d
(cm)
124
129
134
139
144
149
154
159
164
169
174
179
184
189
194
199
204
209
214
219
224
229
234
239
244
249
254
259
264

Dx
73
69
67
65
61
63
58
57
55
53
51
48
49
49
47
45
43
43
43
43
41
39
41
39
37
37
37
37
33

Beacon2
Dy
260
251
241
231
223
216
210
203
199
191
187
180
176
171
168
164
159
159
156
153
149
144
144
142
138
135
132
129
128

Dx
71
67
66
63
61
59
56
56
55
51
50
48
46
47
47
45
44
42
43
41
41
37
37
37
35
34
35
33
33

Dy
260
151
242
233
226
220
210
205
198
194
219
184
180
174
173
168
164
163
158
152
151
147
144
139
136
134
131
131
126

122
Tabla 5-3 Muestreo de distancia y dimensiones en la imagen capturada a esa distancia para la pelota

Pelota
d
(cm)
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
48
50
52
54
56
58
60
62
64
70
75
80
85
90
95
100
105
110
120
130
140
150
160
170

Dx
94
94
92
90
90
86
84
83
82
80
76
76
74
74
74
72
70
68
68
62
62
62
58
58
58
56
54
50
44
42
40
38
36
34
34
32
28
26
24
22
22

Dy
96
85
87
89
75
77
80
72
73
68
74
76
74
74
76
75
75
70
71
67
63
63
64
65
60
53
53
50
48
43
43
39
39
35
35
35
32
31
25
24
22

123
Con el conjunto de distancias evaluadas se define una matriz D referente a la distancia
a la cual se tom la imagen del objeto y las dimensiones de los objetos se integrarn en otra
matriz F. Debido a que en la ecuacin 5.9 propuesta, se utiliza la inversa de esa dimensin es
importante sealas que la matriz F debe contener el inverso de los valores Dx y Dy obtenidos.
Posterior a este clculo, se debe resolver la siguiente ecuacin matricial para adquirir las
constantes:
(5.10)

Con el fin de asegurar la existencia de la matriz

es importante que las

columnas sean linealmente independientes, en otras palabras, que contengan datos diferentes.
Este proceso de muestreo se debe ejecutar para cada objeto cuya distancia se desee
estimar. Una vez obtenidos los parmetros el clculo de la distancia se realizar al sustituir los
valores de las dimensiones del objeto en la imagen y los parmetros en la ecuacin 5.9.
5.2.2 Resultados para las dimensiones espaciales de cada objeto
Despus de ustituir los datos del muestreo realizado para cada objeto en la ecuacin 5.10 se
generaron los parmetros a y b para cada uno de ellos.
Tabla 5-4 Parmetros a y b obtenidos mediante la interpolacin y aproximacin por mnimos cuadrados para
cada objeto

Objeto
Pelota
Portera amarilla
Portera azul
Beacon 1
Beacon 2

a
4.831E+03
7.459E+04
7.127E+04
1.390E+03
1.060E+03

b
-1.347+03
1.538E+02
1.607E+03
2.7991E+04
2.945E+04

Para evaluar la aproximacin planteada por la ecuacin 5.9 se compar mediante un


grfico en 3D los datos del muestreo y la curva que se aproxima a estos datos. Lo anterior se
evalu para el beacon1 (Figura 5.7), la portera amarilla (Figura 5.8) y la pelota (Figura 5.9).
Se decidi evaluar nicamente un beacon y una portera debido a que partiendo de los datos
obtenidos en la Tabla 5-1 y 5-2, los resultados son muy similares.

124

Figura 5.7 Comparacin entre las muestras y curva que aproxima del beacon1

Figura 5.8 Comparacin entre las muestras y curva que aproxima de la portera amarilla

Figura 5.9 Comparacin entre las muestras y curva que aproxima para la pelota

125

5.3 Algoritmo para la identificacin de objetos y estimacin de distancias


Con la informacin generada para la identificacin de los objetos y el clculo de los
parmetros a y b para cada objeto se genera un programa que agrupa ambas etapas. El
objetivo de este programa ser indicar los objetos que se han capturada y la distancia a la cual
se encuentran. Este ltimo parmetro ser la entrada para el algoritmo de localizacin que se
explicar en el siguiente captulo. El algoritmo completo se puede revisar en el Anexo A.27 y
se ha denominado objetos2v.
Como variables de entrada recibe las regiones identificadas en la segmentacin
(regiones), el umbral que eliminar regiones pequeas (umbralregs) y que debe ser menor a
los que por defecto tiene cada programa de identificacindescritos en las reglas de
identificacinnmero de renglones en la imagen a segmentar (nR) y la matriz de parmetros
a y b que se obtuvo en la seccin previa (Rdist). Las variables que conforman la salida son
regiones de inters encontradas que se engloban como parte del objeto (Dx,Dy) de la imagen
(reginteres), la cantidad de objetos encontrados en la imagen (Objetos), la cadena de texto
para especificar el nombre del objeto encontrado y sus caractersticastanto en la imagen
como la distancia real (cad)y la distancia a la cual se encuentra calculada a travs de la
frmula 5.9 (dobj).
La lgica del programa es la siguiente:
1. Eliminar las regiones menores al umbral definido.
2. Revisar a qu objeto pertenecen las regiones, para lo cual se manda llamar a los
programas de identificacin de objetos. La salida de estos programas ser la regin
identificada del objeto en la matriz [Xi, Yi, Xf, Yf, objeto]. Cada objeto cuenta con
las siguientes etiquetas: Pelota-1, Portera amarilla-2, Portera azul-3, Beacon1-4,
Beacon2-5.
3. Se eliminan aquellas regiones iguales a cero y se calcula la distancia para los
objetos encontrados con los parmetros a y b correspondientes y la frmula 5.4.
Esto se lleva a cabo con el programa calculadist (Anexo A.28), el cual acepta la
matriz Rdist y las regiones que ocupa cada objeto.
4. Se especifican los parmetros encontrados en las variables de salida: Objetos, cad
y dobj.

126

Figura 5.10 Resultados del programa de identificacin de objetos para beacon1 y portera amarilla

127

Figura 5.11 Resultados de identificacin de objetos y estimacin de distancia para la pelota

Figura 5.12 Resultados de identificacin de objetos y estimacin de distancia para beacon2 y portera azul

128

5.4 Conclusiones para la etapa de identificacin y estimacin de distancias


El programa objetos2v se prob como 30 imgenes de diferentes objetos que cumplen las
caractersticas mencionadas al inicio del captulo: objetos completos y no existen dos objetos
en la misma imagen para el caso de beacons y porteras. A partir de estas pruebas se concluye
lo siguiente:
1. Los resultados de segmentacin e identificacin fueron satisfactorios en su totalidad
por lo que los programas para cada objeto con las reglas definidas demostraron ser
funcionales.
2. El tiempo que tarda el algoritmo en evaluar las imgenes y generar los resultados de
segmentacin y estimacin de distancias es menor a 200 ms
3. Al evaluar la funcin de aproximacin generada con los datos del muestreo descritos
en las Tablas 5-1 a 5-3 esta arroja un error entre 0.87% y 1.77% para los objetos fijos
en el campo es decir, las porteras y los beacons. Para la pelota se tiene un error del
5%. El error se calcula con el promedio de las distancias obtenidas para las 30
imgenes de cada objeto, tal como lo muestra la ecuacin 5.11.
(5.11)

La siguiente tabla contiene el detalle de los errores obtenidos para cada objeto.
Pelota
Portera amarilla
Portera azul
Beacon1
Beaco 2

Error (cm)
3.6
2.66
1.01
3.33
2.59

% Error
5%
0.87%
0.32%
1.77%
1.53%

Un aspecto que resulta interesante es que entre mayor tamao real tengan los objetos
el error disminuye. Una de los soluciones para disminuir el error en la pelota
consistira en tomar ms mediciones con una menor distancia y evaluar nuevamente la
funcin. Sin embargo para el propsito del siguiente captulo, el error obtenido para
los objetos fijos resulta satisfactorio pues de esta forma el algoritmo de localizacin
generar mejores resultados.

129

Captulo 6
6 SISTEMA DE LOCALIZACIN
El poder identificar el objeto y estimar la distancia real a la que se encuentra permite el
desarrollo del sistema de localizacin. El sistema generado en este trabajo es muy simple y se
basa en el mtodo de triangulacin. Se eligi porque usualmente la cmara del robot podr
captar dos objetos fijos (porteras y beacons) y a travs del programa anteriormente
mencionado, estimar su distancia. Al conocer esta distancia, resulta alcanzable definir la
posicin del robot, en este caso de la cmara, en el campo.
Este mtodo es utilizado por varios equipos de la liga, uno de ellos el CIT Brains de
Japn [27]. En este captulo se explicar la base de la tcnica de triangulacin, as como el
algoritmo generado en MATLAB con base en las frmulas descritas. El algoritmo de
triangulacin se acompaa de otro programa que a partir de la ubicacin puede marcar la
trayectoria.

6.1 Metodologa para el algoritmo de triangulacin


Las ecuaciones utilizadas para el algoritmo de triangulacin se explicarn mediante el
triangulo de la Figura 6.1.

Obj2
(X2,Y2)

d12

Obj1
(X1,Y1)

d2

d1

R
(Xr,Yr)

x
X
Figura 6.1 Esquema de triangulacin

130

En este esquema se representa la ubicacin de dos objetos Obj1 y Obj2, conocidos en el


campo, y la posicin del robot o de la cmara, la cual en lo subsecuente se denominar objeto
R. Tambin resulta importante definir lo siguiente para una mejor comprensin e
identificacin de los parmetros en las frmulas resultantes:

d1 es la distancia de R a Obj1, d2 es la distancia de R a Obj2, es el ngulo que se forma entre


d1 y d12, es el ngulo entre el eje X y d12 y

es la diferencia entre los ngulos y a partir

del que se calcular la posicin deseada.

d12 es la distancia entre Obj1 y Obj2, y se calcula con la distancia euclidiana entre los puntos de
cada objeto, tal como lo muestra 6.1
(6.1)

El ngulo se obtiene con el coseno inverso, a travs de la ley de cosenos


(6.2)
El clculo de se basa en la tangente inversa de la diferencia de coordenadas entre Obj1 y
Obj2
(6.3)
La diferencia entre el ngulo y se definir como el ngulo
(6.4)

Una vez determinados estos parmetros la posicin de R se resuelve de la siguiente forma, en


funcin del objeto 1 ubicado a la izquierda:

(6.5)
(6.6)
Donde:
(6.7)
(6.8)
x1 y y1 son las coordenadas del Obj1

131

6.2 Rutina de procesamiento para realizar la triangulacin


Con base en las frmulas descritas previamente se desarroll el algoritmo triangulacionnvo
(Anexo A.29) cuyo objetivo es calcular la posicin del robot en el campo. Los objetos
conocidos en el campo
Para la correcta ejecucin del programa los objetos conocidos deben contar con una
posicin fija en el campo y el barrido debe realizarse en el sentido de las manecillas de reloj,
es decir de izquierda a derecha. Ejemplos de lecturas seran portera amarilla y beacon2
beacon2 y portera azul, pero nunca beacon1 y portera azul portera azul y beacon2. La
Figura 6.2 muestra este sentido y el eje de referencia tomado para las mediciones.

Figura 6.2 Cancha en Matlab con ejes de referencia y sentido en el cual deben introducirse los objetos fijos
identificados para llevar a cabo el proceso de triangulacin

Resulta importante definir un eje de referencia pues a partir de este se tomarn las
mediciones reales en el campo y se compararn con la estimacin realizada por el algoritmo
de localizacin. Ambos ejes deben ser iguales para contar con un punto de comparacin. Se
defini la ubicacin del eje de referencia en la esquina inferior izquierda siguiendo las

132
caractersticas descritas en la seccin 1.2.1 respecto al ancho y largo de campo, los cuales
deben ser 300cm y 600cm respectivamente. El campo se encuentra delimitado por franjas
blancas de 5cm de ancho y afuera de estas franjas se localizan los beacons. La distancia entre
el centro y la lnea del campo es de 40 cm. Debido a que la dimensin real de estos es 20cm,
la distancia al centro ser 30cm. Estas condiciones son los datos iniciales

con los

cuales trabaja el algoritmo de triangulacin y se muestran en la Tabla 6-1.


Tabla 6-1 Posiciones conocidas de los objetos determinadas con el eje de referencia definido y las
caractersticas del campo de juego

Objeto

xr

yr

Portera amarilla

200

600

Beacon2

430

300

Portera azul

200

Beacon1

-30

300

El programa recibe como variables de entrada la etiqueta de los objetos identificados y


las distancias estimadas de estos objetos. Estos parmetros son la salida del programa de
identificacin de objetos objetos2v, descrito en el captulo anterior.
La salida ser la posicin del robot y la imagen de la cancha generada en MATLAB con
esta ubicacin. El procedimiento es el siguiente:
1. Se definen las coordenadas de todos los objetos fijos en el campo, tal como lo
describe la Tabla 4-1. Otros puntos de referencia que se toman en cuenta para
dibujar la imagen en MATLAB son las esquinas definidas en las siguientes
coordenadas: Esquina inferior izquierda (0,0), Esquina superior izquierda (0,600),
Esquina superior derecha (400,600), Esquina inferior derecha (400,0)
2. La segunda parte del programa calcula la posicin mediante las ecuaciones descritas
en la seccin anterior en la siguiente secuencia:
a. Obtener la distancia entre los objetos identificados. Las posiciones de esos
objetos se conocern por la etiqueta que cada objeto tiene a travs de una
funcin switch.
b. Calcular los ngulos , y .
c. Estimar la posicin del robot (xd, yd) con las ecuaciones 6.5 y 6.6.
3.

Mostrar la posicin en la cancha generada en MATLAB (Figura 6.3). Esta posicin


se identificar con un crculo mientras que la ubicacin de los objetos fijos ser con
un asterisco. Tambin se marca la distancia encontrada entre los objetos fijos con el
objetivo de mostrar aquellos que sirvieron de referencia para hacer la triangulacin.

133

Figura 6.3 Resultados del sistema de localizacin a partir de la identificacin de portera amarilla y beacon2

6.3 Algoritmo para mostrar la trayectoria


Una vez que se cuenta con la ubicacin del robot en el campo resulta posible marcar la
trayectoria recorrida y con esto dar pie al inicio de estrategias basadas en la planeacin de
trayectorias al identificar objetos fijos en la cancha.
El programa trayectoria (Anexo A.29) recibe dos matrices. Una referente a las
coordenadas x y y de la posicin deducida del objeto R generada a partir del algoritmo
triangulacin. La otra con las coordenadas de la posicin real. Como salida entrega la imagen
de ambas trayectorias y con esto se puede visualizar el error en las estimaciones.
La lgica que sigue es muy sencilla. A travs de dos ciclos se plasmarn en la imagen
de la cancha, las posiciones de ambas matrices de entrada. Las posiciones deducidas se
identifican con asteriscos y las posiciones reales con crculos.

6.4 Resultados obtenidos para el sistema de Localizacin


Para llevar a cabo la localizacin se requiere identificar los objetos y estimar su distancia.
Situacin que depender de la segmentacin y el criterio de color seleccionado en el captulo
4. Por tanto estos algoritmos deben integrarse para abarcar ambos procesos, percepcin y
localizacin en un solo programa que se describir con mayor detalle en el siguiente captulo.

134
El objetivo de esta seccin es evaluar los resultados obtenidos especficamente en la
localizacin. Se parte de una trayectoria real y de las imgenes adquiridas en esas posiciones
para estimar la posicin por medio del algoritmo. Se comparan ambas trayectorias a partir de
un criterio de error, definido ms adelante.
La trayectoria real est formada por 5 puntos cuyas caractersticas se muestran a
continuacin:
No. punto

Tabla 6-2 Caractersticas de la Trayectoria Real


xr
yr
Obj1

Obj2

P1

200

220

Portera amarilla

Beacon2

P2

200

300

Portera azul

Beacon1

P3

100

300

Beacon1

Portera amarilla

P4

200

360

Portera amarilla

Beacon2

P5

300

300

Beacon2

Portera azul

Figura 6.4 Imagen de la trayectoria real

La Figura 6.4 muestra la imagen de la Trayectoria real que como se explic


previamente estar identificada por medio de asteriscos. En la siguiente tabla se muestran las
imgenes adquiridas para los puntos de la Trayectoria. Resulta importante mostrar las
imgenes para comprobar que se cumplen los siguientes criterios definidos para la
identificacin y localizacin: objetos completos, no existen dos objetos fijos en una misma
imagen y la adquisicin de imgenes se realiza en el sentido de las manecillas del reloj

135
Tabla 6-3 Imgenes adquiridas para obtener la trayectoria deducida por el instrumento de adquisicin

P1

P2

P3

P4

P5

136
Previo a la localizacin se lleva a cabo la segmentacin, identificacin de objetos y
estimacin de distancias para esos objetos. La Tabla 6-4 muestra los resultados de estos
procesos para los puntos P1, P3 y P5.

P1

P3

P5

Las posiciones estimadas al evaluar el algoritmo de triangulacin para cada punto son:
No. punto

xd

yd

P1

196.2

219.49

P2

200

301

P3

101.67

300.75

P4

197.6

361.9

P5

296.89

303.84

137
Con este resultado se aprecia que existe una pequea diferencia entre la trayectoria
real y la deseada que se medir bajo la siguiente funcin de error cuadrtico.
(6.9)

Donde:
=posicin real
= posicin deducida por el robot
k = instante donde se toma la medicin de distancia en el campo
N=nmero total de puntos donde se hizo una medicin de distancia.

Al realizar los clculos correspondientes el error es de 2.93 cm, lo cual resulta


bastante satisfactorio. Esto significa que la posicin estimada por el robot tiene un radio de
3cm aproximadamente. La Figura 6.5 muestra la imagen de ambas trayectorias y en ella se
comprueba que los resultados fueron satisfactorios y el proceso genera los resultados
esperados.

Figura 6.5 Trayectoria Real (asteriscos) Vs. Trayectoria Estimada (crculos)

138

Captulo 7
7 ALGORITMO Y EXPERIMENTO FINAL
En este captulo se explica el algoritmo final generado, el cual engloba cada paso del sistema
de percepcin y localizacin descrito en captulos anteriores. Para analizar los resultados
arrojados por este programa se realiz un experimento similar al ejecutado en el captulo
anterior. Para el cual se plantea una trayectoria real con las imgenes correspondientes y se
espera un error pequeo al compararse con la trayectoria estimada. El algoritmo de
integracin lleva por nombre completofotos y se puede consultar en el Anexo A.31.
La funcin recibe como parmetros de entrada lo siguiente: las imgenes a segmentar
(img), la tabla de umbrales en el espacio HSI (tc), el umbral que discriminar las regiones ms
pequeas (umbralregs), la tolerancia deseada entre las secciones de los beacons (tol) y la
matriz de los parmetros a y b para la estimacin de distancias (Rdist). Las variables de salida
son el tiempo que tarda en evaluar las funciones (t) y la posicin del objeto que adquiere la
imagen (ps), en este caso la webcam Live! Creative.
Con el propsito de obtener la posicin, se alimentan slo dos fotografas de los
objetos estticos. La interfaz grfica se divide en seis secciones. Las primeras cuatro muestran
las imgenes adquiridas, el resultado de la segmentacin y la leyenda sobre los objetos
identificados junto con sus caractersticas. stas sern la dimensin en la imagen y la
distancia real a la cual se ubican. Las ltimas dos secciones presentan el resultado del sistema
de localizacin. La secuencia de proceso se describe a continuacin:
1. Segmentacin para identificar regiones y cajas de limitacin a travs del programa
opti_reshape. La salida es la matriz de regiones y la imagen segmentada. sta
incluye: nmero de regin, color al que pertenece la regin, posicin xinicial,
posicin yinicial, posicin xfinal, posicin yfinal, cantidad de pixeles que pertenecen a
la regin, dx y dy, las cuales se definen como la diferencia entre las coordenadas
iniciales y finales.
2. Identificacin de objetos por medio de objetos2v. La salida de esta rutina ser: las
regiones de inters del objeto identificado definidas como cajas de limitacin con
valores dx y dy , la etiqueta de los objetos encontrados, la leyenda que describe las
caractersticas del objeto identificado y la distancia real de los objetos.

139
3. Localizacin por medio de la triangulacin. Al contar con los objetos identificados
y las distancias reales es posible llevar a cabo el clculo de la posicin del
instrumento de adquisicin. Esta posicin ser la salida del algoritmo.
La Figura 7.1 es un ejemplo de la interfaz grfica generada por el algoritmo de
integracin. En l se muestran fotografas del beacon2 y la portera azul, los cuales
fueron correctamente identificados y las distancias encontradas para cada uno fueron
143.77 cm y 251.96 cm respectivamente. Con estas distancias la posicin estimada
del robot en el campo fue: [306.68, 228.1668]

Figura 7.1 Ejemplo de la interfaz grfica generada por el algoritmo final, completafotos

7.1 Experimento final


La trayectoria real (Figura7.2) para este experimento contiene 5 puntos con las siguientes
especificaciones.
No. punto

Tabla 7-1 Caractersticas de la Trayectoria Real


xr
yr
Obj1

Obj2

P1

107

276

Beacon1

Portera amarilla

P2

100

325

Beacon1

Portera amarilla

P3

190

350

Beacon2

Portera azul

P4

312

225

Beacon2

Portera azul

P5

252

227

Beacon2

Portera azul

140

Figura 7.2 Imagen de la trayectorial real

Al momento de ejecutar el programa completofotos, la nica variable que cambia son


las imgenes de entrada. Debido a esto las otras entradas se definieron de la siguiente forma:
1. Matriz tc: Matriz de umbrales en el espacio HSI a travs de la cual se har la
clasificacin de color. Solo se toman en cuenta los colores naranja, azul y amarillo.
De acuerdo a lo visto en el captulo referente a la segmentacin, el blanco y verde
se eliminaron.
Hmin

Hmax

Smin

Smax

Imin

Imax

Etiqueta
color

0.0256
0.15
0.5339

0.0584
0.1995
0.605

0.4079
0.3063
0.3

0.5728
0.56
0.5

0.0346
0.3881
0.27

0.6745
0.465
0.3575

1
3
4

2. umbralregs: Valor menor al cual se eliminarn las regiones pequeas. Definido


como 400.
3. tol: Valor de tolerancia entre las secciones que conforman un beacon. Definido
como 15.
4. Rdist: Matriz de parmetros a y b, generada a partir del muestreo realizado.
Objeto
Pelota
Portera amarilla
Portera azul
Beacon 1
Beacon 2

a
b
4.831E+03 -1.347+03
7.459E+04 1.538E+02
7.127E+04 1.607E+03
1.390E+03 2.7991E+04
1.060E+03 2.945E+04

141
5. forma: Representacin de la caja de limitacin. Valor 1 = cajas de limitacin del
color segmentado sobre fondo negro. Valor 2= cajas de limitacin de color blanco
encerrando a la regin segmentada. Definido como 1.

Las Figuras 7.3, 7.4 y 7.5 muestran los resultados grficos del programa
completofotos para los puntos P1, P3 y P5. La Tabla 7-3 indica los resultados de la posicin.

Figura 7.3 Resultados grficos para P1

142

Figura 7.4 Resultados grficos para P3

Figura 7.5 Resultados grficos para P5

143
Las posiciones estimadas para cada punto son:
Tabla 7-2 Posiciones para la trayectoria estimada
No. punto
xd
yd
P1

110.021

276.098

P2

101.919

327.993

P3

188.058

348.764

P4

306.687

228.169

P5

248.911

228.249

Al realizar los clculos correspondientes al error cuadrtico, el resultado generado es


3.6 cm. Lo cual resulta mayor que en el experimento anterior, pero se considera aceptable.
La Figura 7.6 apoya esta aceptacin ya que al combinar ambas trayectorias, la diferencia es
imperceptible.

Figura 7.6 Trayectoria Real (asteriscos) Vs. Trayectoria Estimada (crculos)

144

Captulo 8
8 CONCLUSIONES Y TRABAJO FUTURO
Este trabajo presenta la investigacin, diseo, desarrollo y resultados obtenidos para el
sistema de percepcin y localizacin generados para los robots humanoides que compiten en
la categora KidSize en la Liga de Robots Humanoides dentro de RoboCup. A pesar de que
los algoritmos se crearon en MATLAB y se utiliz una cmara web en lugar de un robot, este
documento presenta las bases para continuar con la investigacin y desarrollo en el rea de
visin para el equipo Bogobots del TEC-CEM.
El trabajo de investigacin y experimentacin realizado culmin con un algoritmo de
autolocalizacin, que presenta un error menor al 2% y que abre camino para mejorar el
desempeo de los Bogobots durante las competencias.
Otra cuestin muy interesante fue experimentar y comprobar la ventaja que presenta la
clasificacin de color a travs del espacio HSI debido a que es posible integrar variaciones en
la iluminacin sin que la clasificacin se vea afectada. En cuanto a los algoritmos de
clasificacin de color y segmentacin desarrollados, estos entregan buenos resultados en
tiempo y forma ya que se logr reducir el tiempo de proceso a menos de 0.5 s. Las reglas
generadas para la identificacin de objetos MATLAB fue una gran herramienta para alcanzar
los objetivos propuestos a travs de las libreras de adquisicin y procesamiento de imgenes.
Resulta importante sealar que los algoritmos generados se enfocan a un ambiente
especfico, pero pueden ser vlidos en otros ambientes con condiciones diferentes.

Al

cambiar las reglas de identificacin de objetos propuestas. En algunas ocasiones tal vez
implique cambiar la tolerancia de los umbrales. En otros puede cambiar por completo la
forma. Sin embargo no se descarta la posibilidad de que sean adaptados a las nuevas
condiciones o reglas que genere en un futuro RoboCup para la categora de humanoides.
Tambin puede extenderse su uso a otras aplicaciones, por ejemplo industriales, para la
identificacin de defectos.
El trabajo futuro a desarrollar es muy vasto. Por un lado se deben codificar los
algoritmos desarrollados para ser probados en lnea con un Bogobot. Esto abrir camino a
optimizar an ms los tiempos del programa y tal vez genere la necesidad de implementar
nuevas tcnicas de segmentacin como la deteccin de bordes. Otro aspecto a corto plazo ser

145
considerar fotografas parciales u objetos ocluidos para la identificacin de objetos as como
la identificacin de robots para establecer la ubicacin de aquellos del mismo grupo y del
equipo contrario. A mediano plazo resultar beneficioso incluir en la segmentacin el color
blanco para identificar las franjas y con esto los lmites de la cancha.
A partir de este momento, muchas actividades resultan alcanzables. Entre ellas se
encuentra el adquirir video con una cmara inalmbrica para elaborar un seguimiento de la
pelota en lnea y con esto validar la segmentacin realizada establecer trayectorias definidas
con la identificacin de objetos fijos. Tambin la conocer la distancia se podra calcular la
fuerza necesaria para realizar un tiro a gol.

146

ANEXO A
9 ALGORITMOS

1. Algoritmo de conversin RGB a HSI


function hsi = rgb2hsi(rgb)
%OBJETIVO:
%Convertir una imagen del espacio RGB al HSI
%Se asume que la imagen de entrada es MxNx3. Si todas las componentes
%RGB son iguales, la conversin no estar definida
%CMO FUNCIONA:
%Se aplican las ecuaciones de conversin entre espacios
%ENTRADAS:
%rgb=imagen de entrada puede ser de clase double (valores entre 0 y 1)
%Tambin puede ser uint8 o uint16.
%SALIDA:
%La imagen de salida ser de clase double
% Extraccin de las componentes individuales
rgb = im2double(rgb);
r = rgb(:, :, 1);
g = rgb(:, :, 2);
b = rgb(:, :, 3);
% Aplicar las ecuaciones de conversin previamente descritas
num = 0.5*((r - g) + (r - b)); %Numerador de la ecuacin que describe el
ngulo theta
den = sqrt((r - g).^2 + (r - b).*(g - b)); % Denominador de la ecuacin que
describe el ngulo theta
theta = acos(num./(den + eps)); %Ecuacin para theta
H = theta;
H(b > g) = 2*pi - H(b > g);
H = H/(2*pi); %Normalizo los valores
num = min(min(r, g), b);
den = r + g + b;
den(den == 0) = eps;
S = 1 - 3.* num./den; %.* se refiere a una multiplicacin entre arreglos
H(S == 0) = 0;
I = (r + g + b)/3;
% Combinar los resultados en una imagen, a travs de la funcin cat
%la cual concatena el arreglo en la dimensin especificada.
%En este caso se concatena en un arreglo de 3 dimensiones
hsi = cat(3, H, S, I);

147

2. Algoritmo de conversin HSI a RGB


function rgb = hsi2rgb(hsi)
%OBJETIVO:
%Convertir una imagen del espacio HSI A RGB
%CMO FUNCIONA:
%Se aplican las ecuaciones de conversin entre espacios
%ENTRADAS:
%
HSI se asume que es un arreglo de clase doble
%
hsi(:, :, 1) = tono, se asume encontrase en el rango de [0, 1]
%
ngulo entre 2*pi
%
hsi(:, :, 2) = imagen de saturacin image, rango [0, 1].
%
hsi(:, :, 3) = imagen de intensidad, rango [0, 1].
%SALIDAS:
%
Los componentes de salida son:
%
rgb(:, :, 1) = rojo.
%
rgb(:, :, 2) = verde.
%
rgb(:, :, 3) = azul.
%
H
S
I

Extraccin de las componentes HSI de la imagen.


= hsi(:, :, 1) * 2 * pi;
= hsi(:, :, 2);
= hsi(:, :, 3);

%
R
G
B

Implementacin de
= zeros(size(hsi,
= zeros(size(hsi,
= zeros(size(hsi,

las
1),
1),
1),

ecuaciones de conversin.
size(hsi, 2));
size(hsi, 2));
size(hsi, 2));

% Sector RG (0 <= H < 2*pi/3).


idx = find( (0 <= H) & (H < 2*pi/3));
B(idx) = I(idx) .* (1 - S(idx));
R(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx)) ./ ...
cos(pi/3 - H(idx)));
G(idx) = 3*I(idx) - (R(idx) + B(idx));
% Sector BG (2*pi/3 <= H < 4*pi/3).
idx = find( (2*pi/3 <= H) & (H < 4*pi/3) );
R(idx) = I(idx) .* (1 - S(idx));
G(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 2*pi/3) ./ ...
cos(pi - H(idx)));
B(idx) = 3*I(idx) - (R(idx) + G(idx));
% Sector BR .
idx = find( (4*pi/3 <= H) & (H <= 2*pi));
G(idx) = I(idx) .* (1 - S(idx));
B(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 4*pi/3) ./ ...
cos(5*pi/3 - H(idx)));
R(idx) = 3*I(idx) - (G(idx) + B(idx));
%Combinar los resultados en una imagen RGB
rgb = cat(3, R, G, B);
rgb = max(min(rgb, 1), 0);

148

3. Algoritmo para tomar fotografas


function [f vid vid_src]=tomafotos_hsi(nframes)
%OBJETIVO:
%Adquirir las imgenes para la los algoritmos de visin conectando la
%cmara web a MATLAB.
%CMO FUNCIONA:
%Recibe como entrada la cantidad de cuadros que se busca adquirir y
%la salida ser un arreglo que contenga las fotos tomadas, as como %los
objetos de video creados
%FORMATOS PARA DIFERENTES CMARAS
%Formato para ibm: 'IYUV_320x240'
%Formato para sony: 'UYVY_352x288'
%Formato para LiveCam: 'RGB24_320x240'
%ENTRADAS:
%nframes=el nmero de imgenes que se desean adquirir
%fg=framegrabinterval
%SALIDAS:
%f=imgenes tomadas en formato struct.
%vid=objeto de video
%vid_src=variable para manipular las caractersticas de la imagen.
%Dependen de las propiedades de la imagen
%EJEMPLO:
%porteriaazul=tomafotos_hsi(30). Se tomarn 30 fotos de la portera azul
vid=videoinput('winvideo',2,'RGB24_320x240'); %Creacin del objeto
set(vid,'ReturnedColorSpace','rgb'); %Seleccin del espacio
preview(vid) % Imagen previa
vid_src=getselectedsource(vid); %Definicin de variable para obtener
propiedades
pause %Pausa para iniciar la toma de fotografas
for i=1:nframes
data=getsnapshot(vid); %Toma de fotografas que se guardarn en la
variable f, la cual
%Puede ser renombrada por el usuario cuando
%llame a la funcin
pause
f(i)=im2frame(data);
end

149

4. Algoritmo para revisar las fotografas


function muestrafotos(fotos)
%OBJETIVO:
%Mostrar las imgenes adquiridas por tomafotos_hsi
%CMO FUNCIONA:
%Acepta la variable de fotos creadas y al presionar la tecla Enter
%se mostrarn las fotos adquiridas con el objetivo de evaluar las
%mejores para los algoritmos de percepcin.
%ENTRADAS:
%fotos=fotografas a revisar
%SALIDAS:
%Se muestra cada fotografa
%EJEMPLO:
%muestrafotos(porteriaazul)
%Mostrar las 30 imgenes adquirirdas por tomafotos_hsi
nfotos=size(fotos,2); %Obtener el tamao del arreglo para realizar el ciclo
%Cliclo para revisin de fotografas
for i=1:nfotos
f=frame2im(fotos(1,i));
imshow(f)
pause
end

150

5. Algoritmo para obtener centros y radios de las esferas para las


superficies implcitas
function [Centros Radios Radios2
DatosYpertenencia]=supimplicitpaso1(fotos,nclusters,sigma)
% OBJETIVO:
%Es el primer paso para llevar a cabo la segmentacin por tabla
%bsqueda. Abarca desde la seleccin de muestras hasta la obtencin de
%radios y centros de la esfera. Tambin incluye muestras grficas de
%los puntos seleccionados y las esferas creadas a partir de ambos
%criterios
%CMO FUNCIONA:
%Generar una tabla de centros y pertenencia para muestras
%de un color especfico, el cual puede ser naranja, verde, blanco,
%azul o amarillo
%ENTRADAS:
%fotos: fotos adquiridas a travs de la web-cam en formato frame
%nclusters: Nmero de clusters iniciales para el algoritmo k-means
%SALIDAS:
%centros: Centros de las esferas encontradas
%Radios: de acuerdo a la desv st. determinar el radio de la esfera
%Radios2:Radio a partir del criterio de mayor distancia
%DatosYpertenencia: Muestras y pertenencia a cluster
%EJEMPLO:
%[Centros Radios Radios2
%DatosYpertenencia]=supimplicitpaso1(porteriaazul,10,3)

de

scrsz = get(0,'ScreenSize');
%Lectura de imagen y toma de muestras
nfotos=size(fotos,2); %Obtener el nmero de fotos en el arreglo
%Matriz con ceros
R=zeros(10000,1);
G=zeros(10000,1);
B=zeros(10000,1);
int=1;
bandera=0;
%Ciclo para seleccionar el rea en cada foto
for i=1:nfotos
f=frame2im(fotos(1,i)); %Cambio a una matriz de 3 dimensiones con la
cual se pueda trabajar
BW=roipoly(f); %Seleccin del rea para obtener los valores en R
GB. Roipoly entrega una matriz binaria
%En la cual se determinar con 1s la seleccin
[row col]=find(BW); %Encontrar las columnas y renglones seleccionadas
vector_pos=[row col]; %Asignar a una variable
dim=size(vector_pos,1); %Determinar dimensin de la variable para el
siguiente ciclo
%Ciclo para sustituir los 1s por el valor en RGB
for j=1:dim
R(int)=f(vector_pos(j,1), vector_pos(j,2),1);
G(int)=f(vector_pos(j,1), vector_pos(j,2),2);
B(int)=f(vector_pos(j,1), vector_pos(j,2),3);
int=int+1;
end
end
if int<10000
Matrizdatos=[R G B];

151
Rp=find(Matrizdatos(:,1)+Matrizdatos(:,2)+Matrizdatos(:,3)~=0);
Matrizdatos=[R(Rp) G(Rp) B(Rp)];
else
Matrizdatos=[R G B];
end
%Algoritmos K-means
opts = statset('Display','final');
[IDX Centros]=kmeans(Matrizdatos,nclusters,'EmptyAction',
'drop','Replicates',3,'Options',opts);
DatosYpertenencia=[Matrizdatos IDX];
Radios=zeros(size(Centros,1),1);
Radios2=zeros(size(Centros,1),1);
int2=1;
%Para obtener los radios de los centros obtenidos a partir de los 2
%criterios
for m=1:size(Centros,1)
aux=find(DatosYpertenencia(:,4)==m);
Radios(int2)
Radios2(int2)]=stdmodif(DatosYpertenencia(aux,1:3),Centros(m,:),sigma);
%stdmodif calcula la desv.std de las muestras al centro
int2=int2+1;
end
%GRAFICAR LOS PUNTOS DE CADA SELECCIN DE COLOR
figure('Name','Puntos para clasificacin');
for j = 1:nclusters
pc= find(DatosYpertenencia(:,4)==j);
U= DatosYpertenencia(:,1);
V= DatosYpertenencia(:,2);
Y= DatosYpertenencia(:,3);
plot3(U(pc),V(pc),Y(pc),'o',Centros(j,1),Centros(j,2),Centros(j,3),'*k','Ma
rkerFaceColor',[(Centros(j,1))/255 (Centros(j,2))/255
(Centros(j,3))/255],'MarkerEdgeColor',[(Centros(j,1))/255
(Centros(j,2))/255 (Centros(j,3))/255],'MarkerSize',2);
axis([0 255 0 255 0 255])
hold on
end
hold off
%GRAFICAR LAS ESFERAS PARA LO CUAL PRIMERO SE OBTIENEN LOS RADIOS
figure('Name','Esferas de color creadas Desviacin y media');
for j = 1:nclusters
pc= find(DatosYpertenencia(:,4)==j);
U= DatosYpertenencia(:,1);
V= DatosYpertenencia(:,2);
Y= DatosYpertenencia(:,3);
[x y
z]=ellipsoid(Centros(j,1),Centros(j,2),Centros(j,3),Radios(j),Radios(j),Rad
ios(j));
surf(x,y,z,z,'FaceColor',[(Centros(j,1))/255 (Centros(j,2))/255
(Centros(j,3))/255])
axis([0 255 0 255 0 255])
hold on
plot3(U(pc),V(pc),Y(pc),'.k')
end
hold off

152
%GRAFICAR LAS ESFERAS PARA LO CUAL PRIMERO SE OBTIENEN LOS RADIOS tomando
%la distancia mayor
figure('Name','Esferas de color creadas a partir de la distancia mayor');
for j = 1:nclusters
pc= find(DatosYpertenencia(:,4)==j);
U= DatosYpertenencia(:,1);
V= DatosYpertenencia(:,2);
Y= DatosYpertenencia(:,3);
[x y
z]=ellipsoid(Centros(j,1),Centros(j,2),Centros(j,3),Radios2(j),Radios2(j),R
adios2(j));
surf(x,y,z,z,'FaceColor',[(Centros(j,1))/255 (Centros(j,2))/255
(Centros(j,3))/255])
axis([0 255 0 255 0 255])
hold on
plot3(U(pc),V(pc),Y(pc),'.k')
end
hold off

153

6. Algoritmo para generar la tabla de color deseada


function [tbcolor aux
tiempo]=supimplicitpaso2(datos,centros,radios,rho,color)
%OBJETIVO:
%sumiplicitpaso2 desarrollar la funcin a travs de la cual evaluar
%las muestras seleccionadas de la imagen
%ENTRADAS
%centros=centros de los clusters de k-means
%radios=radios de las primitivas
%datos=muestras seleccionadas en las imgenes
%rho=factor de aglutinamiento
%color=etiqueta de color asignada
%SALIDAS
%tbcolor=tabla de color reducida
%aux=orden de la tabla de color reducida
%tiempo=tiempo de ejecucin
%EJEMPLO:
%[tbcolor aux tiempo]=supimplicitpaso2(Centros, Radios, 3,1)
%Etiquetas de color: Naranja-1, verde-2, amarillo-3, azul-4, blanco-5
%Se generarn 2 ciclos concatenados, uno para evaluar el punto y el otro
%para formar las funciones
n1=size(datos,1);
n2=size(centros,1);
tablabusq=zeros(size(datos,1),3);
sum=0;
int=1;
%Para obtener la sumatoria de las esferas
tic
for j=1:n1 %Evaluar cada valor
sum=0;
for i=1:n2 %Evaluar cada valor en las esferas formadas
f=(((datos(j,1)-centros(i,1))^2)+((datos(j,2)centros(i,2))^2)+((datos(j,3)-centros(i,3))^2))/((radios(i,1))^2);
sum=sum + (1/(f^rho));
end
ft=sum^(-1/rho);
if ft<=1
tablabusq(int,:)=[datos(j,:)];
int=int+1;
else
end
end
if int<size(datos,1)
tabla=logical(tablabusq(:,1));
tablabusq=tablabusq(tabla,:);
else
end
%Para obtener una tabla de color reducida
rangoRGB=rango(tablabusq);
aux=valorestab(rangoRGB);
tbcolor=compactatabla(aux,rangoRGB,tablabusq);
etiqueta=zeros(size(tbcolor,1),1);
etiqueta(:,1)=color;
tbcolor=[etiqueta tbcolor];
%Para obtener el tiempo que tarda en ejecutar el programa
tiempo=toc;

154

7. Programa modificado para incluir ms datos en la tabla de bsqueda


function [tbcolor aux
tiempo]=supimplicitpaso2_2v(datos,centros,radios,rho,color)
%sumiplicitpaso2 desarrollar la funcin a travs de la cual evaluar
%las muestras seleccionadas de la imagen
%ENTRADAS
%centros=centros de los clusters de k-means
%radios=radios de las primitivas
%datos=muestras seleccionadas en las imgenes
%rho=factor de aglutinamiento
%color=etiqueta de color asignada
%rangosRGB= son los rangos encontrados en la lista de pixeles.
%Encontrar los rangos y generar una nueva tabla de datos
RGBtabla=rango(datos(:,1:3));
listapixeles=tabla2(RGBtabla(1,:),RGBtabla(2,:),RGBtabla(3,:));
%Inicializar valores
n2=size(centros,1);
int=1;
tic
nlist=size(listapixeles,1);
tablabusq=zeros(nlist,3);
%Se generarn 2 ciclos concatenados, uno para evaluar el punto y el otro
para formar las funciones
for j=1:size(listapixeles,1) %Evaluar cada valor
sum=0;
%Para obtener la sumatoria de las esferas
for i=1:n2 %Evaluar cada valor en las esferas formadas
f=(((listapixeles(j,1)-centros(i,1))^2)+((listapixeles(j,2)centros(i,2))^2)+((listapixeles(j,3)-centros(i,3))^2))/((radios(i,1))^2);
sum=sum + (1/(f^rho));
end
ft=sum^(-1/rho);
if ft<=1
tablabusq(int,:)=listapixeles(j,:);
int=int+1;
else
end
end
if int<size(listapixeles,1)
tabla=logical(tablabusq(:,1));
tablabusq=tablabusq(tabla,:);
else
end
%Para obtener una tabla de color reducida
rangoRGB=rango(tablabusq);
aux=valorestab(rangoRGB);
tbcolor=compactatabla(aux,rangoRGB,tablabusq);
etiqueta=zeros(size(tbcolor,1),1);
etiqueta(:,1)=color;
tbcolor=[etiqueta tbcolor];
%Conteo del tiempo que toma la ejecucin del programa
tiempo=toc;

155

8. Algortimo para obtener rangos en HSI


function [histmatH histmatS histmatI]=HSIroipoly(fotos)
%OBJETIVO:
%Obtener los rangos que permitirn llevar a cabo la segmentacin
%CMO FUNCIONA:
%Este programa aplica la funcin roi poly sobre varias fotos para %obtener
los histogramas de la imagen y analizar los rangos ms %ptimos.
%Entrada: Fotos como frames, las cuales son tomadas con tomafotos_hsi
%Salida: Valores H S I como histogramas para que pueda obtener los %valores
nfotos=size(fotos,2); %Obtener el nmero de fotos en el arreglo
%matvals=zeros(nfotos,6);
%Matriz con ceros
H=zeros(1000,1);
S=zeros(1000,1);
I=zeros(1000,1);
int=1;
%Ciclo para seleccionar el rea en cada foto
for i=1:nfotos
f=frame2im(fotos(1,i)); %Cambio a una matriz de 3 dimensiones con la
cual se pueda trabajar
imgHSI=rgb2hsi(f); %Conversion al espacio HSI
BW=roipoly(imgHSI); %Seleccin del rea para obtener los valores en H
S e I. Roipoly entrega una matriz binaria
%En la cual se determinar con 1s la seleccin
[row col]=find(BW); %Encontrar las columnas y renglones seleccionadas
vector_pos=[row col]; %Asignar a una variable
dim=size(vector_pos,1); %Determinar dimensin de la variable para el
siguiente ciclo%Ciclo para sustituir los 1s por el valor en HSI
for i=1:dim
H(int)=imgHSI(vector_pos(i,1), vector_pos(i,2),1);
S(int)=imgHSI(vector_pos(i,1), vector_pos(i,2),2);
I(int)=imgHSI(vector_pos(i,1), vector_pos(i,2),3);
int=int+1;
end
end
%Determinar los rangos para el histograma
[n Hvals]=hist(H);
[n2 Svals]=hist(S);
[n3 Ivals]=hist(I);
histmatH=[reshape(n,10,1) reshape(Hvals,10,1)];
histmatS=[reshape(n2,10,1) reshape(Svals,10,1)];
histmatI=[reshape(n3,10,1) reshape(Ivals,10,1)];
%Grficas de cada valor
figure,bar(Hvals,n)
figure,bar(Svals,n2)
figure,bar(Ivals,n3)

156

9. Algoritmo Procesamiento rengln por rengln con Tabla de


bsqueda reducida a travs de superficies implcitas
function [matregiones tf]=segmentacion_colores(imagen,ncolors,
tablascolores,ord, etiqueta)
%OBJETIVO:
%Este programa entrega una matriz de las regiones encontradas
%[No. Region, color de pertenencia, Xi, Yi, Xf, Yf, Area, ancho, %alto].
%Se utiliza la tcnica de segmentacin procesamiento rengln por %rengln
en combinacin con las clases de color generadas a partir de %las
superficies implcitas y agrupadas en lass tablas de bsqueda %reducidas
%
%COMO TRABAJA:
%El programa aceptara una imagen y evaluar cada pixel por pixel en %las
diferentes tablas de bsqueda alimentadas. Generalmente deben ser %tres.
%Esto depender de los colores que se desee clasificar.
%Una vez que los pixeles han sido clasificados, las regiones se
%etiquetarn por medio del programa regiones. Este generar como %salida
las propiedades de esas regiones. Al finalizar el proceso se %entrega la
matriz junto con la imagen del objeto delimitado por %rectngulos blancos
que muestran el contorno de las regiones. Tambin %se contabiliza el tiempo
de proceso con la variable tf
%
%ENTRADAS:
%imagen: Imagen que se desea segmentar. Formato frame;
%ncolors: Nmero de colores por segmentar
%tablascolores: Tablas de bsqueda de los colores definidos
%ord: Orden de las componentes, resultado de la reduccin de las %tablas de
bsqueda
%etiqueta: Identificacin del color a clasificar. Naranja-1, Verde-2,
%Amarillo-3, Azul-4, Blanco-5.
%
%SALIDAS:
%matregiones:nmero de regiones encontradas en forma de matriz.
%[No.Region, Xi, Yi, Xf, Yf, Area, color de pertenencia]
%tf=tiempo de procesamiento.
%
%EJEMPLO:
%matregiones=segmentacion_colores(muestraamarilla(1,8),2, %
[tazulp;tamar2],[1 2 3; 3 2 1],[4,3]);

tic
%LECTURA DE LA IMAGEN
%img=imread(imagen);
img=frame2im(imagen);
pixel=double(img(:,:,1:3));
nRenglon=size(pixel,1);
nColumnas=size(pixel,2);
nComponentesColor=size(pixel,3);
%Datos necesarios de la tabla y el orden para que el programa pueda buscar
%Para determinar el nmero de veces que se ejecutar el ciclo
nrenglontab=size(tablascolores,1);
npertenece=[];
npropiedades=[];
ncolorf=0; %Esta variable solo tomar en cuenta los colores encontrados
%Para obtener la tabla que pertenece a cada color
for c = 1:ncolors
matrizaux = find(tablascolores(:,1) == c);

157
tablabusqueda=tablascolores(matrizaux,:);
%Para conocer qu componentes debera buscar en la primera columna, en
%la segunda y tercera-cuarta de la tabla de bsqueda
Rmenor=ord(c,1);
Rmedio=ord(c,2);
Rmayor=ord(c,3);

%Crear una matriz para almacenar los pixeles encontrados


pixpertenece{c}=zeros(nColumnas*nRenglon,3);
posiciones{c}=zeros(nColumnas*nRenglon,2);
int=0;
for i=1:nRenglon
for j=1:nColumnas
pix=zeros(1,3);
for k=1:nComponentesColor
pix(1,k)=[pixel(i,j,k)]; %Tendr al pixel en esta forma pix=(10
0 1)
end
%Una vez que se cuenta con el pixel, se busca en la tabla
criterio=find(tablabusqueda(:,2)==pix(1,Rmenor) &
tablabusqueda(:,3)==pix(1,Rmedio));
if size(criterio,1)~=0
if pix(1,Rmayor)>=tablabusqueda(criterio,4) &
pix(1,Rmayor)<=tablabusqueda(criterio,5)
int=int+1;
pixpertenece{c}(int,:)=pix;
posiciones{c}(int,:)=[i j];
else
end
else
end
end
end
valdifzero{c}=find(pixpertenece{c}(:,1)>0);
pertenece{c}=pixpertenece{c}(valdifzero{c},:);
valdifzeropos{c}=find(posiciones{c}(:,1)>0);
pertenece{c}=[pixpertenece{c}(valdifzero{c},:)
posiciones{c}(valdifzeropos{c},:)];
if ~isempty(pertenece{c})
[propiedades{c}]=regiones(pertenece{c}); %Manda llamar al programa regiones
npertenece=[npertenece;pertenece{c}];
npropiedades=[npropiedades;propiedades{c}];
ncolorf=ncolorf+1;
else
end
end
%Para dibujar los rectngulos
disp('Tiempo para evaluar funcin')

%Interfaz para mostrar la imagen junto con su rectngulo


figure('Name','Imagen seccionada');
imshow(img),title('Esta es la imagen, junto con su rectngulo')
hold on

158
int=1;
matiniregiones=zeros(150,9);
for c=1:ncolorf
prueba=size(propiedades{c},1);
for r=1:prueba
Xi=propiedades{c}(r,2);
Xf=propiedades{c}(r,4);
Yi=propiedades{c}(r,3);
Yf=propiedades{c}(r,5);
ancho=(Xf-Xi)+1;
alto=(Yf-Yi)+1;
matiniregiones(int,:)=[int etiqueta(1,c) propiedades{c}(r,2:6) ancho
alto];
rectangle('Position',[Xi,Yi,ancho,alto],'EdgeColor',[1,1,1])
int=int+1;
end
end
hold off
mataux=matiniregiones(matiniregiones(:,1)>0);
matregiones=matiniregiones(mataux,:);
tf=toc;

159

10. Funciones auxiliares para Algoritmo 9


function [sol] = regiones(matriz_entrada)
%OBJETIVO:
%Obtener las regiones de inters con las posiciones de los pixeles que %han
sido clasificados. Haciendo uso de la funcin bwlabel que %etiquetar
pixeles vecinos con conectividad 4.
%
%COMO TRABAJA:
%Acepta una matriz de entrada que contiene la posicin de los pixeles
%clasificados dentro de alguna clase de color. Esto se har por cada %clase
de color. Posteriormente se crea una imagen mediante
%crea_imagen. El
%resultado es una matriz binaria, donde los 1s %representan las posiciones
de los pixeles clasificados. Se obtiene el %nmero de regiones y sus
caractersticas mediante la funcin bwlabel %en conjunto con la funcin
busca regin.
%
%ENTRADAS:
%matriz entrada: matriz de coordenadas x y y de los pixeles %clasificados.
%
%SALIDAS:
%sol= regiones encontradas [nmero, Xi, Yi, Xf, Yf, Area];
%
%EJEMPLO:
%propiedades=regiones(pixpertenece);
img = crea_imagen(matriz_entrada);
[matriz_regiones, No_regiones] = bwlabel(img,4);
for i = 1:No_regiones
[Xi,Yi,Xf,Yf] = busca_region(matriz_regiones,i);
sol(i,1) = i;
sol(i,2) = Xi;
sol(i,3) = Yi;
sol(i,4) = Xf;
sol(i,5) = Yf;
sol(i,6)=(((Xf-Xi)+1)*((Yf-Yi)+1));
end

160

function sol = crea_imagen(entrada)


%OBJETIVO:
%Generar una matriz de 1s y 0s a partir de las posiciones de los %pixeles
clasificados.
%
%COMO TRABAJA:
%Se obtienen las mayores posiciones en x y y y este nmero
%ser la cantidad de renglones y columnas de la matriz. Posteriormente %se
recorre la matriz sustituyendo los valores de los pixeles %clasificados por
1s. de esta forma se obtiene la matriz binaria que %servir de entrada para
la funcin bwlabel.
%
%ENTRADAS:
%entrada: matriz de coordenadas x y y de los pixeles clasificados.
%
%SALIDAS:
%sol= rmatriz de 1s y 0s
%
%EJEMPLO:
%img = crea_imagen(matriz_entrada);
p = max(entrada(:,4));
m = max(entrada(:,5));
%p=287;
%m=352;
sol = zeros(p, m);
for i = 1:size(entrada,1)
sol(entrada(i,4), entrada(i,5)) = 1;
end

161

function [Xi, Yi, Xf, Yf] = busca_region(matrix, No_region)


%OBJETIVO:
%Encontrarlas coordenadas finales e iniciales de cada regin encontrada por
la funcin bwlabel.
%COMO TRABAJA:
%Una vez que bwlabel entrega una matriz con etiquetas de la siguiente
%forma: [11110000222200033]. Este programa se encarga de determinar el
%punto inicial y final para cada etiqueta numrica para que %posteriormente
en el programa regiones se lleven a cabo los clculos %correspondientes.
%
%ENTRADAS:
%matrix= matriz de salida generada por bwlabel
%No_region=etiqueta numrica para las regiones encontradas;
%
%SALIDAS:
%[Xi, Yi, Xf, Yf]=puntos iniciales y finales para cada coordenada
%
%EJEMPLO:
%[Xi,Yi,Xf,Yf] = busca_region(matriz_regiones,i);
primero = true;
for i = 1:size(matrix,1)
mat = find(matrix(i,:) == No_region);
if ~isempty(mat)
if primero
Xi = mat(1);
Yi = i;
Xf = mat(end);
Yf = i;
primero = false;
else
Yf = i;
if mat(1)<Xi
Xi=mat(1);
else
end
if mat(end)>Xf
Xf = mat(end);
else
end
end
end
end

162

11.Segmentacin procesamiento rengln por rengln conversin RGB a


HSI y clasificacin de regiones cbicas.
function [matregiones nR tf]=opti_reshape(imagen,t, forma)
%OBJETIVO:
%Este programa entrega una matriz de las regiones encontradas
%[No.Region,color de pertenencia, Xi, Yi, Xf, Yf, Area, ancho, alto]
%Se utiliza la tcnica de segmentacin procesamiento rengln por %rengln
en combinacin con las clases de color generadas a partir de %las regiones
cbicas de HSI con la conversin del espacio RGB.
%
%COMO TRABAJA:
%El programa aceptara una imagen y evaluar cada pixel por pixel en la
%matriz de rangos para cada componentes HSI. Esta tabla cuenta con los
%colores por clasificar. Tiene dimensin nx7. Donde n ser la cantidad %de
colores que se deseen incluir. Generalmente sern tres: naranja, %azul y
amarillo. Una vez que los pixeles han sido clasificados, las %regiones se
etiquetarn por medio del programa regioneshsi_reshape.
%Este generar como salida las propiedades de esas regiones. Al %finalizar
el proceso se entrega la matriz junto con la imagen del %objeto. Se han
generado dos opciones de entrega: una es con las %regiones en el color
identificado (forma 1)La otra es con la imagen %original remarcando las
regiones mediante un rectngulo blanco forma %2). Tambin se contabiliza el
tiempo de proceso con la variable tf
%
%ENTRADAS:
%imagen: la imagen a evaluar en formato de frame
%t:matriz de los rangos HSI junto con la etiqueta de cada color.
%Naranja-1, Verde-2, Amarillo-3, Azul-4, Blanco-5.
%
%SALIDAS:
%matregiones: regiones encontradas con las siguientes propiedades
%[No.Region,color de pertenencia, Xi, Yi, Xf, Yf, Area, ancho, alto];
%nR=cantidad de renglones en la imagen. Depende de la resolucin y servir
para el programa de identificacin de objetos.
%tf=tiempo de procesamiento.
%
%EJEMPLO:
%[matregiones nR tf]=opti_reshape(muestraamarilla(1,8),tclab2,1);
tic %Inicio del temporizador
img=frame2im(imagen); %Conversin de la imagen
nR=size(img,1); %Nmero de renglones en la imagen
nC=size(img,2); %Nmero de columnas
n=size(t,1); %Colores a segmentar. En general sern 3: naranja,azul y
amarillo
%Creacin de la matriz y reshape
imgHSI=rgb2hsi(img); %Conversin a HSI
%Creacin de la imagen
J=zeros(size(imgHSI)); %Crear una imagen llena de 0s
imgrect=J;
switch lower(forma)
case 1
imshow(imgrect) %Se muestra la imagen en negro
case 2
imshow(img)
end
int=1;

163
matiniregiones=zeros(500,9); %Matriz de 0s, 500 renglones 9 columnas
hold on %Se excribir sobre es misma imagen
%En ciclo cambiar 1 por i. Se buscarn todos los colores
for i=1:n
img_re=reshape(imgHSI,nR*nC,3); %Se hace un reshape de la funcin para
evaluar todos los pixeles con base a la funcin find
criterio=find((t(i,1)<=img_re(:,1) & img_re(:,1)<=t(i,2)) &
(t(i,3)<=img_re(:,2) & img_re(:,2)<=t(i,4)));
%criterio=find((t(i,1)<=img_re(:,1) & img_re(:,1)<=t(i,2)));
if ~isempty(criterio)
%Para obtener el color del cuadrado
H=mean(img_re(criterio,1));
S=mean(img_re(criterio,2));
I=mean(img_re(criterio,2));
[R G B]=rgbvals(H,S,I);
% Para crear la imagen de BWlabel y llevar acabo el etiquetado
img_re(:,:)=0;
img_re(criterio,:)=1;
%Para regresar a su estado original
img_label=reshape(img_re,nR,nC,3);
matriz_entrada= img_label(:,:,1);
%Para formar las regiones
regiones= regioneshsi_reshape(matriz_entrada,t(i,7));
nRreg=size(regiones,1); %Renglones
for j=1:nRreg
Xi=regiones(j,2);
Xf=regiones(j,4);
Yi=regiones(j,3);
Yf=regiones(j,5);
ancho=(Xf-Xi)+1;
alto=(Yf-Yi)+1;
matiniregiones(int,:)=[int regiones(j,7) regiones(j,2:6) ancho alto];
switch lower(forma)
case 1
rectangle('Position',[Xi,Yi,ancho,alto],'EdgeColor',[R G B])
case 2
rectangle('Position',[Xi,Yi,ancho,alto],'EdgeColor',[1 1 1])
end
int=int+1;
end
else
end
end
hold off
aux=find(matiniregiones(:,1)>0);
matregiones=matiniregiones(aux,:);
tf=toc;

164

12.Algoritmo auxiliar para A11


function [sol] = regioneshsi_reshape(matriz_entrada,ncolor)
%OBJETIVO:
%Obtener las regiones de inters con las posiciones de los pixeles que %han
%sido clasificados. Haciendo uso de la funcin bwlabel que %etiquetar
pixeles vecinos con conectividad 4.
%
%COMO TRABAJA:
%Acepta una matriz de entrada en la que previamente se ha sustituido %el
valor del pixel por el nmero 1 en aquellas coordenadas de pixeles
%clasificados con el criterio de color HSI. Posteriormente se obtiene el
nmero de regiones y sus caractersticas mediante la funcin bwlabel en
conjunto con la funcin busca regin.
%
%ENTRADAS:
%matriz entrada: matriz binaria
%ncolor=color que corresponde a la matriz binaria
%
%SALIDAS:
%sol= regiones encontradas [nmero, Xi, Yi, Xf, Yf, Area color];
%
%EJEMPLO:
%img_label=reshape(img_re,nR,nC,3);
%matriz_entrada= img_label(:,:,1);
%regiones= regioneshsi_reshape(matriz_entrada,t(i,7));
[matriz_regiones, No_regiones] = bwlabel(matriz_entrada,4);
for i = 1:No_regiones
[Xi,Yi,Xf,Yf] = busca_region(matriz_regiones,i);
sol(i,1) = i;
sol(i,2) = Xi;
sol(i,3) = Yi;
sol(i,4) = Xf;
sol(i,5) = Yf;
sol(i,6)=(((Xf-Xi)+1)*((Yf-Yi)+1));
sol(i,7)=ncolor;
end

165

13.Crecimiento de regiones a partir de una semilla tomando como


entrada la tabla de bsqueda reducida a travs de superficies
implcitas
function [matregiones tf]=segsemilla_colores(imagen,ncolors,
tablacolors,ord, etiqueta)
%OBJETIVO:
%Este programa entrega una matriz de las regiones encontradas
%[No.Region,color de pertenencia, Xi, Yi, Xf, Yf, Area, ancho, alto]
%Se utiliza el crecimiento de regiones a partir de un pixel semilla
%seleccionado por el usuario. En combinacin con las clases de color
%generadas a partir de las superficies
%implcitas y agrupadas en las tablas de bsqueda reducidas
%
%COMO TRABAJA:
%El programa aceptara una imagen, se solicita que el usuario %seleccione
los pixeles semilla para cada color que se busque %segmentar. Esto se hace
a travs de la funcin getpts. Se iniciar el %crecimiento considerando a
pixeles vecinos con conectividad 4 cuyos %valores se evaluarn en las
tablas de bsqueda para decidir si %pertenece o no a la clase. El
crecimiento seguir hasta que ya no se %encuentren ms pixeles.
%El resultado del crecimiento es una matriz que contiene los valores y %las
posiciones de los pixeles clasificados. La cual se evaluar en la %funcin
regiones a fin de determinar los valores de las mismas. %Tambin se genera
la imagen del objeto delimitado por rectngulos %blancos que muestran el
contorno de las regiones y se contabiliza el %tiempo de proceso con la
variable tf
%
%ENTRADAS:
%imagen: Imagen que se desea segmentar. Formato frame;
%ncolors: Nmero de colores por segmentar
%tablacolors: Tablas de bsqueda de los colores definidos
%ord: Orden de las componentes, resultado de la reduccin de las %tablas de
bsqueda etiqueta: Identificacin del color a clasificar. %Naranja-1,
Verde-2, Amarillo-3, Azul-4, Blanco-5.
%
%SALIDAS:
%matregiones:nmero de regiones encontradas en forma de matriz.
%[No.Region, Xi, Yi, Xf, Yf, Area, color de pertenencia]
%tf=tiempo de procesamiento.
%
%EJEMPLO:
%[nreg tf] =segsemilla_colores(muestraamarilla(1,8),2, % [tazulp;tamar2],[1
%2 3;3 2 1],[4,3]);
%Se lee la imagen para que se pueda manipular a lo largo del programa
%img=imread(imagen);
img=frame2im(imagen);
% Obtengo los datos necesarios de la imagen
pixel=double(img(:,:,1:3));
nR=size(pixel,1); %Nmero de renglones en la imagen
nC=size(pixel,2); %Nmero de columnas
nComp=size(pixel,3);
pix_reg=[];
L=zeros(size(img)); %Crear una imagen llena de 0s
J=uint8(zeros(size(img))); %En esta matriz sustituire los pixeles que
encuentre al final del programa;

166
%Es importante recordar que en la sustitucin de la matriz,
%y=renglones y va primero y despus x= columnas, e ira despus
%Se muestra la imagen para que el usuario seleccione la semilla en el color
deseado
scrsz = get(0,'ScreenSize');
xs=[];
ys=[];
%Ciclo para obtener las semillas para cada color
for n=1:ncolors
fig1=figure('Name','Imagen para crecimiento','Position',[1 scrsz(4)/2
scrsz(3)/2 scrsz(4)/2]);
texto=['Selecciona la semilla con el botn derecho del mouse de color #
',num2str(n)];
imshow(img),title(texto)
[x{n} y{n}]=getpts; %Con el boton derecho del ratn la selecciono %x =
columnas %y=renglones
x{n}=int32(x{n});
y{n}=int32(y{n});
xs=[xs;x{n}];
ys=[ys;y{n}];
end
npropiedades=[]; %Crear matriz de propiedades
%Tabla en la cual buscar el color
for n=1:ncolors
tic
x=xs(n);
y=ys(n);
matrizaux = find(tablacolors(:,1) == n);
tablacolor=tablacolors(matrizaux,:);
%Inciializacin de variables para cada color
mat_aux=zeros(nR, nC); %En esta matriz verificar que las posiciones de los
pixeles encontrados se sustituyan
mat_aux(y,x)=1; %Primer valo sustituido que es el pixel de la primera
posicin
reg_size=1; %El tamao de la regin hasta el momento
free_mem=10000; %Libero memoria para almacenar las regiones encontradas
vec_list=zeros(free_mem,5); %Guardar la informacin de posicin y valor
del pixel encontrado para despus ser evaluado
list_reg=zeros(free_mem,5);
list_reg(1,:)=[x y pixel(y,x,1) pixel(y,x,2) pixel(y,x,3)];
vec_pos=0; %Contador inicial de la posicin
bandera=1; %Condicin que me permitir continuar con while, la bandera 1,
significa que al menos se encontro 1 vecino con ese pixel
vec=[-1 0; 1 0; 0 -1; 0 1]; %Posiciones de los vecinos
while bandera==1
%Esta condicin significa que se han encontrado
vecinos para el pixel, pues se encuentran dentro de la tabla de evaluacin
for i=1:4

167
xn = x +vec(i,1); %Columnas
yn = y +vec(i,2); %Renglones
%Para revisar si el vecino est dentro de la regin
ins=(xn>=1)&&(yn>=1)&&(xn<=nC)&&(yn<=nR);
%Aadir el pixel si no es parte de la region aun y si est dentro
de los lmites
if(ins&&(mat_aux(yn,xn)==0))
vec_pos =vec_pos+1;
vec_list(vec_pos,:) = [xn yn pixel(yn,xn,1) pixel(yn,xn,2)
pixel(yn,xn,3)]; %Guardar los valores de los pixeles vecinos, sin importar
si son del mismo color
mat_aux(yn,xn)=1;
end
end
%Anadir un nuevo bloque de memoria, en caso de ser necesario
if(vec_pos+10>free_mem), free_mem=free_mem+10000;
vec_list((vec_pos+1):free_mem,:)=0; end
%Criterios de evaluacin y cmo obtener el nuevo x y y;
if vec_pos>0
pix=vec_list(1,3:5);
%Evalo el pixel en la funcin evalpixel
[val]=evalpixel_ncolor(pix,tablacolor,ord(n,:));
if val==1 %significa que si encontr al pixel en la lista, por lo
tanto se agrega a la regin, a la lista de regiones, se establece una nueva
X y Y y se elimina el pixel de vec_list
reg_size=reg_size+1;
list_reg(reg_size,:)=vec_list(1,:);
x= vec_list(1,1); y= vec_list(1,2); %Los nuevos valores que tomara
x
vec_list(1,:)=vec_list(vec_pos,:); %Como eliminare el primer
valor, para que ya no sea evaluado nuevamente, hago que el ltimo valor,
sea el primero
vec_pos=vec_pos-1; %Despus reduzco el ndice para eliminar el
ltimo elemento que ya tom el lugar del primero
bandera=1;
else
for m=2:vec_pos
pix=vec_list(m,3:5);
val=evalpixel_ncolor(pix,tablacolor,ord(n,:));
pos_enlista=m;
if val==1
break
end
end
%Lo que me dar como resultado el ciclo anterior es el ndice de
vec_list en el cual encontr el siguiente pixel que pertenece, si
%el primero al ser evaluado es rechazado
reg_size=reg_size+1;
list_reg(reg_size,:)=vec_list(pos_enlista,:);
x= vec_list(pos_enlista,1); y = vec_list(pos_enlista,2);
%Para eliminar los pixeles que ya no interesan, porque no se
%encontr su valor en la tabla, se realiza lo siguiente
num_eliminados=pos_enlista-1;
vec_list=vec_list(pos_enlista:vec_pos,:); %Elimino todos aquellos
que no se encontraron dentro de mi tabla

168
vec_pos=vec_pos-num_eliminados; %Despus reduzco el ndice
vec_pos, quitando el nmero de eliminados, (los cuales son todos los
anteriores al que encontr)
bandera=1;
end
if val==0
bandera=0;
else
end
else
bandera=0;
end
end
%Elimin de la matriz aquellos que sean igual a 0
valdifzero=find(list_reg(:,1)>0);
list_reg=list_reg(valdifzero,:);
%La matriz que utilizar es list_reg la cual tiene todos los valores
que pertenecen a la regin en 1--> columnas x 2--->renglones y
pixpertenece=zeros(size(list_reg,1),3);
%Cliclo para generar los pixeles que pertenecen a la lista y la imagen
for k=1: size(list_reg,1)
x=list_reg(k,1);
y=list_reg(k,2);
R=img(y,x,1);
G=img(y,x,2);
B=img(y,x,3);
pixpertenece(k,:)=[R G B];
J(y,x,:)=[R G B];
L(y,x,:)=[1 1 1];
end
pertenece=[pixpertenece list_reg(:,2) list_reg(:,1)];
if ~isempty(pertenece)
[propiedades]=[regiones(pertenece) etiqueta(1,n)];
npropiedades=[npropiedades;propiedades];
else
end
end %Cierro el ciclo de los colores

image(J),title('Imagen segmentada')
%Para mostrar ambas imgenes en la pantalla
texto=['Comparacin de imges normal vs. resultado de segmentacin'];
figure('Name',texto,'Position',[1 scrsz(4)/2 scrsz(3) (scrsz(4)/2)+20]);
subplot(1,2,1)
imshow(img),title('Imagen seleccionada')
subplot(1,2,2)
image(J),title('Imagen segmentada')
%figure('Name','Imagen seccionada');
%imshow(img),title('Esta es la imagen, junto con su rectngulo')
hold on
int=1;
matiniregiones=zeros(150,9);
%Para mostrar los contornos
for r=1:size(npropiedades,1)

169
Xi=npropiedades(r,2);
Xf=npropiedades(r,4);
Yi=npropiedades(r,3);
Yf=npropiedades(r,5);
ancho=(Xf-Xi)+1;
alto=(Yf-Yi)+1;
matiniregiones(int,:)=[int npropiedades(r,7) npropiedades(r,2:6) ancho
alto];
rectangle('Position',[Xi,Yi,ancho,alto],'EdgeColor',[1,1,1])
int=int+1;
end
hold off
mataux=matiniregiones(matiniregiones(:,1)>0);
matregiones=matiniregiones(mataux,:);
tf=toc;

170

14.Crecimiento de regiones a partir de un pixel semilla tomando en


cuenta el criterio de color a travs de la conversin RGB a HSI y
clasificacin de regiones cbicas.
function [matregiones
tf]=segsemilla_coloresHSI(imagen,ncolors,colores,tcolor)
%OBJETIVO:
%Este programa entrega una matriz de las regiones encontradas
%[No.Region,color de pertenencia, Xi, Yi, Xf, Yf, Area, ancho, alto]
%Se utiliza el crecimiento de regiones a partir de un pixel semilla
%seleccionado por el usuario. En combinacin con las clases de color
%generadas a partir de las regiones cbicas de HSI con la conversin
%del espacio RGB.
%
%COMO TRABAJA:
%El programa aceptara una imagen, se solicita que el usuario %seleccione
los pixeles semilla para cada color que se busque %segmentar. Esto se hace
a travs de la funcin getpts. Se iniciar el %crecimiento considerando a
pixeles vecinos con conectividad 4 cuyos %valores se evaluarn en matriz de
rangos HSI (tcolor) para decidir si %pertenece o no a alguna clase de
color. El crecimiento seguir hasta %que ya no se encuentren ms pixeles.
El resultado del crecimiento es %una matriz que contiene los valores y las
posiciones de los pixeles %clasificados. La cual se evaluar en la funcin
regioneshsi a fin de %determinar los valores de las mismas. Tambin se
genera la imagen del %objeto delimitado por rectngulos blancos que
muestran el contorno de %las regiones y se contabiliza el tiempo de proceso
con la variable tf
%
%ENTRADAS:
%imagen: Imagen que se desea segmentar. Formato frame;
%ncolors: Nmero de colores por segmentar
%colores: etiqueta de colores que se asigna en la tabla tcolor. Se %ordenan
%de acuerdo a la seleccin realizada.
%tcolor=Tabla de umbrales para HSI
%
%SALIDAS:
%matregiones:nmero de regiones encontradas en forma de matriz.
%[No.Region, Xi, Yi, Xf, Yf, Area, color de pertenencia]
%tf=tiempo de procesamiento.
%
%EJEMPLO:
%[nreg tf] %=segsemilla_coloresHSI(muestraamarilla(1,8),2,[3,4],tclab2);
%Se lee la imagen para que se pueda manipular a lo largo del programa
%img=imread(imagen);
img=frame2im(imagen);
imgHSI=rgb2hsi(img);
% Obtengo los datos necesarios de la imagen
pixel=double(imgHSI(:,:,1:3));
nR=size(pixel,1); %Nmero de renglones en la imagen
nC=size(pixel,2); %Nmero de columnas
nComp=size(pixel,3);
pix_reg=[];
%Se muestra la imagen para que el usuario seleccione la semilla en el color
%deseado
scrsz = get(0,'ScreenSize');
xs=[];
ys=[];

171
%Ciclo para obtener las semillas para cada color
for n=1:ncolors
fig1=figure('Name','Imagen para crecimiento','Position',[1 scrsz(4)/2
scrsz(3)/2 scrsz(4)/2]);
texto=['Selecciona la semilla con el botn derecho del mouse de color #
',num2str(n)];
imshow(img),title(texto)
[x{n} y{n}]=getpts; %Con el boton derecho del ratn la selecciono %x =
columnas %y=renglones
xs=[xs;x{n}];
ys=[ys;y{n}];
end
npropiedades=[]; %Crear matriz de propiedades
J=uint8(zeros(size(img))); %En esta matriz sustituire los pixeles que
encuentre al final del programa;
%Es importante recordar que en la sustitucin de la matriz,
%y=renglones y va primero y despus x= columnas, e ira despus
%Inciializacin de variables para cada color
J=zeros(size(imgHSI));
imgrect=J;
%Tabla en la cual buscar el color
for n=1:size(colores,2)
tic
x=xs(n);
y=ys(n);
matrizaux = find(tcolor(:,7) == colores(1,n));
tc=tcolor(matrizaux,:);
%Inciializacin de variables para cada color
mat_aux=zeros(nR, nC); %En esta matriz verificar que las posiciones de los
pixeles encontrados se sustituyan
mat_aux(y,x)=1; %Primer valo sustituido que es el pixel de la primera
posicin
reg_size=1; %El tamao de la regin hasta el momento
free_mem=10000; %Libero memoria para almacenar las regiones encontradas
vec_list=zeros(free_mem,5); %Guardar la informacin de posicin y valor
del pixel encontrado para despus ser evaluado
list_reg=zeros(free_mem,5);
list_reg(1,:)=[x y pixel(y,x,1) pixel(y,x,2) pixel(y,x,3)];
vec_pos=0; %Contador inicial de la posicin
bandera=1; %Condicin que me permitir continuar con while, la bandera 1,
significa que al menos se encontro 1 vecino con ese pixel
vec=[-1 0; 1 0; 0 -1; 0 1]; %Posiciones de los vecinos
while bandera==1
%Esta condicin significa que se han encontrado
vecinos para el pixel, pues se encuentran dentro de la tabla de evaluacin
for i=1:4
xn = x +vec(i,1); %Columnas
yn = y +vec(i,2); %Renglones
%Para revisar si el vecino est dentro de la regin
ins=(xn>=1)&&(yn>=1)&&(xn<=nC)&&(yn<=nR);
%Aadir el pixel si no es parte de la region aun y si est dentro
de los lmites
if(ins&&(mat_aux(yn,xn)==0))

172
vec_pos =vec_pos+1;
vec_list(vec_pos,:) = [xn yn pixel(yn,xn,1) pixel(yn,xn,2)
pixel(yn,xn,3)]; %Guardar los valores de los pixeles vecinos, sin importar
si son del mismo color
mat_aux(yn,xn)=1;
end
end
%Anadir un nuevo bloque de memoria, en caso de ser necesario
if(vec_pos+10>free_mem), free_mem=free_mem+10000;
vec_list((vec_pos+1):free_mem,:)=0; end
%Criterios de evaluacin y cmo obtener el nuevo x y y;
if vec_pos>0
pix=vec_list(1,3:5);
%Evalo el pixel en la funcin evalpixel
[val]=evalpixelHSI(pix,tc);
if val==1 %significa que si encontr al pixel en la lista, por lo
tanto se agrega a la regin, a la lista de regiones, se establece una nueva
X y Y y se elimina el pixel de vec_list
reg_size=reg_size+1;
list_reg(reg_size,:)=vec_list(1,:);
x= vec_list(1,1); y= vec_list(1,2); %Los nuevos valores que tomara
x
vec_list(1,:)=vec_list(vec_pos,:); %Como eliminare el primer
valor, para que ya no sea evaluado nuevamente, hago que el ltimo valor,
sea el primero
vec_pos=vec_pos-1; %Despus reduzco el ndice para eliminar el
ltimo elemento que ya tom el lugar del primero
bandera=1;
else
for m=2:vec_pos
pix=vec_list(m,3:5);
[val]=evalpixelHSI(pix,tc);
pos_enlista=m;
if val==1
break
end
end
%Lo que me dar como resultado el ciclo anterior es el ndice de
vec_list en el cual encontr el siguiente pixel que pertenece, si
%el primero al ser evaluado es rechazado
reg_size=reg_size+1;
list_reg(reg_size,:)=vec_list(pos_enlista,:);
x= vec_list(pos_enlista,1); y = vec_list(pos_enlista,2);
%Para eliminar los pixeles que ya no interesan, porque no se
%encontr su valor en la tabla, se realiza lo siguiente
num_eliminados=pos_enlista-1;
vec_list=vec_list(pos_enlista:vec_pos,:); %Elimino todos aquellos
que no se encontraron dentro de mi tabla
vec_pos=vec_pos-num_eliminados; %Despus reduzco el ndice
vec_pos, quitando el nmero de eliminados, (los cuales son todos los
anteriores al que encontr)
bandera=1;
end
if val==0
bandera=0;
else
end

173
else
bandera=0;
end
end
valdifzero=find(list_reg(:,1)>0);
list_reg=list_reg(valdifzero,:);
%La matriz que utilizar es list_reg la cual tiene todos los valores
que pertenecen a la regin en 1--> columnas x 2--->renglones y
mat_poslist=zeros(size(list_reg,1),2);
for k=1: size(list_reg,1)
x=list_reg(k,1);
y=list_reg(k,2);
mat_poslist(k,:)=[y x];
end
[propiedades]=regioneshsi(mat_poslist,tc(1,7),nR,nC);
[H{n} S{n} I{n}]=colorsecHSI(imgHSI, mat_poslist);
for k=1: size(mat_poslist,1)
rg=mat_poslist(k,1);
cl=mat_poslist(k,2);
J(rg,cl,:)=[H{n} S{n} I{n}];
end
pixcolor{n}=mat_poslist;
regiones{n}=propiedades;
end
figure
imshow(J)
t=toc;
%Para dibujar los rectngulos encontrados
figure
imshow(imgrect)
int=1;
matiniregiones=zeros(150,9);
for i=1:ncolors
nRreg=size(regiones{i},1); %Renglones
hold on
for j=1:nRreg
Xi=regiones{i}(j,2);
Xf=regiones{i}(j,4);
Yi=regiones{i}(j,3);
Yf=regiones{i}(j,5);
ancho=(Xf-Xi)+1;
alto=(Yf-Yi)+1;
matiniregiones(int,:)=[int regiones{i}(j,7) regiones{i}(j,2:6)
ancho alto];
rectangle('Position',[Xi,Yi,ancho,alto],'EdgeColor',[H{i} S{i}
I{i}])
int=int+1;
end
end
hold off
mataux=matiniregiones(matiniregiones(:,1)>0);
matregiones=matiniregiones(mataux,:);

174

15.Creacin de Lneas de Escaneo Tipo I para tabla de bsqueda


reducida a travs de superficies implcitas
function [matrizsem tf]=seg_scanlines(imagen,sep, tablascolores,
ord,ncolors)
%OBJETIVO:
%Generar una matriz de semillas que sea el punto de partida para el
%algoritmo de crecimiento de regiones. Esta matriz de semillas sern
%las coordenadas de los pixeles que hayan resultado clasificados
%dentro de alguna clase de color generada a partir de las superficies
%implcitas y agrupadas en las tablas de bsqueda reducidas. Las
%coordenadas a evaluar sern aquellas contenidas dentro de las lneas %de
escaneo generadas con el patrn I. El patrn I consiste en formar %tres
lneas de escaneo con diferente densidad o separacin que corren %a partir
del margen de referencia dado, por arriba del horizonte (20% %arriba del
mismo). Las distintas longitudes permiten controlar la %densidad de
escaneo. Estas tres lneas estn intercaladas con el %siguiente patrn: una
lnea completa de la referencia hasta el fin
%de la imagen, una lnea de la referencia hasta 30% por debajo del
%horizonte una lnea de la referencia a 60% por debajo del horizonte y
%nuevamente una lnea de la referencia al 30% por debajo del %horizonte.
La secuencia se repite con la separacin indicada por el %usuario.
%
%COMO TRABAJA:
%El programa aceptara una imagen, la separacin deseada y las
%caractersticas intrnsecas del clasificador de color.
%1. Obtener los datos de la imagen para generar los puntos
%de referencia del patrn deseado.
%2. Generar las lneas de escaneo con las caractersticas del paso 1
%3. Extraer la informacin de los pixeles encontrados en las lneas, %en
trminos de componentes de color
%4. Analizar esta informacin en el clasificador de color
%5. Generar la matriz con los pixeles clasificados
%
%ENTRADA
%imagen: Imagen en la cual se aplicarn las lneas de escaneo
%sep: Separacin deseada entre las lneas de escaneo. Nmero divisible
%entre 2 y 4.
%tablascolores: tabla de bsqueda
%ord: Orden de las componentes en la tabla de bsqueda
%ncolors: No. de colores a segmentar
%
%SALIDAS:
%matrizsem:Matriz de semillas. [nx2]
%tf= tiempo de proceso
%Tambin al final se muestra la imagen con el patrn de lneas de %escaneo
%EJEMPLO:
%[matrizsem t]=seg_scanlines(muestraazul(1,2),16,[tazulp;tamar2],[1 2 %3;3
2 1],2);
%Se entregan dos tablas de colores, pero puede extenderse a los %colores
deseados.
tic
%Datos de la imagen
img=frame2im(imagen);
img2=frame2im(imagen);
pixel=double(img(:,:,1:3));
nR=size(pixel,1); %Nmero de renglones en la imagen
nC=size(pixel,2); %Nmero de columnas
mitad=int16(nR/2);

175
ref=int16(nR*0.20);
divref=int16((nR-ref)/3);
ref2=ref+(divref*2);
ref3=ref+divref;
div1=nC/sep;
refC2=sep/2;
refC3=sep/4;
div2=nC/refC2;
div3=nC/refC3;
valpix=zeros((nR-ref)*nC,3);
pospix=zeros((nR-ref)*nC,2);
matr=1;
%Primer tipo de lnea: De la referencia al final de los renglones
for i=ref:nR
for j=1:div1
valpix(matr,:)=img(i,((j*sep)),:);
pospix(matr,:)=[i (j*sep)];% x=columnas (j) y y=renglones (i)
matr=matr+1;
img(i,(j*sep),:)=[0 0 0];
end
end
%Segundo tipo de lnea: De la referencia a 1/3 antes de llegar al final de
%los renglones
for i=ref:ref2
for j=1:(div2-1)
valpix(matr,:)=img(i,((j*refC2)),:);
pospix(matr,:)=[i (j*refC2)];% x=columnas (j) y y=renglones (i)
matr=matr+1;
img(i,(j*refC2),:)=[0 0 0];
end
end
%Tercer tipo de lnea: De la referencia a 2/3 antes de llegar al final de
%los renglones
for i=ref:ref3
for j=1:(div3-1)
valpix(matr,:)=img(i,((j*refC3)),:);
pospix(matr,:)=[i (j*refC3)];% x=columnas (j) y y=renglones (i)
matr=matr+1;
img(i,(j*refC3),:)=[0 0 0];
end
end
%Obtener la tabla final de posiciones
aux=find(pospix(:,1)>0 & pospix(:,1)>0);
pospix=pospix(aux,:);
valpix=valpix(aux,:);
int=1;
%Crear una matriz para almacenar los pixeles encontrados en las clases
pixpertenece=zeros(size(pospix,1),3);
posiciones=zeros(size(pospix,1),3);
%Para formar la matriz semilla
%Bsqueda de los pixeles de escaneo en las tablas de bsqueda
for c = 1:ncolors

176
matrizaux = find(tablascolores(:,1) == c);
tablabusqueda=tablascolores(matrizaux,:);
%Para conocer qu componentes debera buscar en la primera columna, en
%la segunda y tercera-cuarta de la tabla de bsqueda
Rmenor=ord(c,1);
Rmedio=ord(c,2);
Rmayor=ord(c,3);
for i=1:size(valpix,1)
pix=[img2(pospix(i,1),pospix(i,2),1) img2(pospix(i,1),pospix(i,2),2)
img2(pospix(i,1),pospix(i,2),3)];
%Una vez que se cuenta con el pixel, se busca en la tabla
criterio=find(tablabusqueda(:,2)==pix(1,Rmenor) &
tablabusqueda(:,3)==pix(1,Rmedio));
if size(criterio,1)~=0
if pix(1,Rmayor)>=tablabusqueda(criterio,4) &
pix(1,Rmayor)<=tablabusqueda(criterio,5)
%pause
int=int+1;
pixpertenece(int,:)=pix;
posiciones(int,:)=[c pospix(i,:)];
else
end
else
end
end
end
valdifzero=find(pixpertenece(:,1)>0);
pertenece=pixpertenece(valdifzero,:);
valdifzeropos=find(posiciones(:,1)>0);
matrizsem=posiciones(valdifzeropos,:);
tf=toc;
imshow(img)

177

16.Creacin de Lneas de Escaneo Tipo I para la conversin RGB a HSI


y clasificacin de regiones cbicas.
function [pixfound t1]=seg_scanlinesHSI(sep,img,t)
%OBJETIVO:
%Generar una matriz de semillas que sea el punto de partida para el
%algoritmo de crecimiento de regiones. Esta matriz de semillas sern
%las coordenadas de los pixeles que hayan resultado clasificados
%dentro de alguna clase de color generada a partir de las regiones cbicas
de HSI con la conversin del espacio RGB. Las coordenadas a evaluar sern
aquellas contenidas dentro de las lneas de escaneo generadas con el patrn
I.
%
% El patrn I consiste en formar tres lneas de escaneo con diferente
densidad o separacin que corren a partir del margen de referencia dado,
por arriba del horizonte (20% arriba del mismo). Las distintas longitudes
permiten controlar la densidad de escaneo. Estas tres lneas estn
intercaladas con el siguiente patrn: una lnea completa de la referencia
hasta el fin de la imagen, una lnea de la referencia hasta 30% por debajo
del horizonte una lnea de la referencia a 60% por debajo del horizonte y
nuevamente una lnea de la referencia al 30% por debajo del horizonte.
%La secuencia se repite con la separacin indicada por el usuario.
%
%COMO TRABAJA:
%El programa aceptara una imagen, la separacin deseada y las
%caractersticas intrnsecas del clasificador de color. En este caso la
matriz de umbrales generada en el espacio HSI [Hmin Hmax Smin Smax Imin
Imax color]
%1. Obtener los datos de la imagen para generar los puntos
%de referencia del patrn deseado.
%2. Generar las lneas de escaneo con las caractersticas del paso 1
%3. Extraer la informacin de los pixeles encontrados en las lneas, %en
trminos de componentes de color
%4. Analizar esta informacin en el clasificador de color
%5. Generar la matriz con los pixeles clasificados
%
%ENTRADA
%sep: Separacin deseada entre las lneas de escaneo. Nmero divisible
entre 2 y 4.
%img: Imagen en la cual se aplicarn las lneas de escaneo
%t=matriz de umbrales generada en el espacio HSI [Hmin Hmax Smin Smax
%IminImax color]
%
%SALIDAS:
%matrizsem:Matriz de semillas. [nx2]
%tf= tiempo de proceso
%Tambin al final se muestra la imagen con el patrn de lneas de escaneo
%EJEMPLO:
%[matrizsem t]=seg_scanlinesHSI(16,muestraazul(1,2),tclab2);
tic
pixel=double(img(:,:,1:3));
nR=size(pixel,1); %Nmero de renglones en la imagen
nC=size(pixel,2); %Nmero de columnas
mitad=int16(nR/2);
ref=int16(nR*0.20);
divref=int16((nR-ref)/3);
ref2=ref+(divref*2);
ref3=ref+divref;
div1=nC/sep;
refC2=sep/2;
refC3=sep/4;

178
div2=nC/refC2;
div3=nC/refC3;
valpix=zeros((nR-ref)*nC,3);
pospix=zeros((nR-ref)*nC,2);
matr=1;
%Primer tipo de lnea: De la referencia al final de los renglones
for i=ref:nR
for j=1:div1
valpix(matr,:)=img(i,((j*sep)),:);
pospix(matr,:)=[i (j*sep)];% x=columnas (j) y y=renglones (i)
matr=matr+1;
img(i,(j*sep),:)=[0 0 0];
end
end
%Segundo tipo de lnea: De la referencia a 1/3 antes de llegar al final de
%los renglones
for i=ref:ref2
for j=1:(div2-1)
valpix(matr,:)=img(i,((j*refC2)),:);
pospix(matr,:)=[i (j*refC2)];% x=columnas (j) y y=renglones (i)
matr=matr+1;
img(i,(j*refC2),:)=[0 0 0];
end
end
%Tercer tipo de lnea: De la referencia a 2/3 antes de llegar al final de
los renglones
for i=ref:ref3
for j=1:(div3-1)
valpix(matr,:)=img(i,((j*refC3)),:);
pospix(matr,:)=[i (j*refC3)];% x=columnas (j) y y=renglones (i)
matr=matr+1;
img(i,(j*refC3),:)=[0 0 0];
end
end
%Obtener la tabla final de posiciones
aux=find(pospix(:,1)>0 & pospix(:,1)>0);
pospix=pospix(aux,:);
valpix=valpix(aux,:);
%Evaluar los pixeles encontrados en la matriz
pixfound=foundcolorsHSI(pospix, valpix,t);
t1=toc;
imshow(img)

179

17.Creacin de Lneas de Escaneo Tipo II para tabla de bsqueda


reducida a travs de superficies implcitas
function [matrizsem t1]=scanlines_RGB(img,sep,tablascolores, ord,ncolors)
%OBJETIVO:
%Generar una matriz de semillas que sea el punto de partida para el
%algoritmo de crecimiento de regiones. Esta matriz de semillas sern
%las coordenadas de los pixeles que hayan resultado clasificados
%dentro de alguna clase de color generada a partir de las superficies
%implcitas y agrupadas en las tablas de bsqueda reducidas. Las
%coordenadas a evaluar sern aquellas contenidas dentro de las lneas %de
escaneo generadas con el patrn II
%
% El patrn II consiste en contar con lneas de escaneo de la misma
%longitud que abarcan desde la referencia que se extiende por arriba
%del horizonte hasta el final de la imagen con una separacin dada por
%el usuario y que, preferentemente, puede ir de diez a veinte pixeles
%de separacin.
%COMO TRABAJA:
%El programa aceptara una imagen, la separacin deseada y las
%caractersticas intrnsecas del clasificador de color.
%1. Obtener los datos de la imagen para generar los puntos
%de referencia del patrn deseado.
%2. Generar las lneas de escaneo con las caractersticas del paso 1
%3. Extraer la informacin de los pixeles encontrados en las lneas, en
trminos de componentes de color
%4. Analizar esta informacin en el clasificador de color
%5. Generar la matriz con los pixeles clasificados
%
%ENTRADA
%imagen: Imagen en la cual se aplicarn las lneas de escaneo
%sep: Separacin deseada entre las lneas de escaneo
%tablascolores: tabla de bsqueda
%ord: Orden de las componentes en la tabla de bsqueda
%ncolors: No. de colores a segmentar
%
%SALIDAS:
%matrizsem:Matriz de semillas. [nx2]
%tf= tiempo de proceso
%Tambin al final se muestra la imagen con el patrn de lneas de escaneo
%EJEMPLO:
%[matrizsem t]=scanlines_RGB(muestraazul(1,2),16,[tazulp;tamar2],[1 2 %3;3
2 1],2);
%Se entregan dos tablas de colores, pero puede extenderse a los %colores
deseados.
tic
img2=frame2im(img);
img=frame2im(img);
pixel=double(img(:,:,1:3));
nR=size(pixel,1); %Nmero de renglones en la imagen
nC=size(pixel,2); %Nmero de columnas
mitad=int16(nR/2);
ref=int16(nR*0.20);
div=int16(nC/sep)-1;
valpix=zeros((nR-ref)*div,3);
pospix=zeros((nR-ref)*div,2);
matr=1;

180
for i=ref:nR
for j=1:div
valpix(matr,:)=img(i,((j*sep)),:);
pospix(matr,:)=[i (j*sep)];% x=columnas (j) y y=renglones (i)
matr=matr+1;
img(i,(j*sep),:)=[0 0 0];
end
end
%Crear una matriz para almacenar los pixeles encontrados en las clases
pixpertenece=zeros(size(pospix,1),3);
posiciones=zeros(size(pospix,1),3);
%Para formar la matriz semilla
int=1;
%Bsqueda de los pixeles de escaneo en las tablas de bsqueda
for c = 1:ncolors
matrizaux = find(tablascolores(:,1) == c);
tablabusqueda=tablascolores(matrizaux,:);
%Para conocer qu componentes debera buscar en la primera columna, en
la segunda y tercera-cuarta de la tabla de bsqueda
Rmenor=ord(c,1);
Rmedio=ord(c,2);
Rmayor=ord(c,3);
for i=1:size(valpix,1)
pix=[img2(pospix(i,1),pospix(i,2),1) img2(pospix(i,1),pospix(i,2),2)
img2(pospix(i,1),pospix(i,2),3)];
%Una vez que se cuenta con el pixel, se busca en la tabla
criterio=find(tablabusqueda(:,2)==pix(1,Rmenor) &
tablabusqueda(:,3)==pix(1,Rmedio));
if size(criterio,1)~=0
if pix(1,Rmayor)>=tablabusqueda(criterio,4) &
pix(1,Rmayor)<=tablabusqueda(criterio,5)
%pause
int=int+1;
pixpertenece(int,:)=pix;
posiciones(int,:)=[c pospix(i,:)];
else
end
else
end
end
end
valdifzero=find(pixpertenece(:,1)>0);
pertenece=pixpertenece(valdifzero,:);
valdifzeropos=find(posiciones(:,1)>0);
matrizsem=posiciones(valdifzeropos,:);
t1=toc;
imshow(img)

181

18.Creacin de Lneas de Escaneo Tipo II para la conversin RGB a


HSI y clasificacin de regiones cbicas.
function [pixfound t1]=scanlines(sep,img,t)
%OBJETIVO:
%Generar una matriz de semillas que sea el punto de partida para el
%algoritmo de crecimiento de regiones. Esta matriz de semillas sern
%las coordenadas de los pixeles que hayan resultado clasificados
%dentro de alguna clase de color generada a partir de las regiones %cbicas
de HSI con la conversin del espacio RGB. Las coordenadas a %evaluar sern
aquellas contenidas dentro de las lneas de escaneo %generadas con el
patrn II
%
%El patrn II consiste en contar con lneas de escaneo de la misma
%longitud que abarcan desde la referencia que se extiende por arriba
%del horizonte hasta el final de la imagen con una separacin dada por
%el usuario y que, preferentemente, puede ir de diez a veinte pixeles
%de separacin.
%
%COMO TRABAJA:
%El programa aceptara una imagen, la separacin deseada y las
%caractersticas intrnsecas del clasificador de color. En este caso %la
matriz de umbrales generada en el espacio HSI [Hmin Hmax Smin Smax %Imin
Imax color]
%1. Obtener los datos de la imagen para generar los puntos
%de referencia del patrn deseado.
%2. Generar las lneas de escaneo con las caractersticas del paso 1
%3. Extraer la informacin de los pixeles encontrados en las lneas, %en
trminos de componentes de color
%4. Analizar esta informacin en el clasificador de color
%5. Generar la matriz con los pixeles clasificados
%
%ENTRADA
%sep: Separacin deseada entre las lneas de escaneo
%img: Imagen en la cual se aplicarn las lneas de escaneo
%t=matriz de umbrales generada en el espacio HSI [Hmin Hmax Smin Smax %Imin
Imax color]
%
%SALIDAS:
%matrizsem:Matriz de semillas. [nx2]
%tf= tiempo de proceso
%Tambin al final se muestra la imagen con el patrn de lneas de %escaneo
%EJEMPLO:
%[matrizsem t]=scanlines(16,muestraazul(1,2),tclab2);

tic
%img=frame2im(img);
%img=rgb2hsi(img);
pixel=double(img(:,:,1:3));
nR=size(pixel,1); %Nmero de renglones en la imagen
nC=size(pixel,2); %Nmero de columnas
mitad=int16(nR/2);
ref=int16(nR*0.20);
div=int16(nC/sep)-1;
valpix=zeros((nR-ref)*div,3);
pospix=zeros((nR-ref)*div,2);
matr=1;

182
for i=ref:nR
for j=1:div
valpix(matr,:)=img(i,((j*sep)),:);
pospix(matr,:)=[i (j*sep)];% x=columnas (j) y y=renglones (i)
matr=matr+1;
img(i,(j*sep),:)=[0 0 0];
end
end
pixfound=foundcolorsHSI(pospix, valpix,t);
t1=toc;
imshow(img)

183

19. Crecimiento de regiones con matriz semillas para tabla de bsqueda


reducida a travs de superficies implcitas
function [J matregiones
tf]=segmentacion_semillaRGB(imagen,tablacolors,ord,sep,ncolors,patron)
%OBJETIVO:
%Este programa realiza el crecimiento de regiones con la matriz de semillas
extraidas de las lneas de escaneo. Es posible evaluar
%cualquiera de los dos patrones. El crecimiento se realiza evaluando %los
pixeles vecinos con conectividad 4 y utilizando las clases de %color
generadas a partir de las superficies implcitas y agrupadas en %las tablas
de bsqueda reducidas
%
%COMO TRABAJA:
%El programa acepta la imagen a segmentar, las caractersticas del
%clasificador de color y el usuario selecciona la separacin de las %lneas
de escaneo y el patrn de escaneo a probar.
%El proceso del programa es el siguiente:
%1. Hacer la conversin de frame a imagen y obtener datos como nmero de
renglones y columnas.
%2. Obtener la matriz de semillas a travs del patrn de escaneo
%seleccionado
%3. Inicializar los valores para el crecimiento:lista de pixeles que %se
irn agregando conforme se realice el crecimiento.
%4. Entro al ciclo de colores. El crecimiento se har por colores. De %tal
forma que utilizo la matriz de un color y luego otro.
%5. Primero se toman los valores iniciales de la matriz y se realiza %el
crecimiento
%6. Cuando el crecimiento termina sigue con el siguiente valor, pero
%compara que no se encuentre dentro del crecimiento.
%7. El programa termina cuando se han usado todas las semillas o %cuando
encuentra que todas han sido clasificadas en alguna regin
%8. La salida ser la matriz con las propiedades de la regin y la
imagensegmentada
%
%ENTRADAS:
%imagen: Imagen que se desea segmentar. Formato frame;
%ncolors: Nmero de colores por segmentar
%tablacolors: Tablas de bsqueda de los colores definidos
%ord: Orden de las componentes, resultado de la reduccin de las tablas de
bsqueda
%sep=Separacin deseada entre las lneas de escaneo;
%patron:1-lneas de escaneo tipo 1 ; 2-lneas de escaneo tipo 2
%
%SALIDAS:
%J=matriz de la imagen segmentada
%matregiones:nmero de regiones encontradas en forma de matriz.
%[No.Region, Xi, Yi, Xf, Yf, Area]
%tf=tiempo de procesamiento.
%
%EJEMPLO:
%[J mat_poslit tf]=segmentacion_semillamod(muestraazul(1,2)[tazulp;tamar2;]
%,[1 2 3;3 2 1],16,2,2);

%Se lee la imagen para que se pueda manipular a lo largo del programa
img=frame2im(imagen); %Se cambio por la lectura de frames

184
scrsz = get(0,'ScreenSize');
% Obtengo los datos necesarios de la imagen
pixel=double(img(:,:,1:3));
nR=size(pixel,1); %Nmero de renglones en la imagen
nC=size(pixel,2); %Nmero de columnas
tic
%Para seleccionar entre los dos patrones de escaneo
switch lower(patron)
case 1
matsem=seg_scanlines(imagen,sep, tablacolors, ord,ncolors);
case 2
matsem=scanlines_RGB(imagen,sep,tablacolors, ord,ncolors);
end
%Ciclo para colores
%Inicializo variables que necesitar
J=uint8(zeros(size(img))); %En esta matriz sustituire los pixeles que
encuentre al final del programa;
%Es importante recordar que en la sustitucin de la matriz,
%y=renglones y va primero y despus x= columnas, e ira despus
mat_aux=zeros(nR, nC); %En esta matriz verificar que las posiciones de los
pixeles encontrados se sustituyan
%mat_aux(y,x)=1;
reg_size=1; %El tamao de la regin hasta el momento
free_mem=10000;
vec_list=zeros(free_mem,5); %Guardar la informacin de posicin y valor
del pixel encontrado para despus ser evaluado
list_reg=zeros(free_mem,5);
vec_pos=0; %Contador inicial de la posicin
bandera=1; %Condicin que me permitir continuar con while, la bandera 1,
significa que al menos se encontro 1 vecino con ese pixel
nf=2;
vec=[-1 0; 1 0; 0 -1; 0 1]; %Posiciones de los vecinos
npropiedades=[]; %Crear matriz de propiedades
for n=1:ncolors
matrizaux = find(tablacolors(:,1) == n);
tablacolor=tablacolors(matrizaux,:);
matsemaux=find(matsem(:,1)==n);
if ~isempty(matsemaux)
matsem2=matsem(matsemaux,:);
matrizsem=[matsem2(:,3) matsem2(:,2)];
%Como semillas utilizo los primeros de la matriz
x=matrizsem(1,1);
y=matrizsem(1,2);
mat_aux(y,x)=1;
list_reg(reg_size,:)=[x y pixel(y,x,1) pixel(y,x,2) pixel(y,x,3)];
bandera=1;
else
bandera=0;
end
while bandera==1
%Esta condicin significa que se han encontrado
vecinos para el pixel, pues se encuentran dentro de la tabla de evaluacin
for i=1:4
xn = x +vec(i,1); %Columnas
yn = y +vec(i,2); %Renglones

185
%Para revisar si el vecino est dentro de la regin
ins=(xn>=1)&&(yn>=1)&&(xn<=nC)&&(yn<=nR);
%Aadir el pixel si no es parte de la region aun y si est dentro
de los lmites
if(ins&&(mat_aux(yn,xn)==0))
vec_pos =vec_pos+1;
vec_list(vec_pos,:) = [xn yn pixel(yn,xn,1) pixel(yn,xn,2)
pixel(yn,xn,3)]; %Guardar los valores de los pixeles vecinos, sin importar
si son del mismo color
%vec_list(1:vec_pos,:);
%pause
mat_aux(yn,xn)=1;
end
end
%Anadir un nuevo bloque de memoria, en caso de ser necesario
if(vec_pos+10>free_mem), free_mem=free_mem+10000;
vec_list((vec_pos+1):free_mem,:)=0; end
%Criterios de evaluacin y cmo obtener el nuevo x y y;
if vec_pos>0
pix=vec_list(1,3:5);
%Evalo el pixel en la funcin evalpixel
[val]=evalpixel(pix,tablacolor,ord(n,:));
if val==1 %significa que si encontr al pixel en la lista, por lo
tanto se agrega a la regin, a la lista de regiones, se establece una nueva
X y Y y se elimina el pixel de vec_list
%('Entre porque el primer vecino pertenece al color')
reg_size=reg_size+1;
list_reg(reg_size,:)=vec_list(1,:);
x = vec_list(1,1); y = vec_list(1,2);
vec_list(1,:)=vec_list(vec_pos,:); %Como eliminare el primer
valor, para que ya no sea evaluado nuevamente, hago que el ltimo valor,
sea el primero
vec_pos=vec_pos-1; %Despus reduzco el ndice para eliminar el
ltimo elemento que ya tom el lugar del primero
bandera=1;
else
for m=2:vec_pos
%('Entre para buscar otro vecino que si pertenezca')
pix=vec_list(m,3:5);
val=evalpixel(pix,tablacolor,ord(n,:));
%pos_enlista=m;
if val==1
%disp('Encontr al vecino')
pos_enlista=m;
%Lo que me dara como resultado el ciclo anterior es el
ndice de
%vec_list en el cual encontro el siguiente pixel que
pertenece, si
%el primero al ser evaluado es rechazado
reg_size=reg_size+1;
list_reg(reg_size,:)=vec_list(pos_enlista,:);
x = vec_list(pos_enlista,1); y = vec_list(pos_enlista,2);
%Para eliminar los pixeles que ya no interesan, porque no
se encontr su valor en la tabla, se realiza lo siguiente
num_eliminados=pos_enlista-1;
vec_list=vec_list(pos_enlista:vec_pos,:); %Elimino todos
aquellos que no se encontraron dentro de mi tabla

186
vec_pos=vec_pos-num_eliminados; %Despus reduzco el ndice
vec_pos, quitando el nmero de eliminados, (los cuales son todos los
anteriores al que encontr)
bandera=1;
break
end
end
end
if val==0 %Ninguno de los vecinos pertenece, por lo tanto se debe
establecer otro x y y
%disp('Entre a buscar otro pixel en la matriz semilla')
[x y nf]=verificarsustitucion(mat_aux, matrizsem,nf);
%pause
%Tambin es necesario reiniciar los valores de los contadores
%auxiliares como
if isempty(x)
bandera=0;
else
end
%Seguir con el siguiente pixel en la matriz matrizsem que no haya
sido ya sustituido en mat_aux. El valor debe ser diferente de 1
%en esa posicin
else
end
else
[x y nf]=verificarsustitucion(mat_aux, matrizsem,nf);
if isempty(x)
bandera=0;
else
end
end
end

%Elimin de la matriz aquellos que sean igual a 0


valdifzero=find(list_reg(:,1)>0);
list_reg=list_reg(valdifzero,:);
%La matriz que utilizar es list_reg la cual tiene todos los valores
%que pertenecen a la regin en 1--> columnas x 2--->renglones y
pixpertenece=zeros(size(list_reg,1),3);
mat_poslist=zeros(size(list_reg,1),2);
for k=1: size(list_reg,1)
x=list_reg(k,1);
y=list_reg(k,2);
R=img(y,x,1);
G=img(y,x,2);
B=img(y,x,3);
pixpertenece(k,:)=[R G B];
mat_poslist(k,:)=[y x];
J(y,x,:)=[R G B];
end
pertenece=[pixpertenece list_reg(:,2) list_reg(:,1)];
if ~isempty(pertenece)
propiedades=regiones(pertenece);
npropiedades=[npropiedades;propiedades];

187
else
end
end

%Para mostrar ambas imgenes en la pantalla


texto=['Comparacin de imges normal vs. resultado de segmentacin'];
figure('Name',texto,'Position',[1 scrsz(4)/2 scrsz(3) (scrsz(4)/2)+20]);
subplot(1,2,1)
imshow(img),title('Imagen seleccionada')
subplot(1,2,2)
image(J),title('Imagen segmentada')
hold on
int=1;
matiniregiones=zeros(150,8);
%Para mostrar los contornos
for r=1:size(npropiedades,1)
Xi=npropiedades(r,2);
Xf=npropiedades(r,4);
Yi=npropiedades(r,3);
Yf=npropiedades(r,5);
ancho=(Xf-Xi)+1;
alto=(Yf-Yi)+1;
matiniregiones(int,:)=[int npropiedades(r,2:6) ancho alto];
rectangle('Position',[Xi,Yi,ancho,alto],'EdgeColor',[1,1,1])
int=int+1;
end
hold off
mataux=matiniregiones(matiniregiones(:,1)>0);
matregiones=matiniregiones(mataux,:);
tf=toc;

188

20. Crecimiento de regiones con matriz semillas para la conversin


RGB a HSI y clasificacin de regiones cbicas.
function [J matregiones
tf]=segsemilla_linscanHSI(archivo,sep,t,caso,patron)
%OBJETIVO:
%Este programa realiza el crecimiento de regiones con la matriz de semillas
extraidas de las lneas de escaneo. Es posible evaluar
%cualquiera de los dos patrones. El crecimiento se realiza evaluando %los
pixeles vecinos con conectividad 4 y utilizando las clases de %color
generadas a partir de las regiones cbicas de HSI con la %conversin del
espacio RGB.
%COMO TRABAJA:
%El programa acepta la imagen a segmentar, las caractersticas del
%clasificador de color y el usuario selecciona la separacin de las %lneas
de escaneo y el patrn de escaneo a probar.
%El proceso del programa es el siguiente:
%1. Convertir la imagen de RGB a HSI
%2. Obtener la matriz de semillas a travs del patrn de escaneo
%seleccionado
%3. Inicializar los valores para el crecimiento:lista de pixeles que %se
irn agregando conforme se realice el crecimiento. Las primeras %semillas
son los valores iniciales de la matriz obtenida.
%4. Entro al ciclo de colores. El crecimiento se har por colores. De %tal
forma que utilizo la matriz de un color y luego otro.
%5. Primero se toman los valores iniciales de la matriz y se realiza %el
crecimiento
%6. El crecimiento se realiza a travs del programa segsemilla.
%Cuando el crecimiento termina sigue con el siguiente valor, pero %compara
que no se encuentre dentro del crecimiento. Este se realizar %evaluando
los valores de los pixeles en la tabla de umbrales HSI. %Programa
evalpixelHSI
%7. El programa termina cuando se han usado todas las semillas o %cuando
encuentra que todas han sido clasificadas en alguna regin
%8. La salida ser la matriz con las propiedades de la regin y la %imagen
segmentada
%
%ENTRADAS:
%imagen: Imagen que se desea segmentar. Formato frame;
%sep=Separacin deseada entre las lneas de escaneo;
%t=Tabla de umbrales para HSI
%caso=tipo de archivo en el que se encuentra la imagen
%1-cuando tiene ext jpg o png y debo usar la funcin imread
%2-cuando se toma con una cmara conectada a MATLAB y se entrega en
%formato frame.
%patron:1-lneas de escaneo tipo 1 ; 2-lneas de escaneo tipo 2
%
%SALIDAS:
%J=matriz de la imagen segmentada
%matregiones:nmero de regiones encontradas en forma de matriz.
%[No.Region, Xi, Yi, Xf, Yf, Area]
%tf=tiempo de procesamiento.
%
%EJEMPLO:
%[J2
matregiones
t1
%]=segsemilla_linscanHSI(muestraazul(1,2),20,tclab2,2,2);

189
%PRIMER PASO: Convertir RGB a HSI
tic
switch lower(caso)
case 1 %Opcin lectura de imagen
img=imread(archivo);
imgHSI=rgb2hsi(img);
case 2 %Opcin lectura directa
img=frame2im(archivo);
imgHSI=rgb2hsi(img);
end
pixel=double(imgHSI(:,:,1:3));
nR=size(pixel,1); %Nmero de renglones en la imagen
nC=size(pixel,2);
%SEGUNDO PASO: Obtencin de semillas a travs de scanlines
%En la imagen se buscar: HSI(pospix(1,1), pospix(1,2),:) [renglon,
%columna, componente)
switch lower(patron)
case 1
pixfound=seg_scanlinesHSI(sep,imgHSI,t); %A partir de esta funcin ya tengo
la tabla de valores semilla
case 2
pixfound=scanlines(sep,imgHSI,t);
end
%Etiquetado de los pixeles en lneas de escaneo con los colores encontrados
%pixfound=foundcolorsHSI(pospix, valpix,t); %Entrega la posicin, el valor
y el color de las lneas de escaneo
%pixfound=scanlines_HSI(sep,imgHSI,t);
if ~isempty(pixfound)
%Para el nmero de colores encontrados:
[colores ncolores]=copiaDiferentes2(pixfound(:,6));
%Crecimiento de semillas para cada valor encontrado
J=zeros(size(imgHSI));
imgrect=J;
for i=1:ncolores
color=find(t(:,7)==colores(i));
tc=t(color,:);
indsemilla=find(pixfound(:,6)==colores(i));
matrizsem=[pixfound(indsemilla,1) pixfound(indsemilla,2)] ;
matpos_color=segsemillaHSI(imgHSI,tc,matrizsem);%Entrega la tabla de
los colores segmentados
[propiedades]=regioneshsi(matpos_color,color,nR,nC);
[H{i} S{i} I{i}]=colorsecHSI(imgHSI, matpos_color);
for k=1: size(matpos_color,1)
rg=matpos_color(k,1);
cl=matpos_color(k,2);
J(rg,cl,:)=[H{i} S{i} I{i}];
end
pixcolor{i}=matpos_color;
regiones{i}=propiedades;
end
figure
imshow(J)

190
%Para dibujar los rectngulos encontrados
figure
imshow(imgrect)
int=1;
matiniregiones=zeros(150,9);
for i=1:ncolores
nRreg=size(regiones{i},1); %Renglones
hold on
for j=1:nRreg
Xi=regiones{i}(j,2);
Xf=regiones{i}(j,4);
Yi=regiones{i}(j,3);
Yf=regiones{i}(j,5);
ancho=(Xf-Xi)+1;
alto=(Yf-Yi)+1;
matiniregiones(int,:)=[int regiones{i}(j,7) regiones{i}(j,2:6)
ancho alto];
rectangle('Position',[Xi,Yi,ancho,alto],'EdgeColor',[H{i} S{i}
I{i}])
int=int+1;
end
end
hold off
%Para eliminar los renglones con zero
%Estas regiones me permitirn identificar objetos
aux=find(matiniregiones(:,1)>0);
matregiones=matiniregiones(aux,:);
else
J=zeros(size(imgHSI));
matregiones=[0 0 0 0 0 0 0];
end

tf=toc;

191

21.Programa auxiliar para el crecimiento de regiones en HSI


function [mat_poslist]=segsemillaHSI(imagen,tc,matrizsem)
%OBJETIVO:
%Este programa entrega una matriz de las posiciones del crecimiento de
%regiones para la clasificacin de color en HSI.
%
%COMO TRABAJA:
%El programa aceptara una imagen, la tabla de color HSI y la matriz de
%semillas generadas por el patrn de escaneo. Se iniciar el %crecimiento
considerando a pixeles vecinos con conectividad 4 cuyos %valores se
evaluarn en matriz de rangos HSI (tcolor) para decidir si %pertenece o no
a alguna clase de color.
%El crecimiento seguir hasta que ya no se encuentren ms pixeles.
%El resultado del crecimiento es una matriz que contiene los valores y %las
posiciones de los pixeles clasificados.
%
%ENTRADAS:
%imagen: Imagen que se desea segmentar. Formato frame;
%tc=Tabla de umbrales para HSI
%matrizsem=matriz de semillas generadas por el patrn de escaneo.
%
%SALIDAS:
%matposlist=matriz de posiciones de los pixeles que pertenecen a las
%regiones.
%
%EJEMPLO:
%matpos_color=segsemillaHSI(imgHSI,tc,matrizsem);

%LECTURA DE LA IMAGEN
img=imagen; %imagen HSI
img2=hsi2rgb(imagen);
scrsz = get(0,'ScreenSize');
%figure('Name','Imagen para crecimiento','Position',[1 scrsz(4)/2
scrsz(3)/2 scrsz(4)/2]);
%imshow(img),title('Selecciona la semilla con botn derecho del mouse')
%Como semillas utilizo los primeros de la matriz
%x = columnas %y=renglones
tic
x=matrizsem(1,2);
y=matrizsem(1,1);
%Obtengo los datos necesarios de la imagen
pixel=double(img(:,:,1:3));
nR=size(pixel,1); %Nmero de renglones en la imagen
nC=size(pixel,2); %Nmero de columnas
nComp=size(pixel,3);
%Inicializo variables que necesitar
J=uint8(zeros(size(img))); %En esta matriz sustituire los pixeles que
encuentre al final del programa;
%Es importante recordar que en la sustitucin de la matriz,
%y=renglones y va primero y despus x= columnas, e ira despus
mat_aux=zeros(nR, nC); %En esta matriz verificar que las posiciones de los
pixeles encontrados se sustituyan
mat_aux(y,x)=1;

192
reg_size=1; %El tamao de la regin hasta el momento
free_mem=10000;
vec_list=zeros(free_mem,5); %Guardar la informacin de posicin y valor
del pixel encontrado para despus ser evaluado
list_reg=zeros(free_mem,5);
list_reg(1,:)=[x y pixel(y,x,1) pixel(y,x,2) pixel(y,x,3)];
%list_reg(1,:)
%pause
vec_pos=0; %Contador inicial de la posicin
bandera=1; %Condicin que me permitir continuar con while, la bandera 1,
significa que al menos se encontro 1 vecino con ese pixel
nf=2;
vec=[-1 0; 1 0; 0 -1; 0 1]; %Posiciones de los vecinos

while bandera==1
%Esta condicin significa que se han encontrado
vecinos para el pixel, pues se encuentran dentro de la tabla de evaluacin
for i=1:4
xn = x +vec(i,1); %Columnas
yn = y +vec(i,2); %Renglones
%Para revisar si el vecino est dentro de la regin
ins=(xn>=1)&&(yn>=1)&&(xn<=nC)&&(yn<=nR);
%Aadir el pixel si no es parte de la region aun y si est dentro
%de los lmites
if(ins&&(mat_aux(yn,xn)==0))
vec_pos =vec_pos+1;
%prueba=[xn yn pixel(yn,xn,1) pixel(yn,xn,2)
pixel(yn,xn,3)]
vec_list(vec_pos,:) = [xn yn pixel(yn,xn,1) pixel(yn,xn,2)
pixel(yn,xn,3)]; %Guardar los valores de los pixeles vecinos, sin importar
si son del mismo color
%vec_list(1:vec_pos,:);
%pause
mat_aux(yn,xn)=1;
end
end
%Anadir un nuevo bloque de memoria, en caso de ser necesario
if(vec_pos+10>free_mem), free_mem=free_mem+10000;
vec_list((vec_pos+1):free_mem,:)=0; end
%Criterios de evaluacin y cmo obtener el nuevo x y y;
if vec_pos>0
pix=vec_list(1,3:5);
%Evalo el pixel en la funcin evalpixel
[val]=evalpixelHSI(pix,tc);

193
if val==1 %significa que si encontr al pixel en la lista, por lo
tanto se agrega a la regin, a la lista de regiones, se establece una nueva
X y Y y se elimina el pixel de vec_list
%('Entre porque el primer vecino pertenece al color')
reg_size=reg_size+1;
list_reg(reg_size,:)=vec_list(1,:);
x = vec_list(1,1); y = vec_list(1,2);
vec_list(1,:)=vec_list(vec_pos,:); %Como eliminare el primer
valor, para que ya no sea evaluado nuevamente, hago que el ltimo valor,
sea el primero
vec_pos=vec_pos-1; %Despus reduzco el ndice para eliminar el
ltimo elemento que ya tom el lugar del primero
bandera=1;
else
for m=2:vec_pos
%('Entre para buscar otro vecino que si pertenezca')
pix=vec_list(m,3:5);
val=evalpixelHSI(pix,tc);
%pos_enlista=m;
if val==1
%disp('Encontr al vecino')
pos_enlista=m;
%Lo que me dara como resultado el ciclo anterior es el
ndice de vec_list en el cual encontro el siguiente pixel que pertenece, si
el primero al ser evaluado es rechazado
reg_size=reg_size+1;
list_reg(reg_size,:)=vec_list(pos_enlista,:);
x = vec_list(pos_enlista,1); y = vec_list(pos_enlista,2);
%Para eliminar los pixeles que ya no interesan, porque no
se encontr su valor en la tabla, se realiza lo siguiente

vec_list=vec_list(pos_enlista:vec_pos,:); %Elimino todos


aquellos que no se encontraron dentro de mi tabla
vec_pos=size(vec_list,1);
vec_list(1,:)=vec_list(vec_pos,:); %Como eliminare el
primer valor, para que ya no sea evaluado nuevamente, hago que el ltimo
valor, sea el primero
vec_pos=vec_pos-1; %Despus reduzco el ndice vec_pos,
quitando el nmero de eliminados, (los cuales son todos los anteriores al
que encontr)
bandera=1;
break
end
end
end
if val==0 %Ninguno de los vecinos pertenece, por lo tanto se debe
establecer otro x y y
[x y nf]=verificarsustitucionHSI(mat_aux, matrizsem,nf);
%Tambin es necesario reiniciar los valores de los contadores
%auxiliares como
if isempty(x)
%disp('Entre')
bandera=0;
else
end
%Seguir con el siguiente pixel en la matriz matrizsem que no haya
sido ya sustituido en mat_aux. El valor debe ser diferente de 1
%en esa posicin

194

else
end
else
[x y nf]=verificarsustitucionHSI(mat_aux, matrizsem,nf);
if isempty(x)
bandera=0;
else
end
end
end
%Elimin de la matriz aquellos que sean igual a 0
valdifzero=find(list_reg(:,1)>0);
list_reg=list_reg(valdifzero,:);
%La matriz que utilizar es list_reg la cual tiene todos los valores
que pertenecen a la regin en 1--> columnas x 2--->renglones y
mat_poslist=zeros(size(list_reg,1),2);
for k=1: size(list_reg,1)
x=list_reg(k,1);
y=list_reg(k,2);
mat_poslist(k,:)=[y x];

%J(y,x,:)=[R G B]; %Se elimin porque aparecer en el otro


%programa
end
t1=toc;

195

22.Algoritmo para identificacin de portera azul


function reg=porteria_azul2v(nvaregs)
%OBJETIVO:
%Este programa entrega las coordenas iniciales y finales x, y de la %regin
identificada como portera azul y asigna la etiqueta 3 a este %objeto.
%COMO TRABAJA:
%El programa acepta una matriz de regiones y ejecutar los siguientes
%pasos:
%1. Buscar cajas de color azul
%2. Definir rea de las cajas y encontrar la de mayor tamao
%3. Comprobar que no hay regiones amarillas
%4. Evaluar la caja de mayor tamao con respecto a un umbral. El cual %se
ha definido en 10000 pixeles.
%5. SI no se encuentran regiones amarillas entonces es portera azul y
%entrega una matriz de la siguiente forma: reg= [Xi, Yi, Xf, Yf 2]
%6. SI se encuentran regiones amarillas no es portera azul y genera %como
resultado una matriz de 0s. reg=[0 0 0 0 0]
%ENTRADAS:
%nvaregs: Matriz de regiones que contiene la siguiente informacin:
%[No. regin etiqueta de color Xi Yi Xf Yf alto ancho].
%Esta matriz es la salida del algortimo opti_reshape
%SALIDAS:
%reg=Matriz de la regin identificada como portera azul en la cual se
%indica coordenadas iniciales y finales en x y y, as como una %etiqueta
del objeto. Pelota-1, POrtera amarilla-2, Portera azul-3, %beacon1-4,
beacon2-5
%EJEMPLO:
%reg=portera_azul2v(matregiones);
reng=find(nvaregs(:,2)==4); %Determinar si tengo objetos azules
if ~isempty(reng) %Si reng no est vaco significa que encontr regiones
azules y obtengo el de mayor rea
regazul=nvaregs(reng,:);
[val indazul]=max(regazul(:,7));%Obtengo la mayor regin azul
% compruebo que no haya elementos amarillos
amarillo=find(nvaregs(:,2)==3, 1);
if isempty(amarillo) %Si no hay elementos amarillos compruebo
que los pixeles contenidos sean mayores que cierto valor
if val>10000 %Valor establecido con las muestras adquiridas
reg=[regazul(indazul,3:6) 3];
else % Si no es mayor que cierto valor y no tengo regiones
amarillas es ruido y por lo tanto no encontr la regin.
reg=[0 0 0 0 0];
end
else
reg=[0 0 0 0 0];
end
else
reg=[0 0 0 0 0]; %Si encuentro no encuentro regiones amarillas, entrgo
matriz con ceros
end

196

23. Algortimo para identificar portera amarilla


function reg=porteria_amarilla2v(nvaregs)
%OBJETIVO:
%Este programa entrega las coordenas iniciales y finales x, y de la %regin
identificada como portera amarilla y asigna la etiqueta 2 a %este objeto.
%COMO TRABAJA:
%El programa acepta una matriz de regiones y ejecutar los siguientes
%pasos:
%1. Buscar cajas de color amarillo
%2. Definir rea de las cajas y encontrar la de mayor tamao
%3. Comprobar que no hay regiones azules
%4. Evaluar la caja de mayor tamao con respecto a un umbral. El cual se ha
definido en 10000 pixeles.
%5. SI no se encuentran regiones azules entonces es portera amarilla %y
entrega una matriz de la siguiente forma: reg= [Xi, Yi, Xf, Yf 2]
%6. SI se encuentran regiones azules no es portera amarilla y genera %como
resultado una matriz de 0s. reg=[0 0 0 0 0];
%ENTRADAS:
%nvaregs: Matriz de regiones que contiene la siguiente informacin:
%[No. regin etiqueta de color Xi Yi Xf Yf alto ancho].
%Esta matriz es la salida del algortimo opti_reshape
%SALIDAS:
%reg=Matriz de la regin identificada como portera azul en la cual se
%indica coordenadas iniciales y finales en x y y, as como una %etiqueta
del objeto. Pelota-1, POrtera amarilla-2, Portera azul-3, %beacon14,beacon2-5
%EJEMPLO:
%reg=portera_amarilla2v(matregiones);
reng=find(nvaregs(:,2)==3);
if ~isempty(reng) %Si reng no est vaco significa que encontr regiones
amarillas y lo comparo contra un umbral
regamar=nvaregs(reng,:);
[val indamar]=max(regamar(:,7));%Obtengo la mayor regin amarilla
% compruebo que no haya elementos azules
azul=find(nvaregs(:,2)==4, 1);
if isempty(azul) %Si no hay elementos azules compruebo que haya
regiones verdes
if val>10000
reg=[regamar(indamar,3:6) 2];
else% Si no es mayor que cierto valor y no tengo regiones
amarillas es ruido y por lo tanto no encontr la regin.
reg=[0 0 0 0 0];
end
else
reg=[0 0 0 0 0];
end
else
reg=[0 0 0 0 0]; %Si encuentro no encuentro regiones amarillas, entrgo
matriz con ceros
end

197

24.Algoritmo para identificar Beacon 1


function reg=beacon12v(nvaregs,tol)
%OBJETIVO:
%Este programa entrega las coordenas iniciales y finales x, y de la %regin
identificada como beacon1 y asigna la etiqueta 4 a este objeto.
%
%COMO TRABAJA:
%El programa acepta una matriz de regiones y un valor de tolerancia entre
las reas que conforman al beacon. Se ejecutarn los siguientes
%pasos:
%1. Buscar regiones amarillas y azules.
%2. Evaluar que existan ms regiones de un color que otro.
%3. Ordenar las regiones encontradas por la coordenada inicial en y (Yi).
%4. Comprobar que la superposicin de las tres cajas sea en el orden
%correcto al evaluar las coordenadas iniciales de cada regin a travs
%de la funcin: Y_i amar1<Y_i azul<Y_i amar2
%5. Obtener las alturas de cada regin mediante:A=Yf-Yi
%6. Evaluar que las alturas obtenidas cumplan con alguna de las siguientes
caractersticas: A1=A2=A3 |A1-A2|?tol y|A1-A3|?tol
%
%%ENTRADAS:
%nvaregs: Matriz de regiones que contiene la siguiente informacin:
%[No. regin etiqueta de color Xi Yi Xf Yf alto ancho].
%Esta matriz es la salida del algortimo opti_reshape
%tol=valor de tolerancia entre reas del beacon se recomienda valor %10.
%
%SALIDAS:
%reg=Matriz de la regin identificada como portera azul en la cual se
%indica coordenadas iniciales y finales en x y y, as como una %etiqueta
del objeto. Pelota-1, POrtera amarilla-2, Portera azul-3, %beacon14,beacon2-5
%
%EJEMPLO:
%reg=beacon12v(matregiones,10);

%Beacon 1: amarillo, azul, amarillo


amarillo=find(nvaregs(:,2)==3);
azul=find(nvaregs(:,2)==4);
if ~isempty(amarillo)&& ~isempty(azul) %Si amarillo y azul no estn vacos,
quiere decir que es un posible beacon
%Primer paso evaluar que haya ms de 1 region amarilla
%disp('Entr isempty')
if (size(amarillo,1)>1 && size(azul,1)>1) ||(size(amarillo,1)>1 &&
size(azul,1)==1)%Si hay ms de una regin, ordeno las regiones con Yi de
menor a mayor
%disp('Entr')
regsamarillo=nvaregs(amarillo,:);
matamarilla=ordena(regsamarillo,4); %Se ordena por Yi
mayoramar=size(matamarilla,1);
regsazul=nvaregs(azul,:);
matazul=ordena(regsazul,4); %Se ordena por Yi
mayorazul=size(matazul,1);
bandera=0;
for i=1:mayorazul

198
for j=1:mayoramar
for f=j+1:mayoramar
if (matamarilla(j,4)<=matazul(i,4)) &&
(matazul(i,4)<=matamarilla(f,4))
%Si el azul se encuentra entre Yi de reg1 amarilla y Yi
de reg2 amarilla
%Obtengo la diferencia de todas las regiones
A1=matamarilla(j,6)-matamarilla(j,4);
A2=matazul(i,6)-matazul(i,4);
A3=matamarilla(f,6)-matamarilla(f,4);
if A1==A2==A3 || ((abs(A1-A2)<=tol)&& (abs(A1A3)<=tol))
%disp('entre')
reg=[matamarilla(j,3) matamarilla(j,4) matamarilla(j,5)
matamarilla(f,6) 4];
bandera=1;
break
end
else
reg=[0 0 0 0 0]; %Tengo las regiones, pero no estn
en el orden deseado
end
end
if bandera==1
break
end
end
if bandera==1
break
end
end
else
reg=[0 0 0 0 0];
end
else
reg=[0 0 0 0 0];
end

199

25.Algoritmo para identificar beacon 2


function reg=beacon22v(nvaregs,tol)
%OBJETIVO:
%Este programa entrega las coordenas iniciales y finales x, y de la %regin
identificada como beacon2 y asigna la etiqueta 5 a este %objeto.
%
%COMO TRABAJA:
%El programa acepta una matriz de regiones y un valor de tolerancia %entre
las reas que conforman al beacon. Se ejecutarn los siguientes
%pasos:
%1. Buscar regiones amarillas y azules.
%2. Evaluar que existan ms regiones de un color que otro.
%3. Ordenar las regiones encontradas por la coordenada inicial en y % %
(Yi).
%4. Comprobar que la superposicin de las tres cajas sea en el orden
%correcto al evaluar las coordenadas iniciales de cada regin a travs
%de la funcin: Yiazul1<Yiamar <Yiazul2
%5. Obtener las alturas de cada regin mediante:A=Yf-Yi
%6. Evaluar que las alturas obtenidas cumplan con alguna de las %siguientes
caractersticas: A1=A2=A3 |A1-A2|?tol y|A1-A3|?tol
%
%%ENTRADAS:
%nvaregs: Matriz de regiones que contiene la siguiente informacin:
%[No. regin etiqueta de color Xi Yi Xf Yf alto ancho].
%Esta matriz es la salida del algortimo opti_reshape
%tol=valor de tolerancia entre reas del beacon se recomienda valor %10.
%
%SALIDAS:
%reg=Matriz de la regin identificada como portera azul en la cual se
%indica coordenadas iniciales y finales en x y y, as como una %etiqueta
del objeto. Pelota-1, POrtera amarilla-2, Portera azul-3, %beacon1-4,
beacon2-5
%
%EJEMPLO:
%reg=beacon22v(matregiones,10);
amarillo=find(nvaregs(:,2)==3);
azul=find(nvaregs(:,2)==4);
%reg=[0 0 0 0];
if ~isempty(amarillo)&& ~isempty(azul) %Si amarillo y azul no estn vacos,
quiere decir que es un posible beacon
%Primer paso evaluar que haya ms de 1 region azul
if (size(amarillo,1)>1 && size(azul,1)>1) ||(size(amarillo,1)==1 &&
size(azul,1)>1) %Si hay ms de una regin, ordeno las regiones con Yi de
menor a mayor
%disp ('Entr')
regsamarillo=nvaregs(amarillo,:);
matamarilla=ordena(regsamarillo,4); %Se ordena por Yi
mayoramar=size(matamarilla,1);
regsazul=nvaregs(azul,:);
matazul=ordena(regsazul,4); %Se ordena por Yi
mayorazul=size(matazul,1);
bandera=0;
for i=1:mayoramar
for j=1:mayorazul
for f=j+1:mayorazul
if (matazul(j,4)<=matamarilla(i,4)) &&
(matamarilla(i,4)<=matazul(f,4))
%Si el amarillo se encuentra entre Yi de reg1 azul y Yi

200
%de reg2 azul
%Obtengo la diferencia de todas las regiones
%disp('Entr')
A1=matazul(j,6)-matazul(j,4);
A2=matamarilla(i,6)-matamarilla(i,4);
A3=matazul(f,6)-matazul(f,4);
if A1==A2==A3 || ((abs(A1-A2)<=tol)&& (abs(A1A3)<=tol))
%disp('Entr')
%pause
reg=[matazul(j,3) matazul(j,4) matazul(j,5)
matazul(f,6) 5];
bandera=1;
break
else
reg=[0 0 0 0 0];
end
else
reg=[0 0 0 0 0]; %Tengo las regiones, pero no estn
en el orden deseado
end
end
if bandera==1
break
end
end
if bandera==1
break
end
end
else
reg=[0 0 0 0 0];
end
else
reg=[0 0 0 0 0];
end

201

26.Algoritmo para identificar pelota


function reg=pelota2v(nvaregs)
%OBJETIVO:
%Este programa entrega las coordenas iniciales y finales x, y de la %regin
identificada como pelota y asigna la etiqueta 1 a este objeto.
%
%COMO TRABAJA:
%El programa acepta una matriz de regiones y ejecutar los siguientes
%pasos:
%1. Buscar regiones naranjas
%2. Obtener la regin naranja de mayor tamao
%3. Evaluar la regin respecto a un umbral A>400
%
%%ENTRADAS:
%nvaregs: Matriz de regiones que contiene la siguiente informacin:
%[No. regin etiqueta de color Xi Yi Xf Yf alto ancho].
%Esta matriz es la salida del algortimo opti_reshape
%
%SALIDAS:
%reg=Matriz de la regin identificada como portera azul en la cual se
%indica coordenadas iniciales y finales en x y y, as como una %etiqueta
del objeto. Pelota-1, POrtera amarilla-2, Portera azul-3, %beacon14,beacon2-5
%
%EJEMPLO:
%reg=pelota2v(matregiones);

reng=find(nvaregs(:,2)==1);%Busco el color naranja en las regiones


entregadas por la foto
if ~isempty(reng) %Si encontr regiones naranjas busco aquellas mayores al
umbral
regnaranja=nvaregs(reng,:); %Tengo una nueva matriz con regiones
naranjas nicamente
[val indnar]=max(regnaranja(:,7)); %Obtengo la mayor region naranja
if

val>400 %Condicion para identificar pelota


reg=[regnaranja(indnar,3:6) 1];

else
reg=[0 0 0 0 0]; %Si no cumple las condiciones, no es pelota
end
else
reg=[0 0 0 0 0]; %SI no cumple las condiciones no es pelota
end

202

27.Algoritmo para identificar objetos y estimar parmetros


function [reginteres Objetos cad
dobj]=objetos2v(regiones,umbralregs,tol,Rdist)
%OBJETIVO:
%Identificar los objetos y calcular la distancia a la cual se %encuentran a
travs de los programas de identificacin generados para %cada objeto y el
programa de clculo de distancias
%COMO TRABAJA:
%El programa acepta 4 parmetros de entrada y sigue la secuencia %descrita
a continuacin:
%1. Eliminar las regiones menores al umbral definido.
%2. Revisar a qu objeto pertenecen las regiones mandando llamar a los
%programas: pelota2v, porteria_amarilla2v, porteria_azul2v, beacon12v,
%beacon22v. La salida de estos programas ser la regin identificada %del
objeto en la matriz [Xi, Yi, Xf, Yf, objeto]. Cada objeto cuenta %con las
siguientes etiquetas: Pelota-1, Portera amarilla-2, %Portera azul-3,
Beacon1-4, Beacon2-5.
%3. Se eliminan aquellas regiones iguales a cero y se calcula la %distancia
para los objetos encontrados con los parmetros a y b %correspondientes a
atravs del programa calculadist, el cual acepta %la matriz Rdist y las
regiones que ocupa cada objeto.
%%ENTRADAS:
%regiones=regiones identificadas en la imagen segmentada.
%umbralregs=el umbral que tendrn las regiones en cuanto al rea para
%eliminar aquellas menores al valor especificado, se recomienda 400 %para
respetar el valor del umbral establecido para la pelota
%tol=tolerancia de separacin entre beacons. Valores entre 10 y 15
%Rdist=matriz constantes a y b para cada objeto:
%Pelota: [4831.10355300000,-1347.90691100000;]
%Porteria amarilla:[74592.6693969289,153.782455337918;]
%Portera azul:[71272.9155102125,1606.91313438828;]
%Beacon1:[1390.76205605064,27990.8781828997;]
%Beacon2:[1060.22466325938,29450.6484432254;]
%SALIDAS:
%reginteres=[xi yi xf yf];
%cad=strings para identificar las regiones
%dobj=matriz de distancias encontradas
%Objetos=objeto/objetos encontrados
%EJEMPLO:
%[reginteres Objetos cad dobj]=objetos2v(matregiones,400,10,Rdist);
if sum(regiones,2)~=0
reduce=find(regiones(:,7)>umbralregs);
nvaregs=regiones(reduce,:);
regobj=zeros(5,5);
regobj(1,:)=pelota2v(nvaregs);
regobj(2,:)=porteria_amarilla2v(nvaregs);
regobj(3,:)=porteria_azul2v(nvaregs);
regobj(4,:)=beacon12v(nvaregs,tol);
regobj(5,:)=beacon22v(nvaregs,tol);%azul amarillo azul
str1=''; %String pelota
str2=''; %String portera amarilla
str3=''; %STring portera azul
str4=''; %String beacon 1
str5=''; %String beacon 2
aux=find(regobj(:,1)>0 & regobj(:,2)>0);
dobj=zeros(1,5); %matriz [0 0 0 0 0]
if isempty(aux)
reginteres=[0 0 0 0];
cad='No encontr objetos';

203
else
regobj=regobj(aux,:);
reginteres=encuentramax_min(regobj);
%Creo una matriz de distancia para objetos
Objetos=[];
for i=1:size(regobj,1)
obj=regobj(i,5);
Objetos=[Objetos;obj];
switch lower(obj)
case 1
%str{1}={' Encontr pelota en'};
dobj(1)=calculadist(regobj(i,:),Rdist(1,:));
str1=['Encontr pelota en xi= ' num2str(regobj(i,1)) ' xf='
num2str(regobj(i,3)) ' yi=' num2str(regobj(i,2)) ' yf='
num2str(regobj(i,4)) ' Dist=' num2str(dobj(1)) ];
case 2
%str(2)={' Encontr portera amarilla en'};
dobj(2)=calculadist(regobj(i,:),Rdist(2,:));
str2=['Encontr portera amarilla en xi= ' num2str(regobj(i,1)) ' xf='
num2str(regobj(i,3)) ' yi=' num2str(regobj(i,2)) ' yf='
num2str(regobj(i,4)) ' Dist=' num2str(dobj(2)) ];
case 3
%str(3)={' Encontr portera azul en'};
dobj(3)=calculadist(regobj(i,:),Rdist(3,:));
str3=['Encontr portera azul en xi= ' num2str(regobj(i,1)) ' xf='
num2str(regobj(i,3)) ' yi=' num2str(regobj(i,2)) ' yf='
num2str(regobj(i,4)) ' Dist=' num2str(dobj(3)) ];
case 4
%str(4)={' Encontr Beacon 1 en'};
dobj(4)=calculadist(regobj(i,:),Rdist(4,:));
str4=['Encontr beacon 1 en xi= ' num2str(regobj(i,1)) ' xf='
num2str(regobj(i,3)) ' yi=' num2str(regobj(i,2)) ' yf='
num2str(regobj(i,4)) ' Dist=' num2str(dobj(4)) ];
case 5
%str(5)={' Encontr Beacon 2 en'};
dobj(5)=calculadist(regobj(i,:),Rdist(5,:));
str5=['Encontr beacon2 en xi= ' num2str(regobj(i,1)) ' xf='
num2str(regobj(i,3)) ' yi=' num2str(regobj(i,2)) ' yf='
num2str(regobj(i,4)) ' Dist=' num2str(dobj(5)) ];
end
end
cad=strvcat(str1,str2,str3,str4,str5);
end
else
reginteres=[0 0 0 0];
cad={'No encontr objetos'};
end

204

28.Algoritmo para calcular la distancia a la cual se encuentra el objeto


function dobj=calculadist(reg,Robj)
%OBJETIVO:
%Calcular la distancia a la cual se encuentra el objeto utilizando la
%regin que abarca en la imagen y la matriz de parmetros a y b obtenidos y
contenidos en la matriz Rdist.
%COMO TRABAJA:
%La informacin contenida en la matriz de regiones es la siguiente:
%[Xi Yi Xf Yf]
%1. Calcular dx=Xf-Xi y dy=Yf-Yi;
%2. Sustituir los valores en la ecuacin d=a(1/dx)+ b(1/dy);
%%ENTRADAS:
%regiones=regiones generadas por los programas de identificacin de la
%forma [Xi Yi Xf Yf etiqueta objeto]
%Rdist=matriz constantes a y b para cada objeto:
%Pelota: [4831.10355300000,-1347.90691100000;]
%Porteria amarilla:[74592.6693969289,153.782455337918;]
%Portera azul:[71272.9155102125,1606.91313438828;]
%Beacon1:[1390.76205605064,27990.8781828997;]
%Beacon2:[1060.22466325938,29450.6484432254;]
%
%SALIDAS:
%dobj= distancia calculada
%
%EJEMPLO:
%dobj=calculadist(regobj,Rdist);
dx=reg(1,3)-reg(1,1);
dy=reg(1,4)-reg(1,2);
dobj=distobj(Robj,dx,dy);

205

29.Algoritmo para la localizacin del objeto R a travs de triangulacin


function estR=triangulacionnvo(objetos,d1,d2)
% OBJETIVO:
% Calcular la posicin x,y del robot con la distancia de dos objetos %fijos
en el campo y sus posiciones reales
%CMO TRABAJA:
% 1. Definir las coordenadas de los objetos en el campo
% 2. Obtener la distancia entre los objetos identificados.
%Las posiciones de esos objetos se conocern por la etiqueta que
%cada objeto tiene a travs de una funcin switch.
%3. Calcular los ngulos gamma y theta.
%4. Estimar la posicin del robot (xd, yd) con las ecuaciones de
%triangulacin
% ENTRADAS:
% Objetos: Objetos que ve de izquierda a derecha, la entrada es un %nmero
%d1 = distancia al primer objeto
%d2=distancia al segundo objeto.
% Definicin de coordenadas de todos los objetos en la cancha.
poste4=[-30;300]; %Beacon 1
poste2=[200;600]; %Portera amarilla
poste5=[430;300]; %Beacon 2
poste3=[200;0]; %Portera azul
%Referencias para dibujar la cancha
poste0=[0;600];
poste6=[400;600];
poste7=[400;0];
poste8=[0;0];
% Dibujo de la cancha y los objetos en ella.
plot(poste8(1),poste8(2),'k*',poste0(1),poste0(2),'k*',...
poste2(1),
poste2(2),'k*',poste3(1),poste3(2),'k*',...
poste4(1),poste4(2),'k*',poste5(1),poste5(2),'k*',...
poste6(1),poste6(2),'k*',poste7(1),poste7(2),'k*');
hold on; axis([-100,500,-100, 700]);
plot([poste0(1),poste6(1),poste7(1),poste8(1),poste0(1)],...
[poste0(2),poste6(2),poste7(2),poste8(2),poste0(2)],'k-');
text(poste4(1)-50,poste4(2),'B1');
text(poste2(1)-20,poste2(2)+20,'P.Amarilla');
text(poste5(1)+20,poste5(2),'B2');
text(poste3(1)-20,poste3(2)-30,'P.Azul');
%Para identificar los postes que est viendo el robot y obtener los
%parmetros descritos en la primera seccin
switch(objetos(1))
case 0,P1=poste0;
case 1,P1=poste1;
case 2,P1=poste2;
case 3,P1=poste3;
case 4,P1=poste4;
case 5,P1=poste5;
case 6,P1=poste6;
case 7,P1=poste7;
end;
switch(objetos(2))
case 0,P2=poste0;
case 1,P2=poste1;
case 2,P2=poste2;
case 3,P2=poste3;
case 4,P2=poste4;

206
case 5,P2=poste5;
case 6,P2=poste6;
case 7,P2=poste7;
end;
plot(P1(1),P1(2),'r*',P2(1),P2(2),'r*');
plot([P1(1),P2(1)],[P1(2),P2(2)],'r-');

% Frmulas para calcular la posicin


%Distancia entre los objetos
d12=norm(P1-P2);
%Calculo de ngulos beta y gama
teta=acos((d1^2+d12^2-d2^2)/(2*d1*d12));
gama=atan2(P2(2)-P1(2),P2(1)-P1(1));
%Estimacin de la posicin del robot
estR=[P1(1)+d1*cos(gama-teta);P1(2)+d1*sin(gama-teta)];
plot(estR(1),estR(2),'ko');

207

30.Algoritmo para describir la trayectoria


function trayectoria(puntosd, puntosr)
% OBJETIVO:
% Mostrar la trayectoria descrita por la matriz de puntos de entrada
%ENTRADAS:
% puntosd=lista de puntos deseados
%puntosr=lista de puntos reales
npuntos=size(puntosd,1);
poste4=[-30;300]; %Beacon 1
poste2=[200;600]; %Portera amarilla
poste5=[430;300]; %Beacon 2
poste3=[200;0]; %Portera azul
%Referencias para dibujar la cancha
poste0=[0;600];
poste6=[400;600];
poste7=[400;0];
poste8=[0;0];
% Dibujo de la cancha y los objetos en ella.
plot(poste8(1),poste8(2),'k*',poste0(1),poste0(2),'k*',...
poste2(1),
poste2(2),'k*',poste3(1),poste3(2),'k*',...
poste4(1),poste4(2),'k*',poste5(1),poste5(2),'k*',...
poste6(1),poste6(2),'k*',poste7(1),poste7(2),'k*');
hold on; axis([-100,500,-100, 700]);
plot([poste0(1),poste6(1),poste7(1),poste8(1),poste0(1)],...
[poste0(2),poste6(2),poste7(2),poste8(2),poste0(2)],'k-');
text(poste4(1)-50,poste4(2),'B1');
text(poste2(1)-20,poste2(2)+20,'P.Amarilla');
text(poste5(1)+20,poste5(2),'B2');
text(poste3(1)-20,poste3(2)-30,'P.Azul');
for i=1:npuntos
plot(puntosd(i,1),puntosd(i, 2),'b*');
if i>1
plot([puntosd(i-1,1),puntosd(i,1)],[puntosd(i-1,2),puntosd(i, 2)],'k');
else
end
end
for i=1:npuntos
plot(puntosr(i,1),puntosr(i, 2),'ko');
if i>1
plot([puntosr(i-1,1),puntosr(i,1)],[puntosr(i-1,2),puntosr(i, 2)],'r');
else
end
end

208

31. ALgoritmo final que integra todas las etapas de percepcin y


localizacin
function [t ps]=completofotos(img,tc,umbralregs,tol,Rdist)
% OBJETIVO:
%Obtener la posicin del robot en el campo al integrar los programas
%opti_reshape: clasificador de color y segmentacin en HSI;
%objetos2v:Identificacin de objetos y estimacin de parmetros
%triangulacionnvo=Localizacin
%CMO TRABAJA:
%Con el propsito de obtener la posicin, se alimentan slo dos
%fotografas de los objetos estticos. La interfaz grfica se divide %en
seis secciones.
%Las primeras cuatro muestran las imgenes adquiridas, el resultado de %la
segmentacin y la leyenda sobre los objetos identificados junto %con sus
caractersticas. stas sern la dimensin en la imagen y la %distancia real
a la cual se ubican. Las ltimas dos secciones %presentan el resultado del
sistema de localizacin
%ENTRADAS
%img:
Imgenes
tomadas
previamente
a
travs
de
la
funcin
%tomafotos_hsi,referentes a los 2 objetos con los cuales se realizar %la
triangulacin.
%tc: Matriz de umbrales para los colores que se desea segmentar. %Amarillo,
naranja y azul.
%umbralregs=el umbral que tendrn las regiones en cuanto al rea para
%eliminar aquellas que sean ruido
%tol=tolerancia de separacin entre beacons
%Rdist: Constantes obtenidas para cada objeto. Pelota, portera %amarilla
%POrtera azul, beacon1, beacon2
%SALIDAS:
%t=tiempo de proceso
%ps=puntos encontrados
%EJEMPLO:
%[t ps3]=completofotos(p10,tclab2,400,10,Rdist2,1);
%p10:imagen que contiene dos objetos fijos ledos de izquierda a %derecha
%Tomados desde el mismo ngulo con el programa tomafotos_hsi
%tclab2=matriz de valores obtenidos a travs de HSIroipoly
%400=las regiones menores a ese valor no se toman en cuenta;
%Rdist=matriz de parmetros a y b para el clculo de distancias
%1=forma de dibujar las cajas de limitacin. Caja del color sobre %fondo
negro
%La imagen se subdivide en 6 ventanas
%Ventana 1: Muestra la primera imagen
tic
subplot(2,3,1)
f=frame2im(img(1,1)); imshow(f)
title('Imagen capturada 1')
%Ventana 4: Segmentacin y objeto identificado, mostrando su distancia de
%IMG 1
subplot(2,3,4)
%[matregiones nR]=opticrece(img(1,1), tc,sep); Primer programa usado
[matregiones nR]=opti_reshape(img(1,1), tc); %Segmentacin
title('Imagen segmentada 1')
[reginteres obj1 cad dobj1]=objetos2v(matregiones,umbralregs,nR,tol,Rdist);
text(-120,350,cad,'Color',[0 0 0]);
% Ventana 2: Imagen 2
subplot(2,3,2)

209
f=frame2im(img(1,2)); imshow(f)
title('Imagen capturada 2')
%Ventana 5: Segmentacin y objeto identificado, mostrando su distancia de
%IMG 2
subplot(2,3,5)
%[matregiones nR]=opticrece(img(1,2), tc,sep);
[matregiones nR]=opti_reshape(img(1,2), tc);
title('Imagen segmentada 2')
[reginteres obj2 cad dobj2]=objetos2v(matregiones,umbralregs,nR,tol,Rdist);
text(-20,350,cad,'Color',[0 0 0]);
% Ventana 3 y 6: Localizacin de los puntos y la cmara
subplot(2,3,[3,6])
postes=[obj1,obj2];
d1=dobj1(find(dobj1));
d2=dobj2(find(dobj2));
puntos=triangulacionnvo(postes,d1,d2);
ps=[puntos(1,1) puntos(2,1)];
title('Localizacin del Robot en la cancha')
t=toc;

210

10

[1]

[2]

[3]

[4]

[5]
[6]

[7]
[8]

[9]
[10]

[11]

[12]

REFERENCIAS

ACEVES, A; CRUZ, E; VILLARREAL, G; SUMOHANO, S Bogobots Humanoid


Team Kid Size [Informe]. - China : Team Description Paper submitted for
qualification to RoboCup contest, 2008.
ALVAREZ R. Sistemas de percepcin y localizacin para robots cuadrpedos. Tesis
presentada para recibir el grado de Maestro [Libro]. - Atizapn, Edo Mex. :
Tecnolgico de Monterrey Campus Estado de Mxico, 2003.
ALVAREZ, R.; MILLAN, E.; SWAIN, R.; ACEVES, A.; Color image
classification through fitting of implicit surfaces [Publicacin peridica] // Lecture
Notes in Computer Science. - [s.l.] : Springer-Verlag, 2004. - Vol. 3315. - ISSN:03029743..
ALVAREZ, R; MILLN, E; ACEVES, A; OROPEZA, R Accurate color
classification and segmentation for mobile robots [Seccin del libro] // Mobile
Robots: Perception & Navigation. - Verlag : [s.n.], 2007. - ISBN 3-86611-283-1.
BLOOMENTHAL J Introduction to implicit surfaces [Libro]. - [s.l.] : Morgan
Kaufmann, 1997.
BRUCE J., BALCH T. y VELOSO M. Fast and Inexpensive Color Image
Segmentation for Interactive Robots [Conferencia] // International Conference on
Intelligent Robots ans Systems. - 2000. - Vol. 3.
CASTLEMAN K. Digital image processing [Libro]. - [s.l.] : Prentice Hall, 1996.
FIRKET M. y ZHOU C. Vision Based Motion Planning of Humanoid Robots
[Seccin del libro] // Robotic Welding, Intelligence and Automation / ed. Heidelberg
Springer Berlin /. - Vol. 299/2004. - 0170-8643.
GONZALEZ E. Simulacin de un humanoide: una trayectoria de caminado, Tesis
de Maestra, Tecnolgico de Monterrey Campus Estado de Mxico, Marzo 2007.
GONZALEZ E, ACEVES A y RAMREZ M Anlisis cinemtico de un bpedo con
fases: Pie de soporte-Pie en movimiento [Conferencia] // IEEE 5 Congreso
Internacional en Innovacin y Desarrollo Tecnolgico CIINDET. - Cuernavaca,
Morelos : [s.n.], 2007. - ISBN: 978-968-9152-01-9.
GONZALEZ E, ACEVES A y RAMREZ M Control para el seguimiento de
trayectoria de movimiento de un bpedo con fases: pie de soporte-pie en movimiento
[Conferencia] // Primer Encuentro Insternacional de Investigacin Cientfica
Multidisciplinaria. - Chihuahua : [s.n.], 2007.
GONZALEZ R., WOODS R. y EDDINS S. Digital Image Processing using
MATLAB [Libro]. - [s.l.] : Prentice Hall, 2004.

211
[13]
[14]

[15]

[16]

[17]

[18]

[19]
[20]
[21]

[22]

[23]
[24]

[25]

[26]

[27]
[28]
[29]
[30]

GONZALEZ, R.;WOODS, R.; Digital Image Processing [Libro]. - [s.l.] : Prentice


Hall, 2007.
GUTMANN J. [y otros] An experimental comparison of localization methods
[Conferencia]. - Canada : IEEE/RSJ International Conference on Intelligent Robots
and Systems, 1998.
HALBOT H., JIN J. y LIN Z. Unseeded region growing for 3d image
segmentation // Selected papers from Pan-Sydney Workshop on Visual Information
Processing. - 2001.
HITEC ROBOTICS. ROBONOVA-1 Edutainment Robot. on HSI color space for
biped soccer robot [En lnea] // http://www.robonova.com/manager/product.php/Mayo de 2009.
HONGE R. y ZHONG Q. A new image segmentation method based on HSI color
space for biped soccer robot [Conferencia] // IEEE International Symposium on IT in
Medicine and Education. - Xiamen : [s.n.], 2008.
HUMANOID ROBOCUP LEAGUE RoboCup Humanoid League History [En
lnea]. - 2002. - Marzo de 2008. http://www.tzi.de/humanoid/bin/view/Website/WebHome.
INC MATHWORKS Product Help. - 2008. - Vol. R2008a.
JNGEL M. A vision system for robocup:Diploma Thesis. - 2004.
JNGEL M., HOFFMAN J. y LTZSCH M. A real-time auto-adjusting vision
system for robotic soccer [Conferencia] // International Workshop on Robocup. Pdova, Italia : Lecture Notes on Artificial Intelligence, 2003. - Vol. 7th.
LIU F., LU H. y ZHENG Z. A Modified Color Look-Up Table Segmentation Method
for Robot Soccer [Publicacin peridica]. - Monterrey, Mxico : [s.n.], 2007. - Vol.
4th Latin America Robotic Simposium/IX Congreso Mexicano de Robotica 2007.
LYNXMOTION, INC. [En lnea]. - 2002. Mayo 2009
http://www.lynxmotion.com/Category.aspx?CategoryID=1
LIU F., LU H. y ZHENG Z. A Robust Approach of Field Features Extraction for
Robot Soccer [Publicacin peridica]. - Monterrey, Mxico : 4th Latin America
Robotic Simposium/IX Congreso Mexicano de Robotica 2007, 2007.
MELENDEZ, A.; ACEVES, A. Human Gait Cycle Analysis for the improvement of
Mayra's Biped Foot [Conferencia]. - [s.l.] : 37 Congreso de Investigacin y Desarrollo
del Tecnolgico de Monterrey, 17 al 19 Enero 2007. - pgs. 60-67. - ISBN 968-891111-9.
MELENDEZ A. y CALTENCO H. Prtesis transfemural inteligente
[Conferencia] // XXVIII Congreso Nacional de Ingeniera Biomdica. - Acapulco,
Mxico : [s.n.], 9-11 Noviembre, 2005.
MINAKATA H. A Method of Single Camera Robocup Humanoid Robot Localization
using Cooperation with Walking Control [Publicacin peridica]. - [s.l.] : IEEE, 2008.
POLICARPO A. y WATT F. The computer image [Libro]. - [s.l.] : Addison Wesley,
1998.
PONCE J. y FORSYTH D. Computer Vision: A modern Approach [Libro]. - Upper
Saddle River, NJ : Prentice Hall, 2003.
RICCI A. A constructive geometry for computer graphics // The Computer Journal. 1973.

212
[31]

[32]
[33]

[34]

[35]
[36]
[37]

[38]

[39]

[40]
[41]
[42]
[43]
[44]

ROBOCUP RoboCup Official Site [En lnea] // RoboCup Soccer Humanoid League
Rules and Setup. - Mayo de 2009. http://www.robocup2009.org/files/humanoidleaguerules2009-03-27-final.pdf.
ROBOCUP FEDERATION RoboCup website [En lnea] // Roocup Brief
Introduction. - 8 de Julio de 2002. - Marzo de 2008. - http://www.robocup.org.
ROBOTICS INSTITUTE AT CARNEGIE MELLON UNIVERSITY CMUcam3:
Open Source Programmable Embedded Color Vision Platform [En lnea] //
http://www.cmucam.org/. - Mayo de 2009. - Marzo de 2008.
ROBOTICS INSTITUTE AT CARNEGIE MELLON UNIVERSITY CMUcam2:
Open Source Programmable Embedded Color Vision Platform [En lnea] //
http://www.cs.cmu.edu/~cmucam2/index.html- Mayo de 2009. - Marzo de 2008.
ROTARU C., GRAF T. y JIANWEI Z. Color Image Segmentation in HSI Space for
Automotive applications [Informe]. - Hamburgo : [s.n.], 2007.
RUSS J. The Image Processing Handbook [Libro]. - Boca Raton, FL : CRC Press,
2007.
SERNA R. Discusin y seleccin de los elementos necesarios para la construccin de
un robot bpedo de tipo medio-humanoide llamado MAYRA. - Tecnolgico de
Monterrey Campus Estado de Mxico : Tesis de Maestra, Abril, 2005.
SERNA, R.; ACEVES, A. From mechatronic design to the construction of a
statically stable biped robot [Conferencia] // 2do IEEE Latin American Robotic
Symposium and VII Simposio Brasileiro de Automatizacin Inteligente. - Sao LuisMA, Brasil : [s.n.], 2005. - ISBN: 85-85048-55-7.
SHAPIRO L.G; STOCKMAN G.C. Computer Vision. [Libro]. - [s.l.] : Prentice
Hall, 2001
SPIEGEL M Estadstica: Teora y problemas [Libro]. - [s.l.] : McGraw-Hill, 1970.
SUPERROBOTICA.COM.
Robonova:
descripcin.
[En
lnea] //
http://www.superrobotica.com/Robonova.htm/. - Mayo de 2009.
TEAM DARMSTADT Darmstadt Dribblers KidSize Robots 2009 [En lnea] //
http://www.tzi.de/humanoid/bin/view/Website/Teams2009. - 2009.
WASIK Z. y SAFFIOTTI A. Robust color segmentation for the robocup domain
[Conferencia] // International Conference on Pattern Recognition. - 2002.
WU E., XIANG Z. y JILIN L. An Efficient Monte Carlo Method for Mobile Robot
[Conferencia]. - Luoyang, China : Proceedings of the 2006 IEEE.International
Conference on Mechatronics and Automation, 2006.

También podría gustarte