manual de practicas de sherlock

Upload: fllub

Post on 10-Jul-2015

388 views

Category:

Documents


52 download

TRANSCRIPT

Manual de Prcticas de Visin por Computador

Visin Artificial _______________________________________________________________

Nota preliminarSherlock constituye una herramienta estndar de ejecucin de aplicaciones de visin artificial orientado a entornos industriales. Infaimon pretende con este manual de prcticas facilitar la utilizacin de Sherlock para la configuracin de sistemas de visin de forma sencilla y gil en el campo de la docencia. Este manual de prcticas se completa con el manual de usuario de Sherlock suministrado por el fabricante del producto y con la versin traducida al espaol distribuido por Infaimon. Asimismo, ponemos a su disposicin nuestro equipo tcnico para cualquier duda o consulta al respecto de este manual y de Sherlock mediante el correo electrnico [email protected]. La reproduccin total o parcial de este manual de prcticas queda prohibida sin el consentimiento expreso de INFAIMON.

INFAIMON (Spain) Vergs, 55 E-08017 Barcelona Espaa Tel. (+34) 93 252 5757 Fax. (+34) 93 252 5758 [email protected]

INFAIMON(Spain) Ribera del Loira, 46 E-08042 Madrid Espaa 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 Mxico Av. Insurgentes Sur, 600 - 302 Col. Del Valle 03100 Mxico D.F. Tel. (+52) 55 1107 0814 Fax. (+52) 55 1107 1904 ext. 121 [email protected]

2 ______________________www.infaimon.com________________________

Visin Artificial _______________________________________________________________

INDICEPrctica 1.- Introduccin a los sistemas de Visin por Computador. Prctica 2.- Introduccin a Sherlock. Prctica 3.- Alignments Prctica 4.- Color Prctica 5.- Instrucciones Prctica 6.- Bsqueda de Patrones

3 ______________________www.infaimon.com________________________

Visin Artificial _______________________________________________________________

4 ______________________www.infaimon.com________________________

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________

Prctica 1.- Introduccin a los sistemas de Visin por ComputadorElementos de un sistema de visin por computadorA continuacin se muestra un esquema tpico de un sistema de visin por computador.

Algunos elementos no siempre estn presentes o estn presentes en un formato distinto al que aparece en el esquema. Por ejemplo, en un sistema que incorpore cmaras Firewire o Gigabit Ethernet, el frame grabber como tal no existe, en su lugar se utiliza un puerto Firewire o Gigabit Ethernet. Tambin existe la posibilidad de prescindir del computador externo en los casos en que se trabaje con cmaras inteligentes. En estos casos, el preprocesado y procesado de las imgenes se hace en el interior de la cmara, desde donde, mediante entradas y salidas que puede incorporar la cmara, se puede interactuar con el resto del sistema.

Prcticas de visin por computador

5

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________

CmarasLas cmaras permiten convertir energa lumnica en elctrica y transferir el resultado de dicha conversin. Las cmaras se pueden clasificar segn distintos criterios. Algunos son: Resolucin Tamao 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 analgica Camera Link IEEE 1394 a/b USB 2 Gigabit Ethernet

Funcionamiento de un sensor Los sensores de imagen emulan electrnicamente el comportamiento de las tradicionales pelculas fotogrficas. En este caso, los sensores, formados por una matriz bidimensional de pxels, estn 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 exposicin durante el cual se convierten los fotones incidentes en los pxels en cargas elctricas. En la visin 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 comn donde son convertidas a tensin y sta se amplifica. Esto hace que el resultado final sea homogneo, ya que el amplificador

Prcticas de visin por computador

6

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________es comn a todas las cargas y ruido que introduzca ser parecido en todas las amplificaciones prximas en el tiempo. En el caso de los sensores CMOS, cada pxel contiene los circuitos necesarios para realizar la conversin y amplificacin, con lo que el resultado es menos homogneo que en el caso de los CCD. Por otra parte, la superficie til para la captacin de fotones es menor, ya que cada pxel debe reservar espacio para la circuitera. La relacin entre la superficie de captacin de fotones y la superficie total del pxel se denomina fill factor y es menor en los sensores CMOS. En ambos tipos de sensores se utilizan microlentes situadas sobre cada pxel que hacen que los fotones se dirijan a la zona sensible del pxel, mejorando su absorcin. A grandes rasgos, los sensores CMOS son ms 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 transferirn fuera del sensor, se conoce como tiempo de exposicin o shutter. El inicio y duracin de este periodo de tiempo puede fijarse mediante la propia cmara o mediante seales externas (trigger), por ejemplo, mediante pulsos TTL. Durante el tiempo de readout, se transfiere la informacin elctrica fuera del sensor.

pticasA continuacin 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 aplicacin se calcula en funcin de ciertas variables segn la expresin siguiente:

Prcticas de visin por computador

7

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________Distancia focal= Tamaodel sensor x Distancia de trabajo Campo de visin

[mm]

donde tamao de sensor y campo de visin se refieren al eje horizontal. Los tamaos de los sensores suelen ser estndar:

En la figura anterior se pueden ver los tamaos estndar. Algunos parmetros de los objetivos son su apertura, la distancia mnima de enfoque (MOD), el tamao del sensor para el que ha sido diseado y su distancia focal. La apertura indica cunto se puede abrir el iris del objetivo. Normalmente se da en nmeros f: f1, f1.4, f2, etc. Este nmero es la relacin entre la distancia focal del objetivo y el dimetro de la apertura mxima. Para una distancias focal dada, cuanto mayor es el nmero f del objetivo, menor es el dimetro y, por tanto, deja pasar menos luz. Dentro del rango de apertura de un objetivo, cuanto ms 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 mnima 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 mnima de enfoque, se pueden utilizar anillos extensores. Los anillos extensores son anillos que se sitan entre la cmara 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 mnima de enfoque, pero la profundidad de campo se reduce mucho. Los objetivos de alta resolucin, adems de ofrecer una mejor resolucin, suelen tener distancias mnimas de enfoque inferiores a las de los objetivos estndar.

