Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aplicações de controle através de processamento de imagens Sérgio Augusto Jacob Doveinis Munif Gebara Junior RESUMO Com o objetivo de criar uma nova técnica de controle de dispositivos mecatrônicos, desenvolveu-se um software que será capaz de controlar equipamentos a partir da visão computacional. Esse software será baseado em uma tecnologia de processamento de imagens em tempo real chamada OpenCV, que a partir da imagem capturada pela câmera conectada ao computador, rastreará um ponto selecionável específico e com isso fará com que este ponto selecionado se torne uma referência para controlar o dispositivo desejado. Utilizando uma técnica de "tracking and motion" aliada a divisão da imagem em coordenadas cartesianas, será possível controlar o equipamento desejado sem a utilização de qualquer botão, tornando este ato muito mais intuitivo. Palavras-chave: interatividade, rastreamento, movimento. Control applications using image processing ABSTRACT Aiming to create a new control technique for mechatronic devices, has developed a software that will be able to control equipment from computer vision. This software is based on a technology of real time image processing called OpenCV, which from the image captured by the camera connected to your computer, will track a specific point selectable and it will make this point selected becomes a reference to control desired device. Using a "tracking and motion" technique combined with division of the image in Cartesian coordinates, you can control the equipment you want without using any button, and this act become much more intuitive Keywords: interactivity, tracking, motion. Discente do curso de Engenharia de Controle e Automação do Centro Universitário de Maringá. e- mail: sergio_jacob@hotmail.com Docente do curso de Engenharia de Controle e Automação do Centro Universitário de Maringá – CESUMAR. e-mail: munif@cesumar.br 1 INTRODUÇÃO Nos dias de hoje, a necessidade por novas tecnologias de controle é muito grande, devido ao desenvolvimento de novos dispositivos e equipamentos a todo instante. Novos robôs são desenvolvidos com o intuito de aprimorar as atividades realizadas por homens nas mais diversas áreas de atuação, desde aplicações industriais e siderúrgicas até setores aeroespaciais e hospitalares. E cada vez mais aumenta a necessidade de que os mais variados dispositivos interajam de forma harmônica e intuitiva com as pessoas, sempre reduzindo a quantidade de botões e aumentando a de sensores. Como exemplo, a nova geração de videogames já possuí suporte para controles sem fio, onde movimentos realizados pelo jogador são captados por um sensor e transferidos para o console, de forma que os movimentos são copiados pelo próprio jogo. Mas tecnologias de comando desta natureza não estão presentes somente em videogames. A agência aeroespacial norte-americana (NASA) está desenvolvendo robôs para exploração que utilizam câmeras que filmam partes do operador, como o braço e a mão, e fazem com que o robô repita os movimentos de forma idêntica aos movimentos do operador. Com isso, ações complexas para serem realizadas com botões, como por exemplo o controle de uma mão inteiramente articulada e que realize os mesmos movimentos da mão humana, se tornam viáveis através do controle por câmeras. Com o intuito de desenvolver uma nova forma de controle baseada no controle por câmera, criou-se um software que utiliza linguagem C e a biblioteca OpenCV para controlar um dispositivo qualquer através das imagens capturadas e processadas por uma câmera. 2 REVISÃO BIBLIOGRÁFICA Para que o sistema de controle funcione perfeitamente, desenvolveu-se um software utilizando a tecnologia OpenCV (Open Source Computer Vision) capaz de rastrear no campo de visão da câmera uma área pré-selecionada, e detectar se ela é ou não o objeto controlador. A seguir, uma breve explicação sobre as principais vertentes contidas no software. 2.1 OPEN SOURCE COMPUTER VISION Mais conhecido como OpenCV, é uma biblioteca de softwares desenvolvidos em C pela Intel, com código de fonte aberto, de forma que qualquer pessoa possa alterar o conteúdo dos softwares com fins acadêmicos ou comerciais. Segundo Gary Bradski e Adrian Kaehler, um dos objetivos do OpenCV é prover uma infra-estrutura de visão computacional simples de se utilizar para ajudar no desenvolvimento de aplicações de visão bastante sofisticadas rapidamente. A biblioteca OpenCV contém mais de 500 funções que abrangem diversas áreas da visão, incluindo inspeção de produtos, imagens médicas, segurança, interface de usuário, calibração de câmeras, visão estéreo e robótica. Apesar de ser uma tecnologia fascinante, a maioria dos softwares contidos na biblioteca OpenCV é muito sensível e em alguns momentos instáveis também, por isso, para sua utilização são necessários alguns ajustes finos nos códigos fonte de acordo com a aplicação desejada para se obter uma precisão ideal. 2.2 LINGUAGEM C "A linguagem C foi primeiramente criada por Dennis M. Ritchie e Ken Thompson no laboratório Bell em 1972, baseada na linguagem B de Thompson que era uma evolução da antiga linguagem BCPL." (MIZRAHI, 2005, p.2). A linguagem C foi desenvolvida para que o usuário possa planejar programas estruturados e modulares, de forma que o mesmo programa possa ser desenvolvido por pessoas distintas em partes separadas e depois unidos em um produto final de forma legível e documentada. A linguagem C é considera de alto nível, devido a sua semelhança com a linguagem humana e de sua complexidade. Ela é uma linguagem muito poderosa, capaz de realizar as mais diversas tarefas, além de possuir uma grande portabilidade, ou seja, pode ser utilizada nos mais diversos tipos de equipamentos e dispositivos de forma igualmente eficaz. 2.3 HISTOGRAMAS "Os histogramas são ferramentas de processamento de imagens que possuem grande aplicação prática. Os histogramas são determinados a partir de valores de intensidade dos pixels. Entre as principais aplicações dos histogramas estão na melhoria da definição de uma imagem, a compressão de imagens, a segmentação de imagens ou ainda a descrição de uma imagem"(MARENGONI, 2009). A estrutura de dados do histograma é capaz de representar histogramas em uma ou várias dimensões, e contém todos os dados necessários para acompanhar binários tanto em tamanho uniforme como em tamanhos não uniformes. Histogramas podem ser utilizados em uma grande variedade de aplicações, como por exemplo a distribuição das cores de uma imagem, o gradiente de bordas de um objeto ou a localização hipotética do objeto. Essas aplicações são muito importantes e amplamente utilizadas na visão computacional. Eles são utilizados para identificar um ponto de interesse na imagem, associando a esses pontos uma marcação tag, que consiste no histograma de recursos nas proximidades do ponto. Histogramas das bordas, cantos, cores e assim por diante, formam um tipo de identificação geral que é passada para que os classificadores realizem o reconhecimento. Histogramas são uma contagem de coletas de dados subjacentes agrupados em um conjunto pré-definido de binários. Eles podem ser agrupados a partir da contagem dos recursos presentes nos dados, tais como gradientes de magnitude, direções, cores, ou qualquer outra característica. Em qualquer caso, eles são usados para se obter um quadro estatísticoda distribuição de dados subjacentes. Figura 1 - Exemplo de Histograma Fonte: Learning OpenCV, 2008, p.195 2.4 RASTREAMENTO E MONITORAMENTO Para compreender o movimento de um objeto qualquer, necessitamos de dois componentes básicos, identificação e modelagem. Identificação equivale a encontrar o objeto de interesse de um quadro em uma imagem posterior ao quadro do fluxo de vídeo. Técnicas como "Momentos" e "Histogramas de cor" ajudam a identificar o objeto desejado no campo de visão da câmera. Rastrear objetos não identificados é um problema, porém isso é importante quando queremos determinar o que é interessante com base em seu movimento ou quando o movimento de um objeto é precisamente o que o torna interessante. (BRADSKI, KAEHLER, 2008, p.316) Técnicas para o rastreamento de objetos não identificados normalmente envolvem acompanhamento visual de pontos-chave ao invés de objetos extensos. OpenCV fornece dois métodos para isso, as técnicas Lucas-Kanade e Horn- Schunck, que representam o que é muitas vezes referida como fluxo ótico esparso ou denso, respectivamente. (BRADSKI, KAEHLER, 2008, p.316) A modelagem nos ajuda a lidar com o fato de que essas técnicas somente nos fornece posições ruidosas da posição real do objeto. Muitas técnicas matemáticas foram desenvolvidas para estimar a trajetória de um objeto de forma menos ruidosa. Esses métodos são aplicáveis aos modelos bidimensionais ou tridimensionais dos objetos e suas localizações. (BRADSKI, KAEHLER, 2008, p.316). 2.5 TÉCNICAS "MEANSHIFT" E "CAMSHIFT" São duas outras técnicas de rastreamento, sendo que camshift significa "meanshift continuamente adaptativa". A primeira é uma técnica geral para análise de dados em diversas aplicações, das quais a visão computacional é apenas uma forma. A outra técnica, camshift, baseia-se na meanshift para permitir o rastreamento de objetos cujo tamanho pode variar conforme a sequência de vídeo. (BRADSKI, KAEHLER, 2008, p.337) O algoritmo meanshift é um método robusto de encontrar um local de densidade extrema em um conjunto de dados. É um processo fácil para distribuições continuas, onde o contexto é essencialmente picos de densidade aplicados a um histograma de densidade de dados. (BRADSKI, KAEHLER, 2008, p.338) Já o algoritmo camshift difere de meanshift, quando a janela de busca se ajusta ao tamanho desejado, ou seja, se tivermos distribuições bem segmentadas (características de um rosto que ficam compactas), então este algoritmo irá se ajustar automaticamente para o tamanho do rosto quando a pessoa se aproximar ou afastar da câmera. (BRADSKI, KAEHLER, 2008, p.341) 3 DESENVOLVIMENTO Para o desenvolvimento do software, foram utilizadas duas técnicas de programação de visão computacional, histogramas de densidade e meanshift. Utilizando como base o programa contido na biblioteca de aplicativos OpenCV 1.0, que após a seleção de uma área qualquer da imagem da câmera com o mouse, este rastreia a área selecionada até que a mesma se perca ou se torne irreconhecível, realizou-se algumas mudanças para otimizar seu funcionamento de acordo com a necessidade de desenvolver uma nova técnica de controle. . 3.1 APLICAÇÃO DO HISTOGRAMA O histograma do software gera a partir da imagem da câmera um gráfico que reflete a densidade das cores por pixel de acordo com a seleção feita pelo mouse, e conforme o valor dessa densidade rastreia a área selecionada até que o seu padrão se torne diferente do selecionado. Utilizando este recurso de forma que um determinado padrão de cores e densidade já determinados se tornem a ferramenta de controle, temos então uma forma de encontrar através da imagem da câmera o objeto controlador que será utilizado pelo usuário. Em outras palavras, a partir da seleção realizada pelo usuário, o software irá analisar o histograma daquela área selecionada, e caso o padrão seja igual ou muito parecido a um pré-determinado irá concluir se aquela área selecionada contém o objeto controlador. Analisando a figura 2, nota-se as diferenças entre os padrões de um objeto controlador selecionado (esquerda) e um objeto qualquer selecionado (direita). Através dessa analise o software será capaz de reconhecer quando o objeto selecionado irá realizar alguma ação, conforme o histograma de densidade da área selecionada em questão. Figura 2 Histogramas de identificação de objetos Fonte: Autor 3.2 RASTREAMENTO DO CONTROLADOR A técnica meanshift empregada no software, utiliza algumas equações para calcular o centro de massa [1] e o momento de inércia [2] dos pixels distribuídos na imagem selecionada. [1] [2] A partir destas equações e juntamente com o histograma da área selecionada, teremos uma equação meanshift em x [3] e em y capaz de dizer o ponto central da concentração dos pixels da imagem. [3] A figura 3 mostra que a partir do histograma de densidade pode -se calcular o centro de massa dos pontos na imagem selecionada. O vetor meanshift neste caso descreve que a imagem deve ser re-centralizada de acordo com o centro de massa calculado. Este movimento vai mudar o que está sob a área selecionada, e assim repetimos este processo de re-centralização. O centro de massa antigo (ponto cinza) deve ser deslocado para o novo centro de massa (ponto branco), e assim sucessivamente. Figura 3 Vetor meanshift Fonte: Learning OpenCV 2008, p.339 Essa recentralização contínua sempre converge para o vetor meanshift de valor zero, onde não será mais possível mover o centro. A partir do momento em que o vetor assume o valor zero, concluí-se que não há mais movimento. 3.3 DIVISÃO EM COORDENADAS CARTESIANAS Para que se possa controlar algum dispositivo, dividiu-se a imagem gerada pela câmera em pixels x e y, conforme um plano cartesiano. Com isso será possível realizar no mínimo duas ações com o controlador de forma simples. Um exemplo de controle de dispositivo com cinco ações, onde valores combinados de x e y resultam em diferentes ações, onde: Figura 4 Exemplo de aplicação Fonte: Autor Através da atribuição do ponto x e y do centro de massa da área selecionada, será possível realizar as ações definidas no software e controlá-lo conforme sua posição espacial. Esta técnica de controle é simples, porém muito eficaz em diversas aplicações, por isso será utilizada no software desenvolvido. 3.4 VISÃO GERAL Para que possamos rastrear um ponto específico, deve-se primeiramente atribuir os valores de densidade de cores e borda do objeto a ser atribuído como controlador, e especificá-los no software, de forma que ele identifique quando estiver rastreando o controlador ou quando estiver rastreando um objeto desconhecido. Após a atribuição de valores do objeto controlador, o software irá analisar o histograma de densidade gerado pela câmera, e de acordo com o centro de massa do objeto selecionado em cada instante de tempo, irá rastreá-lo de acordo com a equação do vetor meanshift. O software poderá rastrear qualquer objeto selecionado, por isso é necessário pré-estabelecer quais os padrões de objetos controladores. Qualquer outro objeto rastreado que não seja o objeto controlador não realizará nenhuma ação, limitando com isso a possibilidade de que objetos não desejados interfiram no controle do dispositivo. A lógicado programa seguirá o seguinte algoritmo, de acordo com o exemplo citado de controle com cinco ações: Fluxograma 1 Algoritmo do software Fonte: Autor Para outras aplicações, a mudança ocorrerá nas ações respectivas aos valores x e y, podendo ser modificados tanto a quantidade de ações quanto a localização dos pontos cartesianos que executam as respectivas ações. 4 CONSIDERAÇÕES FINAIS A tecnologia OpenCV apesar der ser uma ferramenta para tratamento de imagens muito poderosa, ainda é bastante instável e requer cautela para uma correta utilização. Ajustes finos são necessários para que ela se torne aplicável comercialmente conforme a necessidade. Pode-se ainda citar novas formas de melhorar essa tecnologia de controle, como através do aperfeiçoamento do software controlador para que mais comandos possam ser transferidos da câmera para o dispositivo, do desenvolvimento de outros tipos de controladores, e do aumento da precisão dos histogramas de analise para que o rastreamento seja mais eficaz e preciso. Pode-se dizer que esta será uma nova ferramenta capaz de controlar e manipular dispositivos mecatrônicos de uma forma inovadora, pois realizará diversos movimentos e comandos distintos apenas com poucas imagens capturadas, ou seja, eliminará os botões necessários para controlar os dispositivos e tornará este ato muito mais intuitivo. Logo, reunindo as novas tecnologias de software disponíveis será possível que máquinas reproduzam fielmente os movimentos de uma pessoa sem a necessidade de sensores ou fios presos a ela, utilizando apenas as imagens capturadas por uma câmera. Isso cria a possibilidade do desenvolvimento de novas tecnologias em diversas áreas, desde o entretenimento, com novos brinquedos e videogames, na exploração de locais inacessíveis ou perigosos para seres humanos, e até no auxílio as pessoas portadores de necessidades especiais. REFERÊNCIAS BRADSKI, Gary; KAEHLER, Adrian. Learning OpenCV. 1 ed. O'Reilly, 2008. JAMSA, Kris; KLANDER, Lars. Programando em C/C++ "A bíblia". São Paulo: Makron Books, 1999. MARENGONI, Maurício; STRINGHINI, Denise. Tutorial: Introdução à visão Computacional usando OpenCV. São Paulo: Rita, 2009. MIZRAHI, Victorine Viviane. Treinamento em linguagem C. São Paulo: Paerson Markon Books, 2005. ROSÁRIO, João Maurício. Princípios da Mecatrônica. São Paulo: Prentice Hall, 2005.
Compartilhar