Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nota preliminar
Sherlock 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 uni@infaimon.com. 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 infaimon@infaimon.com
INFAIMON(Spain) Ribera del Loira, 46 E-08042 Madrid Espaa Tel. (+34) 902 463 246 Fax. (+34) 91 503 0090 infaimon@infaimon.com
INFAIMON (Portugal) Rua Sra. do Alamo, 48 Esgueira 3800-262 Aveiro - (Portugal) Tel. (+351) 234 312 034 Fax.(+351) 234 312 035 Infaimon.pt@infaimon.com
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 Infaimon.mx@infaimon.com
2 ______________________www.infaimon.com________________________
INDICE
Prctica 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________________________
4 ______________________www.infaimon.com________________________
_______________________________________________________________
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.
_______________________________________________________________
Cmaras
Las 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
_______________________________________________________________
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.
pticas
A 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:
_______________________________________________________________
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.
Iluminacin
La 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.
_______________________________________________________________
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.
_______________________________________________________________
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.
10
_______________________________________________________________
Darkfield Se utiliza para resaltar detalles en relieve.
luz frontal
Darkfield
11
_______________________________________________________________
Backlight Se utiliza para resaltar perfiles o para que la luz atraviese el objeto a inspeccionar.
luz frontal
Backlight
12
_______________________________________________________________
Coaxial Se utiliza para atenuar los reflejos de superficies reflectantes, iluminando de forma homognea la superficie.
luz frontal
luz coaxial
13
_______________________________________________________________
luz coaxial
14
_______________________________________________________________
luz frontal
luz difusa
Frame grabbers
Los 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.
15
16
_______________________________________________________________
Cuestiones
a) 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
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
17
_______________________________________________________________
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
18
_______________________________________________________________
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.
19
________________________________________________________________________
Investigaciones
Una 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.
20
________________________________________________________________________
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.
21
________________________________________________________________________
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.
22
________________________________________________________________________
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.
23
________________________________________________________________________
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.
24
________________________________________________________________________
Monitor window Contiene los mensajes que genera Sherlock
Report window Se puede utilizar para mostrar mensajes definidos por el programador.
25
________________________________________________________________________
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
26
________________________________________________________________________
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.
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:
27
________________________________________________________________________
28
________________________________________________________________________
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.
29
________________________________________________________________________
30
________________________________________________________________________
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.
31
________________________________________________________________________
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:
32
________________________________________________________________________
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:
33
________________________________________________________________________
34
________________________________________________________________________
Ejercicios
a) 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
35
________________________________________________________________________
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
37
________________________________________________________________________
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:
38
________________________________________________________________________
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).
39
________________________________________________________________________
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:
40
________________________________________________________________________
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.
41
________________________________________________________________________
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.
42
________________________________________________________________________
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.
43
________________________________________________________________________
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
45
________________________________________________________________________
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.
46
________________________________________________________________________
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.
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
47
________________________________________________________________________
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.
48
________________________________________________________________________
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.
49
________________________________________________________________________
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.
50
________________________________________________________________________ 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
51
________________________________________________________________________
Mapeado de verde
Histograma verde
52
________________________________________________________________________
Mapeado de naranja
Histograma naranja
53
________________________________________________________________________
Mapeado de azul
Histograma azul
54
________________________________________________________________________
Mapeado de rojo
Histograma rojo
55
________________________________________________________________________
Mapeado de amarillo
Histograma amarillo
56
________________________________________________________________________
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.
57
________________________________________________________________________
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.
58
________________________________________________________________________
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
59
________________________________________________________________________
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.
60
________________________________________________________________________
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:
61
________________________________________________________________________
Una vez hecho esto, aadimos a la ROI el algoritmo Connectivity-Binary y cambiamos los parmetros para que quede de la siguiente manera:
62
________________________________________________________________________
Aceptamos y aadimos un segundo algoritmo Connectivity-Binary en la misma ROI. En este caso los parmetros deben ser los siguientes:
63
________________________________________________________________________
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:
64
________________________________________________________________________
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.
65
________________________________________________________________________
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.
66
________________________________________________________________________
67
________________________________________________________________________
Ejercicios
Aade 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
68
________________________________________________________________________
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.
69
________________________________________________________________________
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
71
________________________________________________________________________
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
72
________________________________________________________________________
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 generar
45 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.
73
________________________________________________________________________
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.
74
________________________________________________________________________
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.
75
________________________________________________________________________
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.
76
________________________________________________________________________
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.
77
________________________________________________________________________
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.
78
________________________________________________________________________
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).
79
________________________________________________________________________
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.
80
________________________________________________________________________
Ejercicio
Dado 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.
81