IluminacinLa iluminacin es un factor clave en un sistema de visin por computador. Encontrar la iluminacin adecuada puede simplificar mucho el procesado y anlisis de las imgenes, mientras que una iluminacin inadecuada puede hacerlo inviable.

Prcticas de visin por computador

8

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________Los sistemas de iluminacin 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, segn la primera clasificacin, se pueden encontrar sistemas basados en: Fluorescentes, mayoritariamente de alta frecuencia. LED Fuentes halgenas Lser

Una posible clasificacin por tipo de iluminacin podra ser: frontal lateral darkfield contraste o backlight coaxial difusa

A continuacin se muestran algunos ejemplos de cada tipo de iluminacin: Frontal Se utiliza en aplicaciones generales donde no hay condiciones que requieran otro tipo especfico de iluminacin.

Prcticas de visin por computador

9

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________Lateral Se utiliza en casos en que se quieren resaltar detalles que requieren que la fuente de luz est orientada en posicin no cenital respecto a la cmara.

Prcticas de visin por computador

10

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________Darkfield Se utiliza para resaltar detalles en relieve.

luz frontal

Darkfield

Prcticas de visin por computador

11

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________Backlight Se utiliza para resaltar perfiles o para que la luz atraviese el objeto a inspeccionar.

luz frontal

Backlight

Prcticas de visin por computador

12

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________Coaxial Se utiliza para atenuar los reflejos de superficies reflectantes, iluminando de forma homognea la superficie.

luz frontal

luz coaxial

Prcticas de visin por computador

13

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________

luz frontal Difusa

luz coaxial

Tambin se utiliza para atenuar reflejos, as como para eliminar sombras.

Prcticas de visin por computador

14

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________

luz frontal

luz difusa

Frame grabbersLos frame grabbers son tarjetas de adquisicin de video. Podemos distinguir entre frame grabbers analgicos y digitales. Los primeros pueden capturar video analgico estndar o no estndar, mientras que los segundos pueden capturar video de cmaras con interfaz, bsicamente, 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 transmisin entre la cmara y la memoria del sistema, ya que, de no ser as, diferencias en la velocidad de transmisin entre la cmara y el sistema computador podran ocasionar prdida de datos (imgenes). Existen frame grabbers para distintos tipos de bus (PCI, PCI Express, etc). Algunos pueden realizar algunas operaciones de preprocesado, como por ejemplo decodificacin Bayer o binarizado. Suelen incluir SDK para operaciones bsicas: captura de imagen, gestin del buffer, modificacin de la configuracin, operaciones de preprocesado (si est disponible en el frame grabber). Tambin suelen incorporar entradas y salidas digitales que pueden incluir una entrada de trigger y una salida de strobe.

Prcticas de visin por computador

15

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________ Computador + softwareExisten varias alternativas en el campo de la visin por computador a la hora de escoger un sistema de computacin para el anlisis y/o procesado de imgenes. Una opcin es trabajar sobre una plataforma basada en PC a base de aadir frame grabbers (en el caso de trabajar con cmaras que lo requieran) e instalar el software necesario. Otra opcin consiste en el uso de sistemas dedicados que suelen ser computadores que contienen todos los componentes necesarios para el trabajo con visin por computador, por ejemplo un frame grabber, conector para IEEE1394 y para Gigabit Ethernet. Tambin existen, como se ha comentado anteriormente, los llamados sistemas inteligentes, que incorporan en un mismo dispositivo la cmara, la ptica, la iluminacin y el software para procesar y/o analizar imgenes, de forma que, a travs de sus salidas, pueden informar al exterior del resultado de una inspeccin. A nivel de software, se suelen encontrar dos opciones. La primera opcin es el uso de aplicaciones diseadas para la visin por computador. Mediante el uso de las herramientas genricas programadas por el fabricante del software, se crean aplicaciones especficas para resolver un problema concreto. La principal desventaja de esta opcin es que las aplicaciones disponen de un nmero limitado de operaciones (preprocesado y procesado) que pueden realizar, pero como ventaja est el hecho de que la creacin de aplicaciones especficas se puede llevar a cabo en un tiempo relativamente corto. La alternativa es el uso de libreras de programacin. stas suelen ofrecer un mayor nmero de posibilidades, ya que el programador construye su aplicacin totalmente a medida, aunque el tiempo necesario para ello suele ser mucho mayor que en el caso de la primera opcin comentada. Estas prcticas estn basadas en Sherlock, una aplicacin para la creacin de aplicaciones de visin por computador que permite crear nuevos algoritmos y preprocesados e integrarlos en la misma aplicacin, eliminando parcialmente la desventaja comentada anteriormente.

Prcticas de visin por computador

16

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________

Cuestionesa) Calcula la distancia de trabajo dado un objetivo de 35 mm, una cmara JAI CVA11 y un campo de visin de 100 mm.35 mm x 100 mm = 729 mm 4,8 mm

b) Recalclalo 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) Cmo has obtenido el tamao del sensor? a) Por las pulgadas y cuadro anterior. b) # pixels x tamao pixel. d) Dadas las hojas de especificaciones de la cmara JAI CV-A11 y los objetivos, una distancia de trabajo de 25 mm y un campo de visin de 10 mm, que objetivo escogeras? Justifica tu respuesta. Debera escogerse el GMN31214MCN, ya que su MOD es inferior a nuestra distancia de trabajo. El GM21214MCN no nos sera til, ya que su MOD es superior a nuestra distancia de trabajo. e) Hay algn otro objetivo que se pudiera utilizar para obtener condiciones similares (ignorad el ngulo de visin) a las del apartado anterior? En caso afirmativo, si fuera necesario, indica que elemento habra que aadir para poder cumplir las condiciones. Se podra utilizar el modelo GM21214MCN, pero deberan utilizarse anillos extensores. Tambin podra utilizarse un objetivo de alta resolucin, 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

Prcticas de visin por computador

