Você está na página 1de 6

VISO COMPUTACIONAL COM A OPENCV MATERIAL APOSTILADO E VECULO SEGUIDOR AUTNOMO Riccardo Luigi Delai1; Alessandra Dutra Coelho2

Aluno de Iniciao Cientfica da Escola de Engenharia Mau (EEM/CEUN-IMT); 2 Professora da Escola de Engenharia Mau (EEM/CEUN-IMT).

Introduo Viso Computacional, ou Viso Robtica, um tema que est em franca ascenso. Ela ponto chave para o desenvolvimento de diversas outras tecnologias, especialmente na rea da robtica mvel. Suas aplicaes so inmeras: todas as decises tomadas baseadas no que pode enxergar fazem parte do escopo da Viso Computacional. A semelhana com o modo de percepo humana do ambiente a torna uma ferramenta extremamente poderosa. Este um sentido que j bastante dominado pela raa humana, pois podemos facilmente distinguir dois objetos distintos apenas ao olhar para eles, e classific-los em categorias, como carro, casa, pessoa. No entanto, esta tarefa simples bastante dispendiosa computacionalmente, o que explica porque somente agora o campo da Viso est em tamanha expanso. Os motivos so o barateamento do poder de processamento e da fotografia digital, alm da miniaturizao de ambos. Isso tornou possvel aplicaes real-time, nas quais as imagens so processadas em tempo semelhante ao do crebro humano, o que seria impossvel com os computadores e sensores de dez anos atrs, tanto por questes de custo quanto de velocidade e tamanho. Atualmente possvel se projetar sistemas simples de viso que possam ser embarcados em robs autnomos de pequeno porte, em escala reduzida do corpo humano citar artigo da competio humanoides. Entre as aplicaes j existentes da Viso Computacional esto: cmeras inteligentes (que buscam rostos ao tirar fotos), controle de qualidade industrial por inspeo visual, sistemas de entretenimento sem controle, realidade aumentada, prottipos de veculos sem motorista, voo no tripulado autnomo, interpretao automtica de exames mdicos e anlise de tecidos biolgicos. A OpenCV um conjunto de ferramentas de programao para desenvolvimento de aplicaes com Viso. Ela engloba tambm outro conceito importante, especialmente no meio acadmico, o software livre. A biblioteca completamente open-source, e distribuda gratuitamente, aberta a colaboraes de qualquer indivduo ou empresa voluntrios. A gratuidade da OpenCV, o baixo custo do poder de mquina e a crescente qualidade das cmeras torna possvel o desenvolvimento de sistemas sofisticados de Viso, com baixo investimento e custo de operao. A utilizao de cmeras pode inclusive substituir outros sensores e sistemas mais caros, complexos e menos genricos. Isso evidencia no s o crescimento da rea da Viso Robtica, mas tambm a tendncia de aproximao dos computadores forma como os humanos entendem o ambiente ao seu redor. O sistema desenvolvido para o veculo uma prova de conceito do estudo realizado. Ele foi adaptado a partir de materiais de fcil acesso e ampla comercializao, tornando um simples carrinho de controle remoto em um sistema semi autnomo, que tenta encontrar e seguir uma forma pr-determinada. Materiais e Mtodos Material escrito Para o desenvolvimento e teste do material escrito, foram necessrios a API da biblioteca, um computador com compilador C++ e a OpenCV instalada. Mais

