Detectar tapas en botes de jabón(tutorial1)


Para empezar con la visión artificial, empezaremos seleccionando los tutoriales que contiene visión builder para el aprendizaje de este.

Para este ejercicio seleccionamos el tutorial 1 el cual se limita a identificar tapas de los botes de jabón.

No es necesario tener una cámara para realizar este ejercicio, porque vision builder trata imágenes fijas para aplicar ejemplos con la visión.

Ahora bien, con todo esto dicho es hora de inicializar con NI vision builder, para eso abrimos este y nos saldrá el entorno de trabajo.

Una vez situados allí, elegiremos el tutorial 1, el cual es una carpeta que  contiene un conjunto de imágenes.

Para esto seleccionamos en las herramientas o funciones que contiene vision  builder la función simulate acquisition.

A continuación sale una ventada distinta al entorno anterior en la parte derecha:

Una vez abierta la carpeta y estando dentro de ella, seleccionamos una imagen de todas las que se encuentran, en este  caso he seleccionado la primera.

Ya seleccionada la imagen se damos a abrir y a continuación en el entorno vision builder nos aparecerá lo siguiente.

La imagen se ha agregado a entorno de trabajo, vemos que en el main se encuentra  el path,  el cual es donde se encuentra la dirección de la carpeta con la imagen  y además, hay una opción debajo del path que dice: cyde through folder images, esta opción nos permite hacer un barrido de todas las imágenes en la carpeta seleccionada para poder visualizar aquellas que contengan la tapa y las que no.

Donde dice step name le ponemos el nombre a la adquisición, si se desea se puede dejar por defecto.

Bien visto y explicado esto se le da a OK, y vemos como se a añadido la adquisición a otra área del entorno.

Esta área que se puede visualizar en la imagen, el cual esta cubierta por un marco rojo, es el contenido de un diagrama de estados.

Vision buider trabaja mediante diagramas de estados tipo moore, dichos diagrama obtienen  contenidos diferentes agregando mas estados. Estos diagramas de estados siempre tienen un inicio y un final (start y end).

En nuestro caso utilizaremos un solo globo en el diagrama de estados para realizar el ejercicio.

A continuación hay que seguir agregando mas funciones y el siguiente paso es Localizar una zona de referencia.

Con la función match pattern seleccionaremos una zona de referencia. Esta función nos crea un patrón de una imagen para ver si concuerda con las mismas áreas de las otras imágenes que se irán desplazando al ejecutar el RUN.

Para esto nos vamos al panel derecho de vision builder y seleccionamos  inspection steps: locate feautures—> match patter.

 

Al dar clic sobre match pattern  se nos abrirá la siguiente ventana:

Aquí se nos abre una ventana con la imagen anterior, a la cual el vamos a indicar la zona de referencia mediante un cuadro verde como indica la imagen.

Nota: La zona de referencia se puede elegir en cualquier lugar de la imagen siempre y cuando haya gris por definición en esta.

Luego de indicar la referencia, hacemos clic en next.

Y a continuación nos mostrara una ventana con la imagen o patrón seleccionado anteriormente.

Visto así le damos a finish.

Ahora se puede visualizar el cuadro rojo, que es el área de la referencia  marcada anteriormente el cual también esta rodeada de un cuadro verde que se llama región de interés (región of interest).

Esta región de interés la pondremos full image y no como constant, para que así abarque toda la imagen por completo.

Como se muestra en la imagen la región de interés ha cambiado y ahora ocupa mas espacio en la imagen.

Hecho esto ahora nos dirigimos a limits para decirle al match pattern que nos escoja una muestra como mínimo de cada una de las imágenes que se irán presentando.

Como muestra la figura hemos elegido un mínimo muestra = 1 , el máximo lo dejamos así por defecto , en sort by lo dejamos por defecto y luego aparece una tabla que es la que contiene la coordenada del patrón o muestra de imagen que escogimos anteriormente.

Luego le damos a ok y se nos agrega el match pattern al área o el contenido del globo del diagrama.