17

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________Como se puede ver, el mayor tamao del sensor hace que haya ms superficie en la que proyectar imagen, con lo que, dada una misma distancia de trabajo y una misma distancia focal, una cmara con un sensor mayor tendr un campo de visin mayor si el objetivo lo permite (si es el adecuado para un sensor mayor. De lo contrario, se producira vignetting). Dicho de otra forma, se necesitara una distancia de trabajo menor para tener un mismo campo de visin. g) Supongamos una cmara JAI CV-A1 con una ptica GMN31214MCN. Qu limitacin podra tener esta configuracin? Cmo se podra solucionar? La A-1 es una cmara de alta resolucin, mientras que el objetivo no lo es. Por tanto, lo que se gana con la resolucin de la cmara, se pierde con la del objetivo. Deberamos utilizar un objetivo de alta resolucin para poder aprovechar las ventajas de una resolucin de cmara mayor. h) Suponiendo una aplicacin con una cmara JAI CV-A11, una distancia de trabajo de 170 mm, qu objetivo utilizaras teniendo como restriccin 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 aplicacin. Dado que no se pueden utilizar anillos extensores, una solucin sera el uso de un objetivo HR. Aunque la cmara no podr aprovechar la resolucin del objetivo, se podr tener una distancia de trabajo inferior la MOD de los objetivos normales. i) Comenta las dos diferencias que creas ms 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 lneas horizontales, con lo que se pierde informacin 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 pxels se agrupen vertical u horizontalmente formando uno solo. De esta forma se gana sensibilidad y se pierde resolucin vertical y/u horizontal, a la vez que la imagen pierde su proporcin original. l) Qu diferencia bsica 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 exposicin viene determinado por la configuracin de la cmara. En el caso Pulse Width, el tiempo de exposicin tiene la misma duracin que el ancho del pulso de trigger. m) Cules son los tiempos de integracin mnimos y mximos en la A-11 y la A-1 a 28,64 Mhz? A-11 : min=1/100000 mx=1/30

Prcticas de visin por computador

18

Prctica 1.- Introduccin a los sistemas de Visin por Computador

_______________________________________________________________A-1 : mx=1/16 min=1/200000 n) Suponiendo que debes hacer la lectura de un cdigo de barras. El campo de visin es de 200 mm y el grueso de la linia ms fina del cdigo de barras es de 0.5 mm. Considerando la restriccin de que la linia ms fina debe tener un grueso mnimo de 4 pxels, qu resolucin debe tener la cmara para esta aplicacin?

4 x = 0,5 200

Obtenemos x = 1600 pxels. o) Por qu crees que los fluorescentes utilizados en visin por computador suelen ser de alta frecuencia? Si la frecuencia es suficientemente baja en relacin al tiempo de integracin, las imgenes se vern bajo el efecto del flickering o parpadeo. p) Cmo iluminaras el blister de algn medicamento para poder hacer un OCR de su nombre? Respuesta libre, aunque debera encaminarse hacia luz difusa o coaxial.

Prcticas de visin por computador

19

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________

Prctica 2.- Introduccin a SherlockIntroduccinSherlock es un software de interfaz grfico diseado para la visin industrial por computador desarrollado por DALSA. Las herramientas que incorpora lo hacen til para una gran variedad de aplicaciones automatizadas. Una vez capturadas las imgenes del proceso, su principio de funcionamiento se basa en definir zonas de inters o ROI (Region Of Interest) sobre las que se pueden aplicar distintas herramientas.

InvestigacionesUna aplicacin realizada con el software Sherlock recibe el nombre de investigacin y tiene la extensin .ivs. Al abrir una investigacin, si estn activas, se pueden distinguir varias ventanas. La ventana principal es la que contiene la barra de mens tpica en aplicaciones con interfaz grfica. Mediante el men View se puede escoger qu ventanas se quieren visualizar.

Prcticas de visin por computador

20

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________Image Window Muestra las imgenes sobre las que se aplicar la investigacin. El origen de las imgenes puede ser la captura en vivo desde una cmara, una imagen o secuencia de imgenes guardada en el sistema de ficheros o imgenes extradas de otras imgenes. Pueden haber varias ventanas de imagen dentro de una investigacin.

Prcticas de visin por computador

21

Prctica 2.- Introduccin 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 investigacin. Todas las instrucciones que forman la investigacin se ejecutan siguiendo el orden que muestra esta ventana.

Prcticas de visin por computador

22

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________Instruction window Contiene todas las instrucciones disponibles, que van desde varios tipos de operaciones matemticas hasta operaciones de entrada y salida, pasando por instrucciones de control de flujo de ejecucin y manipulacin de vectores.

Prcticas de visin por computador

23

Prctica 2.- Introduccin 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 numrico, cadena de caracteres, booleanas, punto (vector correspondiente a las coordenadas x e y) o lnea.

Watch window Permite monitorizar los valores que retornan las herramientas sin necesidad de crear variables.

Prcticas de visin por computador

24

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________Monitor window Contiene los mensajes que genera Sherlock

Report window Se puede utilizar para mostrar mensajes definidos por el programador.

Prcticas de visin por computador

25

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________Digital inputs/Digital outputs Muestran el estado de las entradas y salidas digitales. En el caso de las salidas, clickando con el botn derecho sobre una salida se puede conmutar su valor.

