Manual de Prácticas de Sherlock. - Grupo Temático de Visión por

Anuncio
Manual de Prácticas de
Visión por Computador
Visión Artificial
_______________________________________________________________
Nota preliminar
Sherlock constituye una herramienta estándar de ejecución de
aplicaciones de visión artificial orientado a entornos industriales.
Infaimon pretende con este manual de prácticas facilitar la utilización
de Sherlock para la configuración de sistemas de visión de forma
sencilla y ágil en el campo de la docencia.
Este manual de prácticas se completa con el manual de usuario de
Sherlock suministrado por el fabricante del producto y con la versión
traducida al español distribuido por Infaimon.
Asimismo, ponemos a su disposición nuestro equipo técnico para
cualquier duda o consulta al respecto de este manual y de Sherlock
mediante el correo electrónico [email protected].
La reproducción total o parcial de este manual de prácticas queda
prohibida sin el consentimiento expreso de INFAIMON.
INFAIMON (Spain)
Vergós, 55
E-08017 Barcelona
España
Tel. (+34) 93 252 5757
Fax. (+34) 93 252 5758
[email protected]
INFAIMON(Spain)
Ribera del Loira, 46
E-08042 Madrid
España
Tel. (+34) 902 463 246
Fax. (+34) 91 503 0090
[email protected]
INFAIMON (Portugal)
Rua Sra. do Alamo, 48
Esgueira 3800-262
Aveiro - (Portugal)
Tel. (+351) 234 312 034
Fax.(+351) 234 312 035
[email protected]
INFAIMON México
Av. Insurgentes Sur, 600 - 302
Col. Del Valle
03100 México D.F.
Tel. (+52) 55 1107 0814
Fax. (+52) 55 1107 1904 ext. 121
[email protected]
2
______________________www.infaimon.com________________________
Visión Artificial
_______________________________________________________________
INDICE
Práctica 1.- Introducción a los sistemas de Visión por Computador.
Práctica 2.- Introducción a Sherlock.
Práctica 3.- Alignments
Práctica 4.- Color
Práctica 5.- Instrucciones
Práctica 6.- Búsqueda de Patrones
3
______________________www.infaimon.com________________________
Visión Artificial
_______________________________________________________________
4
______________________www.infaimon.com________________________
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Práctica 1.- Introducción a los sistemas
de Visión por Computador
Elementos de un sistema de visión por computador
A continuación se muestra un esquema típico de un sistema de visión por
computador.
Algunos elementos no siempre están presentes o están presentes en un formato
distinto al que aparece en el esquema. Por ejemplo, en un sistema que incorpore
cámaras Firewire o Gigabit Ethernet, el frame grabber como tal no existe, en su
lugar se utiliza un puerto Firewire o Gigabit Ethernet.
También existe la posibilidad de prescindir del computador externo en los casos en
que se trabaje con cámaras inteligentes. En estos casos, el preprocesado y
procesado de las imágenes se hace en el interior de la cámara, desde donde,
mediante entradas y salidas que puede incorporar la cámara, se puede interactuar
con el resto del sistema.
Prácticas de visión por computador
5
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Cámaras
Las cámaras permiten convertir energía lumínica en eléctrica y transferir el
resultado de dicha conversión.
Las cámaras se pueden clasificar según distintos criterios. Algunos son:
-
Resolución
Tamaño del sensor
Por la sensibilidad del sensor a diferentes longitudes de onda
Por interfaz de salida
Algunos ejemplos de interfaz de salida son:
-
Salida de video analógica
Camera Link
IEEE 1394 a/b
USB 2
Gigabit Ethernet
Funcionamiento de un sensor
Los sensores de imagen emulan electrónicamente el comportamiento de las
tradicionales películas fotográficas. En este caso, los sensores, formados por una
matriz bidimensional de píxels, están constantemente expuestos a la luz, ya que no
disponen de un diafragma que se abra y cierre a cada imagen que se quiera
capturar. Mediante circuitos de control se gobierna el tiempo de exposición durante
el cual se convierten los fotones incidentes en los píxels en cargas eléctricas.
En la visión por computador predominan dos tipos de sensores: el CCD (charge
couple device) y el CMOS (complementary metal oxide semiconductor).
Como se puede ver en la figura, en el caso de los sensores CCD, las cargas se
desplazan hasta un punto común donde son convertidas a tensión y ésta se
amplifica. Esto hace que el resultado final sea homogéneo, ya que el amplificador
Prácticas de visión por computador
6
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
es común a todas las cargas y ruido que introduzca será parecido en todas las
amplificaciones próximas en el tiempo.
En el caso de los sensores CMOS, cada píxel contiene los circuitos necesarios para
realizar la conversión y amplificación, con lo que el resultado es menos homogéneo
que en el caso de los CCD.
Por otra parte, la superficie útil para la captación de fotones es menor, ya que cada
píxel debe reservar espacio para la circuitería. La relación entre la superficie de
captación de fotones y la superficie total del píxel se denomina fill factor y es menor
en los sensores CMOS. En ambos tipos de sensores se utilizan microlentes situadas
sobre cada píxel que hacen que los fotones se dirijan a la zona sensible del píxel,
mejorando su absorción.
A grandes rasgos, los sensores CMOS son más ruidosos, pero permiten alcanzar
velocidades de captura mayores que en el caso de los sensores CCD.
El tiempo durante el cual se convierten fotones en cargas, que luego se transferirán
fuera del sensor, se conoce como tiempo de exposición o shutter. El inicio y
duración de este periodo de tiempo puede fijarse mediante la propia cámara o
mediante señales externas (trigger), por ejemplo, mediante pulsos TTL. Durante el
tiempo de readout, se transfiere la información eléctrica fuera del sensor.
Ópticas
A continuación se muestra un esquema correspondiente al funcionamiento de una
óptica.
La distancia focal corresponde a la distancia entre el plano de referencia y el plano
de imagen, que corresponde al sensor.
La distancia focal de un objetivo adecuada para una aplicación se calcula en función
de ciertas variables según la expresión siguiente:
Prácticas de visión por computador
7
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Distancia focal=
Tamañodel sensor x Distancia de trabajo
Campo de visión
[mm]
donde “tamaño de sensor” y “campo de visión” se refieren al eje horizontal.
Los tamaños de los sensores suelen ser estándar:
En la figura anterior se pueden ver los tamaños estándar.
Algunos parámetros de los objetivos son su apertura, la distancia mínima de
enfoque (MOD), el tamaño del sensor para el que ha sido diseñado y su distancia
focal. La apertura indica cuánto se puede abrir el iris del objetivo. Normalmente se
da en números f: f1, f1.4, f2, etc. Este número es la relación entre la distancia focal
del objetivo y el diámetro de la apertura máxima. Para una distancias focal dada,
cuanto mayor es el número f del objetivo, menor es el diámetro y, por tanto, deja
pasar menos luz.
Dentro del rango de apertura de un objetivo, cuanto más cerrado esté éste, mayor
profundidad campo se tendrá. La profundidad de campo es el rango de distancias,
relativas al objetivo, dentro del cual un objeto estará enfocado sin necesidad de
ajustar el enfoque.
La distancia mínima de enfoque, como su nombre indica, es la distancia por debajo
de la cual un objetivo no podrá enfocar un objeto. Si, dado un objetivo, es
necesario enfocar por debajo de su distancia mínima de enfoque, se pueden utilizar
anillos extensores. Los anillos extensores son anillos que se sitúan entre la cámara
y el objetivo para modificar las propiedades ópticas del sistema. Al utilizar anillos
extensores se pierde profundidad de campo proporcionalmente al grueso de los
anillos, de forma que con un anillo muy grueso se puede enfocar muy por debajo
de la distancia mínima de enfoque, pero la profundidad de campo se reduce mucho.
Los objetivos de alta resolución, además de ofrecer una mejor resolución, suelen
tener distancias mínimas de enfoque inferiores a las de los objetivos estándar.
Iluminación
La iluminación es un factor clave en un sistema de visión por computador.
Encontrar la iluminación adecuada puede simplificar mucho el procesado y análisis
de las imágenes, mientras que una iluminación inadecuada puede hacerlo inviable.
Prácticas de visión por computador
8
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Los sistemas de iluminación se pueden clasificar tanto por el tipo de fuente de luz
como por el tipo de luz, así como por su rango espectral, entre otras clasificaciones.
De esta manera, según la primera clasificación, se pueden encontrar sistemas
basados en:
-
Fluorescentes, mayoritariamente de alta frecuencia.
LED
Fuentes halógenas
Láser
Una posible clasificación por tipo de iluminación podría ser:
-
frontal
lateral
darkfield
contraste o backlight
coaxial
difusa
A continuación se muestran algunos ejemplos de cada tipo de iluminación:
Frontal
Se utiliza en aplicaciones generales donde no hay condiciones que requieran otro
tipo específico de iluminación.
Prácticas de visión por computador
9
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Lateral
Se utiliza en casos en que se quieren resaltar detalles que requieren que la fuente
de luz esté orientada en posición no cenital respecto a la cámara.
Prácticas de visión por computador
10
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Darkfield
Se utiliza para resaltar detalles en relieve.
luz frontal
Prácticas de visión por computador
Darkfield
11
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Backlight
Se utiliza para resaltar perfiles o para que la luz atraviese el objeto a inspeccionar.
luz frontal
Prácticas de visión por computador
Backlight
12
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Coaxial
Se utiliza para atenuar los reflejos de superficies reflectantes, iluminando de forma
homogénea la superficie.
luz frontal
Prácticas de visión por computador
luz coaxial
13
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
luz frontal
luz coaxial
Difusa
También se utiliza para atenuar reflejos, así como para eliminar sombras.
Prácticas de visión por computador
14
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
luz frontal
luz difusa
Frame grabbers
Los frame grabbers son tarjetas de adquisición de video. Podemos distinguir entre
frame grabbers analógicos y digitales. Los primeros pueden capturar video
analógico estándar o no estándar, mientras que los segundos pueden capturar
video de cámaras con interfaz, básicamente, CameraLink, dado que otros formatos
digitales que requieren frame grabbers han quedado obsoletos.
Suelen incorporar cierta cantidad de memoria que se utiliza a modo de buffer en la
transmisión entre la cámara y la memoria del sistema, ya que, de no ser así,
diferencias en la velocidad de transmisión entre la cámara y el sistema computador
podrían ocasionar pérdida de datos (imágenes).
Existen frame grabbers para distintos tipos de bus (PCI, PCI Express, etc). Algunos
pueden realizar algunas operaciones de preprocesado, como por ejemplo
decodificación Bayer o binarizado. Suelen incluir SDK para operaciones básicas:
captura de imagen, gestión del buffer, modificación de la configuración, operaciones
de preprocesado (si está disponible en el frame grabber). También suelen
incorporar entradas y salidas digitales que pueden incluir una entrada de trigger y
una salida de strobe.
Prácticas de visión por computador
15
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Computador + software
Existen varias alternativas en el campo de la visión por computador a la hora de
escoger un sistema de computación para el análisis y/o procesado de imágenes.
Una opción es trabajar sobre una plataforma basada en PC a base de añadir frame
grabbers (en el caso de trabajar con cámaras que lo requieran) e instalar el
software necesario. Otra opción consiste en el uso de sistemas dedicados que
suelen ser computadores que contienen todos los componentes necesarios para el
trabajo con visión por computador, por ejemplo un frame grabber, conector para
IEEE1394 y para Gigabit Ethernet.
También existen, como se ha comentado anteriormente, los llamados sistemas
inteligentes, que incorporan en un mismo dispositivo la cámara, la óptica, la
iluminación y el software para procesar y/o analizar imágenes, de forma que, a
través de sus salidas, pueden informar al exterior del resultado de una inspección.
A nivel de software, se suelen encontrar dos opciones. La primera opción es el uso
de aplicaciones diseñadas para la visión por computador. Mediante el uso de las
herramientas genéricas programadas por el fabricante del software, se crean
aplicaciones específicas para resolver un problema concreto. La principal desventaja
de esta opción es que las aplicaciones disponen de un número limitado de
operaciones (preprocesado y procesado) que pueden realizar, pero como ventaja
está el hecho de que la creación de aplicaciones específicas se puede llevar a cabo
en un tiempo relativamente corto.
La alternativa es el uso de librerías de programación. Éstas suelen ofrecer un mayor
número de posibilidades, ya que el programador construye su aplicación totalmente
a medida, aunque el tiempo necesario para ello suele ser mucho mayor que en el
caso de la primera opción comentada.
Estas prácticas están basadas en Sherlock, una aplicación para la creación de
aplicaciones de visión por computador que permite crear nuevos algoritmos y
preprocesados e integrarlos en la misma aplicación, eliminando parcialmente la
desventaja comentada anteriormente.
Prácticas de visión por computador
16
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Cuestiones
a) Calcula la distancia de trabajo dado un objetivo de 35 mm, una cámara JAI CVA11 y un campo de visión de 100 mm.
35 mm x 100 mm
= 729 mm
4,8 mm
b) Recalcúlalo para un objetivo de 12 mm y uno de 100 mm.
12 mm x 100 mm
= 250mm
4,8 mm
100 mm x 100 mm
= 2083 mm
4,8 mm
c) Cómo has obtenido el tamaño del sensor?
a) Por las pulgadas y cuadro anterior.
b) # pixels x tamaño pixel.
d) Dadas las hojas de especificaciones de la cámara JAI CV-A11 y los objetivos, una
distancia de trabajo de 25 mm y un campo de visión de 10 mm, que objetivo
escogerías? Justifica tu respuesta.
Debería escogerse el GMN31214MCN, ya que su MOD es inferior a nuestra distancia
de trabajo. El GM21214MCN no nos sería útil, ya que su MOD es superior a nuestra
distancia de trabajo.
e) Hay algún otro objetivo que se pudiera utilizar para obtener condiciones
similares (ignorad el ángulo de visión) a las del apartado anterior? En caso
afirmativo, si fuera necesario, indica que elemento habría que añadir para poder
cumplir las condiciones.
Se podría utilizar el modelo GM21214MCN, pero deberían utilizarse anillos
extensores.
También podría utilizarse un objetivo de alta resolución, GMHR31214MCN, que
tiene una MOD inferior a los dos objetivos no HR de 12 mm.
f) Recalcula ( a y b ) para la JAI CV-A1 en las mismas condiciones y comenta las
conclusiones.
35 mm x 100 mm
= 549 mm
6,4 mm
12 mm x 100 mm
= 186 mm
6,4 mm
100 mm x 100 mm
= 1563mm
6,4 mm
Prácticas de visión por computador
17
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
Como se puede ver, el mayor tamaño del sensor hace que haya más superficie en
la que proyectar imagen, con lo que, dada una misma distancia de trabajo y una
misma distancia focal, una cámara con un sensor mayor tendrá un campo de visión
mayor si el objetivo lo permite (si es el adecuado para un sensor mayor. De lo
contrario, se produciría vignetting). Dicho de otra forma, se necesitaría una
distancia de trabajo menor para tener un mismo campo de visión.
g) Supongamos una cámara JAI CV-A1 con una óptica GMN31214MCN. Qué
limitación podría tener esta configuración? Cómo se podría solucionar?
La A-1 es una cámara de alta resolución, mientras que el objetivo no lo es. Por
tanto, lo que se gana con la resolución de la cámara, se pierde con la del objetivo.
Deberíamos utilizar un objetivo de alta resolución para poder aprovechar las
ventajas de una resolución de cámara mayor.
h) Suponiendo una aplicación con una cámara JAI CV-A11, una distancia de trabajo
de 170 mm, qué objetivo utilizarías teniendo como restricción el hecho de que debe
tener una distancia focal de 12 mm y sin utilizar elementos adicionales?
Los objetivos no HR de 12 mm tienen ambos una MOD superior a la distancia de
trabajo de la aplicación. Dado que no se pueden utilizar anillos extensores, una
solución sería el uso de un objetivo HR. Aunque la cámara no podrá aprovechar la
resolución del objetivo, se podrá tener una distancia de trabajo inferior la MOD de
los objetivos normales.
i) Comenta las dos diferencias que creas más importantes entre los objetivos
GM32514MCN y GMN32516MCN
La apertura y la MOD.
j) En que consiste el partial scan? Para qué crees que puede ser útil/qué ventajas
crees que puede tener?
El partial scan consiste a dejar de leer líneas horizontales, con lo que se pierde
información en los extremos de la imagen, a cambio de ganar en frames por
segundo.
k) En qué consiste el binning? Para qué crees que puede ser útil/qué ventajas crees
que puede tener?
El binning consiste en hacer que dos píxels se agrupen vertical u horizontalmente
formando uno solo. De esta forma se gana sensibilidad y se pierde resolución
vertical y/u horizontal, a la vez que la imagen pierde su proporción original.
l) Qué diferencia básica crees que hay entre los modos de trigger “Edge Pre-Select”
y “Pulse Width Control”?
En el modo Edge Pre-Select, una vez se dispara el trigger, el tiempo de exposición
viene determinado por la configuración de la cámara. En el caso Pulse Width, el
tiempo de exposición tiene la misma duración que el ancho del pulso de trigger.
m) Cuáles son los tiempos de integración mínimos y máximos en la A-11 y la A-1 a
28,64 Mhz?
A-11 : min=1/100000
máx=1/30
Prácticas de visión por computador
18
Práctica 1.- Introducción a los sistemas de Visión por Computador
_______________________________________________________________
A-1 : máx=1/16
min=1/200000
n) Suponiendo que debes hacer la lectura de un código de barras. El campo de
visión es de 200 mm y el grueso de la linia más fina del código de barras es de 0.5
mm. Considerando la restricción de que la linia más fina debe tener un grueso
mínimo de 4 píxels, qué resolución debe tener la cámara para esta aplicación?
4
x
=
0,5 200
Obtenemos x = 1600 píxels.
o) Por qué crees que los fluorescentes utilizados en visión por computador suelen
ser de alta frecuencia?
Si la frecuencia es suficientemente baja en relación al tiempo de integración, las
imágenes se verán bajo el efecto del flickering o parpadeo.
p) Cómo iluminarías el blister de algún medicamento para poder hacer un OCR de
su nombre?
Respuesta libre, aunque debería encaminarse hacia luz difusa o coaxial.
Prácticas de visión por computador
19
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Práctica 2.- Introducción a Sherlock
Introducción
Sherlock es un software de interfaz gráfico diseñado para la visión industrial por computador
desarrollado por DALSA. Las herramientas que incorpora lo hacen útil para una gran variedad
de aplicaciones automatizadas. Una vez capturadas las imágenes del proceso, su principio de
funcionamiento se basa en definir zonas de interés o ROI (Region Of Interest) sobre las que se
pueden aplicar distintas herramientas.
Investigaciones
Una aplicación realizada con el software Sherlock recibe el nombre de investigación y tiene la
extensión .ivs. Al abrir una investigación, si están activas, se pueden distinguir varias
ventanas. La ventana principal es la que contiene la barra de menús típica en aplicaciones con
interfaz gráfica. Mediante el menú View se puede escoger qué ventanas se quieren visualizar.
Prácticas de visión por computador
20
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Image Window
Muestra las imágenes sobre las que se aplicará la investigación. El origen de las imágenes
puede ser la captura en vivo desde una cámara, una imagen o secuencia de imágenes
guardada en el sistema de ficheros o imágenes extraídas de otras imágenes. Pueden haber
varias ventanas de imagen dentro de una investigación.
Prácticas de visión por computador
21
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Program window
Contiene la rutina (principal y subrutinas, en caso de que se utilicen) en la que se puede ver la
secuencia que forma la investigación. Todas las instrucciones que forman la investigación se
ejecutan siguiendo el orden que muestra esta ventana.
Prácticas de visión por computador
22
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Instruction window
Contiene todas las instrucciones disponibles, que van desde varios tipos de operaciones
matemáticas hasta operaciones de entrada y salida, pasando por instrucciones de control de
flujo de ejecución y manipulación de vectores.
Prácticas de visión por computador
23
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Variables window
Se utilizan para monitorizar los valores de las variables que se utilicen. Para utilizar variables
primero hay que crearlas y luego asociarlas a lecturas. Las variables pueden ser de tipo
numérico, cadena de caracteres, booleanas, punto (vector correspondiente a las coordenadas x
e y) o línea.
Watch window
Permite monitorizar los valores que retornan las herramientas sin necesidad de crear variables.
Prácticas de visión por computador
24
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Monitor window
Contiene los mensajes que genera Sherlock
Report window
Se puede utilizar para mostrar mensajes definidos por el programador.
Prácticas de visión por computador
25
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Digital inputs/Digital outputs
Muestran el estado de las entradas y salidas digitales. En el caso de las salidas, clickando con
el botón derecho sobre una salida se puede conmutar su valor.
Consideraciones sobre la operación de la aplicación
El menú Run permite escoger el modo de ejecución de las investigaciones. Si sólo se quiere
ejecutar una investigación una vez, debe escogerse Once, mientras que Continuous permite
reiniciar la investigación permanentemente cada vez que finaliza. También existe la posibilidad
de ejecutar una investigación paso a paso, útil para depurar las investigaciones.
La ventana de imagen puede estar en modo de visualización en vivo o fija. En el primer caso,
se visualizan de forma continuada las imágenes que envía la cámara o una secuencia de
imágenes almacenadas en el sistema de ficheros, en el caso de que ésta sea la fuente de
imágenes. Para aplicar y configurar herramientas, es necesario que haya imagen fija.
Las herramientas que se podrán utilizar dependerán de la ROI (en el entorno de Sherlock
también se denomina ROI a una herramienta que define el área sobre la que se aplicarán
preprocesos y procesos) que se utilice. Cada ROI tiene definida una serie de herramientas que
puede utilizar. Por ejemplo, mientras que con una ROI rectangular se pueden utilizar
herramientas para la lectura de códigos de barras (Barcode 1D, Barcode Datamatrix, Barcode
QR), con una ROI lineal no se puede utilizar ninguna de estas herramientas.
Los equipos en los que se ejecutan las investigaciones de Sherlock pueden ser ordenadores
corrientes con frame grabbers u ordenadores dedicados a la visión por computador o VA’s
(Vision Appliances), que son ordenadores compactos que incorporan un frame grabber y un
conector para las entradas y salidas. También puede tratarse de equipos con cámaras Firewire
Prácticas de visión por computador
26
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
o Gigabit Ethernet. En el caso de tratarse de un ordenador con frame grabber, se puede
trabajar con tarjetas de entrada/salida que se conectan a ésta mediante un conector adicional.
Ejemplo de aplicación
Al ejecutar Sherlock aparece la ventana siguiente
En primer lugar debe configurarse la adquisición. En el caso de estas prácticas no se captura
en vivo, así que deberemos trabajar con imágenes guardadas en el sistema de ficheros. Para
ello haremos doble click sobre la ventana de imagen y aparecerá la siguiente ventana:
Prácticas de visión por computador
27
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Prácticas de visión por computador
28
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Para cargar una imagen hacer click sobre el botón que hay al final de la línea de File.
Escogemos la ubicación de la imagen ejemplo1.bmp y, después de habilitar la ventana de
programa, el resultado es el siguiente:
El objetivo de esta primera investigación será contar los pads que aparecen en la imagen. Para
ello, binarizaremos la zona de la imagen para después contar los blobs resultantes. Para
realizar una binarización, en primer lugar se define una ROI. Clickaremos sobre el botón
Rectangle en la barra de la ventana de imagen y definimos una ROI como la que se puede ver
en la imagen siguiente.
Prácticas de visión por computador
29
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Haciendo doble click en la ROI aparece una ventana como la siguiente:
Prácticas de visión por computador
30
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Como se puede ver, cada ROI puede contener hasta 7 preprocesos y 3 algoritmos de
procesado. Escogemos el preproceso Threshold y clickamos sobre Parameters. En el campo
threshold asignamos el valor 165, de manera que todo píxel dentro de la ROI que tenga una
valor inferior a 165 en la escala de grises pasará a tener el valor 0 y todo aquel que tenga un
valor superior pasará a tener un valor 255, como se indica en los campos inferiores al campo
threshold.
Una vez realizado este proceso, en el apartado Algorithms escogemos Connectivity – Binary y
clickamos sobre Parameters. Connectivity busca blobs y modificando los parámetros
configuramos la herramienta para que sólo busque los blobs que a nosotros nos interesen. En
este caso, después de hacer la binarización, vemos que los números de la PCB y el contorno
central que aparece en la imagen también son susceptibles de ser encontrados por
Connectivity, por lo que debemos encontrar la forma de distinguir estos blobs de aquellos que
a nosotros nos interesan. Una forma de hacer esto sería mediante el área. Clickamos sobre
Parameters y modificamos los siguientes campos:
-
black blobs
min area
max area
max returned
:
:
:
:
False
800
1000
100
→
→
→
→
Búsqueda de blobs blancos
Area mínima de cada blob a encontrar
Area máxima de cada blob a encontrar
Número superior al número máximo de blobs que se
espera encontrar, de forma que no deje de contar ningún
pad
Clickamos OK. Desde el menú View hacemos visible la ventana Watch i arrastramos count, que
cuelga de RectA.Connectivity – Binary, hacia ella. El valor que lea será el número de blobs que
ha encontrado Connectivity. En este caso, 32. Vemos que cada blob contiene tres cruces.
Corresponden al centro de gravedad de cada blob y a 2 de las esquinas del menor rectángulo
que contiene en su interior a cada blob.
Prácticas de visión por computador
31
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Vemos ahora una forma distinta de realizar el recuento de pads. Borramos la ROI clickando
sobre ella presionando Supr.
Ahora definimos 4 ROI Line de la manera que aparece en la siguiente imagen:
Prácticas de visión por computador
32
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Para cada Line utilizamos un binarizado (Threshold) con un valor 165 y un algoritmo Edge
Count, que cuenta las transiciones (en valores de escala de grises) entre píxels cuyo gradiente
supere un cierto umbral ajustable por el usuario.
Ponemos en la ventana Watch los resultados dark2light.count de cada línea y clickamos sobre
la flecha verde (Run once) que hay en el menú principal.
El resultado debería ser como el que aparece en la imagen siguiente:
Prácticas de visión por computador
33
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Prácticas de visión por computador
34
Práctica 2.- Introducción a Sherlock
________________________________________________________________________
Ejercicios
a) Dado el conjunto de imágenes que se proporcionan para la realización de esta práctica,
diseñar una investigación que encuentre el número de piezas buenas. De entre las piezas que
aparecen en las imágenes, las malas son las que no tienen pestaña en el lado izquierdo de la
pieza, así como las que están rotas.
b) Cuál es el significado de los campos de una variable de tipo Line?
c) Con qué cámara se han capturado las imágenes?
A-2
d) Con qué tipo de luz se han capturado las imágenes?
Backlight
Prácticas de visión por computador
35
Práctica 3.- Alignments
________________________________________________________________________
Práctica 3.- Alignments
Los alignments son puntos de referencia dentro de una imagen. Sirven para posicionar
herramientas de forma dinámica.
Como ejemplo, supongamos la siguiente pieza
Se quiere medir la cota indicada por las flechas, pero la pieza puede estar situada en cualquier
parte de la pantalla.
Si la pieza estuviese siempre en la misma ubicación, sería muy fácil resolverlo utilizando una
herramienta Line, pero el hecho de que no esté siempre en la misma posición complica un
poco la solución. La circunferencia es fácil de encontrar, por ejemplo, con un binarizado y un
Prácticas de visión por computador
37
Práctica 3.- Alignments
________________________________________________________________________
Connectivity. Si configuramos la herramienta Line para que se sitúe dinámicamente tomando
como referencia el centroide de la circunferencia, se resuelve el problema. Si la pieza se
desplaza, la herramienta Line se situará siguiendo el mismo desplazamiento que el centroide
del agujero.
Sherlock permite crear alignments a partir de puntos encontrados previamente. Para
utilizarlos, primero deben utilizarse herramientas para obtener dichos puntos y posteriormente
deben crearse los alignments para finalmente asignarlos a los puntos.
Para crear un alignment, accedemos al menú Image Window y clickamos sobre Options. Se
selecciona la pestaña Alignment. Si la investigación contiene alguna herramienta que retorne
un punto, éste se podrá seleccionar como alignment.
Clickamos sobre Create y aparecerá un nuevo alignment en la ventana de la izquierda.
Arrastramos el punto de la ventana de la derecha hasta el recientemente creado alignment
hasta la ventana de izquierda. El resultado de este procedimiento será:
Prácticas de visión por computador
38
Práctica 3.- Alignments
________________________________________________________________________
A partir de aquí se puede utilizar este alignment para cualquier ROI. Primero hay que situar la
ROI manualmente en el punto que nos interese respecto al alignment. Vemos un ejemplo en la
figura siguiente (alignments0000.bmp en el directorio ejemplo\imágenes).
Prácticas de visión por computador
39
Práctica 3.- Alignments
________________________________________________________________________
Supongamos que queremos medir la anchura del agujero central en las zonas en las que es
más ancho. La pieza puede tener cierto desplazamiento en x e y en diferentes imágenes. Si
situamos una herramienta Line sobre cada zona donde la anchura es máxima, el
desplazamiento de la pieza podría hacer que la herramienta quedara situada sobre una zona
en la que la anchura no sea máxima.
Alignment permite que las herramientas sigan el desplazamiento de la pieza. Como punto de
referencia escogemos el centroide del agujero central. Para obtener este punto utilizamos un
binarizado y un Centroid – Binary (pixel value 0). Una vez realizado, creamos un alignment
con el procedimiento visto anteriormente. Si ahora ejecutamos una vez la investigación,
aparecerá una marca sobre el punto de referencia. Situamos dos ROI Line sobre las zonas
donde la anchura es máxima.
En este punto, clickamos sobre la pestaña Properties de cada Line y desplagamos el menú
Alignment, seleccionando el alignment anteriormente creado (por defecto, alignmentA). A
partir de este momento, las Line se moverán siguiendo su posición relativa al centroide. Si
abrimos la imagen alignments0001.bmp, en la que la pieza es diferente y existe un pequeño
desplazamiento, y ejecutamos una vez, vemos lo siguiente:
Prácticas de visión por computador
40
Práctica 3.- Alignments
________________________________________________________________________
Vemos que el centroide, marcado con una cruz roja, no está situado exactamente sobre la
marca correspondiente al alignment. La diferencia es que las coordenadas corresponden al
desplazamiento de la pieza. También se ve una línea discontinua cercana a las ROI Line. Las
líneas discontinuas muestran la posición original de las ROI, mientras que las líneas continuas
marcan la posición una vez desplazadas según el alignment.
Prácticas de visión por computador
41
Práctica 3.- Alignments
________________________________________________________________________
Secuencias de imágenes
Tal y como hemos comentado anteriomente, Sherlock permite trabajar con secuencias de
imágenes. Para que Sherlock reconozca una serie de ficheros como una secuencia de
imágenes, los ficheros deben tener una parte del nombre común y una variable, que
corresponde a su numeración. Así, un ejemplo podría ser:
secuencia0000.bmp
secuencia0001.bmp
secuencia0002.bmp
...
secuencia0152.bmp
Como se puede observar, Sherlock espera encontrar ficheros con una numeración ordenada
ascendente.
Para cargar una secuencia, desde la ventana Options, en la pestaña Image source
seleccionamos el campo Sequence y clickamos sobre el botón de la derecha para navegar por
el sistema de ficheros. Seleccionamos la primera imagen de la secuencia e indicamos el tiempo
que queremos que transcurra entre imagen e imagen.
El número que inicia la secuencia de imágenes se indica en Starting image number y podemos
indicar qué número finaliza la secuencia en Ending image number. Como se puede ver en la
ventana, -1 indica que no hay número que indique finalización de secuencia, con lo que, si
ejecutamos la investigación en modo continuo, la secuencia se repetirá hasta que se detenga
la ejecución de la investigación.
Prácticas de visión por computador
42
Práctica 3.- Alignments
________________________________________________________________________
Ejercicio
Con un solo punto se puede hacer que las ROI sigan un desplazamiento en x e y, pero no se
pueden desplazar angularmente. Para ello hay que utilizar 2 o 3 puntos de referencia. Crea
una investigación que utilice dos puntos de referencia y que una ROI Line siga el
desplazamiento angular de la pieza. Utilícese como secuencia de imágenes las que se
encuentran en el directorio ejemplo\imagenes.
Prácticas de visión por computador
43
Práctica 4.- Color
________________________________________________________________________
Práctica 4.- Color
Introducción
Las versiones 7.X de Sherlock incorporan la posibilidad de trabajar con imágenes en color.
Cabe destacar que, al trabajar con este tipo de imágenes, los preprocesos y algoritmos
disponibles para cada tipo de ROI varían respecto a aquellos disponibles para imágenes en
monocromo.
En gran número de aplicaciones en color existe la necesidad de definir patrones de color. En
estos casos son fundamentales los clasificadores de color.
La función de dichos clasificadores es definir distintos patrones dentro del espacio de color RGB
de 24 bits. De esta manera, un color se define por sus componentes RGB y una cierta
tolerancia, llamada distancia, que se aplica en función del tipo de clasificador.
Para la utilización de clasificadores, el proceso consiste en definir una ROI que contenga el
color que se desea clasificar y abrir uno de los dos clasificadores que incopora Sherlock 7. El
clasificador calcula un valor a partir de los píxels dentro de la ROI, o únicamente un píxel.
Posteriormente utilizaremos el archivo de clasificación para la comparación de otras regiones
con los patrones aprendidos.
Existen dos tipos de clasificadores:
Clasificador de color por bloques
Utilizado en los algoritmos Color Map y Color Presence. El fichero de clasificación resultante
tiene extensión .lct
Clasificador de color estadístico
Utilizado en el algoritmo Spot Meter. El fichero de clasificación resultante tiene extensión .ucc
Prácticas de visión por computador
45
Práctica 4.- Color
________________________________________________________________________
Mapeo de color
Muchos de los preprocesos y/o algoritmos de Sherlock 7 sólo están disponibles para imágenes
en monocromo, por lo que, si se quieren utilizar en una imagen RGB, debe transformarse dicha
imagen a monocromo previamente a su uso.
Una opción sería extraer cada canal (R, G, B) por separado y así poder utilizar las operaciones
que Sherlock ofrece para imágenes en monocromo. De esta manera no se perdería
información, pero probablemente se triplicaría la cantidad de operaciones a realizar, que
implicaría un incremento en el tiempo de ejecución de cada iteración de la investigación.
Una opción sería transformar la imagen de RGB a monocromo (MONO8) mediante Sherlock,
con lo que se perdería información. Esta opción presenta un inconveniente importante, ya que
algunos colores distintos tendrán un valor parecido en la escala de grises después de realizar
esta transformación, con lo que será difícil, o incluso imposible, distinguir de forma robusta
entre dichos colores.
Véase la siguiente imagen.
Imagen RGB (cedida por Stemmer Imaging)
Prácticas de visión por computador
46
Práctica 4.- Color
________________________________________________________________________
Esta imagen muestra clips de distintos colores. Sin embargo, si se quisieran utilizar
preprocesos y/o algoritmos para imágenes en monocromo, después de transformar la imagen
se comprobaría que colores distintos serían indistinguibles en la escala de grises. Obsérvese la
similitud entre los clips violeta y los naranja.
Imagen tras la conversión a MONO8
Sherlock ofrece la posibilidad de realizar un mapeo de colores. Esto significa que a cada color,
después de su aprendizaje, se le asignará un valor en la escala de grises, de manera que se
podrán aplicar preprocesos y algoritmos con el fin de extraer información adicional de cada
color, conociendo exactamente qué valor se le ha asignado en la escala de grises. Para realizar
un mapeo se crea una ROI en la imagen en color que cubra la zona a mapear que contenga un
algoritmo Color Map y se crea una nueva ventana de imagen (Image Window) cuyo origen
(Ventana Options) será Reading (por ejemplo, RectA.Color Map.color map)
Clasificación de colores
Un posible método para crear un clasificador de color consiste en lo siguiente: Se crea una ROI
rectangular y se sitúa sobre el color en cuestión. Se abre el diálogo Parameters del algoritmo
Color Map y se clicka en Configure. Se clicka en Teach y se escoge cómo se va a definir la zona
en la que se encuentra el color. En este ejemplo, se utilizará un rectángulo, así que, una vez
Prácticas de visión por computador
47
Práctica 4.- Color
________________________________________________________________________
clickado Teach, se introduce el nombre que le asignaremos al color en la casilla Teach a new or
existing color: . A continuación se clicka sobre el rectángulo que se muestra en la figura:
y se define de nuevo una ROI dentro de la imagen que aparece en la ventana de la
herramienta para clasificar colores en la que nos encontramos. Una vez hecho esto, clickamos
sobre Add New si se trata de un nuevo color y a continuación sobre Learn y observamos como
aparece una nueva entrada en la lista de colores clasificados junto con los valores RGB
asociados a ese color. Repetimos el proceso para cada color o tono de color que queramos
clasificar, desplazando la ROI de la ventana de imagen (Image Window) hacia el nuevo color o
tono y volviendo a abrir el diálogo Parameters y repitiendo el proceso de clasificación.
Prácticas de visión por computador
48
Práctica 4.- Color
________________________________________________________________________
El color de una pinza en la imagen se percibe más o menos como tal en función de si se
proyecta ninguna sobra de otra pinza sobre ella o no. Para solucionar esto, se pueden clasificar
distintos tonos de verde bajo el mismo nombre, de forma que cualquiera de los distintos tonos
de verde se mapearán en el mismo valor de la escala de grises. Véanse los dos tonos de verde
que aparecen en la ventana de Color Map y que se mapean en el mismo valor de la escala de
grises, 1.
Una forma de realizar una buena clasificación sería clasificar los suficientes tonos de un mismo
color como para que se pueda trabajar con distancias cortas, disminuyendo así la posibilidad
de que se produzca un resultado no deseado en el reconocimiento de colores.
A pesar de que este método puede dar resultados muy robustos, puede que alguna pieza
contenga un tono de su color que sea similar a algún tono de otro color y se produzcan
resultados inesperados. Para solucionar esto, si se realiza una búsqueda de blobs en
monocromo (opción muy probable al mapear en escala de grises), por ejemplo, se pueden
discriminar estas detecciones no esperadas por su menor tamaño frente a los blobs deseados.
Debe recordarse que la iluminación será determinante a la hora de solucionar una aplicación, y
en especial en casos como este, en el que puede contribuir a una solución por software sencilla
o, si la iluminación no es la adecuada, puede imposibilitar la resolución de la aplicación.
Aunque en toda aplicación de visión por computador la iluminación es muy importante, en
aplicaciones en color lo puede ser más, dado que una pequeña variación en la iluminación
puede afectar a un patrón de color aprendido.
Prácticas de visión por computador
49
Práctica 4.- Color
________________________________________________________________________
También debe tenerse en cuenta que el aprendizaje o clasificación de colores puede realizarse
en cualquier momento, de manera que si al probar la aplicación se considera conveniente
ampliar la clasificación de colores, pueden introducirse nuevos colores o nuevos tonos de un
mismo color.
A continuación se muestra el resultado al aplicar el mapeo. Los colores están mapeados según
la figura anterior. En la imagen mapeada se han utilizado filtros ThresholdBand para que sólo
se visualice la imagen resultante del mapeo del color de interés. Por ejemplo, con los
parámetros threshold low=0, threshold high=0, in value=0, out value=255, únicamente se
visualizarán en forma de blobs negros las regiones que contengan los distintos tonos de violeta
que se hayan clasificado previamente.
Prácticas de visión por computador
50
Práctica 4.- Color
________________________________________________________________________
Dado que el mapeado del color en este ejemplo no es perfecto y que se ha utilizado un
filtro Erode para una mejor visualización, la interpretación de los histogramas debe
hacerse de forma cualitativa.
Mapeado de violeta
Histrograma violeta
Prácticas de visión por computador
51
Práctica 4.- Color
________________________________________________________________________
Mapeado de verde
Histograma verde
Prácticas de visión por computador
52
Práctica 4.- Color
________________________________________________________________________
Mapeado de naranja
Histograma naranja
Prácticas de visión por computador
53
Práctica 4.- Color
________________________________________________________________________
Mapeado de azul
Histograma azul
Prácticas de visión por computador
54
Práctica 4.- Color
________________________________________________________________________
Mapeado de rojo
Histograma rojo
Prácticas de visión por computador
55
Práctica 4.- Color
________________________________________________________________________
Mapeado de amarillo
Histograma amarillo
Prácticas de visión por computador
56
Práctica 4.- Color
________________________________________________________________________
Refinado de la clasificación
Se puede afinar el ajuste en el aprendizaje del color. Una vez aprendidos los colores deseados,
al abrir el configurador del clasificador, se selecciona el color o tono que se quiere ajustar y se
clicka sobre Show. Al variar la distancia se puede ver en la imagen el efecto de dicha variación,
de forma que se ajuste a las necesidades del diseñador de la investigación.
Prácticas de visión por computador
57
Práctica 4.- Color
________________________________________________________________________
Ejercicio
En las imágenes adjuntas aparecen resistencias eléctricas de diferentes valores. Realizar una
investigación que reconozca los valores presentes en las resistencias.
La estrategia a seguir es libre, pero se recomienda utilizar el mapeo de colores.
Prácticas de visión por computador
58
Práctica 5.- Instrucciones
________________________________________________________________________
Práctica 5.- Instrucciones
Sherlock dispone un conjunto de instrucciones con funcionalidades distintas, como por ejemplo
control de flujo, tratamiento de vectores, operaciones matemáticas, operaciones de entrada y
salida, etc que corresponden a las acciones y funciones de los lenguajes de programación
basados en librerías. Pueden tener parámetros de entrada y devolver resultados.
Cuando se introduce una instrucción en la ventana de programa de una investigación, los
parámetros de entrada están marcados con un triángulo rojo, mientras que las salidas están
marcadas con uno verde.
A continuación se comenta brevemente la funcionalidad de cada grupo de instrucciones
General
control de flujo, creación de scripts y nuevas ventanas de imagen
Array
operaciones con vectores de elementos que pueden ser de los 5
tipos que soporta Sherlock
Boolean
instrucciones para realizar algunas operaciones binarias
Geometric
cálculos geométricos y generación de puntos y líneas a partir de
datos numéricos
Annotations
permite dibujar figuras geométricas y añadir texto a la imagen
IO Calibration
instrucciones relacionadas con la calibración
IO Camera
permite acceder a las cámaras conectadas al sistema y modificar y
leer registros y/o parámetros de la cámara, como por ejemplo, el
shutter
IO ControlLogix
permite interactuar con PLC que formen parte de un sistema
ControlLogix
IO Digital Input
operaciones con las entradas digitales de la capturadora de video
IO Digital Output
operaciones con las salidas digitales de la capturadora de video
IO Ethernet/IP
operaciones de lectura y escritura a través de sockets
IO File
operaciones sobre ficheros
IO Keyboard
permite interactuar mínimamente con el teclado
IO Image Window
operaciones propias de la ventana de imagen
IO Modbus
permite interactuar con PLC que utilicen este protocolo
IO Reporter
operaciones sobre la ventana de mensajes Reporter
IO ROI
permite acceder a los datos de una ROI, p.e. las coordenadas que la
definen
IO Serial
operaciones para la comunicación vía serie
IO System
operaciones diversas, la mayoría relacionadas con aspectos propios
de un sistema operativo
Numeric
operaciones numéricas
Prácticas de visión por computador
59
Práctica 5.- Instrucciones
________________________________________________________________________
General
control de flujo, creación de scripts y nuevas ventanas de imagen
Statistics
operaciones estadísticas
String
operaciones con cadenas de caracteres
Trigonometric
operaciones trigonométricas
Cabe destacar que, para utilizar instrucciones orientadas a la comunicación (IO ControlLogix,
IO Digital Input, IO Digital Output, IO Ethernet/IP, IO Modbus, IO Serial), hay que introducir
en la ventana IO configuration los parámetros adecuados para poder efectuar correctamente
dicha comunicación.
Se muestra un ejemplo de los parámetros a introducir para poder comunicarse sobre TCP/IP.
Únicamente debe indicarse si la investigación de Sherlock hará de servidor o de cliente, así
como el nombre o IP de la máquina en la que se ejecuta y el puerto.
A continuación se puede ver un ejemplo del uso de instrucciones. En este ejemplo se quiere
calcular, por una parte, la rotación de la pieza. Por otra parte, también se quiere medir la
distancia entre dos puntos utilizando instrucciones.
Prácticas de visión por computador
60
Práctica 5.- Instrucciones
________________________________________________________________________
Existen distintas formas para realizar este cálculo. En este ejemplo, la instrucción de que
dispone Sherlock para encontrar la distancia entre dos puntos se utilizará para validar el
resultado obtenido.
Ejemplo
Abrimos Sherlock y cargamos la imagen 0000.bmp que se encuentra dentro del directorio
ejemplo. Una vez tengamos la imagen en la ventana de imagen, creamos una ROI que
contenga la totalidad de la pieza en su interior. A dicha ROI le aplicamos un Threshold cuyo
parámetro threshold sea 255. El resultado debería ser el siguiente:
Prácticas de visión por computador
61
Práctica 5.- Instrucciones
________________________________________________________________________
Una vez hecho esto, añadimos a la ROI el algoritmo Connectivity-Binary y cambiamos los
parámetros para que quede de la siguiente manera:
Prácticas de visión por computador
62
Práctica 5.- Instrucciones
________________________________________________________________________
Aceptamos y añadimos un segundo algoritmo Connectivity-Binary en la misma ROI. En este
caso los parámetros deben ser los siguientes:
Prácticas de visión por computador
63
Práctica 5.- Instrucciones
________________________________________________________________________
Tras este paso, el agujero central y el pequeño deberían estar encuadrados en sendos
rectángulos (véase imagen siguiente).
El algoritmo devuelve, entre otros datos, el centroide de los blobs que encuentra. Este dato es
del tipo Point. Para encontrar la rotación de la pieza, obtenemos el ángulo con la instrucción
PtsToBestAngle, a la cual le pasamos como parámetros los centroides retornados por
Connectivity-Binary. Para mayor comodidad, podemos utilizar la instrucción RadToDeg
pasándole como parámetro el resultado de PtsToBestAngle para obtener el ángulo en grados.
Si guardamos el resultado en una variable angulo, creada anteriormente, el resultado al
ejecutar la investigación podría ser el siguiente:
Prácticas de visión por computador
64
Práctica 5.- Instrucciones
________________________________________________________________________
En este punto ya tenemos el ángulo. Para obtener la distancia entre los dos puntos,
utilizaremos el Teorema de Pitágoras. En primer lugar, descomponemos las coordenadas en
formato Point en dos valores numéricos correspondientes a las coordenadas X e Y con la
instrucción PtToXY. Utilizaremos una instrucción para cada punto y como parámetro de entrada
introduciremos los valores de centroide que devuelve Connectivity-Binary.
Prácticas de visión por computador
65
Práctica 5.- Instrucciones
________________________________________________________________________
A partir de aquí aplicamos el Teorema de Pitágoras mediante las intrucciones Subtract, Abs,
Square, Add y Sqrt como se muestra a continuación.
Como se puede ver, el resultado se almacena en una variable, dist_pit.
Sherlock ofrece la posibilidad de realizar un mismo cálculo de distintas maneras. Para validar
el resultado obtenido, podemos utilizar la instrucción PtToPtDist, que calcula la distancia dados
dos puntos. El resultado se almacena en una variable llamada dist_val.
Prácticas de visión por computador
66
Práctica 5.- Instrucciones
________________________________________________________________________
Al ejecutar la investigación, el resultado que obtenemos es
Como podemos observar, el resultado es idéntico.
Prácticas de visión por computador
67
Práctica 5.- Instrucciones
________________________________________________________________________
Ejercicios
Añade al programa ejemplo el cálculo de la distancia entre dos puntos mediante un script.
Deben tenerse en cuenta algunos aspectos del uso de scripts en Sherlock. El lenguaje para
crear dichos scripts es Javascript. Dejando al margen la sintaxis de este lenguaje, para poder
acceder a las variables del entorno de Sherlock desde un script, hay que referirse a dichas
variables de la siguiente forma:
Vars.nombre_de_la_variable
Si se abre una ventana para la edición de scripts, al teclear Vars. (nótese el punto), aparecerá
una lista con las variables a las que se puede acceder.
Para acceder a una función matemática, debe teclearse Math. para que, de nuevo, aparezca
una lista con las funciones matemáticas disponibles.
Para comprobar si el script es correcto a nivel de sintaxis, utilícese el botón Check Syntax en la
ventana de edición del script.
Desde los scripts no se puede acceder a las lecturas que devuelven los algoritmos de Sherlock,
por lo que deberán utilizarse variables. De la misma manera, deberá utilizarse una variable en
la que almacenar el resultado para poder visualizarlo desde Sherlock.
Al instalar Sherlock, se instala también un manual de referencia de Javascript que puede
resultar útil para este ejercicio.
[ejemplojs.ivs]
¿Por qué utilizamos el parámetro remove blobs touching border? Hay alguna forma de obtener
el mismo resultado sin modificar el valor por defecto de este parámetro? En caso afirmativo,
propón una.
Se utiliza para descartar los blobs que limitan con los bordes de la ROI. En este caso, permite
distinguir entre la zona del fondo que queda fuera de la pieza de aquellas zonas del fondo que
se ven debido a los agujeros de la pieza.
Una forma de no utilizar este flag sería ajustar los valores máximos y mínimos de área,
anchura y longitud de los blobs a buscar, de manera que no se puedan confundir los blobs
buscados y las zonas del fondo que no nos interesan.
Explica cómo calcula el ángulo la instrucción PtsToBestAngle. Indica qué ángulo devuelve la
instrucción PtsToBestAngleA. Explica qué puntos utiliza para calcular el ángulo.
PtsToBestAngleA calcula el ángulo entre el eje X y la línea que definen los dos puntos que se le
pasan como parámetros.
Ejecuta la investigación que se encuentra en el directorio ejercicio. Antes de ejecutarla,
configura las comunicaciones TCP/IP con los parámetros que aparecen en la captura de
pantalla de la ventana IOconfiguration (IP 127.0.0.1, puerto 5555). A continuación abre la
aplicación HyperTerminal que forma parte de las utilidades de Windows y configura una
Prácticas de visión por computador
68
Práctica 5.- Instrucciones
________________________________________________________________________
conexión TCP/IP utilizando como dirección del host 127.0.0.1 y como puerto el 5555. En el
menú Llamar, seleccionar Esperar una llamada. Una vez hecho esto, ejecuta la investigación
ejercicio.ivs y carga, como secuencia, imágenes que se encuentran en el directorio ims dentro
del directorio ejercicio. Procura utilizar un retardo adecuado (Delay before load [ms] debajo de
Sequence en la ventana Options) para poder ver correctamente el resultado de cada iteración
durante la ejecución de la investigación.
Examina la aplicación y explica detalladamente qué hace.
Prácticas de visión por computador
69
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Práctica 6.- Búsqueda de patrones
La búsqueda de patrones es una técnica ampliamente utilizada en aplicaciones de visión
industrial por computador. Consiste en, dado un objeto patrón de referencia, buscar en nuevas
imágenes objetos similares al de referencia. El usuario o programador de una aplicación de
búsqueda de patrones a menudo podrá decidir el grado de similitud que se considera aceptable
o, dicho de otra manera, cuál será el umbral que definirá cuándo se considera que un objeto
se corresponde al patrón de referencia.
Un sistema de reconocimiento de patrones, como se menciona en la literatura sobre esta
técnica, se compone, como mínimo, de un elemento sensor que forma una imagen a partir del
mundo real, un sistema de preprocesado y/o realce de características de dicha imagen, un
sistema extractor de características y un clasificador que decide cómo clasificar la imagen
obtenida.
En esta práctica se explica el trabajo con patrones con Sherlock 7. Sherlock 7 incorpora
distintos algoritmos para la búsqueda de patrones en imágenes en monocromo. A continuación
se describen los principios de funcionamiento y el uso de cada uno de ellos.
Search – Correlation
Este algoritmo basado en el histograma crea un mapa de los valores en la escala de grises del
patrón y busca coincidencias en la región de interés.
Se buscan posibles coincidencias utilizando unos pocos píxels del patrón, es decir,
submuestrea el patrón y se buscan coincidencias del patrón submuestreado. Cada una de
posibles ocurrencias es examinada con un número superior de píxels hasta que cada una
ellas se descarta o acepta como coincidencia. Es conveniente utilizar este algoritmo
imágenes poco contrastadas.
Ventajas
se
las
de
en
Desventajas
•Ejecución rápida
•El uso del escalado y rotación aumenta
•Permite escalado y rotación de la imagen
mucho el tiempo de ejecución del algoritmo
•Puede encontrar múltiples coincidencias en la •No es una buena solución para el trabajo con
imagen
imágenes que pierden información sensible al
submuestrearlas
Prácticas de visión por computador
71
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Search – Geometric
Este algoritmo está basado en la lógica de contornos y crea un modelo de los bordes del
patrón. Por este motivo, necesita que el patrón tenga un mínimo de píxels que formen el
contorno. Es conveniente utilizarlo en imágenes contrastadas con los bordes claramente
definidos.
Ventajas
Desventajas
•Permite trabajar con imágenes rotadas
•No permite el escalado de la imagen
•Puede encontrar múltiples coincidencias en la
imagen
Search – Line based
Este algoritmo también está basado en la lógica de contornos y crea un modelo de los bordes
rectos del patrón.
Es otra forma de Search – Geometric, un algoritmo basado en contornos. En este caso, se ha
optimizado el algoritmo para patrones de líneas rectas.
Ventajas
Desventajas
•Permite rotación en la imagen
•Permite el escalado de la imagen
•Suele ser más rápido que Geometric
•Sólo puede encontrar un patrón en la imagen
Prácticas de visión por computador
72
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Aprendizaje de patrones
Cuando se define una ROI y se selecciona uno de los algoritmos de búsqueda de patrones,
Sherlock realiza un aprendizaje del contenido de la ROI de forma automática y guarda la
información resultante en un vector de características que se empleará posteriormente en la
comparación. Si el aprendizaje que realiza Sherlock resulta satisfactorio para la aplicación a
desarrollar, se pueden continuar realizando investigaciones directamente. El caso más común
es que haya que ajustar el aprendizaje que ha hecho Sherlock.
Cada algoritmo de búsqueda de patrones tiene opciones de configuración distintas. Se
distinguen dos tipos de parámetros:
Por un lado están los parámetros que afectan al aprendizaje (Train parameters). Al modificar
cualquiera de estos parámetros, hay que reentrenar al algoritmo. Es decir, estando en el
modo Run, después de cambiar los parámetros, debe cambiarse al modo Train y de nuevo al
modo Run.
Por otra lado están los parámetros de ejecución (Run parameters), que definen la forma en
que el algoritmo busca los patrones.
A continuación se da una descripción de cada algoritmo. En el caso de Geometric, se utiliza un
ejemplo, dado que es ampliamente utilizado y su configuración es ligeramente más complicada
que el caso de los otros algoritmos.
Search – Correlation
Este algoritmo requiere algunos ajustes si se quiere que encuentre objetos con rotación. Para
habilitar la capacidad de detectar un patrón rotado, debe asignarse el valor true al campo
Train:use rotation. En los campos min rotation y max rotation se define el margen de rotación
que pueden presentar las piezas. Junto con rotation increment, Search Correlation sabrá
cuántos patrones deberá generar para poder comparar. De esta manera, si se definen max
rotation = 45º ,min rotation = -45º y rotation increment = 5º, Search Correlation generará
45
45
5
18
patrones, con una diferencia de rotación entre ellos de 5º, con los que comparará la figura
correspondiente a cada inspección de pieza. Como se ha comentado anteriormente, esto
incrementará notablemente el tiempo de ejecución del algoritmo.
De la misma forma, se puede habilitar el escalado de los patrones. Los parámetros para el
escalado son análogos a los de rotación en cuanto a la generación de nuevos patrones.
Prácticas de visión por computador
73
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Algunos de los parámetros de ejecución de uso más frecuente son:
max matches: número máximo de patrones que buscará el algoritmo
min score: umbral que determina si una identificación se considera válida o no
Search – Geometric
Como se ha comentado anteriormente, Search Geometric se basa en la detección de
contornos. A continuación se muestra una forma de definir los contornos de interés en una
pieza. Queremos verificar que la posición de la pieza es correcta. Para ello nos ayudamos de
los pins que tiene la pieza en su parte inferior. Dado que no están situados simétricamente, su
posición relativa a la pieza nos indica si la pieza está orientada de forma correcta o al revés.
Véanse las imágenes siguientes.
Pieza orientada correctamente
Prácticas de visión por computador
74
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Pieza orientada incorrectamente
En primer lugar, definimos el patrón a buscar. Desde Sherlock cargamos la imagen 0000.bmp
que se encuentra en el directorio search\ejemplo\imagenes. Definimos una ROI rectangular
que contenga toda la pieza y seleccionamos el algoritmo Search - Geometric.
Prácticas de visión por computador
75
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Como se puede observar, el algoritmos, de forma automática, no sólo selecciona el contorno
que nos interesa, sinó otros contornos presentes en el interior de la ROI. Puede que nos
interese utilizar los contornos que ha detectado automáticamente o puede que queramos
editar (añadir/suprimir) los contornos para seleccionar únicamente los que nos interese.
En este caso, dado que el tornillo que se ve en la imagen puede atravesar parcial o totalmente
la pieza sin que ello afecte a la verificación de posición que queremos realizar, descartaremos
todos lo contornos correspondientes al tornillo. Para ello, abrimos el editor de patrones
clickando sobre Parameters.
Prácticas de visión por computador
76
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Para editar los contornos que queremos que utilice Search – Geometric utilizaremos los
botones Delete points, Undelete y Delete. Si clickamos sobre Delete y luego sobre cualquiera
de las líneas verdes, veremos que la línea que define el borde sobre el que hemos clickado se
vuelve roja. Esta línea se descarta de los contornos que forman el patrón y no será
considerada por el algoritmos.
Prácticas de visión por computador
77
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
En este caso, hay una única línea que define el contorno, pero no siempre es así. Search –
Geometric puede dividir el contorno de una pieza en varias líneas al detectar los gradientes
que definirán los bordes.
Clickamos sobre Undelete y luego sobre la misma línea y observaremos que vuelve a ser
verde. A continuación seleccionamos Delete y clickamos sobre la línea bajo la E.
Con Delete Points se pueden descartar píxels individuales. Seleccionamos Delete Points y
seleccionamos todos los píxels correspondientes al tornillo que sobresale por la parte superior
de la pieza.
El resultado sería el siguiente.
Prácticas de visión por computador
78
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Una vez realizadas estas modificaciones, cambiamos el parámetro min score a 80 y cambiamos
a modo Train para, inmediatamente, volver al modo Run. Con esto hemos realizado el
aprendizaje del patrón. Clicamos sobre la ROI rectangular para editar sus parámetros y en la
pestaña Position clicamos sobre Fit to window para que busque patrones en toda la imagen.
Para poner a prueba dicho aprendizaje, definimos dos variables para poder monitorizar el
número de patrones encontrados (num matches) y el grado de similitud (best score) con el
patrón o monitorizamos directamente el resultado desde una ventana Watch. Cargamos la
secuencia que se encuentra en el directorio ejemplo\imagenes. Para poder ver correctamente
los resultados de la investigación se recomienda modificar el valor de Delay before load.
Como se puede observar, cuando num matches es 1, el valor del grado de similitud es superior
a 80. Se aconseja asignar distintos valores a min score y observar como varían los resultados.
Search – Line Based
En este caso, algunos de los parámetros que se pueden ajustar son el gradiente mínimo y la
longitud mínima y máxima de un contorno que se deben dar para que se considere un borde
(min edge stregth, min contour length y max contour length respectivamente), el escalado
permitido (min scale, max scale) y el tiempo límite para encontrar un patrón (timeout).
Prácticas de visión por computador
79
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Dado que Search – Line Based no dispone del editor de aprendizaje de Search – Geometric, se
pueden utilizar estos parámetros para especificar los bordes que nos interesen.
Prácticas de visión por computador
80
Práctica 6.- Búsqueda de patrones
________________________________________________________________________
Ejercicio
Dado el conjunto de imágenes que se proporciona en el directorio ejercicio\imagenes, crear
una investigación que permita encontrar el número de piezas correctas, así como su posición y
ángulo para, posteriormente, enviar dichos datos a una ventana Reporter . Una pieza correcta
es aquella que, como se definió en una práctica anterior, tiene la pestaña a la izquierda y está
completa. Véase la siguiente imagen.
Prácticas de visión por computador
81
Descargar