Ahora fijamos un punto de referencia en las coordenadas de la muestra de la imagen.

Para esto nos vamos a inspection steps: locate features–>set coordinate system.

Le damos clic en set coordinate system y a continuación:

Vemos que ha cambiado el cuadro por un eje de coordenadas, esto se debe a que el punto centrar del cuadro de referencia anterior se convierte en el eje 0,0.

Le ponemos un nombre a la función como indica el cuadro rojo.

Luego nos dirigimos a settings  y seleccionamos en mode: horizontal motion.

Y además seleccionamos el origen: match pattern.

Luego le damos a ok.

Ahora vemos que se ha agregado en el área donde se encuentran las demás funciones y como se puede apreciar también aparece la coordenada junto con la referencia del match pattern en el centro de esta esta su eje.

Ahora pasamos al paso de localización de tapas.

Con este paso mediremos la intensidad de grises que hay entre un bote con tapa y uno sin tapa para comparar si hay o no y nos de un resultado de que si esta en un rango indicado o fuera del rango.

Para esto nos dirigimos a: inseption steps: measure features —>Measure intensity.

Damos clic sobre measure intensity y nos aparece lo siguiente:

En esta imagen ponemos tres regiones diferentes para medir la intensidad de grises entre los extremos de la tapa, así nos localiza la tapa en cada imagen que va pasando y si no hay tapa la intensidad de gris varía a blanco.

En el main ponemos el nombre del paso y lo demás lo dejamos por defecto.

A continuación nos dirigimos a histogram aquí podemos ver el rango de intensidad desde 0 hasta 255 en una escala.

Luego pasamos a limits para colocar un rango en la inspección en este caso pondremos un mínimo de 0 a 100 de intensidad.

En la imagen se pueden ver unos valores en el marco verde, estos varían dependiendo de la imagen porque no todas tendrían que tener la misma intensidad.

Luego de esto le damos a OK y se nos agrega al área donde están las otras funciones.

Lo siguiente es personalizar una indicación sobre la imagen, es decir poner un mensaje o algo que nos indique que hay tapa o no.

Esto se hace con la función custom overlays, y para eso nos dirigimos a : inseption steps: use additional tools—> custom overlays.

Clicamos encima de custom overlays y nos aparecerá lo siguiente :

En main nos da la opción por poner el nombre si queremos lo dejamos por defecto , si no se le añade uno, luego aparece otra pestaña al lado con el nombre de custom overlay , aquí seleccionamos  un indicador para que nos diga si hay tapa o no.

En este caso ponemos un indicador booleano con texto introducido.

Seleccionamos el indicador booleano el cual esta marcado en la imagen por un cuadro rojo y luego nos situamos en la imagen hacemos clic izquierdo sobre la imagen del bote y arrastramos a donde queramos para ponerle un tamaño adecuado al indicador, como se muestra a continuación en la siguiente imagen:

Vemos que se a agregado un indicador de color verde en la imagen, además a cambiado el menú de custom overlay. En este menú seleccionaremos en que momento queremos que el indicador aparezca y y esto hay que elegirlo en value , aquí hacemos referencia al measure intensity con el nombre puesto por localizar tapa , el cual hemos puesto para indicar la localización de la tapa, luego aparecen debajo true text y false text . En estas opciones podemos poner el texto que queramos en true pondremos hay tapa y en false pondremos no hay tapa.

Como se ve en la imagen el indicador ha cambiado de nombre true a hay tapa y cuando no hay atapa el indicador se pondrá en false y nos avisara de que no hay tapa, el true es de color verde y el false de color rojo por defecto.

Ahora damos a ok y finalizamos con esto.

Ahora probamos si el ejercicio va correctamente. si va perfecto cuando hay tapa nos indicara que hay y si no hay nos indicara que no.

Damos al run varias veces para que vayan pasando las diferentes imágenes y comprobamos.

Como se puede comprobar en las dos imágenes nos indica en la primera que ha detectado tapa y en la segunda imagen detecta que no hay.

Espero que este ejercicio les haya servido de ayuda, un saludo.

 

video: