Visão computacional no reconhecimento de formas e objetos Paula Rayane Mota Costa Pereira*, Josemar Rodrigues de Souza**, Resumo * Bolsista de Iniciação Científica da Faculdade de Tecnologia SENAI CIMATEC, paula.motac@gmail.com. ** Ph.D. em Informática, Orientador de Iniciação Científica da Faculdade de Tecnologia SENAI CIMATEC, josemarsbr@gmail.com. O desenvolvimento de ferramentas computacionais para resolver problemas na gestão da produção, automação e controle de processos está se tornando uma necessidade real no ambiente industrial. Neste contexto, sistemas de visão computacional têm proporcionado uma larga contribuição em muitas etapas do ciclo produtivo de um produto, como a orientação do movimento de um robô, a automação de tarefas específicas em plantas de fabricação e controle de qualidade. O presente artigo apresenta uma visão geral da utilização da visão computacional em sistemas produtivos, traz algumas técnicas e ferramentas empregadas para esta atividade e apresenta um modelo de robô construído e utilizado na LARC (Latin American Robotics Competition) que tinha como principal sistema de aquisição e processamento de dados a visão computacional. Alguns aspectos relevantes, como reconhecimento de padrões, principalmente, serão apresentados e discutidos. Palavras-chave: Visão Computacional, Robótica Inteligente, Processamento de Imagem. 1. Introdução Os novos sistemas de visão computacional têm sido utilizados com sucesso, juntamente as inúmeras técnicas de processamento de imagem desenvolvidas por especialistas para as mais variadas aplicações, já que um problema aplicado a visão computacional é sempre distinto, sendo necessária análise do problema para escolha da técnica mais indicada à aplicação. Atualmente diferentes áreas fazem uso da visão computacional, como medicina, astronomia, analise de impressões digitais, reconhecimento de assinaturas, manufatura, robótica autônoma, entre outras. Em um sistema, para um reconhecimento de imagem, deve-se, a partir de uma imagem ou um objeto, extrair informações desta imagem através de algum hardware capaz de obter tais informações, como câmeras (webcam) e sensores (scanner), processar as informações desta imagem utilizando um algoritmo para tal, e, por fim, executar determinada ação dependente dos dados obtidos no processamento da imagem. 1
A Figura 1 mostra a arquitetura lógica de comunicação de dados de uma aplicação da visão computacional utilizando uma câmera e controladores. Figura 1: Representação de uma arquitetura lógica de controle 2. Revisão bibliográfica Devido à crescente automatização dos processos produtivos, busca-se proporcionar aos sistemas computacionais e de robótica capacidade de tornar automática a execução de tarefas complexas. No atual estágio de desenvolvimento da indústria brasileira, muitas destas tarefas complexas (que muitas vezes são repetitivas) são realizadas por operadores humanos (ORTH, 1998). Segundo Caetano, a organização de um sistema de visão computacional depende de sua aplicação, assim como a implementação específica deste sistema depende também se sua funcionalidade é pré-especificada ou se existe alguma parte de aprendizagem durante a operação. Algumas aplicações específicas de reconhecimento de formas no ramo da Visão Computacional estão atraindo muitos pesquisadores durante os últimos anos, sobretudo o problema de reconhecimento de faces que conta com a busca do mercado por essas aplicações e à acessibilidade da tecnologia necessária para o seu desenvolvimento. Essas aplicações são principalmente voltadas para a área de segurança, como métodos de identificação pessoal - crachá, carteira de motorista, leitura de impressão digital e íris dos olhos (Reaes, 2006). Outra aplicação muito empregada está no reconhecimento de padrões, que possibilita utilização de sistemas para controle de qualidade, metrologia, entre outros. Segundo Feliciano, Souza e Leta (2005), a Metrologia por imagem consiste no processo automatizado de inspeção/medição, e engloba conceitos de Metrolgia e de Visão Computacional. É a medição sem contato que utiliza algoritmos computacionais. 2
Pode-se destacar, ainda, algumas aplicações industriais neste contexto, como identificação de erros, orientação de robôs, rastreabilidade de materiais em linhas de produção, medição de peças. Além disso, há também técnicas que combinam visão computacional a interferometria laser e uso de máquina de medição por coordenadas para desenvolver sistemas de inspeção. A Figura 2 mostra um diagrama de blocos para exemplificação da aplicação de Visão Computacional na Metrologia. Figura 2: Sistema de Visão Computacional para medição (baseada em Gomes e Velho, 1994) Mesmo com muita tecnologia e pesquisa nesta área, ainda não existem sistemas de reconhecimento de formas tão poderosos quanto a visão humana. Entretanto, o sucesso dos sistemas de visão computacional está nas restrições feitas acerca do universo da análise de imagens. O algoritmo poderá ser mais eficiente quando houver mais restrições, porém este será menos genérico. Por exemplo, um sistema que identifica objetos pretos num chão branco, precisa apenas diferenciar o preto do branco. Algumas restrições são necessárias, desde que o sistema continue funcional e robusto o bastante para sua aplicação. 3. Metodologia Utilizou-se um sistema de visão computacional aplicado a um desafio proposto na Competição de Robótica Latino Americana (LARC), categoria IEEE Open 2010, o qual simulava um centro de distribuição de cargas onde um robô autônomo (sem intervenções humanas no seu controle) deveria atuar na área de logística deste centro, servindo como um manipulador e carregador de cargas (cubos) distintas que estariam distribuídas em determinados lugares. Após localização destas cargas, o 3
robô deveria coletá-las e colocá-las em ordem de cores pré-estabelecidas em outro local. A Figura 3 ilustra o centro de distribuição que o robô deveria atuar, mostrando a forma que as cargas/cubos estariam posicionadas inicialmente e como elas deveriam ser organizadas, respectivamente. A ordem do conjunto de cores da posição inicial era sorteada no inicio de cada prova. Figura 3: Localização dos cubos no inicio da prova e no final, respectivamente. Neste desafio havia inúmeras regras que o robô deveria respeitar. Após testes com algumas arquiteturas e ferramentas para o controle do processo, definiu-se o método para solução deste problema que consistiu num sistema de Visão Computacional, o qual deveria captar informações do ambiente através de uma câmera (webcam) e transmitir os frames captados para a CPU utilizou-se um nettop no robô para tal tarefa. A CPU recebia estes frames, e, através de um algoritmo de processamento de imagem, tratava estas informações e, com base nos dados recebidos, transmitia parâmetros para um microcontrolador, através de uma comunicação serial/usb, que por sua vez estava conectado aos atuadores do robô, como os motores, e executava a ação determinada pelos parâmetros recebidos. A Figura 1 apresenta o diagrama em blocos da comunicação feita para este sistema. O robô contava com sensores Infravermelho para detectar precisamente os objetos durante o seu carregamento e descarregamento. Uma webcam era responsável pela aquisição de imagens da arena. O sistema de movimentação compunha de quatro rodas omnidirecionais, possibilitando ao robô deslocamento em qualquer sentido, conforme a Figura 4. 4
Figura 4: Sistema de deslocamento Para manipular a carga, foi utilizada uma garra em forma de pinça, a qual era controlada por um servo-motor acoplado a uma caixa de redução que tinha como função abrir e fechar a garra. A Figura 5 mostra o robô na sua versão final. 4. Resultados e Discussão Figura 5: Robô Dentre os problemas provenientes deste estilo de competição, a capacidade do robô de enxergar e se situar no ambiente foram os mais desafiadores. Para permitir que o robô tivesse dados suficientes para poder se movimentar, a imagem obtida pela câmera (webcam) era processada em tempo real. A interpretação coerente desta imagem era feita utilizando a biblioteca OpenCV, com a interface em C/C++, que é estável e de boa usabilidade. Esta biblioteca permite a leitura de imagens diretamente da webcam, além de prover funções de tratamento, detecção de bordas e diversos algoritmos de aprendizagem. A imagem recebida da câmera era pré-processada antes de servir de entrada para o modelo de mundo do agente. Este processo envolve o tratamento de imagem em 5
relação à luminosidade, cores, ruídos e cálculo da distorção causada pelo posicionamento da câmera em relação ao centro do robô. Através deste processo realizado, foi possível desenvolver um modelo de mundo que atendia aos requisitos impostos pela competição. A partir dos dados obtidos dos diversos sensores (distância, visão), o robô constrói um modelo simplificado, baseado nos marcadores centrais do campo, assim como certas linhas do campo como pontos para ajuste fino do alinhamento. Ao iniciar uma corrida, o robô identificava sua posição no campo e então marcava a posição de cada cor em relação ao campo. Feito isso, ele iniciava o processo de transporte e armazenamento, mantendo o histórico de quais e quantos objetos já tinham sido transportados. Para evitar que ruídos atrapalhassem na medição, o robô buscava utilizar a base histórica como forma de medir o seu deslocamento e alinhamento com seu objetivo. Para evitar que pequenas variações no posicionamento, a partir de certa distância, o robô ignora o sistema de visão e utiliza apenas os sensores de distancia para efetuar o alinhamento. 5. Conclusões Este trabalho apresentou utilizações de sistemas de visão computacional em variadas áreas, assim como a descrição deste sistema aplicado a um robô autônomo desenvolvido com base nos conceitos apresentados inicialmente. Após a competição, que o robô foi projetado para participar, ele ainda apresentava falta de robustez no seu programa de processamento de imagem devido ao uso da visão como única solução, pois, o problema de auto localização, mapeamento do ambiente, rastreamento e reconhecimento dos objetos e dos limites impostos ao robô, estavam dependentes apenas do sistema de visão tratá-los, quando estas tarefas poderiam ter sido divididas e incumbidas a outros componentes, como sensores de linha, bússola, entre outros. Devido ao fator apresentado e ao curto período de tempo de desenvolvimento deste sistema, não foi possível concluí-lo com êxito para a aplicação que foi projetado. Entretanto, os resultados obtidos foram bastante relevantes para continuação de pesquisas na área de visão computacional e para disponibilização de informações e ferramentas para esta linha de pesquisa. 6. Referencias BRADSKI, G.; KAEHLER, A. - Learning OpenCV: Computer vision with the OpenCV library. O Reilly Media, 2008. 6
CAETANO, A. C. M. (2009) - Visão computacional como possibilidade de interatividade em trabalhos artísticos. Brasília. FELICIANO, F.F.; SOUZA, I.L.; LETA, F.R.; (2005) - Visão computacional aplicada à metrologia dimensional automatizada: considerações sobre sua exatidão. Universidade Federal Fluminense. GOMES, J.; VELHO, L. Computação gráfica: Imagem. IMPA-SBM. 1994. ORTH, A.; (1998) - Desenvolvimento e Implementação de um Sistema de Reconhecimento Automático de Peças Mecânicas em uma Célula Flexível de Manufatura. Projeto RAP. Laboratório de Automação Industrial, UFSC. Congresso da Sociedade Brasileira de Computação, SBC 98. REAES, F.B. (2006) - Reconhecimento de Faces em Imagens: Projeto Beholder. Instituto de Matemática e Estatística. Universidade De São Paulo, Departamento de Ciência da Computação. 7