Consideraciones sobre la operacin de la aplicacin El men Run permite escoger el modo de ejecucin de las investigaciones. Si slo se quiere ejecutar una investigacin una vez, debe escogerse Once, mientras que Continuous permite reiniciar la investigacin permanentemente cada vez que finaliza. Tambin existe la posibilidad de ejecutar una investigacin paso a paso, til para depurar las investigaciones. La ventana de imagen puede estar en modo de visualizacin en vivo o fija. En el primer caso, se visualizan de forma continuada las imgenes que enva la cmara o una secuencia de imgenes almacenadas en el sistema de ficheros, en el caso de que sta sea la fuente de imgenes. Para aplicar y configurar herramientas, es necesario que haya imagen fija. Las herramientas que se podrn utilizar dependern de la ROI (en el entorno de Sherlock tambin se denomina ROI a una herramienta que define el rea sobre la que se aplicarn 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 cdigos 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 visin por computador o VAs (Vision Appliances), que son ordenadores compactos que incorporan un frame grabber y un conector para las entradas y salidas. Tambin puede tratarse de equipos con cmaras Firewire

Prcticas de visin por computador

26

Prctica 2.- Introduccin 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 aplicacin Al ejecutar Sherlock aparece la ventana siguiente

En primer lugar debe configurarse la adquisicin. En el caso de estas prcticas no se captura en vivo, as que deberemos trabajar con imgenes guardadas en el sistema de ficheros. Para ello haremos doble click sobre la ventana de imagen y aparecer la siguiente ventana:

Prcticas de visin por computador

27

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________

Prcticas de visin por computador

28

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________Para cargar una imagen hacer click sobre el botn que hay al final de la lnea de File. Escogemos la ubicacin de la imagen ejemplo1.bmp y, despus de habilitar la ventana de programa, el resultado es el siguiente:

El objetivo de esta primera investigacin ser contar los pads que aparecen en la imagen. Para ello, binarizaremos la zona de la imagen para despus contar los blobs resultantes. Para realizar una binarizacin, en primer lugar se define una ROI. Clickaremos sobre el botn Rectangle en la barra de la ventana de imagen y definimos una ROI como la que se puede ver en la imagen siguiente.

Prcticas de visin por computador

29

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________

Haciendo doble click en la ROI aparece una ventana como la siguiente:

Prcticas de visin por computador

30

Prctica 2.- Introduccin 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 pxel 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 parmetros configuramos la herramienta para que slo busque los blobs que a nosotros nos interesen. En este caso, despus de hacer la binarizacin, vemos que los nmeros de la PCB y el contorno central que aparece en la imagen tambin 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 sera mediante el rea. Clickamos sobre Parameters y modificamos los siguientes campos: black blobs min area max area max returned : : : : False 800 1000 100 Bsqueda de blobs blancos Area mnima de cada blob a encontrar Area mxima de cada blob a encontrar Nmero superior al nmero mximo de blobs que se espera encontrar, de forma que no deje de contar ningn 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 nmero 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 rectngulo que contiene en su interior a cada blob.

Prcticas de visin por computador

31

Prctica 2.- Introduccin 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:

Prcticas de visin por computador

32

Prctica 2.- Introduccin 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 pxels cuyo gradiente supere un cierto umbral ajustable por el usuario. Ponemos en la ventana Watch los resultados dark2light.count de cada lnea y clickamos sobre la flecha verde (Run once) que hay en el men principal. El resultado debera ser como el que aparece en la imagen siguiente:

Prcticas de visin por computador

33

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________

Prcticas de visin por computador

34

Prctica 2.- Introduccin a Sherlock

________________________________________________________________________

Ejerciciosa) Dado el conjunto de imgenes que se proporcionan para la realizacin de esta prctica, disear una investigacin que encuentre el nmero de piezas buenas. De entre las piezas que aparecen en las imgenes, las malas son las que no tienen pestaa en el lado izquierdo de la pieza, as como las que estn rotas. b) Cul es el significado de los campos de una variable de tipo Line?

c) Con qu cmara se han capturado las imgenes? A-2 d) Con qu tipo de luz se han capturado las imgenes? Backlight

Prcticas de visin por computador

35

Prctica 3.- Alignments

________________________________________________________________________

Prctica 3.- AlignmentsLos alignments son puntos de referencia dentro de una imagen. Sirven para posicionar herramientas de forma dinmica. 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 ubicacin, sera muy fcil resolverlo utilizando una herramienta Line, pero el hecho de que no est siempre en la misma posicin complica un poco la solucin. La circunferencia es fcil de encontrar, por ejemplo, con un binarizado y un

Prcticas de visin por computador

37

Prctica 3.- Alignments

________________________________________________________________________Connectivity. Si configuramos la herramienta Line para que se site dinmicamente 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 pestaa Alignment. Si la investigacin 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:

Prcticas de visin por computador

38

Prctica 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\imgenes).

Prcticas de visin por computador

39

Prctica 3.- Alignments

________________________________________________________________________Supongamos que queremos medir la anchura del agujero central en las zonas en las que es ms ancho. La pieza puede tener cierto desplazamiento en x e y en diferentes imgenes. Si situamos una herramienta Line sobre cada zona donde la anchura es mxima, el desplazamiento de la pieza podra hacer que la herramienta quedara situada sobre una zona en la que la anchura no sea mxima. 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 investigacin, aparecer una marca sobre el punto de referencia. Situamos dos ROI Line sobre las zonas donde la anchura es mxima.

En este punto, clickamos sobre la pestaa 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 movern siguiendo su posicin relativa al centroide. Si abrimos la imagen alignments0001.bmp, en la que la pieza es diferente y existe un pequeo desplazamiento, y ejecutamos una vez, vemos lo siguiente:

Prcticas de visin por computador

40

Prctica 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. Tambin se ve una lnea discontinua cercana a las ROI Line. Las lneas discontinuas muestran la posicin original de las ROI, mientras que las lneas continuas marcan la posicin una vez desplazadas segn el alignment.

Prcticas de visin por computador

41

Prctica 3.- Alignments

________________________________________________________________________Secuencias de imgenes Tal y como hemos comentado anteriomente, Sherlock permite trabajar con secuencias de imgenes. Para que Sherlock reconozca una serie de ficheros como una secuencia de imgenes, los ficheros deben tener una parte del nombre comn y una variable, que corresponde a su numeracin. As, un ejemplo podra ser: secuencia0000.bmp secuencia0001.bmp secuencia0002.bmp ... secuencia0152.bmp Como se puede observar, Sherlock espera encontrar ficheros con una numeracin ordenada ascendente. Para cargar una secuencia, desde la ventana Options, en la pestaa Image source seleccionamos el campo Sequence y clickamos sobre el botn 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 nmero que inicia la secuencia de imgenes se indica en Starting image number y podemos indicar qu nmero finaliza la secuencia en Ending image number. Como se puede ver en la ventana, -1 indica que no hay nmero que indique finalizacin de secuencia, con lo que, si ejecutamos la investigacin en modo continuo, la secuencia se repetir hasta que se detenga la ejecucin de la investigacin.

