Está en la página 1de 15

CLASIFICACIÓN E INSPECCIÓN DE PRODUCTOS

KEVIN ANDRES MUÑOZ

LUZ ANGÉLICA PIPICANO GÓMEZ

UNIVERSIDAD DEL CAUCA

FACULTAD DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES

INGENIERÍA EN AUTOMÁTICA INDUSTRIAL

POPAYÁN

2017
1. PLANTEMIENTO DEL PROBLEMA
En muchas empresas se manejan altas cantidades de productos similares, pero diferentes en
su estructura física, se hace necesario implementar un sistema de clasificación, verificación
y en algunos casos conteo de los productos fabricados dicho esto se presenta aquí un
problema y es como realizar todas estas operaciones en un sistema robusto y capaz de
realizar a cabalidad lo que se quiere. En muchos de los casos para dar solución a este
problema se plantea un sistema de visión artificial con condiciones controladas.

Para el caso del presente documento se tienen dos productos diferentes como
caracterización principal y una caracterización secundaria por tamaño. Dichos productos se
pueden observar en la figura 2.1. El objetivo es realizar un sistema de caracterización,
verificación de calidad y conteo. Se debe tener en cuenta que no es posible tener
condiciones completamente controladas debido a que se presenta variabilidad de las
condiciones de captura de la imagen, tamaño, orientación y posición del producto a analizar.

2. CLASIFICACIÓN E INSPECCIÓN DE PRODUCTOS

A lo largo de este documento se presenta la explicación de las etapas llevadas a cabo para
realizar la clasificación e inspección de los productos seleccionados.

Los productos que se van a clasificar e inspeccionar son arandelas y tornillos de diferentes
tamaños, algunos poseen imperfecciones. Los objetos se muestran en la figura 2.1.
Figura 2.1. Objetos seleccionados.

Se realizan dos tipos de clasificación, una llamada primaria en la que se clasifica el producto
como arandela o tornillo. Una secundaria que se hace dentro de cada clasificación primaria.
En el caso de las arandelas existen tres clasificaciones secundarias: arandela grande, mediana
y pequeña. Para los tornillos solo hay dos tipos, tornillo grande y tornillo pequeño.

La inspección y clasificación se realiza en MATLAB y en Visual Studio haciendo uso de la


librería OpenCv.

3. ESQUEMA GENERAL PLANTEADO COMO SOLUCION

En la figura 3.1 se muestra un esquema general donde se plantea la lógica para dar solución
al problema, para ello se plantean dos algoritmos uno en Matlab y el segundo en visual studio
2012 usando complementos de cogido c++ e incluyendo las librerías de OpenCv. La lógica
que siguen ambos algoritmos se detalla en
Figura 3.1. Esquema de clasificación general.

4. SOLUCIÓN DEL PROBLEMA MEDIANTE


IMPLEMENTACIÓN EN MATLAB
La clasificación e inspección de los productos se hace en línea o tiempo real, los productos
van pasando uno a uno por una cinta transportadora (ver figura 4.1), haciendo uso de MatLab
y de una cámara digital se toma la imagen del producto y se realiza el respectivo análisis.
Figura 4.1. Cinta transportadora y cámara digital.

Al ejecutar el archivo Tarea3_Kevin_Luz.m en MATLAB se despliega el menú presentado en


la figura 4.2.

Figura 4.2. Menú de inicio

Al elegir la opción 1 se muestra el mensaje en la figura 4.3.

Figura 4.3. Elegir número de productos a clasificar e inspeccionar.

Después de digitar un numero entero positivo para el numero de productos a inspeccionar,


se llama a la función Adquisicion_Imagen(). Esta función permite que MATLAB se conecte con
la cámara, primero se crea una entrada de video. Haciendo uso de un ciclo while se toman
frames del video en tiempo real. Para lograr tomar una imagen en el momento adecuado
los frames adquiridos son recortados. Previamente se definió una zona por la que tiene que
pasar el objeto, la cual se toma como base para realizar el recorte. El recorte e binariza y
se revisa si existe algún 0 en ella. La cinta transportadora es de color blanco por lo tanto
mientras no haya objetos sobre ella, la matriz binarizada del recorte tendrá solo unos, al
aparecer algún objeto empiezan a presentarse ceros en la matriz. A través del método de
prueba y error se define que deben haber más de 5000 ceros en la matriz para que tome la
imagen que se va a procesar

