Download Manual de Practicas de Sherlock...
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