jueves, 23 de febrero de 2012

Vision medición de objetos con 2 camaras


Muy buenas a todos, en esta entrada vamos a realizar una práctica muy útil, se trata de, mediante 2 web cam, ser capaces de medir 2 piezas. Esto, como es un tutorial, vamos a trabajarlo desde adquisición de imágenes, y no con cámaras de verdad.


En programa solo se realizará en visión, sin embargo, habrá que hacer una serie de operaciones  de comparación desde labview.


Empezaremos poniendo un poco la sucesión de funciones. Seguidamente os iré explicando cada una, como siempre.





Como veis, primero son 2 adquisiciones, tanto la de flanco izquierdo, como del derecho, para medir nuestra pieza.  Después necesitamos captar cada flanco, para poder medirla, por lo que creamos la 3 función.
Después vamos a necesitar una función que se encargará de seleccionar con cuál de las 2 vamos a ver el interface, es decir, los elementos booleanos y demás. 

Después ponemos otra búsqueda de flanco, en este caso el izquierdo, seguido de un calculador, que será el que haga la comparación y nos muestre la medida de la pieza.

Finalmente ponemos un overlay para mostrar la información en la pantalla.


Vamos con el inicio del programa. En primer lugar deciros que ambas imágenes deben estar calibradas, yo solo explicaré una, vosotros deberéis hacer lo mismo con la otra.

Como siempre, seleccionamos “simulatte adquisición” pondremos un nombre para la función y seleccionaremos la ruta de las imágenes, que es esta.



Seleccionaremos que se reproduzca el ciclo completo de imágenes.
Entonces ahora daremos en la parte de arriba a “calibration”, y le damos a crear nueva, este paso es más o menos al de la entrada de calibración de objetos, yo os voy a poner directamente las fotos que vea importantes y las explicaré.

Le daremos y aparecerá una especie de “guía” que nos llevará por varios pasos.

El primer paso será poner un nombre a la calibración y también decir quién es su creador.

Marcaremos que la calibración nunca expira.

Daremos a siguiente, y diremos que es una “calibración simple”.

En el siguiente paso diremos que vamos a usar la imagen ya seleccionada “use current image”

En la siguiente parte diremos que queremos un pixel redondo “square pixel”.





Aquí tendremos que seleccionar los 2 pun tos para calibrar, tan sencillo como seleccionarlos manteniendo el botón control pulsado, recordad que debe ser lo más fiel a la imagen, para que, cuando estén puestos digáis “hay 1 cm” y esté bien.

Ponéis más o menos lo que pongo yo, y pasamos al siguiente.

En el último solo nos queda poner el eje de coordenadas.







Os aconsejo que pongáis mis medidas, 69 en el x y 340 en el Y, poned que la referencia es de de x la horizontal e Y la vertical.
Con esto ya tendríamos echa nuestra calibración, ahora debéis hacer exactamente lo mismo pero con la otra adquisición.
Recordad que la calibración es muy importante.

Ahora lo que vamos a hacer es buscar los flancos, esto es una tarea bastante sencilla si se tiene una imagen de buena visibilidad. Para eso cogemos la función “find edges” que os pongo aquí.







Como siempre, cuando la seleccionemos , deberemos dar un nombre a la función.

En la ventana settings, yo he puesto buscar todos los flancos “all edges” aunque en este caso con encontrar uno nos valdría, después le digo que la polaridad será de oscuro a claro, por lo que voy a trazar la imagen de izquierda a derecha, como os enseño en la imagen. Lo demás yo lo dejaría por defecto, porque no creo que tengáis problemas en capturar el flanco.




Esto sería la polaridad. (de oscuro a claro)








Con el flanco izquierdo deberéis hacer exactamente lo mismo, solo que debéis cambiar, tanto nombre, como dirección del trazado.. etc.


Ahora lo que haremos será seleccionar la imagen con la que vamos a trabajar, como veis, el programa se encuentra en un solo estado, nosotros trabajamos realmente sobre 2 imágenes, sin embargo debemos tener seleccionada 1, para trabajar con ella, por lo que con esta función, una vez la metemos, solo debemos seleccionar la adquisición 1, que será la que muestra la parte izquierda de la pieza. 





Veréis que cuando demos un paso, la adquisición en la que se detiene siempre es la de la parte izquierda.
Bueno ya casi estamos acabando, ahora solo nos queda la función que contará la medida de nuestra pieza y nos dirá si vale o no.

Para eso, como os dije vamos a tener que hacer una función con labview. Para eso seleccionamos la función siguiente.



Cuando le deis, os saldrá una imagen en blanco, será ahí donde tengamos que meter nuestro proceso de labview. El proceso es el siguiente.





Como veis, no es nada complejo, en resumen, lo que hace esta unión de puertas es sacar un valor, más o menos aproximado de la medida de nuestra tabla. Por un lado saca el valor del flanco derecho, y le suma 380, a ese resultado le resta su flanco izquierdo .

Después colocamos un mayor y un menor, para establecer un rango entre 39 y 405 como medida aceptable, por ultimo una salida booleana . Y ya estaría.

Y ya tendríamos el valor que deseamos, ahora solo necesitamos meter un “custom overlay” como os muestro aquí.




Y ya tan solo lo que tenemos que hacer es sacar las dos cosas que necesitamos, por un lado, la medida exacta “value” y por otro lado un booleano que nos diga si está bien o mal. Como veis donde pone “value” ponemos la variable que queremos mostrar, en el caso del led de correcto /incorrecto, pondremos el “step value”, como está en la imagen.


En el caso de la medida exacta pondríamos esto.





Metemos entre corchetes lo que sería el nombre de la función, en mi acso “ancho de pieza” y después le he puesto yo, pixels como nota de guía. Con esto, ya estaría  solo faltaría dar click en el lugar donde deseamos ponerlo de la imagen y listo.

Esto ha sido todo en la entrada, a continuación os pondré un vídeo de cómo solo una de las tablas da el visto bueno, las demás, por salirse del rango, o bien por que no llegan o se pasan, se las pondrá como incorrecto.









Espero que os sirva de ayuda, un saludo!







No hay comentarios:

Publicar un comentario