Muy buenas a todos, en este tutorial de visión os vamos a
enseñar a elaborar un programa capaz de
percibir si un componente tiene el fusible roto, así como también rechazarlo en
caso de que sus pinzas se encuentren demasiado cerradas.
El proceso es más o menos sencillo. Aquí os pongo lo que
será el conjunto de funciones que harán funcionar nuestro programa.
Como veis, de manera resumida es, colocar la adquisición de
imagen, buscar un flanco, después un patrón para saber que es nuestra pieza, así
como un eje de coordenadas, después un medidor de distancia entre las pinzas, y
los dos patrones de los fusibles, tanto en caso de que esté mirando hacia un
lado o el otro. Acabamos poniendo un calculador lógico con el cual, en función
de la situación aceptará o rechazará la pieza.
Ahora iremos por partes. En primer lugar, como estamos
trabajando sobre imágenes, tendremos que dar a la función de “adquisición de
imagen” y seleccionar la ruta que os dejo en el recuadro, que es donde está la
sucesión de imágenes.
Una vez tengamos nuestra sucesión de imágenes, pasaremos a
capturar el flanco izquierdo de la pieza. Esto nos ayudará a situar la pieza,
así como también situar los demás patrones de captura. En primer lugar le
ponemos nombre, después elegimos la región de interés que os pongo a
continuación.
En la segunda pestaña, la de “settings”, diremos que el
escaneo se hace de izquierda a derecha. Que vamos de un entorno brillante, a
uno oscuro y que busque el primer flanco que encuentre. Solo uno, y no el
mejor. Lo demás no lo tocamos.
Como os enseño en la imagen .
Bueno, ahora podemos hacer que busque el patrón de fusible
en forma de S. Recordad que esta función es la de “match pattern”. Elegimos la
región de interés que deseamos y
seleccionamos un nombre.
Entonces nos vamos a la siguiente pestaña, donde nos
dirá cual es el patrón que tenemos asignado.
Os sugiero que pongáis este que yo os muestro.
En la siguiente pestaña le decimos que solo deseamos buscar
un patrón, además de esto, debemos elegir el “score” que se asemeja a una
especie de puntuación que debe de tener el patrón para ser aceptado. Por tanto
cuanto más le demos, más fiel debe ser la imagen para que nos lo de por válido.
Por último en la parte de “limits” simplemente marcamos un
máximo y un mínimo, ya que solo buscamos un patrón como os dije antes.
Una vez hecho esto, ya tendríamos la función de
reconocimiento de fusible en forma de “s” hecho.
Bien, una vez nos encontremos aquí, será el momento de
colocar un eje de coordenadas, esto facilita bastante el trabajo al programa a
la hora de tener que buscar patrones, además, podemos asignar muchas “tomas” de
imagen al eje de coordenadas, lo cual nos puede ser bastante útil.
Es muy sencillo, tan solo tenemos que seleccionar la función
que dice “set coordinate system”, una vez la seleccionemos, la podremos un
nombre, la colocaremos como os enseño yo en la siguiente imagen y la decimos
que será tomada en horizontal.
Así tengo puesto yo el eje de coordenadas.
Bien, ahora lo que haremos será contemplar la apertura de
las pinzas, de tal manera que, mediante la función “caliper”, podremos
determinar cual será el rango de aceptación.
Lo primero que haremos será seleccionar la función, después
de colocarla el nombre será el momento de configurarla.
Como os dije antes, marcaremos la casilla que dice
“reference coordinate system” para que se centre en función del eje de
coordenadas anteriormente colocado.
Pondremos la región en la que vamos a trabajar, yo he puesto
esta.
Después pasaremos a la siguiente pestaña de configuración.
Aconsejo copiarlo más o menos.
Y después en limits, pondremos tanto una medida máxima como
mínima, en la parte inferior nos dice a qué distancia se encuentran ambas
pinzas (en pixels), nosotros, en función de esa medida, vamos a crear un rango,
de tal manera que, si éste es superior al establecido, nos reconocerá la pieza
como errónea.
El rango que he puesto ha sido mínimo de 150 y máximo de
160, por tanto, un rango de 10 píxeles.
Perfecto, ya casi hemos terminado, como hicimos antes con el
fusible en forma de “s” , vamos a tenerlo que hacer también en el otro sentido,
por tanto con forma de “z”, puesto que también se presenta en el ciclo de
imágenes.
Tendremos que ahcer exactamente lo mismo que os enseñé con
el patrón en forma de “s”, solo que esta vez, cambiamos el “template” por este
que os muestro.
Y por último meteremos un cálculo de booleanos, de tal
manera que, podamos configurar si se da el caso de que al captar el fusible en
forma de s, nos dé fallo en el “z”, pero nos dé bien en la resolución final.
La función se llama “logic calculator” una vez la
encontremos simplemente tendremos que copiar lo que os subo aquí.
Es muy sencillo, tan solo tenemos que ir añadiendo cada uno
de los cálculos que hemos hecho anteriormente, en este caso serían el fusible
S, Z y la distancia entre pinzas.
Es sencillo, tan solo tenemos que ir eligiendo en la parte
de arriba las medidas que queremos que se contemplen, y por último, en función
de su estado, determinar la decisión final, metemos las 3 medidas que os he
dicho, y configuramos una como tipo “or”, la otra como tipo “and” y la de
distancia no ponemos nada. Si todo está bien, la sucesión solo nos dará fallo en 3 de las imágenes, que son las que os pongo a
continuación.
Pinza hacia adentro.
Fusible roto
Fusible en mal estado.
Ya estaría todo en la enrtada para tener un programa capaz
de captar si hay fusibles rotos y pinzas demasiado cerradas.
No hay comentarios:
Publicar un comentario