Al adquirir la imagen, el siguiente paso es realizar un procesamiento básico de la imagen, la


función encargada de esta tarea es Procesamiento_General.m.

Para la clasificación primaria, se calcula el área y el perímetro del objeto, basándose en la


siguiente relación se determina si es una arandela o un tornillo:
area
metric = 4π
perimeter 2
La relación indica que tan circular es un objeto, si es cercano a uno es un circulo. En este
trabajo contemplamos solo dos elementos, por lo tanto, si metric tiende a uno es una
arandela, de lo contrario es un tornillo. La función encargada del algoritmo de esta primera
clasificación es Clasificacion_Primaria.m. La clasificación secundaria se realiza teniendo en
cuenta el área del objeto.

La inspección se trabaja para dos objetos, para las arandelas grandes y para los tornillos
pequeños, en la figura 4.4 se muestran las imperfecciones en el producto.

Figura 4.4 Objetos con imperfecciones

La detección de defectos en la arandela se realiza por comparación de áreas. Para los


tornillos se calcula la imperfección teniendo en cuenta la longitud máxima del producto, con
la transformada de Hough se extrae el valor de la línea máxima. La función encargada de la
inspección de los tornillos es Inspeccion_Tornillos.m.

El algoritmo en Matlab permite presentar los resultados a través de imágenes que contienen
la información de clasificación e inspección. La función para obtener esta información de
forma gráfica es Resultados.m.

Al elegir la opción 2 del menú principal se obtiene los resultados obtenidos en la opción
1en forma de texto. La función para esta opción la realiza el algoritmo de la función
Resultado1.m.

Resultados

En la figura 4.5 imagen se presentan los resultados obtenidos:


Figura 4.5. Resultados
5. SOLUCIÓN DEL PROBLEMA MEDIANTE OPENCV EN
VISUAL STUDIO 2012
Para a solución del problema planteado anteriormente mediante software visual studio 2012
haciendo uso de código c++ además usando las librerías de Opencv para procesamiento de
imágenes en este caso, la implementación y uso de comandos es un poco diferente a la
realizada en Matlab pero de igual forma se realizó con la misma idea de solución planteada
en Matlab, dicho esto se procede a dar conocimiento de las etapas del proceso realizado en
este software.

5.1. PASOS REALIZADOS

1) Inicialmente en la implementación se realiza un proceso de incluir librerías y de configuración


de la cámara.
2) Diseño de interfaz para usuario la cual se puede observar el la figura 5.1 la cual consta de 3
opciones Iniciar la toma de todos los datos, visualizar resultados y terminar la ejecución de la
aplicación cabe aclarar que en el código este procedimiento se realiza con switch case para las
opciones.

Figura 5.1 Interfaz usuario

3) Posteriormente se realiza un proceso de pre-procesamiento captura automática mediante la


realización de un recorte de la imagen real y análisis especifico del área de este recorte
binarizando la imagen además una bandera para que solo se realice una captura por objeto.
4) Una vez realizada la captura del objeto se realiza un procesamiento inicial para eliminar un poco
de brillo, un filtro Gaussiano para suavizar bordes y eliminar ruido, paso de RGB a escala de
grises y binarizado de la imagen.
5) Búsqueda de círculos mediante el comando (Houghcircles) en la imagen para saber si es una
arandela o un tornillo.
6) Posteriormente se realiza un procesamiento secundario donde dependiendo del objeto se
realizan operaciones de cierre y apertura según el objeto estructurante que puede ser un circulo
o un cuadrado.
7) Luego se realiza otra extracción de características donde se calcula el área del objeto teniendo
en cuenta a la condición de que siempre se tome la mayor área arrojada por el algoritmo
(findcontours) esto con el fin de eliminar algún tipo de ruido que se llegue a presentar.
Además se calcula la magnitud de las líneas presentes en el objeto mediante el comando
(HoughLinesP) y se toma la magnitud mayor de todas las presentes teniendo en cuenta
que este proceso solo se realiza si el objeto no es un círculo.

