COMPARAÇÃO DE TÉCNICAS DE VISÃO COMPUTACIONAL NA IDENTIFICAÇÃO DE CABEÇOTES FUNDIDOS USANDO WEBCAM PARA GUIAR UM ROBÔ INDUSTRIAL



Documentos relacionados
Casamento de padrões em imagens e vídeos usando características de imagens

Scale-Invariant Feature Transform

Reconhecimento de marcas de carros utilizando Inteligência Artificial. André Bonna Claudio Marcelo Basckeira Felipe Villela Lourenço Richard Keller

Identificação de objetos móveis com uso de imagens aéreas obtidas por VANT. Rodrigo Augusto Rebouças 1 Matheus Habermann 1 Elcio Hideiti Shiguemori 1

4 Segmentação Algoritmo proposto

Cálculo de volume de objetos utilizando câmeras RGB-D

Detecção e Rastreamento de Objetos coloridos em vídeo utilizando o OpenCV

Detecção em tempo real de movimentos de olhos e boca em um vídeo em cores

RECONHECIMENTO DE PLACAS DE AUTOMÓVEIS ATRAVÉS DE CÂMERAS IP

3 Classificação Resumo do algoritmo proposto

Medida da velocidade de embarcações com o Google Earth

Processamento de Imagem. Prof. MSc. André Yoshimi Kusumoto

Programação de Robótica: Modo Circuitos Programados - Avançado -

Pesquisa e organização de informação

Descritores de Imagens

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO DEPARTAMENTO DE INFORMÁTICA PÓS GRADUAÇÃO EM INFORMÁTICA

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Visão computacional no reconhecimento de formas e objetos

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Feature Description (SIFT + SURF) Prof. Dr. Geraldo Braz Junior

Filtragem Espacial. (Processamento Digital de Imagens) 1 / 41

Universidade Federal de Goiás Instituto de Informática Processamento Digital de Imagens

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

UNIVERSIDADE FEDERAL DE SANTA CATARINA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DATA MINING EM VÍDEOS

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Organização e Arquitetura de Computadores I

2 Diagrama de Caso de Uso

SEGMENTAÇÃO DE IMAGENS EM PLACAS AUTOMOTIVAS

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Treinamento GVcollege Módulo Acadêmico - Pedagógico

COMPUTAÇÃO GRÁFICA. Rasterização e Preenchimento de Regiões. MARCO ANTONIO GARCIA DE CARVALHO Fevereiro de Computação Gráfica

AULA 6 - Operações Espaciais

ÍNDICE 1 INTRODUÇÃO ACESSO ABERTURA DE PROTOCOLO CONSULTA DE PROTOCOLO PROTOCOLO PENDENTE CONFIRMAÇÃO DE RECEBIMENTO.

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

PROF. DR. JACQUES FACON

FILTRAGEM ESPACIAL. Filtros Digitais no domínio do espaço

Descritores de Imagem

SEGEMENTAÇÃO DE IMAGENS. Nielsen Castelo Damasceno

O Software Face Match

Comparação entre a Máscara de Nitidez Cúbica e o Laplaciano para Realce de Imagens Digitais

Departamento de Matemática - UEL Ulysses Sodré. Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010.

Manual de implantação

Orientação a Objetos

Manual SAGe Versão 1.2 (a partir da versão )

Reconhecimento de Instâncias (parte 2)

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

ÍNDICE 1 INTRODUÇÃO ACESSO CONSULTA DE PROTOCOLO PROTOCOLO PENDENTE CONFIRMAÇÃO DE RECEBIMENTO ANDAMENTO DE PROTOCOLO.

REDUZINDO AS QUEBRAS ATRAVÉS DA MANUTENÇÃO PROFISSIONAL

SCANNER DE TRIANGULAÇÃO LASER PARA PROTOTIPAGEM 3D

Operações Algébricas e Lógicas. Guillermo Cámara-Chávez

Segmentação de imagens tridimensionais utilizando o sensor Microsoft Kinect

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

CorelDRAW UM PROGRAMA DE DESIGN

Universidade Federal de Pernambuco

Engenharia de Software III

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

29/08/2011. Radiologia Digital. Princípios Físicos da Imagem Digital 1. Mapeamento não-linear. Unidade de Aprendizagem Radiológica

Análise Univariada de Sinais Mioelétricos

UNIVERSIDADE F EDERAL DE P ERNAMBUCO ANÁLISE DE UM MÉTODO PARA DETECÇÃO DE PEDESTRES EM IMAGENS PROPOSTA DE TRABALHO DE GRADUAÇÃO

4 Avaliação Experimental

Artigo Os 6 Mitos Do Seis Sigma

2.1.2 Definição Matemática de Imagem

Clip-art Retrieval using Sketches PTDC/EIA-EIA/108077/2008

PdP. Autor: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 26/12/2005 Última versão: 18/12/2006

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Processamento digital de imagens. introdução