Prcticas de visin por computador

42

Prctica 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 investigacin que utilice dos puntos de referencia y que una ROI Line siga el desplazamiento angular de la pieza. Utilcese como secuencia de imgenes las que se encuentran en el directorio ejemplo\imagenes.

Prcticas de visin por computador

43

Prctica 4.- Color

________________________________________________________________________

Prctica 4.- ColorIntroduccin Las versiones 7.X de Sherlock incorporan la posibilidad de trabajar con imgenes en color. Cabe destacar que, al trabajar con este tipo de imgenes, los preprocesos y algoritmos disponibles para cada tipo de ROI varan respecto a aquellos disponibles para imgenes en monocromo. En gran nmero de aplicaciones en color existe la necesidad de definir patrones de color. En estos casos son fundamentales los clasificadores de color. La funcin 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 funcin del tipo de clasificador. Para la utilizacin 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 pxels dentro de la ROI, o nicamente un pxel. Posteriormente utilizaremos el archivo de clasificacin para la comparacin 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 clasificacin resultante tiene extensin .lct

Clasificador de color estadstico Utilizado en el algoritmo Spot Meter. El fichero de clasificacin resultante tiene extensin .ucc

Prcticas de visin por computador

45

Prctica 4.- Color

________________________________________________________________________Mapeo de color Muchos de los preprocesos y/o algoritmos de Sherlock 7 slo estn disponibles para imgenes en monocromo, por lo que, si se quieren utilizar en una imagen RGB, debe transformarse dicha imagen a monocromo previamente a su uso. Una opcin sera extraer cada canal (R, G, B) por separado y as poder utilizar las operaciones que Sherlock ofrece para imgenes en monocromo. De esta manera no se perdera informacin, pero probablemente se triplicara la cantidad de operaciones a realizar, que implicara un incremento en el tiempo de ejecucin de cada iteracin de la investigacin. Una opcin sera transformar la imagen de RGB a monocromo (MONO8) mediante Sherlock, con lo que se perdera informacin. Esta opcin presenta un inconveniente importante, ya que algunos colores distintos tendrn un valor parecido en la escala de grises despus de realizar esta transformacin, con lo que ser difcil, o incluso imposible, distinguir de forma robusta entre dichos colores. Vase la siguiente imagen.

Imagen RGB (cedida por Stemmer Imaging)

Prcticas de visin por computador

46

Prctica 4.- Color

________________________________________________________________________Esta imagen muestra clips de distintos colores. Sin embargo, si se quisieran utilizar preprocesos y/o algoritmos para imgenes en monocromo, despus de transformar la imagen se comprobara que colores distintos seran indistinguibles en la escala de grises. Obsrvese la similitud entre los clips violeta y los naranja.

Imagen tras la conversin a MONO8

Sherlock ofrece la posibilidad de realizar un mapeo de colores. Esto significa que a cada color, despus de su aprendizaje, se le asignar un valor en la escala de grises, de manera que se podrn aplicar preprocesos y algoritmos con el fin de extraer informacin 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)

Clasificacin de colores Un posible mtodo para crear un clasificador de color consiste en lo siguiente: Se crea una ROI rectangular y se sita sobre el color en cuestin. Se abre el dilogo Parameters del algoritmo Color Map y se clicka en Configure. Se clicka en Teach y se escoge cmo se va a definir la zona en la que se encuentra el color. En este ejemplo, se utilizar un rectngulo, as que, una vez

Prcticas de visin por computador

47

Prctica 4.- Color

________________________________________________________________________clickado Teach, se introduce el nombre que le asignaremos al color en la casilla Teach a new or existing color: . A continuacin se clicka sobre el rectngulo 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 continuacin 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 dilogo Parameters y repitiendo el proceso de clasificacin.

Prcticas de visin por computador

48

Prctica 4.- Color

________________________________________________________________________El color de una pinza en la imagen se percibe ms o menos como tal en funcin 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 mapearn en el mismo valor de la escala de grises. Vanse 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 clasificacin sera 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 mtodo puede dar resultados muy robustos, puede que alguna pieza contenga un tono de su color que sea similar a algn tono de otro color y se produzcan resultados inesperados. Para solucionar esto, si se realiza una bsqueda de blobs en monocromo (opcin muy probable al mapear en escala de grises), por ejemplo, se pueden discriminar estas detecciones no esperadas por su menor tamao frente a los blobs deseados. Debe recordarse que la iluminacin ser determinante a la hora de solucionar una aplicacin, y en especial en casos como este, en el que puede contribuir a una solucin por software sencilla o, si la iluminacin no es la adecuada, puede imposibilitar la resolucin de la aplicacin. Aunque en toda aplicacin de visin por computador la iluminacin es muy importante, en aplicaciones en color lo puede ser ms, dado que una pequea variacin en la iluminacin puede afectar a un patrn de color aprendido.

Prcticas de visin por computador

49

Prctica 4.- Color

________________________________________________________________________Tambin debe tenerse en cuenta que el aprendizaje o clasificacin de colores puede realizarse en cualquier momento, de manera que si al probar la aplicacin se considera conveniente ampliar la clasificacin de colores, pueden introducirse nuevos colores o nuevos tonos de un mismo color. A continuacin se muestra el resultado al aplicar el mapeo. Los colores estn mapeados segn la figura anterior. En la imagen mapeada se han utilizado filtros ThresholdBand para que slo se visualice la imagen resultante del mapeo del color de inters. Por ejemplo, con los parmetros threshold low=0, threshold high=0, in value=0, out value=255, nicamente se visualizarn en forma de blobs negros las regiones que contengan los distintos tonos de violeta que se hayan clasificado previamente.

Prcticas de visin por computador

50

Prctica 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 visualizacin, la interpretacin de los histogramas debe hacerse de forma cualitativa.