particularmente, foi utilizado o Linux como sistema operacional, por motivos de comodidade na programao e seguindo a ideologia de software livre da OpenCV, mas foram feitos tambm testes com Windows para que o material fosse o mais universal possvel. Tambm foi necessria uma webcam digital USB, para a qual no h grande necessidade de especificao. Idealmente, a resoluo deve ser de no mnimo 640x480, e o frame-rate de no mnimo 20 fps. conveniente se ter um editor de imagens instalado, para que se possa criar e editar imagens para cada procedimento experimental. Antes de partir para a redao, foi preciso detalhar o procedimento de instalao do compilador e da OpenCV no ambiente Windows para criar uma instalao padro para servir de base para os exemplos. citar na bibliografia. O material escrito no uma traduo do contedo dos livros. Em muitas situaes, os livros voltados programao citam apenas que determinado procedimento mais demorado do que outro, enquanto os livros mais tericos ignoram os aspectos de implementao e abordam apenas os conceitos algortmicos e matemticos, no levando muito em conta o custo computacional. Para um curso de engenharia, no qual os leitores tm tanto conhecimento matemtico quanto de implementao computacional, necessrio oferecer um panorama geral, que demonstre os motivos tanto tericos quanto prticos de cada procedimento. Portanto, deve ser buscado um equilbrio tanto entre teoria e prtica quanto para a abrangncia do material, para que seja possvel o desenvolvimento de projetos diversos, mas mantendo-o compacto e objetivo. Dentro de cada captulo, cada rotina proposta deve ser testada cuidadosamente. Por ser uma biblioteca bastante dinmica, com atualizaes frequentes, muitas das solues propostas na literatura j esto obsoletas ou foram alteradas. Assim, a consulta em fruns especializados, documentao atualizada, changelogs e at testes para verificao devem ser feitos com frequncia. A melhor forma de se passar um conhecimento na rea de processamento de imagem utilizar as prprias imagens como exemplo, mostrando o que os operadores fazem sobre elas. nesta etapa que o editor de imagens se torna interessante, para gerar imagens que se adequem aos exemplos do material. Nos casos de morfologia por exemplo, conveniente se trabalhar com imagens bastante simples, para que se perceba imediatamente o efeito causado pelos algoritmos, enquanto nos processos com histogramas e deteco de bordas mais interessante a demonstrao em uma imagem mais sofisticada, como uma fotografia real, para que o efeito geral sobre toda a superfcie seja mais notado do que o particular em pontos especficos. Trabalhar diretamente com cmera e vdeos como exemplos no uma boa prtica. muito difcil se ter um fundo completamente uniforme durante todos os quadros, e uma cmera completamente livre de rudos. Assim, alguns dos processos no funcionam to bem quando aplicados diretamente sobre uma imagem vinda de uma cmera. A utilizao da cmera varia conforme a aplicao, cabendo ao implementador definir que filtros devem ser aplicados antes de partir para o processamento. Foi dada preferncia a procedimentos no domnio especial da imagem, ao invs do domnio da frequncia como apresentado grande parte da literatura terica. As transformadas de Fourier (FFT) direta e inversa so relativamente lentas frente ao domnio especial, como as imagens se apresentam e so armazenadas, podendo comprometer a velocidade total dos processos. Veculo autnomo Para provar os conceitos estudados sobre Viso Computacional e demonstrar uma possvel aplicao na rea de robtica mvel, foi desenvolvido um sistema que identifica um smbolo pr-definido em uma imagem, vinda de uma cmera, e comanda um pequeno veculo para segui-lo. O veculo um carrinho de controle remoto, cujo controle foi adaptado para que fosse

possvel control-lo por um sistema externo, no caso uma plataforma Arduino. Como no controle original os movimentos de acelerar, r, direita e esquerda eram controlados por botes simples, o microcontrolador simula uma chave variando suas sadas entre input (estado de alta impedncia, chave aberta) e output nvel baixo, que corresponde chave fechada no controle. Isto dispensa componentes extra na adaptao do controle. O Arduino ligado a um computador via USB, que envia dados atravs de emulao serial para que esse altere o estado no controle. So enviados comandos de apenas uma letra, representando situaes desejadas no controle, e por consequncia no carrinho. O computador toma as decises de que movimento realizar baseado nas imagens vindas da cmera de um celular, posicionado na parte superior do carrinho, que envia seus quadros via Bluetooth. Para esta ltima etapa (comunicao cmera-computador) foi necessrio o uso de um software proprietrio pago. Isso acontece porque o celular no permite que programas sem certificao de empresas de segurana tenham acesso a dados considerados sensveis, como a cmera. Acessos a esta obrigam o usurio a apertar um boto a cada quadro obtido, confirmando deste, o que inviabilizaria o projeto. Com a imagem da cmera, o computador inicia o processo de busca do smbolo, com base em uma referncia digital deste. O processo, repetido para cada frame obtido, segue os seguintes passos: 1. Obter a imagem da cmera. 2. Suavizar (smooth) a imagem vinda da cmera, para diminuir o rudo esprio. O mecanismo de suavizao escolhido foi o blur gaussiano. 3. Converter a imagem colorida para preto-e-branco (escala de cinza). 4. Aplicar thresholds crescentes, gerando imagens binrias (preto e branco, apenas). So aplicados valores crescentes para que o smbolo buscado possa ser visto em vrias condies de luminosidade ambiente. Para cada imagem gerada neste item: 5. Aplicar rotina de deteco de contornos em toda a imagem. A imagem binria torna-se uma sequncia de pontos que representam as fronteiras entre regies pretas e brancas. 6. Simplificar os contornos, utilizando o algoritmo de Douglas-Peucker de aproximao de polgonos. Selecionar contornos quadrados pela relao de aspecto, nmero de vrtices e tamanho mnimo. Isso cria uma lista de regies candidatas a conter o smbolo, buscando pelo quadrado externo. 7. Obter todas as regies quadradas candidatas novamente na forma de imagem. 8. Procurar o quadrante com maior quantidade de pixels brancos para cada regio do item anterior. 9. Rotacionar as imagens do item 7 para que sigam a orientao da referncia, baseado no quadrante mais branco identificado no item 8 e no ngulo formado entre a linha inferior do contorno e o eixo horizontal da imagem. 10. Calcular os momentos da imagem binria, resultado do item anterior. Os momentos utilizados so tais que a ordem em X somada com a ordem em Y seja menor ou igual a 3, com X e Y positivos. 11. Uma nota composta com o quadrado da diferena entre os momentos de cada ordem da referncia e da imagem candidata. A isso somado dez vezes a diferena entre a quantidade de figuras presentes na referncia e no candidato, sendo uma figura qualquer poro preta envolvida por branco ou branca envolvida por preto. 12. A regio candidata com menor nota, que esteja acima de um limiar estabelecido experimentalmente considerada como um match vlido. O limiar pode ser alterado durante a execuo do programa, para mudar a tolerncia deste. O controle dado na forma de uma barra deslizante. 13. Se houver algum match, o ponto central (centro do quadrado) considerado para avaliar sua posio. Se este estiver nos primeiros 30% da imagem, na parte esquerda, o carrinho comandado para virar esquerda. Se estiver nos 70% mais direita, enviado um comando para que o carrinho vire esquerda. Para determinar a distncia