PLANEJAMENTO DA MANUFATURA

Os caracteres de escrita

Sphinx Scanner Informações gerais V

Automação de Locais Distantes

Utilização do SOLVER do EXCEL

)LJXUD8PGRVSDUHV'SDUDFRQYROXomRTXHWHPRPHVPRHIHLWRGR NHUQHOGD)LJXUD

Image Descriptors: local features

PLANOS DE CONTINGÊNCIAS

CHECK - LIST - ISO 9001:2000

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

Sistema para Visualização dos Resultados de Pesquisas de Clima Organizacional. PERSPECTIVA Consultores Associados Ltda.

GUIA DE REDAÇÃO PARA TRABALHO DE EM974

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Noções Básicas de Excel página 1 de 19

Lista de Controle Supervisório de SEDs

Operações Geométricas com Imagens

Operações de Caixa. Versão 2.0. Manual destinado à implantadores, técnicos do suporte e usuários finais

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Exemplos: Análise de Valor Agregado (Ex_vagregado.SPRJ)

Trabalho 2 Fundamentos de computação Gráfica

Feature-Driven Development

VCA Treinamento em Algoritmo

Processos Técnicos - Aulas 4 e 5

Lição 1 - Criação de campos calculados em consultas

Utilizando a ferramenta de criação de aulas

TOPOLOGIA DA IMAGEM DIGITAL

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Cálculo do conjunto paralelo

Instituto Politécnico de Beja. Escola Superior de Tecnologia e Gestão

Explorando Dicionários Visuais para Recuperação de Imagem por Conteúdo

6. Geometria, Primitivas e Transformações 3D

Descritores de textura na análise de imagens de microtomografia computadorizada

Transcrição:

COMPARAÇÃO DE TÉCNICAS DE VISÃO COMPUTACIONAL NA IDENTIFICAÇÃO DE CABEÇOTES FUNDIDOS USANDO WEBCAM PARA GUIAR UM ROBÔ INDUSTRIAL Victor Hugo Bueno Preuss, victor.preuss@gmail.com 1 Ramon Cascaes Semim, ramon@semim.com.br 1 Roberto Silvio Ubertino Rosso Jr., roberto.rosso@udesc.br 1 Alexandre Gonçalves Silva, alexandre.silva@inf.ufsc.br 2 1 Universidade do Estado de Santa Catarina, Rua Paulo Malschitzki, s/número Campus Universitário Prof. Avelino Marcante Bairro Zona Industrial Norte CEP 89219-710 Joinville SC 2 Universidade Federal de Santa Catarina, Campus Universitário Reitor João David Ferreira Lima Trindade Florianópolis SC Resumo: Este artigo descreve os procedimentos utilizados na aplicação de três técnicas de visão computacional (SIFT, SURF e ORB) no desenvolvimento de um sistema de visão para um robô, cuja tarefa é realizar oleação e a paletização de cabeçotes fundidos de motores. As três técnicas são comparadas em termos de robustez, precisão e tempo de execução. O objetivo do sistema de visão é identificar o cabeçote, sua posição e orientação, e fornecer esses dados ao robô, para que ele possa realizar a pega da peça com precisão. Concluiu-se que o algoritmo SURF obteve melhor desempenho para a aplicação, por apresentar os melhores resultados em termos de robustez na identificação, precisão na determinação da posição/orientação do cabeçote e tempo de execução. Palavras-chave: Sistema de Visão, Reconhecimento de Padrões, Detecção de Objetos, SURF, SIFT, ORB. 1. INTRODUÇÃO A automatização de processos industriais vem ganhando espaço ano após ano, pois há diversas tarefas na indústria que podem ser desempenhadas com maior eficiência e qualidade por robôs, economizando tempo e dinheiro das empresas. Os robôs são excelentes na execução de tarefas que exigem demasiado esforço repetitivo ou submetam a algum tipo de perigo o trabalhador, sendo programados de forma a realizar o que lhes foi incumbido sem, no entanto, serem capazes de fazer qualquer tipo de análise do ambiente que altere seu comportamento (Semim, 2012). A visão computacional entra como uma opção quando o robô se encontra em situações nas quais ele deve tomar uma decisão baseado no que há ao seu redor. Os sistemas de visão computacional envolvem diversas etapas, que vão desde a aquisição da imagem, processamento, tratamento, até a retirada das informações relevantes daquela imagem (Gonzalez; Woods, 2002). Neste trabalho serão descritos alguns métodos utilizados na aquisição de informações pertinentes da imagem e os resultados apresentados pelos mesmos aplicados numa célula robotizada. Neste trabalho foram implementadas três técnicas de detecção e descrição de características locais de uma imagem, aplicadas ao reconhecimento de objetos. São elas: SIFT (Scale Invariant Feature Transform), SURF (Speeded Up Robust Features) e ORB (Oriented FAST and Rotated BRIEF). Todas foram utilizadas com o auxílio da biblioteca OpenCV (Bradski; Kaehler, 2008). Este artigo está organizado da seguinte maneira: na seção 2 são descritos alguns conceitos básicos necessários ao entendimento do projeto e também o funcionamento dos algoritmos SIFT, SURF e ORB. Nas seções 3 e 4 são expostos o problema proposto para o projeto e o modo encontrado para solucioná-lo. Por fim em 5, 6 e 7 são apresentados os resultados obtidos e feita uma discussão a respeito do trabalho desenvolvido seguido das conclusões finais. 2. VISÃO COMPUTACIONAL Visão computacional é a tarefa de automatizar e integrar uma ampla gama de processos e representações usados para percepção visual. Inclui muitas técnicas, como processamento de imagens (transformando, codificando e enviando imagens) e classificação de padrões estatísticos (teoria da decisão estatística aplicada a padrões gerais, visuais ou não) (Ballard; Brown, 1982). É responsável pela maneira como o computador enxerga o meio à sua volta, extraindo informações significativas a partir de imagens capturadas por câmeras, sensores, scanners, entre outros dispositivos. Estas informações permitem reconhecer, manipular e pensar sobre os objetos que compõem uma imagem (Milando; Honorato, 2010). Neste trabalho, algoritmos de visão computacional serão aplicados no reconhecimento de cabeçotes em uma linha de produção. Estes algoritmos são introduzidos nos subtópicos a seguir.

