Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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.
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.
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
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.
Página 6 de 77
Fig. 1-5 Sombra
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.
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.
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.
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.
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.
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.
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.
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
Página 10 de 77
Primeras fotografías
Fig. 1-14 Fig. 1-15
-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:
- Colimetría
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).
Fig. 1-15
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.
Fig. 1-17
Fig. 1-18
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.
Fig. 1-19
Adquisición de imágenes:
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:
- 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
Fig. 1-20
Página 15 de 77
2 Sistemas de visión artificial en robótica.
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.
Página 17 de 77
Diagrama de bloques de las etapas de un sistema de V.A.
Fig 2-1
Página 18 de 77
distancias de separación, la redondez de cada punto, el lado horizontal y vertical del
cuadro, etc.
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.
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.
Página 21 de 77
Fig. 1: Visión 2D
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
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
Página 24 de 77
Fig. 7: Sensor óptico 3D estéreo
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:
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:
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://docencia-
eupt.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.
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).
Página 30 de 77
4 Detección de Objetos
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
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.
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.
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.
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.
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.
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.
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) .
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
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".
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
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.
Página 44 de 77
Fig.2 Robot NV-BOT [1]
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.
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.
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.
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]
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]
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.
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.
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
6.2.1.3 CMUcam3
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
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
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/
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
Acroname - EE.UU.
Robótica de Seattle - EE.UU.
Lextronic – Francia
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)
Página 55 de 77
3.- Revisar la página de descargas
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.
Esta parte del trabajo está enfocada a explicar cómo podemos realizar un proyecto con
la CMUcam.
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 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
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.
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.
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.
1. Windows XP
2. Instalar Cygwing
3. Instalar el compilador GNU ARM GCC
4. Instalar elLPC210x FLASH Utility
5. Instalar CMUcam3 Frame Grab Utility
6. 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:
2 – Ejecutaremos el programa
3 – Enseguida aparecerá una ventana que nos pregunta desde donde deseamos hacer la
instalación, escogemos instalar desde Internet
Página 62 de 77
.
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
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.
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.
Página 66 de 77
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>
Página 67 de 77
uint32_t x_mid, y_mid;
uint32_t threshold, x0, y0, x1, y1;
int32_t tmp;
// Configuraciones
printf ("Arrancando...\n");
cc3_led_set_state (0, true); //Activo el Leds 0
//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); //Espero hasta
que se pulse
Página 68 de 77
// 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 dos
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);
threshold = 30;
//Margen de Error para elmacenar los datos RGB de la imagen
// llamamos a la funcion get mean para obtener los valores RGB de la imagen
simple_get_mean (&s_pkt);
Página 69 de 77
cc3_pixbuf_frame_set_roi (x0, y0, x1, y1); //estableze una
region de interes en cc3_g_pixbuf_frame para ventanas virtuales
//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;
t_pkt.noise_filter = 4;
while (true)
{
uint8_t track_flag, posicion;
simple_track_color (&t_pkt);
track_flag = 0;
posicion = 90;
Página 71 de 77
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;
}
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
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
Depeca
http://193.146.57.132/depeca/docencia/alumnos.php?codigo=30831
------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
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
http://www.youtube.com/user/prstud09#p/a/u/0/6TG_pDEhXME
http://www.youtube.com/watch?v=w-D6oakzyVA&NR=1
*[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.
---------------------------------------------------------------------------------------------------
Página 76 de 77
http://www.seattlerobotics.com/video.htm
Página 77 de 77