Mapeado de violeta

Histrograma violeta

Prcticas de visin por computador

51

Prctica 4.- Color

________________________________________________________________________

Mapeado de verde

Histograma verde

Prcticas de visin por computador

52

Prctica 4.- Color

________________________________________________________________________

Mapeado de naranja

Histograma naranja

Prcticas de visin por computador

53

Prctica 4.- Color

________________________________________________________________________

Mapeado de azul

Histograma azul

Prcticas de visin por computador

54

Prctica 4.- Color

________________________________________________________________________

Mapeado de rojo

Histograma rojo

Prcticas de visin por computador

55

Prctica 4.- Color

________________________________________________________________________

Mapeado de amarillo

Histograma amarillo

Prcticas de visin por computador

56

Prctica 4.- Color

________________________________________________________________________Refinado de la clasificacin 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 variacin, de forma que se ajuste a las necesidades del diseador de la investigacin.

Prcticas de visin por computador

57

Prctica 4.- Color

________________________________________________________________________Ejercicio En las imgenes adjuntas aparecen resistencias elctricas de diferentes valores. Realizar una investigacin que reconozca los valores presentes en las resistencias. La estrategia a seguir es libre, pero se recomienda utilizar el mapeo de colores.

Prcticas de visin por computador

58

Prctica 5.- Instrucciones

________________________________________________________________________

Prctica 5.- InstruccionesSherlock dispone un conjunto de instrucciones con funcionalidades distintas, como por ejemplo control de flujo, tratamiento de vectores, operaciones matemticas, operaciones de entrada y salida, etc que corresponden a las acciones y funciones de los lenguajes de programacin basados en libreras. Pueden tener parmetros de entrada y devolver resultados. Cuando se introduce una instruccin en la ventana de programa de una investigacin, los parmetros de entrada estn marcados con un tringulo rojo, mientras que las salidas estn marcadas con uno verde. A continuacin se comenta brevemente la funcionalidad de cada grupo de instrucciones

General Array Boolean Geometric Annotations IO Calibration IO Camera

control de flujo, creacin de scripts y nuevas ventanas de imagen operaciones con vectores de elementos que pueden ser de los 5 tipos que soporta Sherlock instrucciones para realizar algunas operaciones binarias clculos geomtricos y generacin de puntos y lneas a partir de datos numricos permite dibujar figuras geomtricas y aadir texto a la imagen instrucciones relacionadas con la calibracin permite acceder a las cmaras conectadas al sistema y modificar y leer registros y/o parmetros de la cmara, como por ejemplo, el shutter permite interactuar con PLC que formen parte de un sistema ControlLogix operaciones con las entradas digitales de la capturadora de video operaciones con las salidas digitales de la capturadora de video operaciones de lectura y escritura a travs de sockets operaciones sobre ficheros permite interactuar mnimamente con el teclado operaciones propias de la ventana de imagen permite interactuar con PLC que utilicen este protocolo operaciones sobre la ventana de mensajes Reporter permite acceder a los datos de una ROI, p.e. las coordenadas que la definen operaciones para la comunicacin va serie operaciones diversas, la mayora relacionadas con aspectos propios de un sistema operativo operaciones numricas

IO ControlLogix IO Digital Input IO Digital Output IO Ethernet/IP IO File IO Keyboard IO Image Window IO Modbus IO Reporter IO ROI IO Serial IO System Numeric

Prcticas de visin por computador

59

Prctica 5.- Instrucciones

________________________________________________________________________General Statistics String Trigonometric control de flujo, creacin de scripts y nuevas ventanas de imagen operaciones estadsticas operaciones con cadenas de caracteres operaciones trigonomtricas

Cabe destacar que, para utilizar instrucciones orientadas a la comunicacin (IO ControlLogix, IO Digital Input, IO Digital Output, IO Ethernet/IP, IO Modbus, IO Serial), hay que introducir en la ventana IO configuration los parmetros adecuados para poder efectuar correctamente dicha comunicacin. Se muestra un ejemplo de los parmetros a introducir para poder comunicarse sobre TCP/IP.

nicamente debe indicarse si la investigacin de Sherlock har de servidor o de cliente, as como el nombre o IP de la mquina en la que se ejecuta y el puerto. A continuacin se puede ver un ejemplo del uso de instrucciones. En este ejemplo se quiere calcular, por una parte, la rotacin de la pieza. Por otra parte, tambin se quiere medir la distancia entre dos puntos utilizando instrucciones.

Prcticas de visin por computador

60

Prctica 5.- Instrucciones

________________________________________________________________________Existen distintas formas para realizar este clculo. En este ejemplo, la instruccin 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 parmetro threshold sea 255. El resultado debera ser el siguiente:

Prcticas de visin por computador

61

Prctica 5.- Instrucciones

________________________________________________________________________Una vez hecho esto, aadimos a la ROI el algoritmo Connectivity-Binary y cambiamos los parmetros para que quede de la siguiente manera:

Prcticas de visin por computador

62

Prctica 5.- Instrucciones

________________________________________________________________________Aceptamos y aadimos un segundo algoritmo Connectivity-Binary en la misma ROI. En este caso los parmetros deben ser los siguientes:

Prcticas de visin por computador

63

Prctica 5.- Instrucciones

________________________________________________________________________Tras este paso, el agujero central y el pequeo deberan estar encuadrados en sendos rectngulos (vase imagen siguiente). El algoritmo devuelve, entre otros datos, el centroide de los blobs que encuentra. Este dato es del tipo Point. Para encontrar la rotacin de la pieza, obtenemos el ngulo con la instruccin PtsToBestAngle, a la cual le pasamos como parmetros los centroides retornados por Connectivity-Binary. Para mayor comodidad, podemos utilizar la instruccin RadToDeg pasndole como parmetro 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 investigacin podra ser el siguiente:

Prcticas de visin por computador

64

Prctica 5.- Instrucciones