2.1. Matriz Hessiana Uma matriz hessiana é uma matriz quadrada formada por derivadas parciais de segunda ordem. A matriz descreve a curvatura local de uma função de múltiplas variáveis. Na Eq. (1) é mostrada a matriz hessiana utilizada nos algoritmos SIFT e SURF para análise da vizinhança de um ponto de interesse. H D D xx xy D D xy yy (1) 2.2. SIFT (Scale Invariant Feature Transform) SIFT é um método que usa técnicas de processamento de imagem para encontrar pontos de interesse em uma imagem e gerar um vetor de descritores, invariante as transformações de escala e de rotação e parcialmente invariante a distorções afins e mudanças de luminosidade. O vetor de descritores gerado pode ser utilizado no reconhecimento de objetos e cenas, monitoramento de movimento e resolução de problemas envolvendo estruturas 3D de múltiplas imagens (Lowe, 2004). O primeiro passo do algoritmo é calcular uma pirâmide gaussiana (Gonzalez; Woods, 2002). Isto é feito aplicando repetidamente um filtro de suavização gaussiano e reduzindo as dimensões da imagem em um fator de 2. Então uma pirâmide de diferença de gaussianas é computada da subtração de níveis adjacentes da pirâmide gaussiana, como mostra a Fig. (1). Os pontos de interesse são encontrados calculando os pontos de máximo e mínimo na pirâmide de diferença de gaussianas. Isto é feito utilizando uma vizinhança de 26 pixels, mostrada na Fig. (2). Cada pixel é comparado à sua vizinhança de 8 e também a 9 vizinhos na escala acima e abaixo. Se ele for um máximo ou mínimo local, é feita uma expansão de Taylor na região, pois a localização exata do ponto de mínimo ou máximo é uma posição entre pixels. Os pontos de interesse passam agora por dois filtros: um que remove os pontos com baixo contraste a partir de um valor de threshold sugerido por Lowe (2004) em 0,03; outro que remove os pontos de interesse pertencentes a bordas utilizando uma matriz hessiana (ver Eq. 1). O ponto de interesse é rejeitado caso a razão Tr(H)² / Det(H) seja maior que (r+1)² / r, onde Tr(H) é o traço da matriz hessiana, Det(H) é o determinante da matriz hessiana e r é a razão entre os autovalores da matriz hessiana. No artigo publicado por Lowe (2004) é sugerido utilizar 10 como valor de r, e esse foi o valor utilizado durante o trabalho. Figura 1. Pirâmide Gaussiana e Pirâmide de Diferença de Gaussianas. Fonte: adaptada de Lowe (2004). Depois são atribuídas direções a cada um dos pontos de interesse de forma que este passo é fundamental na aquisição da invariância à rotação. A orientação dos pontos de interesse é atribuída da seguinte maneira. Primeiro a magnitude e orientação do gradiente dos pixels vizinhos ao ponto de interesse são pré-computados utilizando, respectivamente as Eqs. (2) e (3).

