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