________________________________________________________________________En este punto ya tenemos el ngulo. Para obtener la distancia entre los dos puntos, utilizaremos el Teorema de Pitgoras. En primer lugar, descomponemos las coordenadas en formato Point en dos valores numricos correspondientes a las coordenadas X e Y con la instruccin PtToXY. Utilizaremos una instruccin para cada punto y como parmetro de entrada introduciremos los valores de centroide que devuelve Connectivity-Binary.

Prcticas de visin por computador

65

Prctica 5.- Instrucciones

________________________________________________________________________A partir de aqu aplicamos el Teorema de Pitgoras mediante las intrucciones Subtract, Abs, Square, Add y Sqrt como se muestra a continuacin.

Como se puede ver, el resultado se almacena en una variable, dist_pit. Sherlock ofrece la posibilidad de realizar un mismo clculo de distintas maneras. Para validar el resultado obtenido, podemos utilizar la instruccin PtToPtDist, que calcula la distancia dados dos puntos. El resultado se almacena en una variable llamada dist_val.

Prcticas de visin por computador

66

Prctica 5.- Instrucciones

________________________________________________________________________

Al ejecutar la investigacin, el resultado que obtenemos es

Como podemos observar, el resultado es idntico.

Prcticas de visin por computador

67

Prctica 5.- Instrucciones

________________________________________________________________________

EjerciciosAade al programa ejemplo el clculo 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 edicin de scripts, al teclear Vars. (ntese el punto), aparecer una lista con las variables a las que se puede acceder. Para acceder a una funcin matemtica, debe teclearse Math. para que, de nuevo, aparezca una lista con las funciones matemticas disponibles. Para comprobar si el script es correcto a nivel de sintaxis, utilcese el botn Check Syntax en la ventana de edicin del script. Desde los scripts no se puede acceder a las lecturas que devuelven los algoritmos de Sherlock, por lo que debern 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 tambin un manual de referencia de Javascript que puede resultar til para este ejercicio. [ejemplojs.ivs] Por qu utilizamos el parmetro remove blobs touching border? Hay alguna forma de obtener el mismo resultado sin modificar el valor por defecto de este parmetro? En caso afirmativo, propn 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 sera ajustar los valores mximos y mnimos 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 cmo calcula el ngulo la instruccin PtsToBestAngle. Indica qu ngulo devuelve la instruccin PtsToBestAngleA. Explica qu puntos utiliza para calcular el ngulo. PtsToBestAngleA calcula el ngulo entre el eje X y la lnea que definen los dos puntos que se le pasan como parmetros. Ejecuta la investigacin que se encuentra en el directorio ejercicio. Antes de ejecutarla, configura las comunicaciones TCP/IP con los parmetros que aparecen en la captura de pantalla de la ventana IOconfiguration (IP 127.0.0.1, puerto 5555). A continuacin abre la aplicacin HyperTerminal que forma parte de las utilidades de Windows y configura una

Prcticas de visin por computador

68

Prctica 5.- Instrucciones

________________________________________________________________________conexin TCP/IP utilizando como direccin 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 investigacin ejercicio.ivs y carga, como secuencia, imgenes 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 iteracin durante la ejecucin de la investigacin. Examina la aplicacin y explica detalladamente qu hace.

Prcticas de visin por computador

69

Prctica 6.- Bsqueda de patrones

________________________________________________________________________

Prctica 6.- Bsqueda de patronesLa bsqueda de patrones es una tcnica ampliamente utilizada en aplicaciones de visin industrial por computador. Consiste en, dado un objeto patrn de referencia, buscar en nuevas imgenes objetos similares al de referencia. El usuario o programador de una aplicacin de bsqueda de patrones a menudo podr decidir el grado de similitud que se considera aceptable o, dicho de otra manera, cul ser el umbral que definir cundo se considera que un objeto se corresponde al patrn de referencia. Un sistema de reconocimiento de patrones, como se menciona en la literatura sobre esta tcnica, se compone, como mnimo, de un elemento sensor que forma una imagen a partir del mundo real, un sistema de preprocesado y/o realce de caractersticas de dicha imagen, un sistema extractor de caractersticas y un clasificador que decide cmo clasificar la imagen obtenida. En esta prctica se explica el trabajo con patrones con Sherlock 7. Sherlock 7 incorpora distintos algoritmos para la bsqueda de patrones en imgenes en monocromo. A continuacin 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 patrn y busca coincidencias en la regin de inters. Se buscan posibles coincidencias utilizando unos pocos pxels del patrn, es decir, submuestrea el patrn y se buscan coincidencias del patrn submuestreado. Cada una de posibles ocurrencias es examinada con un nmero superior de pxels hasta que cada una ellas se descarta o acepta como coincidencia. Es conveniente utilizar este algoritmo imgenes poco contrastadas. Ventajas Desventajas se las de en

Ejecucin rpida El uso del escalado y rotacin aumenta Permite escalado y rotacin de la imagen mucho el tiempo de ejecucin del algoritmo Puede encontrar mltiples coincidencias en la No es una buena solucin para el trabajo con imagen imgenes que pierden informacin sensible al submuestrearlas

Prcticas de visin por computador

71

Prctica 6.- Bsqueda de patrones

________________________________________________________________________Search Geometric Este algoritmo est basado en la lgica de contornos y crea un modelo de los bordes del patrn. Por este motivo, necesita que el patrn tenga un mnimo de pxels que formen el contorno. Es conveniente utilizarlo en imgenes contrastadas con los bordes claramente definidos. Ventajas Desventajas

Permite trabajar con imgenes rotadas No permite el escalado de la imagen Puede encontrar mltiples coincidencias en la imagen

Search Line based Este algoritmo tambin est basado en la lgica de contornos y crea un modelo de los bordes rectos del patrn. Es otra forma de Search Geometric, un algoritmo basado en contornos. En este caso, se ha optimizado el algoritmo para patrones de lneas rectas. Ventajas Permite rotacin en la imagen Permite el escalado de la imagen Suele ser ms rpido que Geometric Desventajas Slo puede encontrar un patrn en la imagen

Prcticas de visin por computador

72

Prctica 6.- Bsqueda de patrones