Figura 2. Vizinhança de 26 pixels. Fonte: adaptada de Lowe (2004). m 2 ( x, y) ( L( x 1, y) L( x 1, y)) ( L( x, y 1) L( x, y 1)) 2 (2) ( x, y) tan 1 (( L( x, y 1) L( x, y 1)) /( L( x 1, y) L( x 1, y))) (3) Então um histograma é formado com os resultados. O histograma é composto de 36 intervalos de 10 graus de amplitude, totalizando 360 graus. A magnitude do gradiente é então somada no respectivo intervalo ao qual pertence o ângulo Ɵ. A orientação atribuída ao ponto de interesse é aquela cujo intervalo possui a maior soma de magnitudes. Múltiplos pontos de interesse podem surgir a partir de um, pois qualquer intervalo do histograma que possuir somatório maior que 80% da maior soma de magnitudes, também é adicionado ao grupo. Por último é gerado um vetor de descritores de 128 posições para cada um dos pontos de interesse. Ele é calculado atribuindo orientações para uma vizinhança de 4x4 do ponto de interesse (esta vizinhança só é possível pois o SIFT gera subpixels através de uma expansão de Taylor feita ao redor do ponto), porém o histograma feito para cada ponto vizinho possui apenas 8 intervalos de 45 graus, o que garante maior robustez ao algoritmo. Tem-se então 8 intervalos para uma vizinhança de 4x4, daí vem as 128 posições do vetor de descritores (4 x 4 x 8 = 128) (Lowe, 2004). 2.3. Imagens Integrais Imagens integrais são imagens onde cada ponto X = (x, y) T armazena a soma das intensidades de todos os pixels numa área retangular entre a origem e X. Utilizando imagens integrais é possível calcular a soma das intensidades de qualquer região com apenas três operações como visto na Fig. (3) (Bay et al., 2008). Figura 3. Calculando soma das intensidades na região. Fonte: Bay et al. (2008).

2.4. SURF (Speeded Up Robust Features) SURF é um algoritmo proposto por Bay, Tuytelaars e Van Gool em 2006 e é baseado nos mesmos princípios que o algoritmo SIFT, porém utiliza outros métodos, que geram resultados mais velozes e muitas vezes melhores (Bay et al., 2008). O algoritmo inicia criando uma pirâmide gaussiana, porém, ao contrário do algoritmo SIFT, devido ao uso de imagens integrais e filtros retangulares ( box filters ), a pirâmide é criada de baixo para cima, filtrando a imagem original com máscaras cada vez maiores. Então é feita a localização dos pontos de interesse utilizando, assim como no SIFT, uma supressão não-máxima em uma vizinhança 3x3x3, mostrada na Fig. (2), porém isto é feito comparando não a magnitude do ponto, mas o determinante da sua matriz hessiana. Em seguida é feita uma interpolação entre os máximos encontrados. SURF faz uso da distribuição da intensidade na vizinhança dos pontos de interesse para atribuir uma orientação ao ponto. Isto é feito utilizando a resposta nas direções x e y de uma wavelet de Haar numa vizinhança de 6s ao redor do ponto de interesse, onde s é a escala em que o ponto de interesse foi detectado. Para o descritor do ponto de interesse é utilizada uma vizinhança quadrada subdivida em 16 regiões de 2x2. A resposta da wavelet de Haar é calculada para todos os pontos e então cada região 2x2 recebe um vetor v de quatro dimensões, onde v = (Σd x, Σd y, Σ d x, Σ d y ), totalizando um vetor descritor de 64 posições. No vetor, d x e d y são as respostas da wavelet de Haar para um ponto (Bay et al., 2008). 2.5. ORB (Oriented FAST and Rotated BRIEF) ORB é um detector de pontos de interesse e descritor criado para substituir SIFT em aplicações com baixa capacidade de processamento (ex: aplicativos para smartphones). ORB chega a ser quase duas ordens de magnitude mais rápido que SIFT e produz resultados similares no reconhecimento de objetos (Rublee et al., 2011). Para a seleção de pontos de interesse, ORB utiliza FAST (Rosten e Drummond, 2005), um detector de pontos de interesse. Porém os pontos de FAST não possuem uma componente para representar a orientação do ponto, portanto é adicionada uma orientação computada de maneira muito eficiente. Ela é baseada na intensidade do centroide (Rosin, 1999). O vetor de descritores é gerado utilizando uma versão modificada do descritor BRIEF (Calonder et al., 2010). É atribuído ao descritor um parâmetro de rotação, para que o algoritmo se torne invariante à rotação. 2.6. Regra dos k-vizinhos mais próximos Dado o conjunto de treinamento T = {<x 1, y 1 >, <x 2, y 2 >,..., <x n,y n >}, esse método de classificação de padrões visa determinar um subconjunto S contido em T composto de k amostras mais próximas de x no espaço de características. O rótulo atribuído a x é o que apresentar maior frequência dentre as amostras em S (Pedrini e Schwartz, 2008). 2.7. Razão das distâncias dos vizinhos mais próximos (Nearest Neighbour Distance Ratio) O algoritmo de classificação baseado no vizinho mais próximo classifica duas regiões A e B se o descritor de B é o vizinho mais próximo do descritor de A e se a distância entre eles está abaixo de um certo valor de threshold. Na razão das distâncias dos vizinhos mais próximos (nearest neighbour distance ratio), a única diferença é que o threshold é aplicado a razão das distâncias do primeiro e segundo vizinho mais próximo. Portanto as regiões são classificadas se D A D B / D A - D C < t, onde D denota o descritor, D B é o primeiro e D C é o segundo vizinho mais próximo de D A e t é valor de threshold (Mikolajczyk e Schmid, 2005). 3. OBJETIVO DO TRABALHO Este projeto é a extensão de um trabalho previamente desenvolvido na UDESC e tem como objetivo principal verificar o desempenho de outros métodos utilizados no reconhecimento de padrões em imagens, aplicados ao cenário já estudado. 3.1. Descrição do Problema Inicial O cenário estudado no projeto inicial e documentado em Semim (2012) e Semim et al. (2012), consiste em uma célula de oleação e paletização de cabeçotes de motores à combustão da linha de Fundição E-II da Tupy SA, unidade Joinville/SC. Nesta linha são manufaturadas três famílias distintas de cabeçotes, sendo que cada uma possui modelos para motores de oito/seis e seis/quatro cilindros. É garantido que os cabeçotes sempre entrarão na linha com a mesma região voltada para cima, desta forma, é possível utilizar as características desta região para distinguir uma família da