do carrinho figura, utilizada a rea do quadrado externo. Se esta for menor que 5% da imagem, o carrinho deve avanar. Se for maior que 12%, ele deve andar de r e se afastar. Todos estes parmetros podem ser alterados em tempo de execuo. 14. Com o carrinho reposicionado, voltar ao passo 1.

Figura 1 - Esquema do funcionamento do sistema do veculo

Figura 2 - Processo de busca da referncia no programa

Resultados e Discusso Veculo autnomo O sistema de identificao do smbolo funcionou bem quando testado em imagens estticas, mesmo com rudo e com a adio de smbolos semelhantes ao procurado, sempre identificando corretamente a referncia com a nota mais baixa. Com a cmera adaptada no carrinho, o sistema tambm se comportou bem. Os maiores problemas so com a movimentao do carrinho, que no tem grande ngulo de curva nem controle de intensidade de acelerao ou r. Por causa disso, o carrinho tende a avanar na direo do smbolo assim que o encontra ao longe, mas ao perceber que est perto e acionar o freio, a inrcia dele o movimenta alm do ponto de parada esperado, deixando-o prximo demais. Quando est muito prximo, a r acionada para tentar manter a distncia ideal, mas o mesmo acontece, e o carrinho fica em um ciclo de frente e r sem encontrar a distncia ideal prevista. Para minimizar este problema, seria ideal que o carrinho tivesse controle de velocidade, para que acelerasse proporcionalmente distncia que se encontra da referncia. Para diminuir o custo de processamento, o programa poderia no procurar pelo smbolo a cada frame recebido, mas tentar segui-lo uma vez encontrado. Isso poderia ser feito com algum algoritmo de fluxo ptico, como o de Lucas-Kanade. Concluses O material escrito desenvolvido servir como base para a introduo de um laboratrio para difundir os conhecimentos de Viso, tanto na grade curricular como para auxiliar o laboratrio de robs autnomos. O veculo adaptado o incio de um projeto maior de desenvolvimento de um carro autnomo. Ele ser reproduzido em escala maior em um miniveculo eltrico, para o qual tambm ser aumentado o grau de automao. Ele ser capaz de dirigir-se sozinho por distncias maiores, evitando obstculos e seguindo percursos previamente definidos, com a introduo de obstculos dinmicos. Referncias Bibliogrficas Autores da OpenCV (2010) OpenCV Reference Manual v2.1. Autores da OpenCV (2010) OpenCV source code v2.1. Bradski, G.; Kaehler, A. (2008) Learning opencv. 1a edio. OReilly Media. Gonzalez, R. C.; Woods, R. E. (2000) Processamento de imagens digitais. 2a edio. Edgard Blcher. Gomes, M. M. (2010) Apresentaes do curso ecm951 - viso computacional . Escola de Engenharia Mau. Russ, J. C. (1998) The image processing handbook. 5a edio. CRC Press. Russel, S.; Norvig, P. (1995) Artificial intelligence - a modern approach. Prentice Hall. Tudor, P. (1995) Mpeg-2 video compression. Electronics & Communication Engineering Journal. DERPANIS, K. G. (2004) The harris corner detector.
www.cse.yorku.ca/~kosta/CompVis_Notes/harris_detector.pdf.

Você também pode gostar