________________________________________________________________________Aprendizaje de patrones Cuando se define una ROI y se selecciona uno de los algoritmos de bsqueda de patrones, Sherlock realiza un aprendizaje del contenido de la ROI de forma automtica y guarda la informacin resultante en un vector de caractersticas que se emplear posteriormente en la comparacin. Si el aprendizaje que realiza Sherlock resulta satisfactorio para la aplicacin a desarrollar, se pueden continuar realizando investigaciones directamente. El caso ms comn es que haya que ajustar el aprendizaje que ha hecho Sherlock. Cada algoritmo de bsqueda de patrones tiene opciones de configuracin distintas. Se distinguen dos tipos de parmetros: Por un lado estn los parmetros que afectan al aprendizaje (Train parameters). Al modificar cualquiera de estos parmetros, hay que reentrenar al algoritmo. Es decir, estando en el modo Run, despus de cambiar los parmetros, debe cambiarse al modo Train y de nuevo al modo Run. Por otra lado estn los parmetros de ejecucin (Run parameters), que definen la forma en que el algoritmo busca los patrones. A continuacin se da una descripcin de cada algoritmo. En el caso de Geometric, se utiliza un ejemplo, dado que es ampliamente utilizado y su configuracin es ligeramente ms complicada que el caso de los otros algoritmos. Search Correlation Este algoritmo requiere algunos ajustes si se quiere que encuentre objetos con rotacin. Para habilitar la capacidad de detectar un patrn rotado, debe asignarse el valor true al campo Train:use rotation. En los campos min rotation y max rotation se define el margen de rotacin que pueden presentar las piezas. Junto con rotation increment, Search Correlation sabr cuntos patrones deber generar para poder comparar. De esta manera, si se definen max rotation = 45 ,min rotation = -45 y rotation increment = 5, Search Correlation generar45 5 45 18

patrones, con una diferencia de rotacin entre ellos de 5, con los que comparar la figura correspondiente a cada inspeccin de pieza. Como se ha comentado anteriormente, esto incrementar notablemente el tiempo de ejecucin del algoritmo. De la misma forma, se puede habilitar el escalado de los patrones. Los parmetros para el escalado son anlogos a los de rotacin en cuanto a la generacin de nuevos patrones.

Prcticas de visin por computador

73

Prctica 6.- Bsqueda de patrones

________________________________________________________________________Algunos de los parmetros de ejecucin de uso ms frecuente son: max matches: nmero mximo de patrones que buscar el algoritmo min score: umbral que determina si una identificacin se considera vlida o no Search Geometric Como se ha comentado anteriormente, Search Geometric se basa en la deteccin de contornos. A continuacin se muestra una forma de definir los contornos de inters en una pieza. Queremos verificar que la posicin de la pieza es correcta. Para ello nos ayudamos de los pins que tiene la pieza en su parte inferior. Dado que no estn situados simtricamente, su posicin relativa a la pieza nos indica si la pieza est orientada de forma correcta o al revs. Vanse las imgenes siguientes.

Pieza orientada correctamente

Prcticas de visin por computador

74

Prctica 6.- Bsqueda de patrones

________________________________________________________________________

Pieza orientada incorrectamente En primer lugar, definimos el patrn 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.

Prcticas de visin por computador

75

Prctica 6.- Bsqueda de patrones

________________________________________________________________________

Como se puede observar, el algoritmos, de forma automtica, no slo 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 automticamente o puede que queramos editar (aadir/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 verificacin de posicin que queremos realizar, descartaremos todos lo contornos correspondientes al tornillo. Para ello, abrimos el editor de patrones clickando sobre Parameters.

Prcticas de visin por computador

76

Prctica 6.- Bsqueda 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 lneas verdes, veremos que la lnea que define el borde sobre el que hemos clickado se vuelve roja. Esta lnea se descarta de los contornos que forman el patrn y no ser considerada por el algoritmos.

Prcticas de visin por computador

77

Prctica 6.- Bsqueda de patrones

________________________________________________________________________

En este caso, hay una nica lnea que define el contorno, pero no siempre es as. Search Geometric puede dividir el contorno de una pieza en varias lneas al detectar los gradientes que definirn los bordes. Clickamos sobre Undelete y luego sobre la misma lnea y observaremos que vuelve a ser verde. A continuacin seleccionamos Delete y clickamos sobre la lnea bajo la E. Con Delete Points se pueden descartar pxels individuales. Seleccionamos Delete Points y seleccionamos todos los pxels correspondientes al tornillo que sobresale por la parte superior de la pieza. El resultado sera el siguiente.

Prcticas de visin por computador

78

Prctica 6.- Bsqueda de patrones

________________________________________________________________________

Una vez realizadas estas modificaciones, cambiamos el parmetro min score a 80 y cambiamos a modo Train para, inmediatamente, volver al modo Run. Con esto hemos realizado el aprendizaje del patrn. Clicamos sobre la ROI rectangular para editar sus parmetros y en la pestaa 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 nmero de patrones encontrados (num matches) y el grado de similitud (best score) con el patrn 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 investigacin 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 varan los resultados. Search Line Based En este caso, algunos de los parmetros que se pueden ajustar son el gradiente mnimo y la longitud mnima y mxima 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 lmite para encontrar un patrn (timeout).

Prcticas de visin por computador

79

Prctica 6.- Bsqueda de patrones

________________________________________________________________________Dado que Search Line Based no dispone del editor de aprendizaje de Search Geometric, se pueden utilizar estos parmetros para especificar los bordes que nos interesen.

Prcticas de visin por computador

80

Prctica 6.- Bsqueda de patrones

________________________________________________________________________

EjercicioDado el conjunto de imgenes que se proporciona en el directorio ejercicio\imagenes, crear una investigacin que permita encontrar el nmero de piezas correctas, as como su posicin y ngulo para, posteriormente, enviar dichos datos a una ventana Reporter . Una pieza correcta es aquella que, como se defini en una prctica anterior, tiene la pestaa a la izquierda y est completa. Vase la siguiente imagen.

Prcticas de visin por computador

81