outra. Entre as dificuldades do projeto, a principal encontra-se na pequena diferença entre o fundo das imagens, roletes de aço de um transportador industrial, e as faces usinadas dos cabeçotes de motores em ferro fundido. Na resolução deste problema Semim (2012) utilizou o Coeficiente de Correlação de Pearson (PCC) e técnicas de processamento de imagem para definir qual o modelo do cabeçote e segmentar os furos presentes nos blocos. Também utilizou a transformada de Hough para definir a posição das circunferências (furos) presentes no cabeçote, e a partir da posição destas é calculada a posição e orientação do bloco. O projeto inicial é discutido em maiores detalhes em Semim (2012) e Semim et al. (2012). 3.2. Problema abordado neste projeto O problema abordado neste trabalho foi a implementação de um sistema de visão fazendo uso de três outras técnicas de visão computacional (SIFT, SURF e ORB). As três técnicas são comparadas entre si em termos de robustez, precisão e tempo de execução. O que se deseja é obter melhores alternativas e se possível apenas uma técnica para a solução de Semim (2012) que utilizou PCC em conjunto com a transformada de Hough. O projeto aqui desenvolvido se passa no mesmo cenário e utiliza o mesmo banco de dados de imagens para realizar os testes necessários. 4. IMPLEMENTAÇÃO A implementação do sistema de visão foi feita inteiramente em C++. Todo o algoritmo descrito a seguir faz uso da biblioteca OpenCV e utiliza SIFT, SURF e ORB para encontrar os pontos de interesse e seus respectivos vetores de descritores. Algumas funções utilizadas tiveram que ser desenvolvidas, porém boa parte do que foi necessário no projeto já se encontrava disponível para uso na biblioteca OpenCV. No início do programa, seis imagens-padrão contendo apenas o cabeçote tem as seguintes informações carregadas: vetor de pontos de interesse e vetor de descritores; coordenadas dos seus cantos e coordenadas dos centros dos furos presentes no cabeçote. A razão para serem utilizadas 6 imagens, apesar de serem 3 cabeçotes, foi a ineficiência dos três algoritmos utilizados (SIFT, SURF e ORB) para reconhecimento de cabeçotes quando rotacionados em 180 graus com relação a orientação da imagem-padrão. Isto tornou necessária a utilização de outra imagem-padrão para cada tipo de cabeçote, rotacionada em 180 graus em relação a outra, como mostrado nas Figuras (4a) e (4b). (a) Imagem-padrão do primeiro bloco não rotacionado. (b) Imagem-padrão do primeiro bloco rotacionado. Figura 4: Imagens tomadas como padrão para um bloco, sem e com rotação. Fonte: adaptadas de Semim (2012). A partir daí o programa entra num loop. A imagem do cabeçote vindo na esteira é adquirida e convertida para tons de cinza. Então um dos três algoritmos (SIFT, SURF ou ORB) é aplicado para gerar um vetor com os pontos de interesse da imagem obtida e outro vetor com o descritor de cada ponto encontrado.

