miércoles, 22 de febrero de 2012

Vision Leer QR TEXTO Y CB


Hola a todos, en esta entrada os voy a enseñar a desarrollar un programa mediante la combinación entre Labview y visión para ser capaces, gracias a una web cam normal y corriente, de conseguir captar elementos como pueden ser textos, códigos QR y también códigos de barras.
La mejor manera de demostrároslo es mediante unas pequeñas fotos para captar la idea.

Códigos de tipo QR.




Codigos de barras.



Y texto.




Lo que en un principio puede ser bastante complicado, os diré que todo lo contrario, Vision tiene gran variedad de funciones, de hecho, tiene unas cuantas concretas, que son las que voy a emplear para hacer este proyecto, esas funciones son las de leer texto, leer QR y leer CB. Tan sencillo como ponerlas y apenas configurar unas cuantas cosas para que nos funcione.


Yo os diré que el proyecto lo realicé sin estado alguno, es decir, todo dentro de estado “inspect” es decir, que no tiene más que un estado, donde se realiza constantemente el escaneo.


En primer lugar  y como hago siempre, os voy a poner lo que sería el conjunto de funciones del proyecto, seguidamente iré explicando a medida que vaya completando.





Queda una función última que es la del QR, no me cabía en la imagen, pero bueno, luego os la explico.
Bien, sin más entretenimiento nos vamos a ir al inicio del programa.

 En primer lugar os diré que vamos a necesitar diferentes “recortables” tanto de un texto, como de un QR y un CB, ya que a medida que vayamos poniendo funciones, deberemos de verificar su funcionamiento antes de portarlo a Labview. Yo cogí estas, las que os muestro en la imagen.







Aunque a simple vista no se ve, tanto el CB como el QR contiene información cifrada, es decir, que en realidad hay un texto escrito, en el CB tengo mi DNI , mientras que en el QR aparece el blog de un amigo. La página en la que los generé es esta, echadla un vistazo.




Una vez tenemos esto, empezamos. Lo primero que vamos a hacer será introducir nuestra cámara, para eso vamos a “adquire image”.






Y una vez la tengamos metida, seleccionaremos nuestra cámara, y le pondremos un nombre.
Le damos a que adquiera imágenes en modo continuo. Ojo de no tocar nada más, no lo necesitamos.





Ya tenemos nuestra cámara grabando, ahora vamos a ir metiendo los famosos filtros, en primer lugar para hacer una imagen monocromática, y después para depurar su definición. 

Para eso vamos  a “visión assistant”.




Una vez lo metamos en el programa, pondremos nuestro nombre y diremos que vamos a trabajar en “full image” es decir, la región de interés será toda la imagen que la cámara pueda coger.


Después de tener esto, le daremos a “edit” en la parte inferior izquierda.

 Y nos meterá a esta ventana. Importante, creo que yo lo he dicho, pero os lo repito, el visión assitant es otro soporte a parte de visión builder, lo que pasa es que funcionan “compenetrados”.





Y lo que haremos una vez dentro será añadir la ventana que tengo añadida yo, la que dice “extract color”  Y le quitamos uno de ellos, yo le quito el “luminance” según mi experiencia, es el que mejor me ha funcionado siempre.




Una vez pongamos esto, tendremos nuestra imagen en blanco y negro.
Le daremos a “ok” en el visión assitant” y podremos pasar al siguiente paso.


Ahora lo que hago es en parte, opcional. Lo digo porque se trata de meter un pequeño filtro que mejora la imagen, repito, es opcional porque en mi caso me ha venido bien para definir mejor los objetos. Os diré cómo se mete uno, y luego dejaré a vuestra elección trabajar con ellos o no, yo siempre digo que “no están de más”, pero es cosa vuestra.



Nos vamos a “filter image” como os enseño en la foto. La meteremos en la función y le daremos click.






Una vez le demos nos meterá en otra ventana, tan solo tendremos que añadir el filtro que queramos, y observar si la imagen gana  en definición o en otro caso, cumple las expectativas que se necesitan.

Yo he elegido esta. La de “low pass”. 

Como veis, hay muchas e incluso tienen parámetros modificables.




Le daremos a “ok” cuando tengamos el adecuado, y ya tendremos un filtro aplicado.


Ahora es el momento de pasar a lo importante, las funciones que detectan texto, QR y CB. Vamos a empezar con la de detectar texto. Nos vamos a “Read/Verify text” como os enseño en la imagen.





Como siempre, le pondremos nombre, en este caso debemos seleccionar una región para leer, yo os aconsejo que sea un rincón aislado, puesto que a la hora de leer códigos de barras o QR si se mete dentro de la región de lectura de letras… va a leer lo que interprete, y saldrán letras a lo loco por lo que os aconsejo que lo pongáis como lo tengo yo, en la parte inferior derecha.

Bueno, ahora sí que vamos a tener que configurar una serie de cosas, os iré diciendo cada una de ellas y explicando lo que es precíso. Nos vamos a la ventana donde nos dice “mode” seguido de la de “main”. Cuando estemos ahí lo que vamos a hacer va a ser meter la “biblioteca de letras” por decirlo de una manera clara, es decir, patrones de letras para que cuando nuestra cámara las vea, pueda saber qué letra es exactamente, gracias a esos patrones. Para eso le damos a aquí.





Cuando le demos nos abrirá otro entorno, y será ahí donde vayamos metiendo letras, para hacerlo es muy sencillo,  lo primero que haremos será configurarlo un poco. Poned lo que os pongo en la imagen.





