Baixe o app para aproveitar ainda mais
Prévia do material em texto
Controle de qualidade de produção por imagem Eduardo Dumke Universidade de Santa Cruz do Sul RS Santa Cruz do Sul – RS – Brasil edhell2@gmail.com Abstract. This article aims to describe the processes used for the automation of achieving quality production of a particular object from digital image processing. Resumo. Este artigo tem a finalidade de descrever os processos utilizados para a automatização da obtenção da qualidade de produção de um determinado objeto a partir do processamento digital imagens. 1. Informações gerais Será utilizado uma câmera de computador “Webcam” para a obtenção da imagem de um determinado produto ou objeto, que servirá de padrão para os demais que serão submetidos ao teste de qualidade, utilizando processamento digital de imagens. As imagens serão processadas a partir de um microcomputador, onde o mesmo enviará as instruções a um micro controlador que ficará responsável pela parte da automação mecânica, para aumentar ou diminuir a intensidade luminosa que incide no objeto, movimentação da esteira, controle do foco da câmera utilizada e sensores de presença. Quando utilizamos o processamento digital de imagens para um fim específico como o de controle de qualidade de determinados objetos de uma produção em escala por exemplo, melhoramos a capacidade de encontrar e corrigir alguns erros que possam ter sido cometidos pela produção ou manipulação que teria de ser feito fisicamente pela presença de uma pessoa. Caso deixe tal função a cargo de um processamento digital de imagens, este sistema ficará responsável a informar o operador pelo controle de qualidade de que há um produto ou objeto que está fora da qualidade esperada e estipulada por este, filtrando assim a tomada de ação para o controle de qualidade, podendo este mesmo funcionário hipotético cuidar de mais de uma linha de produção ao mesmo tempo. E com o tempo poderá ser aperfeiçoado para tomada automática de decisão confome a porcentagem de qualidade. Vindo a envialo para área de empacotamento ou descarte, se o produto esteja fora do padrão desejado. 2. Hardware e software envolvido 2.1 Captura da imagem Foi ultilizada uma “webcam” comum de computador com chip zs2011, conectada via USB, com uma resolução máxima de 2 Mega pixels. Para os testes que serão mostrados e exemplificados neste artigo foi utilizada a resolução de 160 por 120 pixels. 2.2 Microcontrolador e demais peças utilizadas na automação ● Arduino MEGA 2560 R3; ● Motor de passo Philips 4 fios; ● Ponte H L298n para controlar o motor da esteira; ● Ponte H L298n para controlar as luzes; e ● Sensor de presença infravermelho. 2.3 Criação do software visual e de controle Todo o sistema visual e de controle foi desenvolvido na linguagem VisualBasic.net, utilizado a IDE Visual Studio 2015 Enterprise da Microsoft. Todos os códigos fonte e executaveis poderão ser encontrados em: “http://edhell.com.br/files/down/Trabalho2PDS.rar”. 2.3 Código interno do arduino Para o desenvolviento do código que é processado internamente pelo arduino, foi utilizado a IDE própria do arduino, disponibilizado pelo seu fabricante, encontrado aqui. O código pode ser encontrado em: “http://edhell.com.br/files/down/Trabalho2PDSArduino.zip”. Em resumo o arduino será responsável pelo controle de iluminação, deslocamento do objeto na esteira, informações de presença para tomada de ação e facilmente programável para receber mais tipos de instruções, podendo adionar mais funções de comunicação. A comunicação com o arduino é feita à partir de uma emulação serial, via USB, onde o arduino manda e recebe dados da apliacação criada, esta comunicação ocorre da seguinte forma: É enviado ao arduino um código com a seguinte sintaxe: <LED1:255> Sendo este código dividido em: ● Primeiro caractere: Informa que começa uma instrução; ● Próximos quatro caracteres: Função solicitada; ● Próximo caractere: “:” separa a função do atributo; ● Próximos três caracteres: Informam o atributo passado juntamente com a função, poderão haver funções que não utilizam os atributos; ● Próximo e último caractere da função: informa que a instrução chegou ao fim. 2.3.1 Funções aceitas pelo arduino Abaixo está a lista de instruções que são aceitas pelo arduino, para processamento de uma determinada função. Lembrando que facilmente podese adicionar mais funções, caso haja necessidade. ● “<LED1:000>” Ajusta iluminação do LED1 de 0 a 255; ● “<LED2:000>” Ajusta iluminação do LED2 de 0 a 255; ● “<STOP:XXX>” Pausa o sistema por x Segundos; e ● “<MOT1:XXX>” Avança em X pontos a esteira 1. 2.4 Sistema de iluminação Para realizar a captura da imagem sem interferência do exterior, foi adicionado ao projeto dois emissores de luz para iluminação, diminuindo a sombra, diminuindo as interferências de fatores externos e para não depender de uma iluminação do ambiente em que se entrontrar conforme mostra a (Figura 1) e (Figura 2) abaixo. Figura 1. Vista de cima da iluminação e da camera. 2.5 Sistema de lentes Como a camera encontrase muito perto dos objetos que serão capturados, há a necessidade de uma lente apropriada para não desfocar ou destorcer a imagem à ser capturada, podendo estes fatores interferirem no resultado final, conforme mostra a (Figura 2) abaixo. Figura 2. Vista de baixo da iluminação, camera e da lente. 2.6 Desempenho O sistema foi desenvolvido para ser modular e trabalhar com sistemas de multi threads, compartilhando as caixas de imagem com outras funções, podendo a maioria das funções serem executas juntamente. Também conta com sistema de gatílhos para evitar processamento desnecessário. Foi criado e utilizado uma função que só é executada quando há dados à receber ou enviar pela porta de comunicação com arduino ou quando há um novo frame na camera, esperando para ser lido. 3. Processos utilizados para obtenção e processamento da imagem 3.1 Processamentos de imagem utilizados: Para chegar no resultado final, foram utilizados alguns processos abaixo especificados, melhores explicados nos tópicos subsequentes. ● Obtenção da imagem colorida à partir de uma camera; ● Conversão da imagem colorida para escala de cinza de 8 bits; ● Obtenção do limiar pelo método do triângulo e método manual; ● Binarização de imagem, confortme limiar; ● Clareamento e escurecimento da imagem; ● Testar pixel a pixel para comparação de diferença entre duas imagens; ● Criação de áreas específicas dentro da imagem; e ● Exclusão de determinadas áreas para comparação. 3.1.1 Obtenção da imagem coloridaà partir de uma câmera Para obter a imagem da webcam, foi utilizado uma biblioteca chamada AForge.NET, disponível aqui. Na (Figura 3) é mostrado o código com o gatilho criado para capturar da imagem e na (Figura 4) como é a interface normal do sistema. Totalmente intuitivo, com o máximo de legendas o possível para o rápido entendimento. Figura 3. Código do gatilho de captura da imagem. Figura 4. Sistema funcionando normalmente e conectada ao arduino com iluminação “24”. 3.1.2 Conversão da imagem colorida para escala de cinza de 8 bits Para um melhor processamento digital da imagem, é utilizado um algoritmo que converte a imagem colorida para uma imagem em escala de cinza de 8 bits conforme o código na (Figura 5) abaixo. Figura 5. Código de conversão para escala de cinza. 3.1.3 Obtenção do limiar pelo método do triângulo e método manual Para realizar a binarização da imagem há a necessidade de um ponto chamado de limiar, que será o ponto que irá separar o 1 do 0, pixel a pixel, conforme mostra as (Figura 6 e 7) abaixo. Figura 6. Utilizando Binarização e modificando o limiar manualmente para 77. Figura 7. Utilizando Binarização e modificando o limiar manualmente para 165. 3.1.4 Binarização da imagem, conforme limiar Sendo este limiar um valor x hipotético, para qualquer pixel maior ou igual a x, este pixel passa a ter o valor de 255, mas caso o pixel seja inferior à x, o novo pixel passa a valer 0. A nova imagem gerada agora só dispõe de pixels com valores 0 ou 255, obtendo assim um melhor resultado na comparação digital das imagens, conforme mostra a (Figura 8) abaixo. Figura 8. Utilizando Binarização com limar 128 automático. 3.1.5 Clareamento e escurecimento da imagem Como podem haver mudanças de claridade no momento da captura da imagem, há uma opção de clareamento e escurecimento da imagem capturada, podendo configurar esta intensidade para um melhor resultado como mostra as (Figuras 9, 10 e 11) abaixo. Figura 9. Imagem na escala de cinza normal. Figura 10. Imagem na escala de cinza mais clara que a original. Figura 11. Imagem na escala de cinza mais escura que a original. 3.1.6 Testar pixel a pixel para comparação de diferença entre duas imagens Para obermos uma porcentagem de diferença entre duas imagens, é comparado pixel a pixel entre as duas imagens, e calculado conforme a quantia total de pixels da imagem conforme mostra as (Figuras 12, 13 e 14) abaixo. O cálculo que o algoritmo segue é o seguinte: ● Encontrar a quantia total de pixels da imagem, este é encontrado multiplicando a altura com a largura, ambas em pixels; ● É realizado um loop que compara cada ponto da matriz padronizada com seu respectivo ponto na outra matriz que foi gerada para comparação; ● Quando realizado a checagem, armazena a quantidade de pixels que são iguais para fazer os calculos de comparação; e ● Após calcular o máximo de pixels e a quantia de pixels iguais. É feito um cálculo simples de porcentagem utilizando a regra de três adaptada para este fim. Figura 12. Comparação entre duas imagens binárias com diferença de pixel a pixel de 0,35%. Figura 13. Comparação entre duas imagens em escala de cinza com diferença de pixel a pixel de 1,09%. Figura 14. Comparação entre duas imagens em escala de cinza com diferença de pixel a pixel de 11,72%, em virtude de serem dois objetos diferentes. 3.1.7 Criação de áreas específicas dentro da imagem Há uma opção responsável por criar uma área dentro da imagem capturada, criando um retângulo. Primeiramente criado para uma melhor visualização e centralização do produto ou objeto que se deseja comparar, e que posteriormente sera utilizado para obtenção da área de maior interesse, conforme mostra a (Figura 15) abaixo. Caso haja necessidade em um futuro podemos utilizar esta função para realizar verificações de múltiplos objetos simultaneamente, ganhando ainda mais desempenho. Podendo também criar mais threads de processamento sendo cada um desses responsável pelo processamento de um objeto, totalizando um processamento de múltiplos objetos, tornando este sistema ainda mais modular. Figura 15. Comparação entre duas imagens em escala de cinza com diferença de pixel a pixel de 3,27%, com delimitação da grade, criada via software. 3.1.8 Exclusão de determinadas áreas para comparação Como foram criadas áreas dentro da imagem que se deseja processar, podemos facilmente excluir áreas de menor interesse, para um refinamento no processamento digital das imagens, economizando demanda do hardware e obtendo um resultado de porcentagem de comparação mais exata. Em um futuro em que utilizariamos a função para separar determinadas áreas, esta função será necessária, para uma melhor exatidão na resposta. 4. Funcionamento A imagem é captada em cores, convertida para a escala de cinza com uma qualidade de 8Bits, criase seu histograma, calculase seu limiar e aplica binarização se desejar com limiar que foi criado automaticamente com o método dos triângulos ou pode escolher em uma escala de 0 a 255. Colocase um objeto no local de captura e ao cliar no botão “Salvar como padrão”, esta imagem fica salva, exatamente na sua posição, e servirá de padrão de qualidade para as demais que serão processadas. No próximo frame da câmera ela já começa a calcular a diferença e cria uma imagem com a diferença do padrão com a nova imagem capturada, mostrando abaixo a porcentagem de semelhança. Todas as funcionalidades podem ser vistas nas Figuras anexadas acima. Caso queira testar o sistema, é possivel baixar a aplicação pelo link “http://edhell.com.br/files/down/Trabalho2PDS.rar”. Não há a necessidade de um arduino ou qualquer parte da automação, podendo utilizar uma webcam convencional que tenha suporte a resolução de 160x120 Pixels. 5. Projeto Aplicando todo o conhecimento explicado acima, foi projetada uma pequena estrutura, onde podese fisicamente capturar as imagens e utilizar o sistema para realizar os testes de funcionamento, e estes foram: ● Funcionamento básico; ● Captura; ● Iluminação; ● Automação; ● Sensoriamento; ● Controle de qualidade; e ● Possível descarte do objeto. 6. Códigos Todos códigos e softwares estão disponíveis no sítio: “http://edhell.com.br/.” 7. Referências Para a confecção deste sistema, foram utilizadas fontes de conhecimento de alguns sítios da internet, que são eles: ● https://msdn.microsoft.com/ptbr/library/ms749020(v=vs.110).aspx,Utilizado para extrair o conhecimento necessário para a criação da função que transforma uma imagem colorida para uma imagem em escala de cinza com resolução de 8bits. ● http://www.aforgenet.com/framework/, Biblioteca utilizada na captura de imagens da câmera ● https://www.arduino.cc/ Conhecimento necessário para comunicação serial entre o sistema e o microcontrolador e software para edição e upagem do código. ● https://www.visualstudio.com/ IDE utilizada na criação de todo o sistema, tanto a parte gráfica quanto os códigos.
Compartilhar