O próximo passo é definir qual tipo de bloco de motor está presente na imagem em análise, e se ele está ou não rotacionado. Isto é feito da seguinte maneira: é aplicada a regra dos k-vizinhos mais próximos, com k igual a 2, entre a imagem capturada e as duas imagens-padrão pertencentes a um tipo de bloco de motor. Os pontos encontrados pelo reconhecimento são filtrados utilizando a razão da distância dos vizinhos mais próximos (ver 2.6). Se o número de pontos reconhecidos entre a imagem de entrada e as duas imagens-padrão for superior a um valor de threshold, então é definido que o bloco de motor contido na imagem capturada é o que está contido nas imagens-padrão. Caso contrário o algoritmo repete o passo anterior com as próximas duas imagens-padrão que representam outro tipo de cabeçote. O valor de threshold foi calculado através de testes, verificando qual o mínimo de pontos reconhecidos corretamente quando o bloco de motor da imagem de entrada era do mesmo tipo que o das imagens-padrão, e o máximo de pontos reconhecidos incorretamente quando o bloco de entrada era de tipo diferente do contido nas imagens-padrão. O threshold foi estabelecido na metade destes extremos. Foi calculado um valor diferente para cada um dos algoritmos (SIFT, SURF e ORB). Embora o valor de cada um tenha sido diferente, os três criaram uma margem bastante grande entre os dois valores, o que garante o reconhecimento correto do bloco contido na imagem de entrada. Então é escolhida a imagem-padrão com o maior número de pontos reconhecidos. É utilizada uma rotina que encontra um grupo de quatro pontos que tenham sido reconhecidos com grande grau de precisão. Isto é feito da seguinte maneira: grupos de quatro pontos de interesse reconhecidos são gerados aleatoriamente; é calculada a partir deles a matriz de transformação de projeção perspectiva utilizando a OpenCV. Esta transformação é aplicada nos quatro cantos da imagem-padrão, mostrada nas Figuras (4a) e (4b), e nos centros dos dois furos mais afastados entre si do motor; caso o reconhecimento dos pontos de interesse tenha sido preciso, os pontos gerados pela transformação devem respeitar as relações métricas existentes entre os pontos da imagem-padrão. Portanto, no algoritmo são calculados os ângulos e as distâncias entre os quatro cantos e a distância entre os centros. Os ângulos devem ser de aproximadamente 90 graus, com uma margem de erro estipulada em 0,5 grau, e as distâncias podem ter um desvio de até 5 mm da distância equivalente na imagem-padrão. Se um grupo passar em todas as restrições, ele é selecionado, e a partir dele é calculada a posição e orientação da peça com as coordenadas dos centros em relação a origem. O ângulo é calculado pelo arcotangente do coeficiente angular da reta que passa pelos dois furos, ver Figura (5), e a posição é dada pelas coordenadas do ponto médio entre os dois furos. Uma vez reconhecido o bloco e calculadas posição e orientação, são traçados círculos sobre os furos e retas que delimitam o bloco na imagem, conforme mostram as Figuras (7a) e (7b). Figura 5. Ilustração do cálculo do ângulo de inclinação do cabeçote. Fonte: próprio autor. 5. ANÁLISE DE RESULTADOS Neste tópico serão mostrados os resultados obtidos a partir de diversos testes utilizando SIFT, SURF e ORB no reconhecimento dos blocos de motor. Os testes foram realizados com as 129 imagens utilizadas por Semim (2012). Foram definidos manualmente a posição dos centros dos furos de todos os blocos de motor e o ângulo de inclinação. Estes valores foram considerados ideais e utilizados para comparação com as respostas encontradas pelo sistema de visão. O algoritmo desenvolvido foi aplicado nas 129 imagens e foram calculados o desvio médio, desvio padrão e desvio máximo para os valores de ângulo e posição encontrados pelo sistema. As Tabelas (1) e (2) ilustram estes resultados: Tabela 1: Representa os desvios na distância, em pixels, da coordenada ideal dos centros, para a coordenada encontrada pelo algoritmo. SIFT SURF ORB Desvio médio (pixels) 1,14 1,03 1,21 Desvio padrão (pixels) 1,07 1,02 1,10 Desvio máximo (pixels) 4,05 3,44 4,10