Y una vez tenemos esto le damos a aquí.





Y con esto el proceso es sencillo, cogemos la letra que deseamos añadir a la biblioteca, veréis que automáticamente se mete en un cuadro amarillo, y una vez esté, pondremos en “correct string” de qué letra se trata y le daremos a “train”. Ya tenemos añadida nuestra letra. Así de sencillo. 

Arriba a la derecha en “edit characters files” podemos ver las que vamos añadiendo. IMPORTANTE, cuantas más metáis , mejor va a captarlas a la hora de darle a “run”. Esta es mi biblioteca.







Yo he metido unas pocas porque voy a usar las necesarias para captar “gabi” o “Gabriel” y poco más. Las demás letras no las entenderá. Una vez tengamos los patrones de cada letra que vamos a visionar ya tendremos la función de lectura de texto.
Otra cosa, como os dije en las primeras entradas, la luz a veces puede ser un gran problema, por eso yo os aconsejo que bajéis el “score” de tal manera que cuanto más bajo sea más fácil es que la webcam interprete las letras, a pesar de luz, ruido…


Para eso nos vamos a la pestaña de “options” dentro de la función de “read/verify text” y donde pone  “acceptance level” ponemos unos  400 o 500, para que capte mejor. Todo lo demás es configurable, vosotros sabréis lo que necesitáis, si queréis hacer concretamente éste proyecto, dejarlo como os he dicho y no toquéis más.


Las otras dos son mucho más sencillas. Ahora lo veréis.
Vamos con la captación del código de barras.
Nos vamos a la función donde nos dice “Read 1D barcode” como os enseño en la imagen.






La meteremos en la función y daremos click. Me repito al decir, ponemos el nombre y seleccionamos la región de interés. 

En este caso voy a poner más atención, los códigos de barras no necesitan de ser captados totalmente, con esto quiero decir, el “cifrado” se encuentra entre la distancia de cada uno de los flancos, por lo que con que hagamos una pequeña franja como os muestro a continuación, bastará.





Nos aseguraremos, claro, de que la franja recorre totalmente el CB sino no se va a leer nada.

 Y ya solo queda poner el tipo de CB que es, hay de muchos tipos, ya lo habréis visto en la página que os he pasado, que hay 39, 129, 2x5, etc. Elegid el que queráis, seleccionar el “score” que deseáis que tenga  y darle a OK, ya tendréis vuestro CB.


Con el QR es prácticamente igual. Primero vamos a seleccionar la función, como os muestro en la imagen.





Le daremos click , pondremos la región de interés deseada, que en este caso será “full image” y le pondremos nombre. Mi consejo es que no toquéis más, tan simple como poner la función y decir donde quieres que capte es suficiente para que te pueda leer un QR que se vea bien sin mucha dificultad. Le daremos a OK.

Ya habríamos acabado con lo que es el programa de visión. Pero me mandaron hacer que todo lo que contiene mi CB y mi QR se muestre en labview. Por lo que primero vamos a tener que hacer una exportación. Lo que haré es “sencillo” puesto que lo único que tengo que hacer es meter indicadores en las variables de cada una de las lecturas y ya estaría, el problema está en encontrarlas.


Bueno lo primero que haremos será portarlas a Labview, nos iremos en la parte de arriba a “tolos” y le daremos “mígrate inspection” como os muestro en la imagen.






Nos tardará un rato bastante largo, alrededor de unos 15 o 10 minutos. Cuando le demos nos dirá donde guardarlo, le daremos a la ventana que dice “current folder” y se nos pegarán ahí todos los VI, que son bastantes. Una vez esté cargado, abriremos el “inspect main” y viajaremos por el VI.


Esta sería la apariencia del Vi.





Lo que vamos a hacer es irnos al lugar donde están las variables de los códigos, y sacar de ahí los indicadores, nada más. Bien, desde front panel, daremos a control +E, y daremos doble click en “process”  recordad que en el cuadro del case debe de estar en “inspect.






Entonces nos meterá en otra ventana, ignoradla, volverle a dar a control +E y nos meteremos en ésta ventana. Si todo está bien, claro XD.




Como veis hay pequeñas modificaciones, pero son muy sencillas, tan solo debemos “descomponer “ cada función suena difícil pero es muy sencillo. Lo haré una vez, y vosotros acabaréis las demás. Primero metemos un “Index array”, ponemos una constante en 1. Como en la foto.





El hilo de la izquierda es el que sale de la función el de la derecha irá conectado a un  “unbunddle cluster” 





Y una vez se unen, simplemente se arrastra hacia abajo y se pone un indicador donde pone “string value” como os muestro aquí.




Ya estaría, ahora solo queda enlazar este indicador de un sub VI al principal, para eso solo tenemos que irnos a la ventana que nos salió al dar a “process”. Y nos aparecerá un indicador, el que acabamos de poner.

 Clicaremos primero en la parte de arriba de selección de sub V (imagen) y clicaremos justo encima del indicador, y ya estará enlazado, solo nos quedará en la función de “process” colocar un indicador, porque observareis que le ha salido un nuevo hilo rosa, que es el que hemos puesto al vincularlo. Y ya estaría.








Hacéis eso con todos y ya tendréis vuestros indicadores. Como no podía ser de otra manera aquí os mostraré el funcionamiento del VI. En cuanto pueda os mostraré un vídeo de cómo funciona.




Esto es todo en esta entrada espero que os haya resultado práctico, creedme que lo es, un saludo!



























No hay comentarios:

Publicar un comentario