8) También cabe resaltar que en la ventada de comandos se realiza una visualización de algunos
datos entre los cuales están el área del objeto y la opción de presionar la tecla Escape (Esc) para
finalizar la adquisición de datos la cual se puede observar en la figura 5.2.

Figura 5.2. Visualización continúa en ventana de comandos.

9) Posteriormente se formulan los condicionantes para saber que objeto es en su clasificación


mostrada anteriormente y que se tenga en cuenta en el contador de objetos para los resultados.
10) Por ultimo en el secundo case se realiza un proceso para mostrar todos los datos obtenidos los
cuales se pueden observar en la figura 5.3 de forma más detallada.
11) Para el case 3 solamente se coloca un condicional para salir de la aplicación en caso de ser
pulsada dicha opción.

Figura 5.3. Visualización de resultados obtenidos.

Una vez mostrados los pasos principales o más relevantes para implementar la solución en
esta aplicación se muestran los resultados obtenidos mediante esta solución los cuales se
pueden observar en las figuras de la 5.4 hasta la 5.10.
Figura 5.4. Resultado clasificación Arandela Grande en buen estado.

Figura 5.5. Resultado clasificación Arandela Grande defectuosa.

Figura 5.6. Resultado clasificación Arandela mediana en buen estado.


Figura 5.7. Resultado clasificación Arandela pequeña en buen estado.

Figura 5.8. Resultado clasificación Tornillo Grande en buen estado.

Figura 5.9. Resultado clasificación Tornillo pequeño en buen estado.


Figura 5.10. Resultado clasificación Tornillo pequeño defectuoso.

5.2. ANÁLISIS DE RESULTADOS OBTENIDOS

Observando todas las figuras nombradas anteriormente se puede ver la adquisición


automática es muy buena debido a que sim importar la posición, orientación y tamaño del
objeto se realiza la captura obteniendo una imagen trabajable además ejecutando el
programa Aplicacion_Ins_producto.sln almacenado dentro de la capeta
Aplicacion_Ins_producto_Final se puede dar certeza de que solo se realiza una única toma
por objeto lo que vuelve a la aplicación más robusta y al programa as eficiente.

En general se puede ver que los pasos y operaciones implementados presentan buenos
resultados por ejemplo el cálculo de círculos en la imagen ayuda a realizar las operaciones
de cierre y apertura con el objeto estructurante correcto esto logra que los bordes de la
imagen final de todo el procesamiento tenga unos bordes aceptables lo que permite que se
tengan buenos resultados al realizar las operaciones siguientes.

5.3. ALGUNOS ERRORES O PROBLEMAS PRESENTADOS

Una vez observados los resultados obtenidos, cabe también resaltar que la implementación
de (HoughLinesP) no arrojo resultados satisfactorios puesto que en algunas ocasiones
generaba errores en cuanto a la magnitud de las líneas presentes en el objeto e indicaba
resultados erróneos solo para el caso de los tornillos pequeños esto debido en cierta parte
a la calidad de la imagen la implementación de cálculo o algunos otros factores que afectan
de forma indirecta al cálculo, dicho esto también se bebe de tener en cuenta que este tipo
de extracción de características fue planteado por el grupo y no necesariamente es el único
que pueda arrojar datos, por ejemplo cálculo de las esquinas podría ser otra opción. Los
errores presentados se pueden observar en las figuras 5.11 y 5.12.

Figura 5.11. Resultado clasificación Tornillo pequeño errónea 1.

Figura 5.12. Resultado clasificación Tornillo pequeño errónea 2.


6. CONCLUSIONES

 En la implementación de la aplicación desarrollada se pudo observar que la


clasificación primaria es muy eficiente y la clasificación secundaria también es
bastante robusta.
 En general se puede decir que haciendo uso de simples líneas de comandos es posible
obtener características que son de gran utilidad para clasificar un determinado
producto, todo esto gracias a la facilidad que ofrece MATLAB y el complemento de
Opencv en la aplicación.

7. REFERENCIAS

 http://docs.opencv.org/3.1.0/examples.html
 https://es.mathworks.com/help/images/examples.html

También podría gustarte