Tabela 2: Representa os desvios no ângulo, em graus, da inclinação do cabeçote baseada nos seus furos. SIFT SURF ORB Desvio médio (graus) 0,18 0,16 0,20 Desvio padrão (graus) 0,43 0,40 0,45 Desvio máximo (graus) 1,13 1,24 1,29 Na Tabela (1) os valores relacionados aos desvios estão em pixels. A partir da calibração feita por Semim (2012), tem-se que o valor de um pixel é de 1,25 mm na direção X e 1,26 mm na direção Y. Daí é possível calcular que o maior erro de posição dado pelo sistema é de aproximadamente 5 mm, valor aceitável visto que ainda estão em estado bruto nesse estágio da linha de produção. É possível notar que o algoritmo SURF apresenta os melhores resultados na determinação da posição dos cabeçotes, embora a diferença de desempenho dos três algoritmos seja pouco considerável. Também foram observados os resultados relacionados ao tempo de execução dos algoritmos por imagem processada. Os resultados estão apresentados na Tabela (3): Tabela 3: Tempo médio e máximo de execução dos algoritmos e desvio padrão, em segundos. SIFT SURF ORB Tempo médio (s) 1,586948 1,074779 0,642073 Tempo máximo (s) 2,173340 1,402012 3,740608 Desvio padrão (s) 0,296282 0,139727 0,559194 A partir da tabela é visível que ORB é o mais veloz dos três algoritmos, com boa margem na maioria dos casos. Porém também pode ser visto que há um alto desvio padrão na medida de tempo de execução, que é atribuído aos casos em que o ORB não consegue encontrar com facilidade um grupo de pontos que atenda as restrições de precisão. 6. DISCUSSÃO Diversos desafios surgiram durante a implementação dos algoritmos na resolução do problema de reconhecimento dos cabeçotes. Primeiramente vale ressaltar alguns aspectos diferentes na implementação utilizada para o algoritmo ORB. Para duas das 129 imagens, a imagem de entrada teve mais pontos de interesse reconhecidos com a imagem-padrão cujo bloco de motor estava voltado para o sentido oposto. Porém isto pode ser detectado no momento em que a posição dos centros é calculada em relação a origem, pois as distâncias encontradas serão o inverso do esperado. Portanto, ainda é possível definir com certeza a orientação do motor. Um problema encontrado ainda no algoritmo ORB, é que em 4 imagens nenhum grupo de pontos de interesse era preciso suficiente para respeitar todas as condições de precisão impostas ao reconhecimento do bloco. Isto tornou necessária a adição de uma rotina extra, que matinha armazenado o melhor grupo encontrado e fornecia-o como resultado final. Embora os resultados com estas 4 imagens estivessem dentro de uma margem de erro aceitável (dentro dos limites de funcionamento do robô), não há como ter certeza do bom desempenho do ORB em uma situação de uso em processo. Além disso, estas 4 imagens também são o pior caso de tempo para o ORB, pois são testados 60000 grupos de pontos para as duas imagens-padrão do motor, antes do resultado aproximado ser fornecido. Este é o único caso em que ele não supera SIFT e SURF em tempo de execução. Outro problema detectado durante o desenvolvimento do projeto foi a existência de regiões muito semelhantes entre si nos três tipos de blocos, mostradas nas Figuras (6a), (6b) e (6c), o que causava um alto índice de falsos reconhecimentos, pois os pontos eram muitas vezes associados a regiões semelhantes, porém não a correta. Isto foi resolvido com a abordagem utilizando subgrupos de apenas quatro pontos, pois é a quantidade mínima necessária para a criação da matriz de transformação, e em todos os testes há pelo menos quatro pontos detectados corretamente e com precisão necessária para o robô.

(a) Regiões do primeiro cabeçote com grande semelhança entre si. (b) Regiões do segundo cabeçote com grande semelhança entre si. (c) Regiões do terceiro cabeçote com grande semelhança entre si. Figura 6: Regiões dos três cabeçotes com grande semelhança entre si, responsáveis pelo alto índice de falsos reconhecimentos de pontos. Fonte: próprio autor. 7. CONCLUSÃO Os resultados apresentados pelos três algoritmos na implementação final do sistema de visão mostraram atender as necessidades de funcionamento da célula robótica, como pode ser visto em azul nas Figuras (7a) e (7b), com reconhecimentos bastante precisos da posição e orientação do bloco. Analisando o desempenho de tempo de execução dos algoritmos, SURF se mostrou o mais adequado, por ser mais rápido que o SIFT em todos os casos de teste e não apresentar situações críticas de execução como o ORB. Concluindo, entre as três opções analisadas nesse trabalho, o algoritmo SURF melhor desempenho e foi considerado o mais apto a ser utilizado no sistema de visão, por possuir tempo de execução constante nos casos de teste, dentro do limite de tempo que a célula robotizada possui para realizar o seu ciclo, e ao mesmo tempo apresentar os resultados mais precisos. O algoritmo SIFT também apresentou resultados bastante apurados para o cálculo da orientação e posição, porém em momento algum superou o SURF em velocidade. O ORB apresentou alta velocidade no reconhecimento dos blocos em mais de 96,8% dos testes realizados. Porém possui um pior caso bastante inferior ao SIFT e SURF por apresentar problemas para encontrar um grupo de 4 pontos reconhecidos com precisão, dessa forma não cumprindo as restrições de precisão na posição encontrada, além do tempo de execução ser quase proibitivo. Na continuação deste trabalho serão comparados os resultados das três técnicas com os resultados obtidos em Semim (2012) utilizando as mesmas condições de trabalho e também com outras técnicas como BRISK (Leutenegger et al., 2011) e FREAK (Alahi et al., 2012).

