Subido por Alberth Castgon616

IDMRM0910 Trabajo VisionArtificial v2

Anuncio
Sistemas de Visión Artificial
Introducción al Diseño de Micro Robots Móviles2009/10
Sistemas
De
Visión Artificial
Autores:
Alejandro
Vicente
Pedro
Javier
Oscar
Sergio
Carlos
INDICE DE CONTENIDOS
1 Introducción....................................................................................................................4
1.1 Naturaleza de la luz.....................................................................................................4
1.2 La luz como Onda electromagnética...........................................................................5
1.3 Interacción entre la luz y la materia. (5)......................................................................6
1.4 Visión Humana y Visión Artificial.............................................................................7
1.5 Historia......................................................................................................................10
1.6 Definición actual de visión artificial.........................................................................11
1.7 Pasos de un sistema de visión artificial.....................................................................14
2 Sistemas de visión artificial en robótica.......................................................................16
2.1 Técnicas de procesado de imágenes en Visión Artificial..........................................16
2.2 Etapas en el proceso de Visión Artificial..................................................................17
2.3 Adquisición de imágenes...........................................................................................18
2.4 Pre procesado.............................................................................................................19
2.5 Segmentación.............................................................................................................19
2.6 Análisis......................................................................................................................20
2.7 Reconstrucción tridimensional en visión artificial....................................................20
2.8 Tipos de medición en Visión Artificial.....................................................................21
2.8.1 Visión Robótica 2D................................................................................................21
2.8.2 Visión 3D con una cámara......................................................................................22
2.8.3 Reconocimiento de formas 3D...............................................................................22
2.8.4 Reconocimiento mediante Fotogrametría 3D.........................................................23
2.8.5 Sensor óptico 3D estéreo........................................................................................24
2.8.6 Servo Visual 3D......................................................................................................25
3 Software de Visión artificial.........................................................................................26
3.1 Introducción...............................................................................................................26
3.2 Clasificación..............................................................................................................27
3.3 Paquetes de programas..............................................................................................27
3.3.1 MatLab....................................................................................................................27
3.3.2 LabView.................................................................................................................28
3.4 Librerías de funciones...............................................................................................28
3.4.1 OpenCV..................................................................................................................28
3.4.2 MIL.........................................................................................................................29
3.4.3 Mavis......................................................................................................................30
3.4.4 CMUcam(software)................................................................................................30
4 Detección de Objetos ...................................................................................................31
4.1 VISION BIDIMENSIONAL ....................................................................................31
4.1.1 Segmentación .........................................................................................................33
4.1.2 Establecimiento de umbrales .................................................................................33
4.1.3 Bases de la visión en color para máquinas ............................................................34
4.1.4 Detección de bordes ...............................................................................................35
4.1.5 Creación de regiones .............................................................................................36
4.1.6 Análisis Geométrico ..............................................................................................36
4.1.7 Propiedades de tamaño y forma .............................................................................36
4.1.8 Representaciones geométricas ...............................................................................37
4.1.8.1 Código de Longitud de Secuencia.......................................................................37
Página 2 de 77
4.1.8.2 Código de Encadenamiento.................................................................................37
4.1.8.3 Árbol Tetrafurcado ("Quadtree").........................................................................37
4.1.8.4 Otras Representaciones........................................................................................38
4.2 VISION TRIDIMENSIONAL .................................................................................38
4.2.1 Forma a partir de sombreado .................................................................................39
4.2.2 Forma a partir de textura .......................................................................................40
4.2.3 Forma tridimensional a partir de forma bidimensional .........................................41
4.2.4 Detección de distancia y visión en estéreo ............................................................41
4.2.5 Reconocimiento de objetos tridimensionales ........................................................42
4.2.6 Ejemplo de Aplicación Real ..................................................................................42
5 Seguidor de líneas.........................................................................................................43
5.1 Introducción...............................................................................................................43
5.2 Ejemplos de robots con estas características.............................................................44
5.2.1 Robot velocista con visión......................................................................................44
5.2.2 Control cinemático de robots autoguiados utilizando un sistema de visión artificial
.........................................................................................................................................46
5.3 Sistema de posicionamiento del robot por visión......................................................47
5.4 Robot Pob-Bot..........................................................................................................48
5.5 Otros robots...............................................................................................................50
6 CMUcam......................................................................................................................51
6.1 Introducción...............................................................................................................51
6.2 Características............................................................................................................51
6.2.1 Tipos de CMUcam..................................................................................................51
.......................................................................................................................................51
6.2.1.1 CMUcam Original...............................................................................................51
6.2.1.2 CMUcam2...........................................................................................................52
6.2.1.3 CMUcam3...........................................................................................................52
6.3 Implementación (modos de uso)................................................................................53
6.4 Ejemplos y aplicaciones............................................................................................53
6.5 ¿Donde se puede conseguir una?...............................................................................54
6.6 ¿Cuánto puede costar?...............................................................................................55
6.7 ¿Cómo empezar?.......................................................................................................55
6.8 Resumen....................................................................................................................56
7.- Bibliografía................................................................................................................74
Página 3 de 77
1
Introducción
Uno de los sentidos más importantes de los seres humanos es la visión. Ésta es
empleada para obtener la información visual del entorno físico. Según Aristóteles,
“Visión es saber qué hay y donde mediante la vista”. De hecho, se calcula que más de
70% de las tareas del cerebro son empleadas en el análisis de la información visual. El
refrán popular de “Una imagen vale más que mil palabras” tiene mucho que ver con los
aspectos cognitivos de la especie humana. Casi todas las disciplinas científicas emplean
utillajes gráficos para transmitir conocimiento. Por ejemplo, en Ingeniería Electrónica
se emplean esquemas de circuitos, a modo gráfico, para describirlos. Se podría hacerlo
mediante texto, pero para la especie humana resulta mucho más eficiente procesar
imágenes que procesar texto. La visión humana es el sentido más desarrollado y el que
menos se conoce debido a su gran complejidad. Es una actividad inconsciente y difícil
de saber cómo se produce. De hecho, hoy en día, se carece de una teoría que explique
cómo los humanos perciben el exterior a través de la vista.
1.1 Naturaleza de la luz
La luz fue considerara, hasta el siglo XVIII, como una corriente de corpúsculos. Éstos
eran emitidos por los focos luminosos y disminuía su densidad a medida de que se
alejaban del foco. Podían penetrar en las sustancias transparentes y se reflejaban en las
superficies de los cuerpos opacos. Cuando los corpúsculos penetraban en el ojo,
excitaban el sentido de la vista. Esta teoría corpuscular fue desarrollada por Newton en
el siglo XVII y mejorada posteriormente, con el modelo cuántico, por Plank a principios
del siglo XX.
En el siglo XIX, los trabajos de Young, Fresnel y Foucault salvaron la mayoría de las
objeciones de la teoría ondulatoria. El impulso definitivo lo dio Maxwell, al explicar la
luz como una radiación ondulatoria. Sin embargo, el efecto fotoeléctrico proporciono
evidencias experimentales de que la luz tenía carácter corpuscular en la interacción con
la materia. Hoy se admite que en la emisión de la luz intervienen electrones con
cantidades de energía determinadas o discretas. Cuando un electrón pasa de un nivel de
energía a otro inferior emite una partícula discreta de energía, llamada cuanto o fotón.
El problema ahora consiste en hacer concordar el cuanto o característica corpuscular de
la luz con la idea de onda continua. Para la Mecánica Cuántica, cuando se trata del
comportamiento de gran número de cuantos, la teoría ondulatoria explica
satisfactoriamente los fenómenos, pero al considerar el comportamiento de unos pocos
cuantos prevalece la teoría corpuscular. Así, los fenómenos de propagación de la luz
encuentran su mejor explicación dentro de la teoría ondulatoria, mientras que la acción
mutua entre luz y materia, en los procesos de absorción y emisión, es un fenómeno
corpuscular. Hoy aún se mantiene la teoría dual de la luz.
Más adelante trataremos sobre la propagación de la luz y la formación de las imágenes.
Todos estos fenómenos pueden interpretarse a partir de la teoría ondulatoria. Por tanto,
se puede considerar que las fuentes luminosas emanan de un frente de ondas, las cuales
Página 4 de 77
pueden ser representadas, imaginariamente, por líneas rectas en la dirección de la
propagación del tren de ondas, a las que se llamará rayo.
1.2 La luz como Onda electromagnética
Algunos tipos de energía requieren de un medio conductor para propagarse.
Como así sucede con la energía eléctrica o mecánica. Pero hay otros tipos de fuentes
energéticas que no necesitan de un soporte conductor, éste el caso de la luz. Las
radiaciones electromagnéticas se propagan en forma de dos ondas vectoriales
mutuamente acopladas y perpendiculares entre sí; una onda para el campo eléctrico y
otra para el campo magnético. Según la teoría ondulatoria, la luz se propaga en forma de
onda que viaja en el espacio libre con una velocidad constante c = 3×108 m/s. El
espectro visible es una porción muy pequeña del conjunto de ondas electromagnéticas
que tiene la peculiaridad de ser captada por los ojos y procesada en el cerebro. El ojo
humano es capaz de distinguir radiaciones de longitudes de onda comprendidas entre
los 380 nm a los 780 nm, cuyas frecuencias oscilan entre los 3.2×1014 Hz y los
7.7×1014 Hz. El sentido de la vista transforma las diferentes amplitudes y frecuencias
del espectro visible en sensaciones conocidas como brillo y color respectivamente.
Fig. 1-1 Campo electromagnético
Fig. 1-2 b) Espectro de la luz
Fue Newton quien observó cómo la luz blanca, la procedente de la luz solar, se podía
descomponer en unas serie de haces luminosos de colores cuando atravesaba un prisma
óptico. Newton, con este experimento, hallo el espectro de la luz diurna mediante el
fenómeno conocido como dispersión de la luz o dispersión cromática, cuya explicación
física escapaba de su teoría corpuscular. Mediante la teoría ondulatoria se sabe que cada
color es en realidad una onda electromagnética de frecuencia determinada y que, al
penetrar en el prisma óptico, se desvía en una dirección diferente debido a que el índice
de refracción de este material varia con la frecuencia de la onda penetrante, con lo que
el haz se expande de forma que las radiaciones monocromáticas puedan ser distinguidas
y observadas por el ojo humano.
Página 5 de 77
Fig. 1-3 Descomposición de la luz
Fig. 1-4 Dispersión cromática de la luz.
1.3
Interacción entre la luz y la materia. (5)
Cuando un cuerpo recibe radiación luminosa, una parte es absorbida, otra es reflejada y
hay otra parte que es transmitida. Por el principio de conservación de la energía, el flujo
luminoso incidente será igualado a tres mecanismos:
INCIDENTE TRANSMITIDA, ABSORBIDA Y REFLEJADA F = F + F + F
Según sea la longitud de onda que reflejen, transmitan o absorban así será el color con
el que se percibe el objeto. Un objeto que absorba todas las frecuencias se captará como
negro, mientras que un cuerpo que refleje todas las longitudes de onda visibles
aparecerá blanco. En los objetos opacos la transmitancia es insignificante, siendo las
frecuencias que refleja el cuerpo las que determinan con que color se percibe. En los
transparentes, por el contrario, son la reflectancia y la absortancia las que valen
prácticamente cero. En consecuencia, una especificación puramente objetiva del color
de una superficie opaca puede expresarse en términos de reflectancia espectral. En el
caso de materiales transparentes vendrán dadas por la transmitancia espectral. La
radiación reflejada, la captada por el observador, depende de la naturaleza de la
superficie en la que se refleja el haz luminoso, así como las condiciones de iluminación
y posición del punto de vista.
Sea dA el área de una superficie plana:
Página 6 de 77
Fig. 1-5 Sombra
En la figura, un elemento de superficie cuya normal n forma un ángulo q respecto a un
manantial puntual S. Asumiendo que la fuente luminosa S ilumina por igual en todas las
direcciones. La relación entre el flujo incidente en la superficie respecto al área, define
la iluminación como:
Fig. 1-6 Ecuación Iluminación
De otro lado, a la fracción del flujo incidente que sea reflejada en la dirección del
observador, esto es, desde la superficie al sensor se la llama radiación reflejada o
luminancia. La radiación reflejada de la superficie es definida como el flujo emitido por
unidad de área reflejada y por unidad de ángulo sólido en la dirección vista por el
sensor.
Se define la radiación radiada, L, como:
Fig. 1-7 Ecuación radiación
Fig. 1-8 Reflejo
1.4 Visión Humana y Visión Artificial.
La visión es el sentido más importante que tiene el ser humano. Así, mientras, para el
oído se tiene alrededor de treinta mil terminaciones nerviosas, en la vista hay más de
dos millones. La radiación exterior recibida por el ojo debe ser transformada en señales
que sean procesadas por el cerebro. El ojo es el elemento transductor mientras que el
cerebro es el que procesa dicha información.
El ojo tiene una forma, aproximadamente, esférica de unos 2.5 cm de diámetro.
Página 7 de 77
El ojo está formado por una óptica y una zona sensorial. La óptica está constituida por
la córnea, el iris o pupila y el cristalino. La cornea es un material transparente y
funciona como lente fija. La pupila regula la cantidad de luz que entra en el interior y el
cristalino hace las veces de lente variable, permitiendo el enfoque dependiendo de la
distancia de los objetos. Los músculos que sujetan al cristalino provocan su
deformación, cuya consecuencia es el enfoque del campo visual. La misión de la óptica
del ojo es conducir la radiación electromagnética, del espectro visible, hacia la retina.
Fig. 1-9 Anatomía del ojo
Fig. 1-10 Representación ojo mirando
La retina se encuentra en la parte posterior del glóbulo ocular y es donde se ubican las
células fotosensibles: los conos y los bastones.
Fig. 1-11 Células fotosensibles
En la retina se puede distinguir dos partes: la fóvea y la mácula. La fóvea es la parte
central de la retina, de menor tamaño y donde se encuentran los conos. Es en esta zona
donde se tiene mayor sensibilidad a la longitud de la onda electromagnética, con un
ángulo visual de dos grados. La apertura corresponde, aproximadamente, con el ancho
del pulgar extendido el brazo. La fóvea es tan pequeña que es necesario mover el ojo
para enfocar dos puntos tan próximos como los del signo de puntuación (:). Esta
información visual transmitida al cerebro se llama visión fóvea. La mácula es de mayor
extensión, la agudeza visual es menor y está definida por los bastones. Esta zona se
encarga de la visión periférica.
Página 8 de 77
La percepción del color de una imagen la realizan los conos. Son unos seis millones y
cada cono tiene conexión a varias neuronas. Basándose en la información aportada por
los conos, el cerebro construye la sensación de color. Por el contrario, los bastones son
más de 100 millones y son capaces de detectar la intensidad lumínica.
Varios bastones están asociados a una única neurona.
Fig. 1-12 Distribución de conos y bastones en el ojo
Mientras la visión fóvea tiene mayor agudeza, más resolución y percibe los colores, la
visión periférica le da al cerebro más información espacial que la fóvea y destaca los
contrastes. De este hecho se destaca que en la oscuridad, la visión periférica es más
adecuada que intentando centrar la visión sobre el objeto.
Fig. 1-13 Visión diurna/nocturna
Gráfico. Sensibilidad del ojo en luz diurna y en visión nocturna.
La sensibilidad de la intensidad en el ser humano es alta siempre que los elementos que
se comparen sean pocos. Cuando el número de intensidades involucradas
simultáneamente es superior a unos 24 tonos se pierde la mayor parte de esta
sensibilidad. Esto explica que, en la mayoría de los casos prácticos, sea suficiente el uso
de 32 ó 64 niveles de intensidad para representar una imagen.
El color es una característica del sistema de percepción humana y está relacionado con
las sensaciones recibidas por el ojo en el espectro visible. El color es la respuesta del
Página 9 de 77
sistema visual humano ante las variaciones de las longitudes de onda del espectro
electromagnético visible. Estudios fisiológicos han revelado que existen tres tipos de
conos, denominados tipos S, M y L. Los S son más sensibles a las ondas cortas (azules
– 450nm), los M a las medias (verde – 540 nm) y los L a las de longitudes largas (rojo 650 nm). Este hecho ha dado base a la teoría del triestimulo, de manera que el color se
puede representar en una base de tres componentes fundamentales: rojo-verde y azul
(RGB – Red, Green, Blue).
La sensibilidad de cada cono no es exactamente igual a cada parte del espectro fijado.
Concretamente, los conos azules son los menos sensibles, mientras que los conos verdes
son los más sensibles. Otra consideración a tener en cuenta es la refracción de los rayos
luminosos que penetran en la retina. No todos afectan por igual. La luz de alta
frecuencia (azul) focaliza en un punto anterior a la retina, mientras que las bajas
frecuencias (rojos) lo hacen en puntos posteriores. Esto tiene como consecuencia que
los detalles rojos o azules no puedan distinguirse netamente en una escena. Justo lo
contrario de lo que ocurre con los verdes, cuyo punto de convergencia o focalización se
sitúa exactamente en la retina, lo que induce a una mayor resolución del ojo para estas
tonalidades.
Resumiendo, las principales ventajas de la visión humana respecto a la artificial y
viceversa, son:
Sistema humano:
Mejor reconocimiento de objetos.
Mejor adaptación a situaciones imprevistas.
Utilización de conocimiento previo.
Mejor en tareas de alto nivel de proceso.
Sistema artificial.
Mejor midiendo magnitudes físicas.
Mejor para la realización de tareas rutinarias.
Mejor en tareas de bajo nivel de proceso.
1.5
Historia
En el año 1826 el químico francés Niepce (1765-1833) llevó a cabo la primera
fotografía, colocando una superficie fotosensible dentro de una cámara oscura para fijar
la imagen.
En 1838 el químico francés Daguerre (1787-1851) hizo el primer proceso fotográfico
práctico. Daguerre utilizó una placa fotográfica que era revelada con vapor de mercurio
y fijada con trisulfato de sodio.
Página 10 de 77
Primeras fotografías
Fig. 1-14
Fig. 1-15
- Fotografía aérea (mediados del s. XIX): cartografía
- 1920: se utilizaba para el levantamiento de planos
- Años 50: la fotografía en color (ya muy perfeccionada), los barredores
multiespectrales y el radar, abrieron nuevas zonas del espectro electromagnético para su
uso en prospección.
- 1960: en satélites para el estudio de recursos naturales, cartografía, variables
meteorológicas, etc.
- 1980: guiado de robots, manipulación, control de calidad
- 1997: Interpretación de imágenes obtenidas de otros planetas y galaxias.
- 2000: imágenes en teléfonos móviles, videoconferencias, sistemas de vigilancia, de
control de acceso...
1.6
Definición actual de visión artificial
-La Visión Artificial, es el proceso de obtención, caracterización e
Interpretación de la información a partir de imágenes.
Se estima que aproximadamente las ¾ partes de la información que
maneja el ser humano es visual, parece lógico pensar que el objetivo de
rotar a las máquinas del sentido de la vista supondrá un salto cualitativo en
sus capacidades de actuación.
-La visión artificial tiene como finalidad la reproducción del sentido de la vista. Se
trata de un objetivo ambicioso y complejo que se encuentra actualmente en una etapa
todavía primitiva. Es la adquisición de imágenes y su análisis e interpretación posterior
con el fin de obtener la información necesaria para controlar una máquina o un proceso
industrial. La extracción de la información de un objeto o una escena en una o más
imágenes se realiza de forma automática y sin establecer contacto físico con el objeto.
Página 11 de 77
-La visión es un proceso de tratamiento de información que
Permite obtener una descripción simbólica del mundo real a partir de
Imágenes. Parece fácil pero es ciertamente difícil.
Una definición más acorde con su estado de desarrollo actual sería:
-Verificar un proceso o una actividad específica. Es una tecnología que integra
aplicaciones informáticas, ópticas y electrónicas. Permite mejorar la producción, ajustar
los costes e incrementar la seguridad general.
La visión artificial (denominada también visión por ordenador o por computador o
machine visión) es una técnica de captación óptica, limpia, segura y muy versátil. El
análisis de las imágenes obtenidas permite detectar en un objeto características físicas
invisibles al ojo humano o establecer o comprobar alguna propiedad o medida
predeterminada.
Para la industria, la visión artificial incrementa la calidad y la seguridad de los
procesos de fabricación. Esta técnica tiene muchas aplicaciones. Se utiliza
especialmente en el control de calidad, la manipulación de materiales, la ordenación por
calidades (grading), el test y la calibración de aparatos y la monitorización de procesos.
- Colimetría
• La colorimetría tiene por objeto analizar los colores y atribuirles
características lo suficientemente precisas para su identificación
reconstrucción sin ambigüedades.
y posible
Representación del color.
Entre los sistemas para representar el color, se pueden citar:
Sistema HSV o HSI: el color se describe con ayuda de tres magnitudes: longitud de
onda predominante, factor de pureza y luminancia (hue, saturation and value or
intensity).
Luminancia (L): Es la medida fotométrica de la intensidad de la
radiación luminosa. Está asociado con el brillo (brightness),
intensidad (intensity) o nivel de gris (value) del color:
Fig. 1-15
Longitud de onda dominante (λd): Es la longitud de onda de la radiación
monocromática o color puro más parecida al color considerado (nm). Está asociado con
el tono (hue) del color.
Página 12 de 77
Factor de pureza (p): Coeficiente numérico sin unidades y entre 0 y 1 (1 = color puro),
que expresa el grado de disolución del color puro (λd) en blanco. Está asociado con el
concepto de saturación (saturation) del color.
Sistema RGB: el color se describe a partir de sus porcentajes
de Red-Green-Blue.
Fig. 1-16
Fig. 1-17
Si lo que interesa es la información relativa al color y no a la cantidad de luz
(luminancia) se puede trabajar en el espacio r,g,b normalizado (más invariante ante
cambios de iluminación1):
Fig. 1-18
EL SISTEMA RGB Y EL HSI (Hue, saturation, Intensity)
• El sistema RGB dispone usualmente de 8 bits por color (24 bits) pero existe
redundancia de información ya que existe correlación entre los 3 planos.
• En formato HSI (hue-saturation-intensity o tono-saturación intensidad)
Página 13 de 77
no existe correlación entre los 3 planos; cada uno de ellos da información diferente
sobre los detalles de la imagen.
• Existen unas ecuaciones (no lineales) de transformación de RGB a HSI y viceversa.
• Una pequeña perturbación en RGB puede producir importantes cambios en HSI.
1.7
Pasos de un sistema de visión artificial
Un sistema de visión artificial consta de forma general de un
conjunto de subsistemas capaces de realizar las funciones de:
* Adquisición de imágenes.
*Análisis de imágenes.
Fig. 1-19
Adquisición de imágenes:
Conjunto de operaciones que se efectúan para transformar la
información luminosa de una escena en una señal digital.
Este proceso permite almacenar una escena (imagen) en
memoria o disco de forma digitalizada.
Las operaciones necesarias en la adquisición de imágenes son:
- Iluminación
- Adquisición de la imagen a través de un sensor (transforma
información luminosa en eléctrica analógica) y su óptica
asociada (lente).
- Digitalización: conversión analógico-digital a través de un
ADC (la señal eléctrica analógica se transforma en digital).
Análisis de la imagen:
Página 14 de 77
El análisis o procesado de una imagen engloba a todas aquellas técnicas que permiten
extraer una información explícita (posición, tamaño...) de los objetos que componen la
imagen o escena. Estas técnicas se pueden englobar en cuatro bloques:
- Pre-procesado: Conjunto de técnicas encaminadas a realizar una mejora de la imagen
digitalizada. Consiste en modificar las características de la imagen digitalizada:
* Nivel de gris
* Contraste
* Eliminación de ruido
* Realce de características
* Transformaciones geométricas
- Segmentación: Proceso que divide una escena en partes constituyentes u objetos. Los
objetos se extraen de la imagen para su posterior reconocimiento y análisis. Muchas de
las técnicas de segmentación se basan en el análisis de:
* Discontinuidad
* Similitud
-Descripción: consiste en extraer una serie de características (descriptores) de un objeto
para reconocerlo. Los descriptores, a ser posible, deben ser
independientes de la localización, orientación y cambios de escala de los objetos de una
escena. Deben contener suficiente información para
distinguir un objeto de otro.
- Reconocimiento: Consiste en un proceso de etiquetado e identificación. Identificar
cada objeto de una escena y asignarle una etiqueta. Identificar cada objeto segmentado
en función de un conocimiento previo (inteligencia artificial).
Fig. 1-20
Página 15 de 77
2
Sistemas de visión artificial en robótica.
Los sistemas de visión artificial están en continuo desarrollo y evolución tecnológica, ya
que proporcionan un valor añadido en los diferentes procesos productivos desarrollados
mediante sistemas robotizados. Por ello, son muchas las empresas dedicadas a su
fabricación debido al creciente número de consumidores que los utilizan integrándolos
en células robotizadas con gran éxito.
Estos sistemas nos permiten atender a las demandas más exigentes de calidad al permitir
la inspección y el control del 100% del producto. Del mismo modo, resulta la opción
idónea para el control de todo tipo de procesos y para el guiado de manipuladores y
robots. Teniendo como principal ventaja que son sistemas que se amortizan rápidamente
y tienen unos costes de funcionamiento muy reducidos. También se integran en sistemas
avanzados de interacción hombre-máquina mediante visión por computador como son
el seguimiento de manos, gestos, caras…
Con esto, podemos realizar una primera clasificación de las posibles aplicaciones de los
sistemas de visión artificial:
Medición: Permitiéndonos realizar un control dimensional mediante la obtención de las
magnitudes físicas de un objeto, para verificar que se corresponden con el patrón
exigido. Como pueden ser medir las dimensiones de una pieza, sus diámetros, la
plenitud de sus diferentes superficies, niveles...
Guiado: Localización de la posición de un objeto detectando las coordenadas del
mismo en el espacio para recogerlo y desplazarlo al lugar deseado. Sirviéndonos como
guía a los robots para localizar o ensamblar piezas, guía el recorrido de un rollo de
papel, tela, cartón...
Identificación o clasificación: Asignar a un objeto la clase a la que pertenece mediante
la extracción y procesado de sus características visuales (forma, color, etiquetaje,
dimensiones, textura..). Permitiéndonos identificar piezas o productos por su perfil,
realizar tareas de reconocimiento óptico (OCR) extrayendo de una imagen los caracteres
que componen un texto para almacenarlos en un formato con el cual puedan interactuar
programas de edición de texto…
Inspección: Detecta la presencia-ausencia de piezas en ensamblaje, realiza la
orientación de piezas, las inspecciones de defectos superficiales, la comprobación de la
fecha en un lote de productos o su caducidad, los defectos en la superficie en productos
producidos de forma continua...
Control de calidad: Verificar el cumplimiento de los requisitos y especificaciones
técnicas de un objeto a partir de un patrón dado. Siendo de gran importancia en los
procesos productivos, ya que realiza inspecciones del 100%, evitando posibles escapes
de la inspección ocular, lo cual garantiza la calidad y la homogeneidad de las piezas
inspeccionadas.
2.1 Técnicas de procesado de imágenes en Visión Artificial
Página 16 de 77
Una imagen es una representación visual de un objeto iluminado por una fuente
radiante. Las que se perciben en las actividades visuales cotidianas provienen
normalmente de la luz reflejada por los objetos. La naturaleza básica de una imagen está
caracterizada por dos componentes: la cantidad de luz incidente que procede de la
fuente de la escena contemplada, y la cantidad de luz reflejada por los objetos de la
escena. Dichas componentes reciben el nombre de iluminación y reluctancia.
En el proceso de formación de la imagen intervienen los siguientes elementos: el objeto,
la fuente radiante y el sistema de formación de la imagen que consiste, básicamente, en
un sistema óptico, un sensor y un digitalizador.
Tenemos que tener en cuenta las dos principales causas que producen pérdida de
información cuando se captura una imagen son la naturaleza discreta de los pixels de la
imagen y el rango limitado de valores de intensidad luminosa que es capaz de ofrecer el
sistema de digitalización.
Efecto de muestreo: pudiendo crear una reducción de la resolución espacial de la
imagen.
Efecto de cuantificación: viene dado por la imposibilidad de tener un rango infinito de
valores de medida para la intensidad de brillo de los pixels.
Otro aspecto a tener en cuenta es la conectividad entre pixels, que establece las fronteras
de objetos y las regiones componentes de una imagen.
2.2 Etapas en el proceso de Visión Artificial
La visión artificial lleva asociada una enorme cantidad de conceptos relacionados con
hardware, software y también con desarrollos teóricos.
El primer paso en el proceso es adquirir la imagen digital. Para ello se necesitan
sensores y la capacidad para digitalizar la señal producida por el sensor.
Una vez que la imagen digitalizada ha sido obtenida, el siguiente paso consiste en el pre
procesamiento de dicha imagen. Cuyo objetivo es mejorar la imagen de forma que el
objetivo final tenga mayores posibilidades de éxito.
El paso siguiente es la segmentación, siendo su objetivo es dividir la imagen en las
partes que la constituyen o los objetos que la forman.
Posteriormente, es necesario convertir estos datos a una forma que sea apropiada para el
ordenador. La primera decisión es saber si se va a usar la representación por frontera o
región completa. La representación por la frontera es apropiada cuando el objetivo se
centra en las características de la forma externa como esquinas o concavidades y
convexidades. La representación por regiones es apropiada cuando la atención se centra
en propiedades internas como la textura o el esqueleto. Sin embargo, en muchas
aplicaciones ambas representaciones coexisten.
Finalmente, se el reconocimiento y la interpretación. El reconocimiento es el proceso
que asigna una etiqueta a un objeto basada en la información que proporcionan los
descriptores (clasificación). Mientras que la interpretación lleva a asignar significado al
conjunto de objetos reconocidos.
Estos pasos se recogen en el siguiente esquema:
Página 17 de 77
Diagrama de bloques de las etapas de un sistema de V.A.
Fig 2-1
2.3 Adquisición de imágenes
En este primer paso, se trata de conseguir que la imagen sea lo más adecuada posible
para que se pueda continuar con las siguientes etapas. Una correcta adquisición de la
imagen supone un paso muy importante para que el proceso de reconocimiento tenga
éxito. Dentro de esta etapa existen múltiples factores que atañen directamente al proceso
de captura de la imagen, pudiendo resumirlos en dos grupos:
El sistema hardware de visión artificial: cámara, óptica, tarjeta de adquisición de
imagen, ordenador y software.
el entorno y posicionamiento de los elementos: la iluminación, el fondo, posición
correcta de la cámara, ruido eléctrico-óptico externo, etc.
Un aspecto muy importante en este punto es obtener un perfecto calibrado de la
posición de la cámara, para obtener una correcta imagen sin deformaciones. Es
beneficioso utilizar un plantilla en la que se conozcan sus dimensiones mediante puntos
de referencia.
Además, será necesario realizar un programa de calibrado que determine de la imagen
en tiempo real, los centros de gravedad de los puntos, la dimensión de cada punto, las
Página 18 de 77
distancias de separación, la redondez de cada punto, el lado horizontal y vertical del
cuadro, etc.
2.4 Pre procesado
Toda imagen que se adquiere por medios ópticos, electroópticos o electrónicos sufre en
cierta medida los efectos de la degradación que se manifiestan en forma de ruido,
pérdida de definición y de fidelidad de la imagen. La degradación viene provocada por
el ruido de los sensores de captura, imprecisiones en el enfoque de la cámara,
movimiento de la misma o perturbaciones aleatorias, entre las que tiene relevancia el
efecto de la propagación de la radiación en el medio de transmisión. Los mecanismos
que tratan de contrarrestar estos efectos se incluyen dentro de la etapa de pre procesado,
recibiendo el nombre de operaciones de restauración.
Generalmente el pre procesado pretende reparar en la imagen los desperfectos
producidos o no eliminados por el hardware: deformación de ésta, ruido introducido,
poco o mucho contraste o brillo, falta de ecualización apropiada, etc. Los algoritmos de
pre procesado permiten modificar la imagen para eliminar ruido, transformarla
geométricamente, mejorar la intensidad o el contraste, etc. Por supuesto, como estos
algoritmos necesitan gran cantidad de tiempo de procesado, es lógico que la mejor
opción sería utilizar hardware adecuado que los evite.
En un proceso de visión artificial estos algoritmos tienen que ser utilizados lo menos
posible, un uso excesivo de ellos repercutirá en el tiempo de proceso total e indicará que
la calibración, iluminación y selección de los elementos de la etapa de adquisición no ha
sido la adecuada.
Una parte importante en el pre procesado es la realización de un filtrado que nos ayude
a eliminar el ruido existente. La mayoría de las implementaciones de filtros se realizan
en dos dominios:
Domino espacial: hacen referencia a la manipulación directa de la luminancia de los
pixels.
Dominio frecuencial: modifican indirectamente la luminancia de cada pixel utilizando
como factores de ponderación los valores de los otros pixels de la imagen o del entorno
del punto y las relaciones numéricas entre ellos. Estos filtros utilizan la Transformada
Discreta de Fourier (DFT) y la transformada Discreta de Fourier Inversa (IDFT) para
determinar las frecuencias que en las que se encuentra el ruido y utilizan filtros tipo FIR
(con respuesta finita) e IIR (respuesta infinita).
2.5 Segmentación
Segmentar una imagen digital consiste en diferenciar los diferentes objetos que
componen la señal y determinar su posición con respecto al fondo de la imagen.
El objetivo de esta es etapa es conocer perfectamente los objetos que hay para extraer
las características propias de cada uno de ellos. Además, cada pixel de la imagen tiene
que tener una etiqueta que los defina, de forma que simplemente por agrupación de
Página 19 de 77
puntos con la misma etiqueta y conectados espacialmente, se pueda determinar la lista
de objetos.
2.6 Análisis
Una vez realizado el proceso de segmentación, donde se obtienen los bordes de los
objetos bien definidos, el siguiente paso consiste en obtener parámetros que definan las
características de cada objeto: forma, textura, color, orientación, etc.
De entre todos los parámetros o descriptores que se puedan obtener, habrá que
seleccionar aquellos que tengan las siguientes características:
Ser discriminantes. Es decir, que diferencien lo mejor posible los objetos de una familia
o clase con los de las otras.
Ser independientes entre sí. Los descriptores que definan cada objeto no tienen que estar
relacionados, de forma que si varía uno los demás no varíen por culpa de éste.
Ser suficientes. Tienen que delimitar de forma suficiente la pertenencia de un objeto a
una clase determinada.
Además dentro de los descriptores podemos distinguir entre tres categorías básicas:
Descriptores de frontera: pudiendo distinguir claramente el contorno de cada uno de los
objetes.
Descriptores de región: pudiendo representar a cada uno de los objetos presentes en la
imagen mediante la región que ocupa en la misma.
Descriptores adecuados para representar estructuras tridimensionales, que trataremos
brevemente en el siguiente apartado.
2.7 Reconstrucción tridimensional en visión artificial
Uno de los problemas clásicos del área de visión artificial es la reconstrucción
tridimensional métrica a partir de imágenes adquiridas por una cámara sin calibración
previa. Este problema involucra, específicamente, los siguientes pasos: la triangulación
(cálculo de los puntos tridimensionales), la calibración de la cámara y la estimación de
los parámetros de orientación y posición de la cámara.
En primer lugar, hablaremos de la triangulación que tiene por objetivo encontrar la
posición de un punto en el espacio a partir de la intersección de dos líneas que parten de
la correspondencia de puntos en dos imágenes. Un problema en este punto consiste en la
probable presencia de ruido en los datos medidos, que provocaría que la intersección no
ocurra. En tal caso es necesario encontrar la mejor aproximación, que nos permita
obtener un resultado lo más fiel posible a la imagen que se pretende reconstruir, y evite
que el error se propague en el resto de los pasos.
Una solución bastante empleada es resolver el problema mediante un algoritmo
evolutivo, que lo trata como un problema de optimización multi-objetivo. Esta
transformación suele ofrecer unos resultados bastante óptimos en comparación con
otros métodos.
Los procesos de calibración de la cámara y la estimación de los parámetros de
orientación y posición de la cámara consisten en encontrar estos parámetros de las
cámaras a partir de un conjunto de correspondencias de puntos extraídas de dos o más
imágenes. Sin embargo, existen superficies y configuraciones de la cámara conocidas
Página 20 de 77
como críticas donde se ha demostrado que es imposible extraer los parámetros de la
cámara al usar, solamente, correspondencias de puntos.
Una solución es aplicar un algoritmo evolutivo como el de evolución diferencial, basado
en el modelo de la cámara oscura, que nos permite encontrar los parámetros de la
cámara y obtener la reconstrucción tridimensional, aún en la configuración crítica de
translación pura y en superficies críticas (puntos que yacen sobre un mismo plano).
Otro problema importante dentro del área de la visión artificial, consiste en obtener la
elipse que mejor se ajuste a un conjunto de puntos dado. Los algoritmos que resuelven
este problema sólo minimizan el cuadrado de la distancia euclidiana entre la cónica y
los puntos mediante métodos de gradiente, aunque no siempre convergen a la solución
óptima.
Para solucionar los casos en los que obtenemos soluciones que nos conduzcan a errores
en la reconstrucción de las imágenes, se pueden aplicar algoritmos basados en evolución
diferencial y algoritmos genéticos. Ya que tienen la flexibilidad de minimizar la
distancia euclidiana o su aproximación cuadrática. Un aspecto a tener en cuenta es que
el al emplear la distancia euclidiana e les da mayor peso a los puntos más cercanos, a
diferencia de su cuadrado, en el cual se da mayor peso a los puntos más lejanos como se
observa en los resultados.
2.8 Tipos de medición en Visión Artificial
Como ya hemos comentado anteriormente, son muchas las empresas dedicadas al
desarrollo y fabricación de sistemas de visión artificial. A continuación, realizaremos un
breve repaso de las opciones que nos ofrece una empresa puntera en el mercado como
es ISRA VISION. Donde podemos elegir entre distintos dispositivos en función de las
necesidades que se impongan en la aplicación donde se van a utilizar:
2.8.1
Visión Robótica 2D
Los sistemas de visión artificial 2D en robots son sistemas estándar para la
identificación y / o reconocimiento de posición sin contacto directo por el sistema.
Proporciona información fiable sobre la posición, el ángulo, y la variación de cualquier
parte. La principal ventaja es una velocidad de reconocimiento muy alta a nivel subpíxel de extracción de contorno preciso.
Características técnicas:
Resistente, robusto y económico
Máxima precisión en el reconocimiento de todo el camino desde el centro hasta el borde
de la imagen
El reconocimiento de partes de tocar o que se superponen unos a otros
Reconocimiento de objetos de diferentes tamaños y la rotación
Reconocimiento y diferenciación de la parte brillante en un fondo oscuro y parte oscura
en zonas con más luz
Fácil de usar
Página 21 de 77
Fig. 1: Visión 2D
2.8.2 Visión 3D con una cámara
En el pasado, los procesos y equipos disponibles para la medición 3D eran demasiado
complejos, demasiado costosos y por lo tanto no eran económicamente viables para
muchas aplicaciones. Hasta ahora, eran necesarios al menos dos cámaras (y
generalmente más), incluyendo los equipos periféricos necesarios, para definir las
posiciones de los objetos en una habitación. Esta es la razón por la que sólo fueron
utilizados en tareas muy sofisticadas que justifiquen los gastos.
El nuevo proceso de orientación 3D robot funciona con una sola cámara, lo que abre
nuevas perspectivas para los usos coste-eficacia de procesamiento de imagen en todas
las industrias importantes. Ahora es posible, con una sola imagen capturada, definir con
precisión un objeto de tres dimensiones sobre la base de la medición de tres criterios
con seis grados de libertad (posición y orientación).
Características técnicas:
Un ahorro considerable en el equipamiento de equipos y bajos costos de operación
Alta flexibilidad
Estacionario
Integración en prácticamente todos los procesos de producción y control de
simple
Requiere poco espacio y facilidad de integración en espacios reducidos
Ciclos de corta duración debido a un procesamiento rápido de la imagen
Calibración y programación simple
Fig. 2: Visión 3D con una cámara
2.8.3 Reconocimiento de formas 3D
Página 22 de 77
Muchos procesos de producción modernos de fabricación son altamente complejos.
Requiriendo un alto nivel de precisión y exactitud en las medidas realizadas, mayor
flexibilidad y coste-eficacia de automatización.
Características técnicas:
Alta precisión de la medición, incluso en la producción en línea
Simplicidad, ahorro de tiempo de instalación
Combinación de iluminación: con sistema multi-LED y la superficie de iluminación
Fig. 3: Sistema multi-LED
Fácil integración en redes de sensores
Precisión en la medición de hasta 0,01 mm
Diseño compacto
Continua medición 3D de objetos en movimiento
Fig. 4: Reconocimiento formas 3D
2.8.4
Reconocimiento mediante Fotogrametría 3D
Este sistema combina la información de varios sistemas de cámaras para determinar la
posición de los objetos de gran tamaño en un espacio dado con una alta precisión y
velocidad. Su función incluye el reconocimiento de los organismos como por ejemplo
de coches enteros. Identificando las variaciones de una posición determinada en seis
grados de libertad.
Página 23 de 77
Fig. 5: Reconocimiento de objeto
Características técnicas:
Rápido, sin interrupciones en la producción de medición 3D
Conjunto de cámaras flexibles
Auto-determinación de parámetros de adaptación
Totalmente automática de la calibración
Fácil integración e instalación
Medición de alta precisión
Fig. 6: Sistema de reconocimiento 3D con fotogrametría
2.8.5
Sensor óptico 3D estéreo
El sensor óptico 3D estéreo puede determinar las posiciones y los objetos midiendo en
seis grados de libertad mediante el uso de bordes, huecos, curvas o partes de un objeto
que puede ser descrito mediante sus elementos característicos (los bordes, las líneas o
contornos). El sensor se puede montar fijo, así como en un brazo de robot o sistemas de
manejo. Para lograr una precisión aún mayor, pueden ser utilizados múltiples sensores.
Características técnicas:
Medición 3D dada una geometría base
Configuración flexible
De calibración automática
Medición sin puntos de referencia
Página 24 de 77
Fig. 7: Sensor óptico 3D estéreo
2.8.6 Servo Visual 3D
Utilizado para describir la sincronización en el transporte del robot utilizando el sistema
de visión 3D. Esto permite un procesamiento de los procesos de montaje que tendrá
lugar durante la alimentación de componentes, como por ejemplo para el conjunto de la
rueda, o el llenado del tanque de gas en un vehículo en movimiento. En el seguimiento
de la costura, el robot se mueve exactamente en función de la geometría de los
componentes, por ejemplo para el sellado de las juntas precisa que no se ejecutan en una
línea recta.
Fig. 8: Servo visual 3D
Página 25 de 77
3
Software de Visión artificial
3.1 Introducción
La historia de la visión artificial ha estado ligada siempre al desarrollo de la
informática; este desarrollo se ha ido acentuando en los últimos años y con ello ha
aparecido una notable mejora de la visión artificial. En esta caso nos referimos a que el
software que se utiliza ha ido mejorando y permitiéndonos una gran cantidad de nuevas
posibilidades; aparte y en paralelo se ha desarrollado el hardware, pero atándose más a
una mejora en las nuevas tecnologías.
La captura y el tratamiento de imágenes se dividen en una serie de pasos, de los cuales,
la gran mayoría, se ha de llevar a cabo con un software específico, a pesar de los
indicados a continuación, se pueden realizar distintas subdivisiones de los distintos
pasos:
-El programa conecta el hardware (webcam) a un control.
-Del hardware capturas un frame.
-Pasas el frame a un mapa de bits (matriz).
Se trata ahora la imagen binaria con librerías especializadas.
Se devuelven los datos necesarios obtenidos de la imagen, o por otra parte, podemos
obtener la imagen tratada.
A partir de la captura de la imagen, todas las acciones a realizar requieren de un
software, esto explica la gran importancia de la evolución de la informática dentro de la
visión artificial.
Los programas de visión artificial tratan las imágenes de una manera similar, las
transforman en una matriz, dividiéndolas en pixeles, y les dan un valor; Este valor varía
dependiendo del programa, ya que puede tratarse de un único número, que nos indicaría
el tono del color del pixel, o puede trabajar con un vector, en este caso hemos de
entender el modelo de colores RGB (red-green-blue), que representa un color con una
matriz de 1x3 donde cuantifica la cantidad de rojo-verde-azul con los que se compone el
color. Como ejemplos podemos ver:
• negro (0,0,0)
• blanco(255,255,255)
• rojo(255,0,0)
• verde(0,255,0)
azul (0,0,255)
amarillo(255,255,0)
Página 26 de 77
Esta imagen se ha tratado y pasado a tonos de grises, luego en su matriz
tendremos píxeles de distintos tono de gris, la cifra de cada elemento solo muestra el
tono del color gris, y no de la mezcla RGB. (Imagen extraída de:
http://robotica.albacete.org/material/martes1.pdf)
Fig. 3-1
3.2 Clasificación
Para trabajar con un software de visión artificial se suele utilizar unos paquetes o
librerías de funciones que nos permitan trabajar con las imágenes y sus distintos
formatos. Podemos hacer una pequeña división dentro de todo el software de visión,
separándolo en tres grupos: por un lado tenemos aquellos paquetes que añadimos a
algún programa para posibilitar el trabajo con imágenes; tenemos una serie de librerías
que nos ofertan un gran número de funciones y que necesitan algún soporte software
sobre el que trabajar ( Compiladores C++, .NET …) y por último distinguimos todo el
software, que trabaja a modo de librería, pero que es específico de un determinado
hardware.
3.3 Paquetes de programas
3.3.1 MatLab
MatLab [“MATrix LABoratory”] es un programa que nos permite realizar
cálculos numéricos con vectores y matrices, en determinados casos nos permite el uso
de escalares y destaca por la representación de gráficos en dos y tres dimensiones
(http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Matlab42/matlab42.p
df ). Precisamente, por permitirnos trabajar con matrices, MatLab es de gran utilidad
para el tratamiento de imágenes, convirtiendo nuestra imagen en una matriz de pixeles y
Página 27 de 77
aportando un valor numérico correspondiente al color y tono de cada bit, aunque para
ello debemos añadir paquetes especializados.
Prácticamente todos hemos trabajado con MatLab, luego conocemos aquellas
funciones que nos permiten trabajar con matrices, pero el programa nos ofrece unas
específicas para el tratamiento de imágenes, por poner algunos ejemplos
(http://193.146.57.132/depeca/docencia/alumnos.php?codigo=31592):
[x , map]= gifread (“directorio de la imagen”);
La función de este comando es devolvernos la imagen que le pasamos por parámetro
indexada, y además un array con su mapa de colores (map).
Imshow ( x , map)
En este caso, la función del comando es la de mostrarnos esa imagen que anteriormente
tratábamos en gifread.
i=ind2gray( x , map);
Visualizamos la imagen en escala de grises que se guarda en i. Los valores de
luminancia resultantes van desde 0 (negro) a 1
(Blanco) y cada pixel es cuantificado con 8 bits (256 niveles de gris).
Estos son los comandos más básicos de MatLab para comenzar con el
tratamiento de la imagen, para ver mayor número de funciones mirar el enlace indicado.
3.3.2 LabView
Otra herramienta que nos permite trabajar con imágenes en tiempo real es LabView
(http://sine.ni.com/nips/cds/view/p/lang/es/nid/10419), aunque en este caso, nos ofrece
herramientas para una visión artificial de mayor nivel, para ello el programa se sirve del
módulo LabView NI Visión Development es para desarrollar aplicaciones de visión
artificial y de imágenes científicas de LabView. Incluye IMAQ Visión, una biblioteca
de poderosas funciones para procesamiento de visión y el Visión Assistant un entorno
interactivo para desarrolladores que necesitan generar rápidamente prototipos para
aplicaciones o que necesitan inspección fuera de línea. Por lo tanto, las dos principales
prestaciones de este módulo son:
Procesamiento de imágenes en escala de grises, a color y binarias.
Visión artificial de alto nivel, funciones para procesar imágenes y herramientas para
visualizar.
Los dos ejemplos anteriores se basaban en paquetes que se añaden a programas
para un mejor uso de este en visión artificial, pero podemos tratar las imágenes con
librerías exclusivas para este propósito que simplemente necesitan de un entorno de
desarrollo con un lenguaje específico y similar al de las funciones de las librerías.
3.4 Librerías de funciones
3.4.1 OpenCV
Página 28 de 77
La librería OpenCV creada por Intel (7), las siglas de la librería representan:”Open
Source Computer Visión Library”. Esta librería se centra en el tratamiento de imágenes
en tiempo real, luego es de gran utilidad para las aplicaciones en robots móviles, está
escrita en su mayoría en C, esto la hace portátil a otras plataformas; y es un sistema
multiplataforma (Windows, Linux…). Como el propósito de este estudio es la
aplicación de la visión artificial a un robot móvil podemos ahondar más en esta librería,
que nos ofrece funciones para, como ya se ha dicho antes, trabajar con imágenes en
tiempo real, y además aporta también tipos de datos necesarios para implementar las
funciones nombradas antes; algunas de las posibilidades que se nos presenta con esto es
por ejemplo: reconocimiento de objetos, reconocimiento de rostro, seguimiento de
movimiento… Todo ello aplicable a proyectos de robótica móvil.
Para comenzar a trabajar con OpenCV existen varias posibilidades, pero casi
todas ellas pasan por compiladores de C tales como Visual C++, Devcpp…Y a través de
internet podemos acceder a todas las funciones que nos ofrece la librería (wikipedia) y
como
usarlas
(http://opencv.willowgarage.com/wiki/FullOpenCVWiki
///////http://docenciaeupt.unizar.es/ctmedra/tutorial_opencv.pdf). Como con matlab ponemos algunos
ejemplos básicos de las funciones que ofrece OpenCV:
void cvNamedWindow (char name, int type); Crea una ventana gráfica dándole
nombre y tamaño por parámetro.
void cvShowImage (char name, CvArr* img); Dibuja una imagen pasado por
parámetro (img) en aquella ventana que nosotros le indicamos.
void cvmGet (const CvMat* mat, int row, int col); Nos indica el valor de uno de los
elementos de la matriz con la que estamos trabajando, es decir, indica el color del pixel
situado en esa posición de la matriz.
(Imágenes extraídas de: http://docencia-eupt.unizar.es/ctmedra/tutorial_opencv.pdf
como ejemplo de lo que podemos realizar con OpenCV)
3.4.2 MIL
Otro ejemplo de librería es MIL (9), Matrox imaging library; librería de alto nivel con
un gran número de funciones y algoritmos de captura, display, gráficos, procesamiento
Página 29 de 77
y análisis de imagen…, que al encontrarse agrupadas en diferentes módulos permiten
realizar aplicaciones de visión artificial de alto rendimiento en un tiempo reducido. Las
librerías están disponibles para Windows XP y Windows CE. Para más información
sobre esta librería podemos consultar:
http://www.interempresas.net/FeriaVirtual/Catalogos_y_documentos/81191/Software_
Matrox_Imaging_Library.pdf
3.4.3 Mavis
Otro ejemplo más es Mavis, se trata de un paquete de visión para los robots
móviles.Esta librería está orientada a las tareas de visión diseñadas específicamente
para los robots móviles: localizar homebase , detectar obstáculos y así sucesivamente.
La versión actual también incluye la detección de rostros.
Mavis se ejecuta en Windows XP. Su interfaz se implementa como una dll
independiente, por lo que los usuarios mavis pueden desarrollarse en cualquier lenguaje
que se vincula a DLL ' s, incluyendo C o C++, Visual Basic, Java, Lisp, PROLOG o
Forth.
Mavis se implementa como una clase de C++. Requiere un programa para cargar y
ejecutarlo, este programa se llama MavisCtl—Mavis, se trata de un programa de control
que muestra los comentarios visuales de mavis como una imagen en su GUI. Puede
también "hablar" directamente a mavis, cargar la dll de interfaz y utilizar la API de
mavis. Cuando se carga la dll, MavisCtl muestra una GUI para controlar mavis
directamente. (http://robinhewitt.com/mavis/. Esta traducido, luego puede existir algún
error).
3.4.4 CMUcam(softw are)
Dejando de lado las librerías especializadas, existe toda una línea de software para la
CMUcam, hardware de introducción a la visión artificial y que también se trata en este
trabajo. Actualmente el software facilitado trabaja sobre la versión CMUcam3 del
hardware; este software se basa en el proyecto cc3 ofreciendo un entorno de desarrollo
de código abierto flexible y de fácil uso, además se ofrece también una serie de
compiladores para dicho código. Sobre este tema se trata en apartados posteriores. Y en
Internet, en el enlace (http://www.CMUcam.org)
Página 30 de 77
4
Detección de Objetos
4.1
VISION BIDIMENSIONAL
El objetivo general de una máquina vidente es derivar una descripción de una escena,
analizando una o más imágenes de dicha escena. En algunas situaciones la escena
misma es básicamente bidimensional. Por ejemplo si el robot trabaja con piezas planas
sobre una superficie plana, o si busca perforaciones en tal superficie.
La visión para situaciones bidimencionales es más fácil que para las tridimensionales, y,
como era natural, los primeros trabajos sobre máquinas videntes se hicieron en esa
modalidad.
El proceso de visión bidimensional
Para que un robot reconozca partes, perforaciones, etc. en una superficie, y en general
objetos, Primero debe distinguir los objetos de interés del resto de la superficie. En otras
palabras, debe ser capaz de "destacar" partes de la imagen que corresponden a esos
objetos. Este proceso de extraer subconjuntos de una imagen que corresponden a partes
relevantes de la escena se denomina SEGMENTACION.
Página 31 de 77
(foto extraída de "Detección de objetos por segmentación multinivel combinada de
espacios de color")
Cuando se ha extraído un subconjunto de una imagen, generalmente es necesario medir
varias propiedades geométricas de tal subconjunto (tamaño, forma, etc.) tales medidas
pueden ser la base para reconocer si el subconjunto representa un objeto dado, así como
para determinar la posición y orientación de tal objeto. También pueden servir de base
para una posterior segmentación dentro del subconjunto; por ejemplo, si dos objetos se
tocan o superponen, puede ocurrir que hayan sido extraídos como un solo subconjunto,
y puede ser necesario dividir este subconjunto en dos partes basándose en criterios
geométricos, por ejemplo descomponiéndolo en partes convexas. Esta etapa del proceso
de visión se denomina ANALISIS GEOMETRICO. Se pueden diseñar diferentes
Página 32 de 77
algoritmos para Análisis Geométrico, dependiendo de la manera como estén
representados los subconjuntos de imagen dentro del computador, por esto el tema de la
La representación geométrica de subconjuntos de la imagen está estrechamente
relacionada con el Análisis Geométrico.
4.1.1
Segmentación
Una IMAGEN DIGITAL es una matriz de números que representan valores de
iluminación en puntos regularmente espaciados de la imagen de una escena. Los
elementos de más bajo nivel de tal imagen se llaman PIXELs (contracción de "Picture
Element"), y sus valores se denominan NIVELES DE GRIS (el color casi no ha sido
utilizado aún en los sistemas de visión robóticos). La efectividad de una técnica de
Segmentación depende de las propiedades de la clase de imágenes a que se aplique.
4.1.2
Establecimiento de umbrales
Si el brillo de un objeto difiere significativamente del de su entorno, origina en la
imagen un conjunto de pixels con Niveles de Gris muy diferentes de los Niveles de los
pixels circundantes. (A menudo pueden producirse grandes diferencias de brillo entre
un objeto y su entorno controlando el ángulo en que incide la luz). Los subconjuntos de
imagen con esa característica pueden extraerse de la imagen estableciendo un
UMBRAL para los Niveles de Gris, o sea clasificando cada pixel como "claro" u
"oscuro" dependiendo de si su Nivel de Gris es inferior o superior al umbral.
Si la iluminación de la escena está bajo nuestro control, y podemos también calibrar el
sensor, puede ser posible establecer un umbral permanente para segmentar
correctamente escenas de determinada clase, pero, en general, será necesario determinar
el umbral óptimo para cada imagen individual. Si los objetos ocupan una fracción
significativa de la escena, esa determinación se puede hacer analizando el
HISTOGRAMA DE LA IMAGEN, el cual es un gráfico que nos muestra la
frecuencia con que ocurre en la imagen cada Nivel de Gris.
Página 33 de 77
Este histograma debe tener dos picos, uno que representa el Nivel de Gris predominante
en el fondo, y otro el predominante en el objeto. Los Niveles intermedios deben ser
relativamente infrecuentes, correspondiendo en el histograma a valles entre los picos.
Evidentemente, en estos casos un buen Nivel en el cual establecer el Umbral es el más
infrecuente entre los Niveles de los dos picos (o sea correspondiente al punto más bajo
del valle entre picos), ya que casi todos los pixels del objeto caen a un lado de tal
umbral, y casi todos los pixels del fondo caen al otro lado.
Si la iluminación de la escena no es uniforme, puede suceder que objetos
intrínsecamente oscuros a un lado de la escena resulten más brillantes que un fondo
intrínsecamente claro en otro lado, de tal manera que los objetos no pueden ser
separados del fondo por la simple comparación con un umbral. Una manera de atacar
esta situación es dividir la imagen en secciones y escoger un umbral adecuado para cada
sección analizando su propio histograma. Posteriormente esos histogramas pueden ser
interpolados para obtener un umbral variable que segmente convenientemente la imagen
completa.
4.1.3
Bases de la visión en color para máquinas
Página 34 de 77
Como se mencionó antes, la visión robótica a color ha sido poco estudiada en general,
aunque tiene un papel muy importante en aplicaciones específicas. El color en un punto
de una imagen puede representarse por tres números que representen, por ejemplo, los
niveles de las componentes roja, verde y azul. Entonces una Imagen Digital a Color es
una matriz de tripletas de valores. Si esos niveles de los pixels se grafican como puntos
de un "espacio cromático", el objeto y el fondo originan cúmulos de puntos. Tales
cúmulos son análogos a los picos del histograma y la imagen se puede segmentar en
regiones de diferente color parcelando el espacio cromático de tal manera que se
separen los cúmulos. Este ha sido el método clásico utilizado para segmentar las
imágenes obtenidas por los sensores remotos multiespectrales, pero aún no tiene
utilización extensiva en visión robótica.
4.1.4
Detección de bordes
Los objetos pequeños no se extraen fácilmente del fondo en que se ven, utilizando el
método del umbral, porque los picos que producen en el histograma son demasiado
pequeños para detectarlos con confiabilidad. Similarmente, si una escena contiene
muchos objetos de diferentes brillos, tampoco es fácil extraerlos por el método del
umbral, porque sus picos respectivos en el histograma se superponen. En tales casos se
puede utilizar otros métodos para segmentación, con tal de que los objetos posean un
brillo relativamente uniforme y que contrasten fuertemente con su inmediato entorno.
Página 35 de 77
Esto implica que la variación de nivel de gris ocurre muy gradualmente dentro de cada
objeto, y rápidamente en los bordes de objetos. En tal caso los objetos se pueden extraer
por Detección de Bordes, o sea detectando los pixels en los cuales la rata de cambio del
Nivel de Gris respecto al espacio es alta.
4.1.5
Creación de regiones
Los métodos de segmentación discutidos hasta ahora tratan cada pixel o su vecindad
independientemente; no les concierne si los píxels resultantes constituyen una región
conectada o si los segmentos de bordes resultantes constituyen una frontera suave de
alto contraste. Se pueden obtener regiones o bordes de mejor calidad condicionando los
resultados a que sean localmente consistentes, o sea que las regiones estén conectadas o
que los bordes se encadenen suavemente. Para asegurar continuidad se puede utilizar
métodos de seguimiento secuencial de los bordes, o acreción de regiones. Un método
más poderoso, pero computacionalmente más costoso es buscar consistencia global por
partes, o sea buscar regiones que sean óptimas con respecto a la consistencia o suavidad
del Nivel de Gris, o bordes que sean óptimos respecto a contraste y a suavidad de la
dirección. Un método útil para hallar regiones globalmente consistentes, es un proceso
de "dividir y unir", en el cual las regiones se dividen si son inconsistentes, y se unen
pares de regiones adyacentes si su unión es consistente.
4.1.6
Análisis Geométrico
Una vez que en una imagen se ha segmentado una región , esta se puede representar por
una imagen binaria, en la cual los pixels que pertenecen a la región tienen valor 1, y los
del fondo tienen valor 0. De esta imagen binaria se pueden calcular varias propiedades
geométricas de la región. Este proceso se denomina a veces como VISION BINARIA.
4.1.7
Propiedades de tamaño y forma
El área de una región se puede medir aproximadamente en función del número de sus
pixels, o sea el número de pixels que tienen una marca particular. A su vez, el perímetro
es función del número de pixels del borde externo, o (para un borde específico) el
número de movimientos necesarios para dar la vuelta por el borde pixel por pixel. Un
parámetro geométrico usado frecuentemente y que mide lo compacto de una región es:
C= Área/(perímetro)2. La elongación de una región se puede definir usando un proceso
Página 36 de 77
de adelgazamiento y medición de área; una región es elongada si aunque tenga gran área
desaparece al aplicarle un ligero adelgazamiento. Las medidas de distancia son otra
fuente de información útil sobre las formas.
Muchas propiedades formales de una región se pueden derivar midiendo la curvatura (o
sea la tasa de cambio de dirección) de su borde externo. Son concavidades las partes del
borde con curvatura negativa, o sea aquellas donde la dirección cambia el el sentido
opuesto a las agujas del reloj cuando el borde se sigue en el sentido de dichas agujas.
Las esquinas son puntos del borde donde la curvatura pose un valor absoluto muy alto.
Tales propiedades formales son útiles para segmentar una región en caso de ser
necesario, por ejemplo cuando dos objetos de la escena se tocan o se superponen
parcialmente.
4.1.8
Representaciones geométricas
Una región no tiene que ser representada por el conjunto de unos en su imagen binaria,
se pueden usar otras representaciones más compactas si la forma de la región es simple.
Las siguientes son algunas de las más conocidas:
4.1.8.1 Código de Longitud de Secuencia
Cada fila de la imagen binaria consiste en secuencias de unos alternadas con
secuencias de ceros. Así que una fila se determina completamente con especificar el
valor inicial 0 o 1 y las longitudes de las cadenas. La mayoría de las propiedades
geométricas de una región pueden medirse directamente de su código de Longitud de
Secuencias. Este método de codificar una imagen ha sido muy utilizado en compresión
de datos.
4.1.8.2
Código de Encadenamiento
La secuencia de movimientos hechos al seguir un borde, junto con las coordenadas del
punto de arranque, determinan completamente dicho borde; esta secuencia de
movimientos se denomina el código de encadenamiento del borde. Una región queda
determinada al especificar sus bordes de este modo, y muchas propiedades de la región
se pueden calcular directamente a partir de esta codificación de los bordes. El mismo
proceso se puede utilizar para codificar y procesar curvas digitalizadas.
4.1.8.3
Árbol Tetrafurcado ("Quadtree")
Cualquier región es la unión de los bloques máximos de pixels (ej: cuadrados) que están
contenidos en la región; así que la región queda determinada al especificar la lista de
centros y tamaños de esos bloques (cuadrados). Tal representación es muy compacta
Página 37 de 77
pero algo difícil de trabajar puesto que es una lista no ordenada. Una representación
menos compacta pero más tratable es la denominada Árbol Tetrafurcado ("quadtree")
que se obtiene al subdividir recursivamente la imagen binaria en cuadrantes,
deteniéndose la subdivisión de un bloque cuando todos sus pixels son iguales. El
proceso de subdivisión recursiva define una estructura de árbol que se va ramificando
en dos a cuatro ramas; el árbol facilita el procesamiento para cálculos geométricos.
4.1.8.4 Otras Representaciones
También son útiles varios métodos para aproximar la forma de una región. La frontera
de una región puede ser aproximada por un polígono. Una región similar a una cinta
posee un eje medio en el cual los centros de los cuadrados máximos caen
aproximadamente a lo largo de una curva (el esqueleto de la cinta); entonces la región
se puede aproximar especificando esa curva junto con una función de amplitud que
especifica cómo varían los tamaños de los cuadrados al movernos sobre la curva. Las
aproximaciones poligonales sucesivas a una curva se pueden organizar en una estructura
de árbol, en la cual un nodo representa el lado de un polígono que aproxima un arco
dado de la curva y los hijos de ese nodo representan los lados de un polígono refinado
que aproximan su barcos del arco.
4.2
VISION TRIDIMENSIONAL
La visión es mucho más compleja si requerimos tratarla tridimensionalmente, por
ejemplo si el robot debe trabajar con una pila de objetos, o tiene que determinar la
orientación de un objeto en el espacio. En tales escenas las superficies de los objetos
pueden tener orientaciones variables y, por ejemplo, un objeto uniformemente
reflectante puede no aparecer con brillo uniforme.
También es difícil obtener información uniforme; las sombras son inevitables. Si se
pueden calcular los efectos de la iluminación y de la orientación de las superficies, se
puede corregir la información de brillo de la imagen, de manera que está presente la
reflectividad intrínseca de las superficies para luego segmentar la imagen en regiones
que correspondan a superficies uniformemente reflectivas.
Página 38 de 77
(extraído de la tesis Sistema de Visión Artificial Para el reconocimiento y manipulación
de objetos usando un brazo robot) .
Además, si se conoce la orientación de una superficie en todos los puntos, se puede
segmentar la imagen en regiones dentro de las cuales no hay cambios abruptos en la
orientación y que entonces probablemente pertenecen a las superficies de un mismo
objeto. Pero aún si se logra un segmentación correcta, el reconocimiento del objeto
tridimensional aún es difícil porque tal objeto puede originar en la imagen regiones de
formas (bidimensionales) muy variadas según su orientación. Además, sólo vemos un
lado del objeto desde un punto de vista dado, y los objetos pueden ocultarse
parcialmente entre sí, lo cual significa que el reconocimiento se debe basar en datos
incompletos.
4.2.1
Forma a partir de sombreado
En la vecindad inmediata de un punto P, la iluminación tiende a ser aproximadamente
constante, excepto en el borde de una sombra. Entonces, si P está en una superficie
uniformemente reflectiva, las variaciones del brillo (sombreado) en la vecindad de P, se
deben principalmente a variación en la orientación de la superficie.
Página 39 de 77
(extraído de la tesis Sistema de Visión Artificial Para el reconocimiento y manipulación
de objetos usando un brazo robot).
Las variaciones del brillo no determinan completamente la orientación de la superficie,
pero sí la restringen, y si se conocen en ciertos puntos de una región esto puede permitir
el determinar la orientación en el resto de la región
(extraído de la tesis Sistema de Visión Artificial Para el reconocimiento y manipulación
de objetos usando un brazo robot)
4.2.2
Forma a partir de textura
Página 40 de 77
Si una superficie tiene una textura o trama visual uniforme, dará origen a una región de
la imagen en la cual dicha trama no es uniforme, debido a efectos de la orientación de la
superficie. La dirección de la superficie, en principio, se puede deducir a partir de
mediciones locales de la anisotropía de la trama visual de la imagen. Una técnica
relacionada con este principio consiste en iluminar la escena con un patrón o trama
regular de luz y sombras (ejemplo: rejilla uniforme de huecos cuadrados). Las
distorsiones de tal trama, como aparecen en la imagen, proporcionan información acerca
de las orientaciones superficiales. Tal tipo de iluminación recibe el nombre de
"estructurada".
4.2.3
Forma tridimensional a partir de forma bidimensional
También se pueden obtener indicios acerca de las formas tridimensionales de las
superficies de la escena a partir de las formas bidimensionales de los rasgos. Un
ejemplo primitivo de este concepto, usando aristas lineales, demostró que las formas de
las esquinas donde se unen las aristas dan información útil sobre cuales superficies de
las que se encuentran en una de esas uniones pertenecen a un mismo objeto.
Posteriormente se generalizó este trabajo basándose en que un borde en una imagen
puede originarse por varios tipos de cambios abruptos en la escena, incluyendo cambios
en la iluminación (bordes por sombra), ocultamiento parcial, o marcas en una misma
superficie. Cuando las aristas se reúnen en un punto (vértice) no son posibles todas las
combinaciones de esos casos, y cuando se consideran todas esas uniones en la imagen,
se reduce mucho el numero de posibilidades. En principio es posible distinguir entre
varios tipos de aristas analizando cuidadosamente las variaciones de brillo en su
vecindad. Cuando superficies planas se encuentran en un vértice, las orientaciones
espaciales de las superficies están restringidas, y esto da información útil acerca de la
forma de poliedros.
Las formas de los bordes o regiones en una imagen, también pueden dar información
cuantitativa sobre la forma de la superficie si se hacen ciertas asumisiones respecto a los
extremos. Por ejemplo, una curva en una imagen puede ser producida por muy
diferentes curvas en el espacio, pero muchas veces se puede asumir que la curva real en
el espacio es la que tiene la menor curvatura posible. Similarmente, una región en una
imagen puede originarse por diversos trozos de superficie en el espacio, pero se puede
asumir que el trozo real de superficie es el que tiene la forma más simple, o sea la más
simétrica y compacta.
4.2.4
Detección de distancia y visión en estéreo
Si disponemos de dos imágenes de una misma escena tomadas de dos posiciones
diferentes conocidas, y si podemos identificar en ambas los dos puntos correspondientes
a un mismo punto P de la escena, entonces se puede calcular por triangulación la
posición del punto P en el espacio. La principal dificultad es el identificar los pares
correspondientes de puntos de imagen.
También se puede derivar la forma de la superficie a partir de múltiples imágenes
tomadas desde una misma posición. pero bajo diferentes condiciones de iluminación. El
sombreado en cada imagen impone restricciones en las orientaciones de las superficies
en cada punto, y la intersección de esas restricciones determina la orientación sin
ambigüedad. En esta técnica, conocida como "estéreo fotométrico" no hay problema en
Página 41 de 77
identificar un par de puntos correspondientes, puesto que las imágenes están en perfecto
registro.
La información sobre la forma de las superficies estaría inmediatamente disponible si se
pudiera medir directamente la distancia a cada punto superficial visible. Se han
desarrollado varios tipos de sensores de distancia. Un método es iluminar una parte de
la escena cada vez, por ejemplo con un plano de luz; la posición espacial de un punto
iluminado puede quedar completamente determinado por su posición en la imagen, ya
que debe quedar a lo largo de una dirección espacial dada (la dirección de la visión) y
también sobre el plano de luz. Otro método consiste en iluminar la escena punto por
punto, con un pulso de luz, y medir la distancia hasta el punto iluminado por medio del
desplazamiento de fase o retardo entre el envío del pulso y el retorno del reflejo.
4.2.5
Reconocimiento de objetos tridimensionales
En la imagen segmentada de una escena tridimensional las regiones representan parches
de superficie. El reconocimiento de objetos tridimensionales a partir de una imagen
bidimensional es difícil porque solamente se ve un lado de los objetos, aún ignorando la
posible ocultación de un objeto por otro, y las formas de las partes visibles dependen de
la orientación del objeto. Si se sabe de antemano qué posibles objetos pueden aparecer
en la escena, una técnica sería almacenar descripciones de esos objetos como se verían
desde varias decenas de puntos de vista, para hacer una comparación de formas, pero
esto es computacionalmente costoso.
Se pueden definir descripciones tridimensionales de objetos de varias maneras. Un
objeto se puede determinar especificando las formas de sus superficies, las cuales se
pueden aproximar por "parches" de varios tipos estándar, (Como en el caso
bidimensional, las aproximaciones sucesivas se pueden organizar en un árbol). Un
objeto también se puede aproximar por la unión de "cubos máximos" de varios tipos.
Los cubos máximos se pueden organizar en una estructura de árbol ramificado de a 8
ramas ("octree"), definido subdividiendo recursivamente el espacio en octantes.
Dado un conjunto de tales descripciones tridimensionales de objetos, estos se pueden
reconocer en la imagen por un proceso de análisis de restricciones. Una región o borde
en la imagen no puede ser proyección de cada posible borde o superficie de un objeto;
sólo se puede originar de un subconjunto de los objetos posibles, y estos tienen que
estar en un subconjunto de las posibles orientaciones espaciales. Si un conjunto de
bordes o regiones es consistente, en este sentido, con la presencia de cierto objeto en
cierta orientación, hay evidencia fuerte de que este objeto está presente en la escena
4.2.6 Ejemplo de Aplicación Real
(Extraído de la tesis "Sistema de Visión Artificial Para el reconocimiento y
manipulación de objetos usando un brazo robot")
Proyecto en el cual un brazo robot permitirá seleccionar objetos (tornillos, tuercas,
llaveros, etc.) que se encuentran en una mesa, independiente de la posición y
orientación.
Página 42 de 77
5
Seguidor de líneas
5.1 Introducción
Un robot seguidor de línea se clasifica en el campo de la robótica móvil un grupo de la
rama de robótica. La tarea fundamental de un robot móvil es el desplazamiento en un
entorno conocido o desconocido, por tanto es necesario que posea tres funciones
Página 43 de 77
fundamentales, la locomoción (nivel físico), la percepción (nivel sensorial) y la decisión
(nivel de control).
En esta prueba se valora la capacidad de un robot de realizar un recorrido por una pista
con diversas rutas alternativas. Se trata de explotar la capacidad de seguimiento de
caminos complejos, y de la capacidad de detección inequívoca de marcas para indicar
rutas.
La pista será una línea negra sobre fondo blanco, y suele medir entre 1.5 y 2.5 cm. Para
tomar un camino correcto ante una bifurcación, habrá una marca paralela a la pista,
separada por unos centímetros. El circuito utilizado con estos robots tendrá el número
de curvas que se deseen.
Fig.1. Ejemplo de circuito para seguidor
http://mecatronica.files.wordpress.com/2008/03/p1010596.jpg
5.2
Ejemplos de robots con estas características
5.2.1 Robot velocista con visión
Según los creadores del robot NV-BOT [1]. Desarrollan un robot en el que mezclan
estas características de visión artificial con otro tipo de sensores, como son los sensores
por infrarrojos, utilizando los CNY70.
La principal función del robot es seguir una línea a través de una cámara de visión
artificial en blanco y negro que nos permite conducir al robot a largo plazo, ya que
obtenemos las coordenadas reales de la línea. Además de dos sensores de infrarrojos
que no proporcionarán un control reactivo para no salirnos de la pista.
Página 44 de 77
Fig.2 Robot NV-BOT [1]
La forma de controlar al robot se divide en dos partes, una es la visión de la cámara y
otra los infrarrojos, es decir, control a largo plazo y control a corto plazo
respectivamente.
La secuencia en el ciclo de la visión [1] es la siguiente:
- Adquirir una imagen gris.
- Realizar un filtro paso bajo de la imagen para eliminar el ruido producido por los
focos de luz.
- Calcular los bordes en la imagen. Usando una máscara para realzar los puntos más
relevantes de la imagen.
- Realizar un filtro paso alto de la imagen de bordes para eliminar el ruido producido
por las perturbaciones en el suelo.
- Para cada línea horizontal de la imagen de bordes encontrar los 4 puntos más
relevantes. Esto divide en cinco segmentos la línea horizontal de la imagen original.
- Para cada línea horizontal de la imagen encontrar los segmentos más oscuros. Con esto
ya se puede decir que el robot ‘ve’ la pista.
- Convertir la información obtenida en coordenadas reales 2D. Se utiliza un proceso de
calibración previo a la competición en donde se calcula la correspondencia entre valores
de píxel con valores reales en 2D.
- Calcular el centro de la pista.
- Calcular la dirección a la cual se quiere conducir al robot. A partir del centro de la
pista se busca un punto al cual se pretende ir. Esto nos da una posición y una
orientación.
- En función de la dirección y orientación se calcula la velocidad lineal y la velocidad
angular que el robot debe tener hasta el siguiente ciclo de control.
La secuencia en el ciclo de los infrarrojos [1] es la siguiente:
- Leer los sensores.
- Si se activa alguno de los sensores, inhibe el control de visión y activa el control de
infrarrojos.
Página 45 de 77
- En función de los sensores modificar la velocidad lineal y angular. Dado que no se
deben activar los dos a la vez el control lo que hace es mantener la velocidad lineal y
variar la velocidad angular hacia el lado contrario del sensor activado.
Un esquema más reducido sería el siguiente:
La ventaja de usar una cámara junto con otros sensores es que puedes realizar un control
a largo plazo, aún así también hay que tener en cuenta que para poder utilizar la cámara
se deben tener microprocesadores más rápidos para así poder tener una respuesta más
eficiente.
5.2.2
Control cinemático de robots autoguiados utilizando un
sistema de visión artificial
Para esta automatización de los robots para su auto guiado se implementa una
realimentación y un control.
Según los autores de [2], el control que se realiza es dinámico puesto que a velocidades
bajas la influencia de la dinámica es pequeña. Para obtener la “postura” (posición +
orientación) del vehículo, y poder realimentarla, hay que utilizar algún sistema de
posicionamiento.
Tenemos diferentes posibilidades para la realización de este control cinemático:
Basado en curvas cinemáticas: En este tipo de control podemos utilizar curvas
paramétricas suaves y para alcanzar la referencia basta con seguir la curva paramétrica.
El principal inconveniente es que es un control en bucle abierto.
Basado en aproximación lineal: Trabajamos con el modelo cinemático aproximado
lineal entorno a un punto de funcionamiento. El inconveniente es que a medida que nos
alejamos del punto de funcionamiento el resultado no es bueno.
Basado en estabilidad de control no lineal: En este tipo de control, lo difícil es
encontrar la acción de control no lineal que garantice la estabilidad del sistema. En [3]
se realiza un control discreto adaptativo ajustando unos parámetros de control para que
sea estable.
Basado en liberalización por realimentación de estado: Consiste en realizar una
liberalización por realimentación del estado del modelo cinemático no lineal para poder
después aplicar un control lineal.
Página 46 de 77
5.3 Sistema de posicionamiento del robot por visión
En primer lugar se realiza el tratamiento de la imagen, para obtener de ella todo lo
característico del entorno, es decir, las líneas, las curvas, los objetos…
Para analizar la imagen seguimos los siguientes pasos:
Filtramos la imagen en función del color que busquemos, por ejemplo, en un seguidor
de líneas filtraríamos la imagen en función del color negro que sería el color de la línea.
Realizamos un contraste máximo en la imagen.
Hacemos un clustering o agrupación de los pixeles con valor negro, esta fase es muy
importante, por lo tanto es muy importante tener un buen sistema de clustering.
En el caso de seguimiento de una línea [2]:
Fig. 3. Vista general del robot [2]
Fig.4. Situación de la cámara del robot [2]
Siendo la dirección de la línea yw, v la altura a la que esta la cámara y el ángulo de
cabeceo constante.
Al ser v y  constantes, podemos obtener la siguiente expresión:
[2]
Estando los puntos de referencia a una distancia d de la línea:
[2]
Utilizando la siguiente ecuación: [2]
Página 47 de 77
Despejando en ella las variables que nos darán la situación de nuestro posicionamiento,
nos queda:
Siendo h: [2]
Después de realizar esta serie de cálculos geométricos, podemos determinar el
posicionamiento que tendrá el robot a partir de las variables iniciales y dos puntos de la
imagen para los que conocemos la línea en la que están.
5.4 Robot Pob-Bot
Otro ejemplo de robot sería el diseñado por POB Tecnology [3] que utiliza la cámara de
visión artificial POB-EYE además de los sensores de infrarrojos para realizar el
seguimiento de la línea:
La cámara de visión artificial le daría al robot una mayor autonomía al robot, siendo el
dispositivo encargado del reconocimiento real de tiempo.
Como vemos en la figura, se produciría una combinación del robot Pob-Bot,
añadiéndole los elementos adecuados para convertirlo en un seguidor de línea, también
podría ser utilizado como sistema de detección de bolas de color gracias a la cámara de
visión artificial.
Página 48 de 77
Fig.5. Robot seguidor de líneas POB-BOT [3]
El seguidor de línea está compuesto por dos sensores de color, un sensor de distancia
GP2D12 y la cámara de visión artificial.
Este robot es capaz de seguir la línea de color negro y detenerse justo cuando tenga un
obstáculo delante de ella.
El programa utilizado para el robot se divide en dos partes, una de ella para seguir una
línea de color negro y otro que además de seguir la línea se para cuando hay un
obstáculo.
La primera de las partes realiza lo siguiente:
El robot sigue la línea de negro:
Si los sensores no detectan color negro, el robot hacia delante.
Si el sensor detecta el color negro la derecha, el robot gira a la derecha.
Si el sensor detecta la izquierda el color negro, el robot gira a la izquierda.
Si los sensores detectan el color desde el negro (todos los 2), se detiene el robot.
Volver a la parte superior del programa.
La segunda parte:
Inicio de la subrutina.
El robot sigue la línea de negro:
Si el robot encuentra un obstáculo, se detiene el robot.
Si el robot encuentra ningún obstáculo, el robot continúa.
Página 49 de 77
Volver a la principal del programa.
5.5 Otros robots
Otro robot seguidor de línea es el X-RUNNER creado por x-robotics que es un robot
velocista sigue líneas dotado de visión artificial en tiempo real, capaz de anticiparse a
las curvas frenando y adaptando la velocidad, además de posibilitar el derrape y vuelta a
la trayectoria de seguimiento.
Fig.6. Robot X-RUNNER
http://www.x-robotics.com/
Página 50 de 77
6
CMUcam
6.1 Introducción
CMUcam es un nuevo sensor de bajo costo y baja potencia para los robots móviles. El
sistema de visión CMUcam se puede utilizar para hacer muchos tipos diferentes de
montajes que requieran procesamiento de la visión en tiempo real. Debido a que la
CMUcam utiliza un puerto serie para comunicaciones, puede ser directamente
conectada con otros procesadores de baja potencia, tales como chips tipo PIC.
Usando una CMUcam, es fácil hacer una cabeza de robot que gire para hacer el
seguimiento de un objeto. También se puede construir un robot con ruedas que persiga a
un objeto, o incluso persecuciones entre robots, seguimiento de línea, etc. Más adelante
se mostrarán ejemplos del uso de la CMUcam.
6.2 Características
Existen en la actualidad tres versiones de la CMUcam, todas ellas con
características comunes y a la vez con características especiales, que por lo general son
mejoras que se aportan en las nuevas versiones.
6.2.1
Tipos de CMUcam
En la actualidad existen tres implementaciones de la CMUcam, las cuales se detallan a
continuación.
6.2.1.1 CMUcam Original
Imagen 1.2.1.1-1 CMUcam ORIGINAL
(http://www.cs.cmu.edu/~cmucam/Pictures/camfrontal_small_edit01.jpg)
Características específicas de la CMUcam:
Velocidad de captación de fotogramas de 17 por segundo
Seguimiento de la posición y el tamaño de un objeto o de colores brillantes
Medir el RGB o YUV las estadísticas de una región de imagen
Adquirir automáticamente la pista y el primer objeto que ve
Seguimiento mediante un servo conectado directamente
Página 51 de 77
Volcado de una imagen completa sobre el puerto de serie
Volcado de un mapa de bits que muestra la forma del objeto de un seguimiento
6.2.1.2 CMUcam2
Imagen 1.2.1.2-1 CMUcam2
(http://www.cs.cmu.edu/~cmucam/cmucam2/images/cmucam2_edit02.jpg)
Características específicas de la CMUcam:
Velocidad de captación de fotogramas: 17 por segundo
Seguimiento de la posición y el tamaño de un objeto o de colores brillantes
Medir el RGB o YUV y generar estadísticas de una región de la imagen
Adquirir automáticamente la pista y el primer objeto que ve
Seguimiento mediante un servo conectado directamente
Volcado de una imagen completa sobre el puerto de serie
Volcado de un mapa de bits que muestra la forma del objeto de un seguimiento
6.2.1.3 CMUcam3
Imagen 1.2.1.3-1 CMUcam3
(http://www.cs.cmu.edu/~cmucam/cmucam3_banner.jpg)
Características específicas de la CMUcam3:
Fuente totalmente abierta y programable usando GCC
Resolución CIF (352x288) sensor de color RGB
Entorno de desarrollo de código abierto para Windows y Linux
MMC / SD Slot Flash con FAT16 de ayuda al conductor
Controlador de cuatro servo puerto
La tasa de procesamiento de imagen de 26 fotogramas por segundo
La luz de Lua-intérprete de lenguaje de peso para la creación rápida de prototipos
Página 52 de 77
Software de compresión JPEG
Manipulación básica de imágenes de la biblioteca
Imagen arbitraria o recorte de la imagen y disminución de resolución
Umbral y funciones de convolución
RGB, YCrCb y el espacio de color HSV
Emulación CMUcam2
Manchas de color definidas por el usuario
Marco de diferenciación
La media y la varianza de los datos captados
Envío de imágenes RAW por puerto serie
Generación de Histograma
B / W de salida de vídeo analógico (PAL o NTSC)
Buffer de imagen FIFO para pasar varios hi-res de procesamiento de imágenes
Interfaz de red inalámbrica Mote (802.15.4)
Tmote Sky / Conexión Telos
CAM virtual para prototipos en el PC
CMUcam3-Frame-Grabber para ver las imágenes en el PC
6.3
Implementación (modos de uso)
Esquema de Sergio
Se quiere hacer un robot con visión,
¿Qué posibilidades me aporta la CMUcam?
Que tengo que hacer para empezar a trabajar con la CMUcam
¿Cómo funciona la CMUcam?
¿Qué hacen sus funciones principales?
A continuación se presentará un ejemplo práctico
6.4
Ejemplos y aplicaciones
PIC y Handyboard CMUcam
Códigos de programación desarrollados por los alumnos de la universidad de CarnagieMellon para usar en sus robots.
http://www-2.cs.cmu.edu/~illah/ROBOCODE/index.html
Easybot de Seattle Robotics
En esta demo el robot está capacitado para buscar el color rojo. Se determina el tamaño
del objeto rojo que se ve en el momento de pasar delante de la cámara. Si el robot sabe
el tamaño aproximado del objeto que está buscando puede utilizarlo para calcular el
intervalo y realizar su seguimiento.
http://www.seattlerobotics.com/video.htm
Barney una robot que sigue una línea
Página 53 de 77
Barney es un robot móvil diseñado por Anthony Rowe y Alok Ladsariya para la
competición de MOBOT 2002 en la Universidad de Carnegie Mellon. El propósito de
MOBOT es construir un robot autónomo alimentado seguidor de línea que puede tomar
decisiones si la línea se divide. La competición se desarrolla al aire libre en un terreno
inclinado y bastante desigual lo cual es un reto añadido. Se propone un enfoque
integrado a todos que sería fácil de usar, barato y robusto. Se hace uso de una CMUcam
como sensor principal y se desarrolla un software para controlar el tratamiento y el
control motor. Barney llegó en primer lugar después de terminar el circuito en 1 minuto
y 36 segundos.
http://www.andrew.cmu.edu/user/agr/projects/barney/
El Proyecto de Seguridad de IRIS en la Universidad de Alabama en Huntsville
Proyecto que describe un juego de tenis de mesa mediante un sistema de realidad
aumentada diseñado por los estudiantes de RPI que utiliza CMUcam.
http://www.cs.cmu.edu/~cmucam/Pictures/irisproject.zip
Otros campos de aplicación y ejemplos de sistemas que usan CMUcam:
Robótica (spoonBot)
Vigilancia
Sensor
Networks
Educación
Los juguetes interactivos
Reconocimiento y seguimiento de objetos
Servo de control programable
Serial MMC / SD de registro de datos flash
Como muestra de las diferentes aplicaciones para las que se puede usar la CMUcam se
presenta el siguiente video, con una recopilación de los ejemplos más relevantes
desarrollados en la universidad de Carnagie Mellon. [CMUcam_video_2002.avi]
http://www.cs.cmu.edu/~cmucam/Pictures/CMUcam_video_2002.avi
6.5
¿Donde se puede conseguir una?
La forma más fácil para obtener su propia CMUcam es ordenar como un kit o preensamblados de una de las empresas que han sido autorizados para vender CMUcams:
Acroname - EE.UU.
Robótica de Seattle - EE.UU.
Lextronic – Francia
Tiendas especializadas por paises:
Robótica de Seattle (EE.UU.), seattlerobotics.com (CMUcam, CMUcam2, CMUcam3)
Lextronic (Francia), lextronic.fr (CMUcam, CMUcam2, CMUcam3)
Página 54 de 77
Acroname (EE.UU.), aroname.com (CMUcam, CMUcam2, CMUcam2 +)
Conexión de Robótica (EE.UU.), roboticsconnection.com (CMUcam, CMUcam2)
Parallax Inc. (EE.UU.), parallax.com (CMUcam)
Robotshop (Canadá), www.robotshop.ca (CMUcam, CMUcam2, CMUcam3)
Elektronikladen | ELMICRO (Alemania), elmicro.com (CMUcam2, CMUcam3)
Robot Italia (Italia), www.robot-italy.com (CMUcam3)
ROBOT ELECTRONICS (Inglaterra), www.robot-electronics.co.uk
(CMUcam2, CMUcam2 +, CMUcam3 pronto)
LAWICEL (Suecia), www.lawicel-shop.se/ (CMUcam3)
Probyte (Finlandia), www.probyte.fi (CMUcam3)
Caracol Instruments (República Checa), www.snailinstruments.com/ (CMUcam3
pronto)
Robotronica (España), www.robotronica.com (CMUcam3 pronto)
Los Robots Activo (Inglaterra), www.active-robots.com/ (CMUcam2, CMUcam3)
Superrobotica (España), www.superrobotica.com (CMUcam3 pronto)
SgBOTIC (Singapur), www.sgbotic.com (CMUcam2, CMUcam3)
Antratek Electronics (Benelux), www.robotwinkel.nl (CMUcam, CMUcam3)
Electrónica innovadoras (Indonesia), www.innovativeelectronics.com (CMUcam3)
Megaton (Austria), www.megaton.at (CMUcam3)
Roboter-teile.de (Alemania), www.roboter-teile.de (CMUcam3)
Sander electrónico (Alemania) www.sander-electronics.de (CMUcam3)
Bernhard Elektronik (Suiza), elmicro.com (CMUcam3)
Robodacta (México), www.robodacta.com.mx (CMUCam3)
RobotShop (EE.UU.), www.robotshop.com (CMUcam3)
6.6
¿Cuánto puede costar?
A continuación se muestra una tabla con la lista de precios de los diferentes dispositivos
de visión artificial basados en CMUcam:
Dispositivo
Precio $
Precio €
CMUcam1 ensamblada y probada
CMUcam2 ensamblada y probada
CMUcam3 ensamblada y probada
239.00
179.00
109.00
158.658
118.828
72.3513
Precios anunciados en la página web:
04/12/2009
6.7
http://www.seattlerobotics.com/ a fecha
¿Cómo empezar?
1.- Consultar las referencias web que se muestran a continuación
2.- Revisar la página de Software
Página 55 de 77
3.- Revisar la página de descargas
4.- Asegurarse de comprobar la documentación más reciente para evitar daños
en el hardware.
Después de comprar y construir CMUcam, esta se puede probar con un compendio de
interfaces JAVA, además de consultar hojas de características y manuales de usuario.
Estas aplicaciones y manuales se encuentran disponibles para descarga en las páginas
web indicadas a continuación:
CMUcam1  http://www.cs.cmu.edu/~cmucam/downloads.html
CMUcam2  http://www.cs.cmu.edu/~cmucam2/downloads.html
CMUcam3  http://www.cmucam.org/wiki/Downloads
En este momento ya estamos listos para construir nuestro propio robot con visión
artificial.
6.8
Resumen
El objetivo del proyecto es proporcionar a los CMUcam capacidades de visión sencilla
de pequeños sistemas embebidos en la forma de un sensor inteligente. El CMUcam3 se
extiende sobre esta idea de proporcionar una solución flexible y fácil de usar entorno de
desarrollo de código abierto que complementa una plataforma de hardware de bajo
costo. El CMUcam3 es un ARM7TDMI basado completamente programable integrado
sensor de visión por computador. El procesador principal es la LPC2106 ON conectado
a una cámara de sensor CMOS de Omnivision módulo. Custom de código en C puede
ser desarrollado para la CMUcam3 utilizando un puerto de la cadena de herramientas
GNU junto con un conjunto de bibliotecas de código abierto y programas de ejemplo.
Ejecutables pueden ser probados usando el puerto serie sin necesidad de hardware
externo.
6.9.- Visión Artificial empleando la CMUcam3
Esta parte del trabajo está enfocada a explicar cómo podemos realizar un proyecto con
la CMUcam.
¿Por qué dotar a un robot de visión utilizando la CMUcam?
A la hora de plantearnos que sistema utilizar para la implantación de visión en un robot,
y nuestros conocimientos son bastante básicos en la materia, lo principal es encontrar
abundante información y una comunidad donde podamos acudir a resolver todas
nuestras y donde además encontremos diversidad de proyectos que nos puedan ayudar a
establecer las bases de nuestro trabajo, pues bien, la CMUcam cuenta con un gran
soporte atreves de su página web (http://www.cmucam.org).
Página 56 de 77
Las características citadas en el apartado Hardware hacen de la CMUcam un elemento
muy potente para desarrollar robots con visión, ya que para realizar un robot básico
bastaría con tener dos servomotores, dos ruedas y la cámara (spoonBot), (
http://www.cmucam.org/wiki/spoonBot)
La CMUcam3 cuenta con un puerto de comunicación serial, el cual puede ser
configurado mediante hardware para poder comunicarse con un PC a los niveles
de voltaje que marca la norma RS232 o comunicarse a niveles TTL con otro
microcontrolador.
La figura muestra como se debe hacer esta configuración que dependerá del estado
del Jumper, por ejemplo si se desea programar la CMUcam3 o comunicarse con un PC
el Jumper no se deberá mover, por lo contrario si lo que se desea es comunicarse
con un micro-controlador a niveles TTL, el Jumper se deberá quitar, dejando de
esta manera habilitado el puerto serie con niveles TTL. La figura también muestra los
tres pines que se utilizan para la comunicación serial siendo estos el pin de transmisión
(TX), el de recepción (RX) y tierra (GND). Esto nos puede permitir que la cámara
forme parte de un sistema mucho mayor.
Página 57 de 77
Características a tener en cuenta para desarrollar un trabajo con la CMUcam
Las características principales de la CMUcam3 son:
• Sensor RGB en color con una resolución de 352 x 288.
• Ambientes de desarrollo para Windows y Linux.
• Conector para tarjeta SD o MMS con soporte FAT 16
• Cuatro Puertos para controlar servos
• Carga imágenes en memoria a 26 frames por segundo
• Compresión por software en modo JPEG
• Emulación de la CMUCAM2
• Puerto de comunicación serial
Alimentación.
La CMUcam se debe alimentar con una tensión comprendida entre los 6 y 15 voltios
(DC) y le tienen que llegar al menos 150 mA. Además la cámara cuenta con un jumper
para seleccionar la fuente de alimentación de los servomotores, que puede ser interna o
empleando una fuente de energía externa. Como muestro en la figura.
Página 58 de 77
Bus de la cámara.
La CMUcam3 tiene un puerto destinado para la conexión de una cámara digital por la
cual se le pasaran los datos que se requieren para el tratamiento de la imagen digital, las
estradas de esta interfaz se detallan en la siguiente figura donde se describe a cada uno
de los pines que lo conforman.
Puerto para Servos.
La CMUcam3 cuenta con un puerto para servos, mediante el cual puede controlar hasta
cuatro servos además de tener la opción de elegir la fuente de alimentación interna de la
tarjeta o utilizar una fuente externa para la alimentación de los servos. En la
figura se muestra el puerto que posee la CMUcam3 para controlar los servos.
Página 59 de 77
Puerto de expansión GPIO.
La cámara además cuenta con este puerto de entradas y salidas de propósito general.
Power Enable – Si se pone a nivel bajo desactiva la alimentación de la cámara
Aux Power – Podemos obtener 3.3V del pin
Cam reset – A través de este pin podemos resetear la tarjeta
TX2 y RX2 – Para la comunicación serie en niveles TTL
MOSI, MISO y SCK – Pines empleados para la tarjeta MMC
GND – Tierra
Página 60 de 77
Puerto analógico.
Usando el módulo de la cámara OV6620, podemos obtener una señal de vídeo PAL
desde el puerto analógico de la CMUcam3. Esta señal sincronizar con cualquier monitor
PAL, pero no funcionará con un monitor estándar NTSC. Para utilizarlo, es necesario
para mantener la cámara en su máxima velocidad de reproducción (por defecto) y poner
la cámara en modo YCrCb para ver la imagen en un monitor.
Botón ISP.
El botón ISP nos permite elegir el modo en el que la tarjeta debe iniciarse. Cuando
alimentamos a la tarjeta, y el botón ISP no es presionado, inicia
automáticamente en el modo de ejecución, donde ejecutará el código previamente
instalado. Por lo contrario, cuando se alimenta a tarjeta y a su vez se mantiene
presionado el botón ISP, se entrará en el modo bootloader, esto quiere decir que
la tarjeta esta lista para ser programada con un nuevo firmware.
Software necesario para comenzar a trabajar
Para poder trabajar con la CMUcam3 en Windows se necesita lo siguiente:
1.
2.
3.
4.
5.
6.
Windows XP
Instalar Cygwing
Instalar el compilador GNU ARM GCC
Instalar elLPC210x FLASH Utility
Instalar CMUcam3 Frame Grab Utility
Descargar la carpeta cc3
2. Instalación de Cygwin
Para compilar se tiene que tener instalado el compilador ARM compiler. Para el
caso de Windows se requerirá tener un emulador de Unix como Cygwin. Cygwin es
una un emulador de sistema Unix, el cual conjunta una gran gama de
herramientas cuyo objetivo es el de soportar software que se ejecuta en sistemas
POSIX y poder utilizarlo en Windows mediante una recopilación de sus fuentes.
Mediante Cygwin es posible ejecutar comandos que solo son reconocidos en sistemas
Unix. Para nuestro objetivo se utiliza Cygwin para poder emplear el compilador de
ARM y utilizar el comando make.
Make es una herramienta que se emplea para controlar los procesos de
construcción de software en sistemas Unix. Mediante el empleo de reglas de
compilación que se encuentran descritas en un archivo llamado “makefile”.
Página 61 de 77
Para instalar Cygwing se realizan los siguientes pasos:
1 – Descargar el instalador de Cygwing del sitio Web www.cygwin.com/setup.exe
2 – Ejecutaremos el programa
3 – Enseguida aparecerá una ventana que nos pregunta desde donde deseamos hacer la
instalación, escogemos instalar desde Internet
4 – A continuación se elige el tipo de conexión
5 – Después se elige el lugar donde deseamos realizar la descarga.
6 – En la siguiente ventana nos piden las herramientas que deseamos instalar.
Primeramente maximizamos la pantalla, después
seleccionamos View, a continuación seleccionamos la herramienta de make, subversión
y opensll por último seleccionamos siguiente.
Página 62 de 77
.
3. Instalar el compilador GNU ARM GCC
El instalador se puede bajar desde la pagina Web “www.cmucam.org” ó desde la página
www.codesourcery.com/gnu_toolchains.
Para su instalación basta con aceptar todas las configuraciones predefinidas
4. Instalar elLPC210x FLASH Utility
Si se desea descargar un programa en la CMUcam3, se requiere la utilizad
Philips LPC2000 Downloader para Windows y LPC21ISP para Linux, además de
la comunicación serie con el ordenador.
A continuación se muestran los pasos para poder utilizar esta utilidad:
Bajar e instalar la utilidad LPC210x FLASH, la cual puede ser descargada desde la
página
de
la
CMUcam
o
desde
la
pagina
de
Philips:
http://www.semiconductors.philips.com
ó http://www.cmucam.org/wiki/Downloads
B. Seleccionar el icono de “philips_flash_utility.zip”
C. A continuación seleccionar el icono de Philips Flash installer.
D. Cuando aparezca una ventana de bienvenida, dar siguiente a todas las
configuraciones predeterminadas.
6. Descargar la carpeta cc3
Para poder desarrollar nuestros proyectos, requerimos el directorio cc3, al cual se
le conoce como cc3 Source Tree. El directorio cc3 funciona muy parecido a un
IDE (Integrated Development Environment), el cual contiene las herramientas
necesarias para programar y administrar nuestros proyectos. Para que funcione
correctamente el cc3 es necesario colocarlo en el directorio raíz de Windows como lo
muestra la figura.
Página 63 de 77
Como empezar un proyecto
Para crear un proyecto en cc3, primero se copia alguno de los proyectos que ya vienen
en el cc3, nos dirigimos al directorio cc3 y abrimos el subdirectorio projects a
continuación copiamos el directorio hello-world y lo pegamos en la misma carpeta
de projects pero le cambiamos el nombre por ejemplo “nuevo_proyecto”.
Página 64 de 77
Lo que sigue es modificar el archivo llamado “makefile”, en el que modificamos
el nombre del proyecto, cambiando “hello-world” por “nuevo_proyecto” de esta
manera hemos creado un proyecto y ahora es cuestión de abrir el archivo main.c
comenzar a programar.
Una vez creado nuestro código fuente, para compilarlo empleamos el sistema cc3,
necesitamos del comando make, un archivo incluido en nuestro proyecto llamado
Makefile y Cygwin.
Los pasos para compilar código fuente se mencionan a continuación:
Página 65 de 77
Iniciar Cygwin dando doble clic en el icono de Cygwin.
Nos dirigirnos al directorio de c: mediante el comando cd c:, después cambiarnos
al
directorio
de
nuevo_proyecto
mediante
el
comando cd
/cc3/projects/nuevo_proyecto (ver figura 3.17).
A continuación invocamos make en el directorio de nuevo_proyecto, con lo que se
compilará el proyecto y nos generará el archivo .hex para la CMUcam3
Para programar la CMUcam3 se necesita el LPC210x FLASH Ulitily, que nos permite
descargar al dispositivo un nuevo firmware.
A continuación detallo los pasos necesarios para programar a la CMUcam3.
Conectar la CMUcam3 con el PC mediante el puerto serial.
Ejecutar el LPC210x FLASH Utility
Seleccionar el dispositivo LPC2106 y la frecuencia del cristal a 14745[Khz.].
Seleccionar el puerto por el que se comunicará
velocidad de transmisión a 115200 baud
la computadora y establecer
Seleccionar la imagen del firmware que se desea descargar en la tarjeta
Dar doble clic en Upload Flash
Aparecerá una ventana que nos pedirá reiniciar la CMUcam3
Presionar el botón ISP de la CMUcam3 y mantenerlo así
Encender la CMUcam3 mientras se mantiene presionado el botón ISP
Después seleccionamos aceptar y la imagen comenzará a descargarse
Página 66 de 77
la
Proyecto Ejemplo
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdbool.h>
#include <time.h>
#include <cc3_ilp.h>
#include <cc3.h>
#include <cc3_color_track.h>
#include <cc3_color_info.h>
void simple_track_color (cc3_track_pkt_t * t_pkt);
void simple_get_mean (cc3_color_info_pkt_t * s_pkt);
int main (void)
{
// Declaracion de variables
cc3_track_pkt_t t_pkt;
cc3_color_info_pkt_t s_pkt;
Página 67 de 77
uint32_t x_mid, y_mid;
uint32_t threshold, x0, y0, x1, y1;
int32_t tmp;
// Configuraciones
cc3_uart_init (0, CC3_UART_RATE_115200, CC3_UART_MODE_8N1,
el puerto serie
CC3_UART_BINMODE_TEXT);
cc3_camera_init ();
camara
printf ("Arrancando...\n");
cc3_led_set_state (0, true);
//inicio
//inicializo la
//Activo el Leds 0
cc3_gpio_set_mode (0, CC3_GPIO_MODE_SERVO);
//Configuro el Servo en el puerto0 de Servos
//Prueba de servo
printf ("Calentando motor\n");
cc3_gpio_set_servo_position (0, 0);
cc3_timer_wait_ms (300);
cc3_gpio_set_servo_position (0, 90);
cc3_timer_wait_ms (500);
cc3_gpio_set_servo_position (0, 0);
cc3_timer_wait_ms (500);
cc3_gpio_set_servo_position (0, 170);
cc3_timer_wait_ms (500);
cc3_gpio_set_servo_position (0, 90);
cc3_timer_wait_ms (500);
printf ("Si el servo funciono pulsa el ISP");
while (cc3_button_get_state () == 0);
que se pulse
cc3_led_set_state (0, false);
cc3_led_set_state (1, false);
cc3_led_set_state (2, false);
cc3_timer_wait_ms (1000);
cc3_led_set_state (0, true);
cc3_led_set_state (1, true);
cc3_led_set_state (2, true);
cc3_timer_wait_ms (1000);
cc3_led_set_state (1, false);
cc3_led_set_state (2, false);
Página 68 de 77
//Espero hasta
// configuraciones de la camara
cc3_camera_init ();
cc3_camera_set_auto_exposure (true);
cc3_camera_set_auto_white_balance (true);
cc3_camera_set_resolution (CC3_CAMERA_RESOLUTION_LOW);
//Resolucion Baja
cc3_led_set_state (0, false);
printf ("Estabilizando imagen\n");
cc3_timer_wait_ms (2000);
//Damos
segundos para aclarar configurar balance y exposicion automaticamente
cc3_camera_set_auto_exposure (false);
cc3_camera_set_auto_white_balance (false);
cc3_led_set_state (0, true);
dos
printf ("Coloca delante el color que quieras y pulsa el boton...\n");
while (cc3_button_get_state () == 0);
printf ("Grabando Color\n");
// init pixbuf with width and height
cc3_pixbuf_load ();
imagen de la cámara
//Graba
la
//Todo
s los datos referentes a la imagen, se almacenan
//en la
estructura cc3_g_pixbuf_frame
threshold = 30;
//Margen de Error para elmacenar los datos RGB de la imagen
// reduce a 1/2 el tamaño de la ventana para centrar la captura
x0 = cc3_g_pixbuf_frame.x0 + cc3_g_pixbuf_frame.width / 4;
x1 = cc3_g_pixbuf_frame.x1 - cc3_g_pixbuf_frame.width / 4;
y0 = cc3_g_pixbuf_frame.y0 + cc3_g_pixbuf_frame.width / 4;
y1 = cc3_g_pixbuf_frame.y1 - cc3_g_pixbuf_frame.width / 4;
cc3_pixbuf_frame_set_roi (x0, y0, x1, y1);
// llamamos a la funcion get mean para obtener los valores RGB de la imagen
simple_get_mean (&s_pkt);
// volvemos a poner ventana completa
x0 = 0;
x1 = cc3_g_pixbuf_frame.raw_width;
y0 = 0;
y1 = cc3_g_pixbuf_frame.raw_height;
Página 69 de 77
cc3_pixbuf_frame_set_roi (x0, y0, x1, y1);
region de interes en cc3_g_pixbuf_frame para ventanas virtuales
//estableze una
// Introducimos los parámetros del color
//Para el canal Rojo (los valores deben estar comprendidos entre 0 y 255) pero
limitamos la region entre 10 y 240
tmp = s_pkt.mean.channel[0] - threshold;
//Sacamos el valor
medio
if (tmp < 16)
tmp = 16;
if (tmp > 240)
tmp = 240;
t_pkt.lower_bound.channel[0] = tmp;
//El
valor
minimo de rojo sera 16
tmp = s_pkt.mean.channel[0] + threshold;
if (tmp < 16)
tmp = 16;
if (tmp > 240)
tmp = 240;
t_pkt.upper_bound.channel[0] = tmp;
//El
valor
maximo sera 240
//Seguimos con el mismo procedimiento con los demas canales Verde (1) y Azul
(2)
tmp = s_pkt.mean.channel[1] - threshold;
if (tmp < 16)
tmp = 16;
if (tmp > 240)
tmp = 240;
t_pkt.lower_bound.channel[1] = tmp;
tmp = s_pkt.mean.channel[1] + threshold;
if (tmp < 16)
tmp = 16;
if (tmp > 240)
tmp = 240;
t_pkt.upper_bound.channel[1] = tmp;
tmp = s_pkt.mean.channel[2] - threshold;
if (tmp < 16)
tmp = 16;
if (tmp > 240)
tmp = 240;
t_pkt.lower_bound.channel[2] = tmp;
tmp = s_pkt.mean.channel[2] + threshold;
if (tmp < 16)
tmp = 16;
if (tmp > 240)
tmp = 240;
Página 70 de 77
t_pkt.upper_bound.channel[2] = tmp;
printf ("Color Obtenido: min=[%d,%d,%d] max=[%d,%d,%d]\n",
t_pkt.lower_bound.channel[0], t_pkt.lower_bound.channel[1],
t_pkt.lower_bound.channel[2], t_pkt.upper_bound.channel[0],
t_pkt.upper_bound.channel[1], t_pkt.upper_bound.channel[2]);
// Load in your tracking parameters
// t_pkt.lower_bound.channel[CC3_CHANNEL_RED] = 200;
// t_pkt.upper_bound.channel[CC3_CHANNEL_RED] = 255;
// t_pkt.lower_bound.channel[CC3_CHANNEL_GREEN] = 0;
// t_pkt.upper_bound.channel[CC3_CHANNEL_GREEN] = 110;
// t_pkt.lower_bound.channel[CC3_CHANNEL_BLUE] = 0;
// t_pkt.upper_bound.channel[CC3_CHANNEL_BLUE] = 20;
//Configuracion del color teminada
printf ("Configuracion de la camara terminada\n");
t_pkt.noise_filter = 4;
x_mid = cc3_g_pixbuf_frame.width / 2;
los valores de tamaño de la imagen para centrar el objetivo
y_mid = cc3_g_pixbuf_frame.height / 2;
//Tomo la mitad de
while (true)
{
uint8_t track_flag, posicion;
simple_track_color (&t_pkt);
track_flag = 0;
posicion = 90;
if (t_pkt.int_density > 10 && t_pkt.num_pixels > 100)
{
printf("centroid = %d,%d bounding box = %d,%d,%d,%d num pix= %d density =
%d\n",
t_pkt.centroid_x, t_pkt.centroid_y, t_pkt.x0, t_pkt.y0, t_pkt.x1,
t_pkt.y1, t_pkt.num_pixels, t_pkt.int_density);
if (t_pkt.centroid_x > (x_mid + 20)) //tengo que desplazarme a la derecha
{
track_flag = 1;
posicion += 10;
Página 71 de 77
//Desplazamiento rapido
if (posicion < 170)
cc3_gpio_set_servo_position (0, posicion);
else
posicion = 170;
}
else if (t_pkt.centroid_x > (x_mid + 5))
{
track_flag = 1;
posicion += 2;
//Desplazamiento mas lento
if (posicion < 170)
cc3_gpio_set_servo_position (0, posicion);
else
posicion = 170;
}
if (t_pkt.centroid_x < (x_mid + 20)) //tengo que desplazarme a la izquierda
{
track_flag = 1;
posicion -= 10;
//Desplazamiento rapido
if (posicion < 170)
cc3_gpio_set_servo_position (0, posicion);
else
posicion = 170;
}
else if (t_pkt.centroid_x < (x_mid + 5))
{
track_flag = 1;
posicion -= 2;
//Desplazamiento mas lento
if (posicion < 170)
cc3_gpio_set_servo_position (0, posicion);
else
posicion = 170;
}
}
}
return 0;
}
Página 72 de 77
void simple_track_color (cc3_track_pkt_t * t_pkt)
{
cc3_image_t img;
img.channels = 3;
img.width = cc3_g_pixbuf_frame.width;
img.height = 1;
// image will hold just 1 row for scanline processing
img.pix = cc3_malloc_rows (1);
if (img.pix == NULL) {
return;
}
cc3_pixbuf_load ();
if (cc3_track_color_scanline_start (t_pkt) != 0) {
while (cc3_pixbuf_read_rows (img.pix, 1)) {
// This does the HSV conversion
// cc3_rgb2hsv_row(img.pix,img.width);
cc3_track_color_scanline (&img, t_pkt);
}
}
cc3_track_color_scanline_finish (t_pkt);
free (img.pix);
return;
}
void simple_get_mean (cc3_color_info_pkt_t * s_pkt)
{
cc3_image_t img;
img.channels = 3;
img.width = cc3_g_pixbuf_frame.width;
img.height = 1;
// image will hold just 1 row for scanline processing
img.pix = malloc (3 * img.width);
cc3_pixbuf_load ();
if (cc3_color_info_scanline_start (s_pkt) != 0) {
while (cc3_pixbuf_read_rows (img.pix, 1)) {
cc3_color_info_scanline (&img, s_pkt);
}
cc3_color_info_scanline_finish (s_pkt);
}
free (img.pix);
}
Página 73 de 77
7.- Bibliografía
www.depeca.uah.es ( ITTSE. ASIG: TRATAMIENTO DIGITAL DE IMÁGENES)
www.depeca.uah.es (IT INDUSTRIAL.ASIG: INTELIGENCIA ARTIFICIAL).
http://www.escet.urjc.es/~jjpantrigo/PFCs/PFCobjetosAbandonados.pdf
universidad
rey juan carlos
http://www.it.uc3m.es/jvillena/irc/practicas/estudios/Vision.pdf por elizabeth
perez
http://www.cea-ifac.es/actividades/jornadas/XXV/documentos/19-abtsufilva.pdf
jornadas de automática; ciudad real.
COMPLEMENTARIA
Para iniciarse en el tema, puede consultarse Machine Visión Portal, con noticias y una
guía de productos, y también Machine Visión Online, que presenta una gran biblioteca
de artículos técnicos y descripciones de aplicaciones industriales ordenadas por
sectores. Las revistas especializadas aportan muchos datos de interés: The Journal of
Electronic Imaging y Visión Systems Design e incluso Machine Visión Tech Group, de
la Society of Manufacturing Engineers (SME), que cuenta con un activo foro de
discusión e intercambio de información.
Algunos departamentos universitarios, centrados en la investigación básica y aplicada e
incluso a medida del cliente, apuestan fuerte por el tema, como el Centro de Visión por
Computador (CVC, de la UAB), el Computational Imaging Lab (CILab, de la UPF) y el
Grupo de Automática, Robótica y Visión Artificial (Escuela Politécnica Superior de la
UA), todos ellos son amplias reseñas de sus objetivos, actividades y realizaciones.
Muchas empresas ofrecen su gama de productos y aplicaciones, como DALSA Coreco,
The Imaging Source Europe y The Computer Visión Industry. Y, entre las empresas
españolas, DataPixel, expertos en visión 3D, óptica, electrónica e ingeniería de
software, y DCM Sistemes, especializados en iluminadores para visión artificial. Sin
olvidar la Association of European Machine Visión Companies (EMVA), que reúne las
empresas y las asociaciones del sector.
Revistas:
International Journal of Computer Vision
IEEE Transactions on Pattern Analysis and Machine
Intelligence
Computer Vision and Image Understanding
Machine Vision and its Applications
Image and Vision Computing Journal
Journal of the Optical Society of America A
Pattern Recognition
Pattern Recognition Letters
IEEE Transactions on Image Processing
IEEE Transactions on Systems, Man and
Cybernetics.
ISRA VISION
Página 74 de 77
http://www.isravision.com/likecms.php?
site=index.html&dir=isra&israsyssess=871910a55d638e9877655d589e292643&nav=1
57&siteid=222&entryid=
INSER ROBÓTICA
http://www.inser-robotica.com/manipulado_Vision.htm
PYSSA
http://www.pyssa.com/es/vision.asp
MATERIAL DIDÁCTICO Ingenierías nº 24. Universidad de La Rioja
Técnicas y algoritmos básicos de Visión Artificial
Tesis: Israel Vite Silva
Reconstrucción Tridimensional de Objetos Mediante Técnicas Evolutivas
Depeca
http://193.146.57.132/depeca/docencia/alumnos.php?codigo=30831
------------------------------------------------------------------------
[1] NV-BOT: Robot velocista basado en visión.
http://www.depeca.uah.es/alcabot/alcabot2002/documentos/ponencias/vel039.pdf
[2] Control Cinemático de Vehículos Autoguiados Utilizando un Sistema por Visión
http://www.cea-ifac.es/actividades/jornadas/XXII/documentos/F_05_R.pdf
[3] Robots seguidor de línea
http://www.robot-advance.com/configurations/www.robot-advance.com/images/player/
pieces_jointes/99_44.pdf
--------------------------------------------------------------------------------------------------Referencias bibliográficas y documentación consultada para el desarrollo de este
apartado:
CMUcam
Página 75 de 77
http://www.cs.cmu.edu/~cmucam/
http://www.roboops.es/2009/09/26/comenzando-con-la-cmucam/#more-185
http://cmucam.org/wiki/Downloads
http://cmucam.org/attachment/wiki/Documentation/CMUcam3_sdk_guide.pdf?
format=raw
http://www.cs.cmu.edu/~cmucam/Pictures/CMUcam_video_2002.avi
Video reconocimiento de formas
http://www.youtube.com/watch?
v=1iwvL83Cumo&feature=PlayList&p=DF88BA1C22B59C21&index=0
http://www.youtube.com/user/prstud09#p/a/u/0/6TG_pDEhXME
http://www.youtube.com/watch?v=w-D6oakzyVA&NR=1
Seguimiento de objetos mediante filtro de partículas
http://www.youtube.com/watch?v=lWM0z6Z6zg&feature=PlayList&p=DF88BA1C22B59C21&index=1
Robot seguidor de líneas
http://www.youtube.com/watch?v=37_RcAdMUr8&feature=related
Información sobre el flitro-kalman*
http://robotica.itam.mx/espanol/archivos/kalman_filter.pdf
*[KALMAN-FILTER]
El Filtro Kalman es una forma más inteligente de integrar los datos de medición en una
estimación reconociendo, que las mediciones son ruidosas y que a veces deben
ignorarse o que sólo tienen un efecto pequeño sobre la estimación del estado. Se suaviza
los efectos del ruido en la variable de estado, se calcula mediante la incorporación de
más información de datos fiables, que a partir de datos poco fiables. El usuario puede
decir al filtro de Kalman cuanto ruido que hay en el sistema (incluyendo las mediciones,
las entradas y el modelo) y se calcula una estimación de la posición teniendo en cuenta
el ruido. Ello es menos probable que incorporar una mala medida si la confianza de la
posición actual es alta.
--------------------------------------------------------------------------------------------------Referencias web de las aplicaciones comentadas
PIC y Handyboard CMUcam
http://www-2.cs.cmu.edu/~illah/ROBOCODE/index.html
Easybot de Seattle Robotics
Página 76 de 77
http://www.seattlerobotics.com/video.htm
Barney, un robot que sigue una línea
http://www.andrew.cmu.edu/user/agr/projects/barney/
El Proyecto de Seguridad de IRIS en la Universidad de Alabama en Huntsville
http://www.cs.cmu.edu/~cmucam/Pictures/irisproject.zip
Página 77 de 77
Descargar