Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tesis
Tesis
DESARROLLO E IMPLEMENTACIN DE
ALGORITMOS PARA EL SISTEMA DE PERCEPCIN Y
LOCALIZACIN DE LOS ROBOTS BOGOBOTS
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
1.2
1.2.1
1.2.2
1.2.3
1.2.4
1.3
MOTIVACIN ..................................................................................................................... 24
1.4
OBJETIVOS ......................................................................................................................... 25
1.5
1.6
Captulo 2 .............................................................................................................................................. 28
2
2.1.1
2.1.2
2.1.3
2.1.4
2.2
PROCESAMIENTO NIVEL BAJO: ADQUISICIN DE
IMGENES
EN MATLAB.................................................................................................................................... 39
2.2.1
2.3
PROCESAMIENTO NIVEL INTERMEDIO: CLASIFICACIN DE COLOR Y
SEGMENTACIN ........................................................................................................................... 43
2.3.1
2.3.2
Segmentacin ................................................................................................................ 49
2.3.3
2.3.4
2.4
2.5
SISTEMAS DE LOCALIZACIN....................................................................................... 58
CLASIFICACION DE COLOR.................................................................................................... 60
3.1
3.1.1
3.1.2
6
3.1.3
3.2
3.2.1
Algoritmo en MATLAB................................................................................................ 76
3.2.2
3.3
Captulo 4 .............................................................................................................................................. 83
4
SEGMENTACIN ....................................................................................................................... 83
4.1
4.1.1
4.2
4.2.1
4.3
4.3.1
4.3.2
4.3.4
4.3.5
4.3.6
Algoritmos de construccin para el crecimiento de regiones a partir de semillas
obtenidas por lneas de escaneo..................................................................................................... 97
4.4
4.4.1
4.4.2
4.4.3
4.5
5.1.1
5.1.2
5.1.3
5.2
5.2.1
5.2.2
5.3
5.4
6.2
6.3
6.4
7
7
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
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.2 Se muestran cinco posturas generadas por una persona que inicia un caminado hacia
adelante partiendo de una postura erguida
16
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]
18
1.2
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.
19
Teen Size
600
400
50
60
150
260
60
300
180
100
120
70
40
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.
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)
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
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
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
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
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
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
. 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]
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
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.
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.
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
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.
(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.
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
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.
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
1.
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.
41
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.
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:
4.
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
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().
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.
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
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
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
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
(2.17)
W
w1
W
w2
W
w4
w3
W
w5
W
w7
W
w6
W
w8
W
w9
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]
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]:
-
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.
2.4
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.
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
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)
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)
59
60
Captulo 3
3 CLASIFICACION DE COLOR
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
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
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)
, es decir el
, es decir el
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)
(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
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
67
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
68
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
Figura 3.5 Proceso para formar tablas de bsqueda a travs del algoritmo de superficies implcitas
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)
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
Color
Etiqueta
Naranja
Verde
Amarillo
Azul
Blanco
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
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
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
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
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
Figura 3.11 Diferencia entre imgenes en RGB y HSI. Derecha: RGB. Izquierda: HSI
76
3.2.1 Algoritmo en MATLAB
El algoritmo desarrollado denominado HSIroipoly(f) y descrito en el Anexo A.8
es
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)
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
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
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
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
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
83
Captulo 4
4 SEGMENTACIN
84
Tabla 4-1 Combinaciones de algoritmos para el proceso de segmentacin
Clasificador de color
Tcnica de segmentacin
Procesamiento rengln por rengln
segmentacin_colores
segsemilla_colores
segsemilla_coloresHSI
seg_scanlines
segmentacin_semillaRGB
scanlinesRGB
segmentacin_semillaRGB
seg_scanlinesHSI
segsemilla_linscanHSI
segsemillaHSI
scanlines
segsemilla_linscanHSI
segsemillaHSI
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.
min
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.
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.
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
a)
b)
91
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
93
z
x
y
o
cmara
d
Campo
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.
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
96
Clasificador de color
Tipo de lnea de escaneo
Tipo 1: Tres densidades diferentes
scanlinesRGB
Anexo A.17
scanlines
Anexo A.18
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.
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.
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
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
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
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
Beacon1
Beacon2
Pelota
Portera amarilla
Portera azul
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
(ms)
1580
413
200
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
Beacon1
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
109
Tabla 4-11 Resultados de la segmentacin usando ambos criterios de color
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
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
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
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.
113
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
NO
NO
SI
Portera azul no
identificada
SI
NO
Portera azul
identificada
Fin
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)
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
NO
El nmero de regiones amarillas
es mayor que el nmero
de regiones azules?
Beacon1 no
identificado
SI
Fin
NO
Yiamar1<Yiazul<Yiamar2
No
SI
SI
A1=A2=A3
|A1-A2|<=tol y |A1-A3|<=tol
Beacon1 identificado
117
Figura 5.4 Imagen de la pelota tomada a 1.70 cm que equivale a 484 pixeles en la imagen
Obtener la caja
color naranja de
mayor tamao
Pelota no
identificada
Pelota identificada
Fin
118
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
(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)
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
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
126
Figura 5.10 Resultados del programa de identificacin de objetos para beacon1 y portera amarilla
127
Figura 5.12 Resultados de identificacin de objetos y estimacin de distancia para beacon2 y portera azul
128
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.
Obj2
(X2,Y2)
d12
Obj1
(X1,Y1)
d2
d1
R
(Xr,Yr)
x
X
Figura 6.1 Esquema de triangulacin
130
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)
(6.5)
(6.6)
Donde:
(6.7)
(6.8)
x1 y y1 son las coordenadas del Obj1
131
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
Objeto
xr
yr
Portera amarilla
200
600
Beacon2
430
300
Portera azul
200
Beacon1
-30
300
133
Figura 6.3 Resultados del sistema de localizacin a partir de la identificacin de portera amarilla y beacon2
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
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
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.
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
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
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
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.
142
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
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
147
%
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));
148
149
150
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
154
155
156
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);
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
160
161
162
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
165
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
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
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
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
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
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
%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
187
else
end
end
188
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
%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
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];
195
196
197
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
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
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
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
205
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-');
207
208
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
211
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]
[24]
[25]
[26]
[27]
[28]
[29]
[30]
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.