(a) Cabeçote reconhecido pelo sistema de visão utilizando SURF. (b) Outro modelo de cabeçote reconhecido pelo sistema de visão utilizando SURF. Figura 7: Dois tipos de cabeçotes reconhecidos pelo sistema de visão com posição e orientação. Fonte: próprio autor 8. AGRADECIMENTOS Os autores desejam agradecer a Universidade do Estado de Santa Catarina onde esta pesquisa foi realizada e à Tupy S.A. pelo apoio ao trabalho. Agradecem também à Fundação de Amparo à Pesquisa e Inovação do Estado de Santa Catarina (FAPESC) no apoio a fase final deste trabalho via o Convênio TR 3288/2013. 9. REFERÊNCIAS Alahi., A.; Ortiz, R.; Vandergheynst, P., 2012, FREAK: Fast Retina Keypoint. In IEEE Conference on Computer Vision and Pattern Recognition, 2012. CVPR 2012 Ballard, D. H.; Brown, C. M. B., 1982, Computer Vision. 1st New Jersey: Prentice Hall. 544p. Bay, H.; Ess, A.; Tuytelaars, T.; Van Gool. L., 2008, SURF: Speeded Up Robust Features. Computer Vision and Image Understanding, Vol. 110, No. 3, p. 346-359 Bay, H.; Tuytelaars, T.; Van Gool. L., 2006, Surf: Speeded up robust features. European Conference on Computer Vision, 2006. Bradski, G., Kaehler, A., 2008, Learning OpenCV: Computer Vision with the OpenCV Library, O'Reilly. Calonder, M.; Lepetit V.; Stretcha, C.; Fua, P., 2010, Brief: Binary robust independent elementary features. European Conference on Computer Vision. Gonzalez, R. C.; Woods, R. E., 2002, Digital Image Processing. 2nd New Jersey: Prentice Hall. 793 p.

Lowe, D. G., 2004, Distinctive image features from scale-invariant keypoints. International Journal of Computer Vision, 60(2):91-110. Mikolajczyk, K.; Schmid, C.,2005, A performance evaluation of local descriptors. PAMI, 27(10):1615-1630. MILANDO, D.; HONORATO, L. B., 2010, Visão Computacional. UNICAMP, OpenCV Open Source Compute Vision Library. 2015. Diponível em: <http://opencv.org/>. Acesso em: 25 janeiro 2015. Pedrini, H.; Schwartz, W. R., 2008, Análise de Imagens Digitais: Princípios, Algoritmos e Aplicações. 1st ed., São Paulo: Thomson Learning,. 508 p. Rosten, E.; Drummond, T., 2006, Machine learning for high-speed corner detection. European Conference on Computer Vision, Vol. 1. Rosten, E.; Porter, R.; Drummond, T., 2010, Faster and better: A machine learning approach to corner detection. IEEE Trans. Pattern Analysis and Machine Intelligence, 32:105-119. Rosin, P. L., 1999, Measuring corner properties. Computer Vision and Image Understanding. 73(2):29 307. Rosso Jr., R. S. U.; Tormena, C.; Silva, A. G.; Semim, R. C.; Silva, A. R. da., 2011, Reconhecimento e localização de objetos por visão computacional aplicado a uma célula com robô industrial. Relatório de pesquisa, Joinville: UDESC. 13 p. Rublee, E.; Rabaud, V.; Konolige, K.; Bradski, G. R., 2011, ORB: An efficient alternative to SIFT or SURF. ICCV 2011: 2564-2571. Semim, Ramon Cascaes., 2012, Sistema de visão para guiar um robô de manipulação de cabeçotes fundidos. 125 f. Dissertação (Mestrado Profissional em Engenharia Elétrica Área: Automação de Sistemas) Universidade do Estado de Santa Catarina. Programa de Pós-graduação em Engenharia Elétrica, Joinville, 2012. Semim, Ramon Cascaes, Rosso Jr; Roberto S. U.; Silva, Alexandre G.; Silva, Anderson Resendes; Tormena, Camila., 2012, Engine Head Blocks Handling Robot Guided by Vision System. Proceedings of the 14th IFAC Symposium on Information Control Problems in Manufacturing. Vol. 14 Part 1, p 859-864. Bucharest, Romania, 2012 DOI:10.3182/20120523-3-RO-2023.00244 Leutenegger, Stefan; Chli, Margarita; Siegwart, Roland., 2011, BRISK: Binary Robust Invariant Scalable Keypoints. ICCV 2011. p. 2548-2555. 10. DIREITOS AUTORAIS Os autores são os únicos responsáveis pelo conteúdo do material impresso incluído no seu trabalho. 11. ABSTRACT This article describes the procedures used to implement three computer vision techniques (SIFT, SURF and ORB) in developing a vision system for a robot whose task is to perform the oil bath and palletizing foundry engines head blocks. The three techniques are compared in terms of robustness, accuracy and execution time. The purpose of the vision system is to identify the head, its position and orientation, and provide this data to the robot so that it can perform the accurate handle of the part. It was concluded that the SURF algorithm performed better for the application, by presenting the best results in terms of robustness in the identification, precision in determining the head block position/orientation and execution time.