CMPUS GRAVATA SISTEMA DE CAPTURA DE MOVIMENTOS PARA COMANDAR EQUIPAMENTOS ELETRNICOS Jos Moacir de Souza Jnior Monografia desenvolvida durante a disciplina de Trabalho de Concluso de Curso em Cincia da Computao II e apresentada ao Curso de Bacharelado em Cincia da Computao da Universidade Luterana do Brasil, cmpus Gravata, como pr-requisito para a obteno do ttulo de Bacharel em Cincia da Computao. Orientador(a): Prof. Roland Teodorowitsch Gravata, dezembro de 2010. 2 Universidade Luterana do Brasil ULBRA Curso de Cincia da Computao Cmpus Gravata Coordenador do Curso de Cincia da Computao (Cmpus Gravata): Prof. Elgio Schlemer Coordenador das Disciplinas de Trabalho de Concluso de Curso (Cmpus Gravata): Prof. Roland Teodorowitsch Banca Avaliadora composta por: Data da defesa: 29/11/2010. Prof. Roland Teodorowitsch (Orientador) Prof. Luiz Fernando Castro da Cruz Prof. Maria Adelina Raupp Sganzerla CIP Catalogao na Publicao Souza Jnior, Jos Moacir de Sistema de Captura de Movimentos para Comandar Equipamentos Eletrnicos / Jos Moacir de Souza Jnior; [orientado por] Roland Teodorowitsch; Gravata: 2010. 39 p.: il. Trabalho de Concluso de Curso (Bacharelado em Cincia da Computao). Universidade Luterana do Brasil, 2010. 1. Viso Computacional. 2. Interao Homem-Computador. 3. OpenCV. 4. Reconhecimento de Gestos. 5. Anlise de Imagens. I. Teodorowitsch, Roland. II. Ttulo. Endereo: Universidade Luterana do Brasil Cmpus Gravata Av. Itacolomi, 3.600 Bairro So Vicente CEP 94170-240 Gravata-RS Brasil Noventa por cento do sucesso se baseia simplesmente em insistir. Woody Allen Dedico este trabalho aos meus pais, Jos Moacir de Souza e Maria Geneci Oliveira de Souza, por todo amor, carinho, apoio e incentivo que me proporcionaram nas horas em que mais precisei. AGRADECIMENTOS Primeiramente agradeo aos meus pais, por sempre terem me incentivado a estudar e por me apoiarem durante toda minha trajetria escolar e acadmica. Me dando carinho, amor, ateno e ajuda nas dificuldades encontradas durante estes anos. Aos amigos que, de vrias formas, ajudaram dando seu apoio, incentivo e at mesmo suas opinies. Por me questionarem a respeito do projeto e me fazerem repensar sobre algo que j estava decidido. Ao Henrique Severo da Silva por me emprestar seu notebook, me economizando o esforo de levar meu computador desktop para fazer as demonstraes aos professores e at mesmo para fazer a defesa do trabalho. Alm do notebook, tambm me ajudou como todos os outros amigos que citei anteriormente. A todos os professores que me ajudaram na minha formao acadmica. Principalmente aos professores Roland Teodorowitsch, Luiz Fernando e Maria Adelina, que expressaram suas opinies e ideias sempre que necessitei. SUMRIO LISTA DE FIGURAS .............................................................................................................. 7 LISTA DE QUADROS ............................................................................................................ 8 LISTA DE ABREVIATURAS E SIGLAS............................................................................. 9 RESUMO................................................................................................................................ 10 ABSTRACT............................................................................................................................ 11 1 INTRODUO................................................................................................................. 12 2 FUNDAMENTAO TERICA.................................................................................... 14 2.1 REALIDADE VIRTUAL .................................................................................................. 15 2.2 VEX ........................................................................................................................... 15 2.3 OPENCV.................................................................................................................... 16 3 DEFINIO...................................................................................................................... 20 3.1 GESTOS IDENTIFICADOS .............................................................................................. 20 3.2 SINAIS DE SADA.......................................................................................................... 21 4 DESENVOLVIMENTO DO TRABALHO..................................................................... 23 4.1 INTERFACE GRFICA DO SISTEMA................................................................................ 23 4.2 CONFIGURAO UTILIZADA PARA O KIT VEX............................................................. 27 4.3 AMBIENTE DE DESENVOLVIMENTO DO KIT VEX.......................................................... 28 4.4 FUNCIONAMENTO DO SISTEMA.................................................................................... 29 4.5 COMO OPENCV FOI UTILIZADO .................................................................................. 29 4.6 FILTRAGEM DA IMAGEM.............................................................................................. 29 4.7 ANLISE...................................................................................................................... 30 5 TESTES E ANLISE DE RESULTADOS..................................................................... 33 6 CONCLUSO.................................................................................................................... 37 REFERNCIAS ..................................................................................................................... 39 LISTA DE FIGURAS Figura 1 Jogador executando comandos atravs do Kinect .................................................. 12 Figura 2 Imagem original e imagem com a aplicao do algoritmo..................................... 14 Figura 3 Alguns componentes do Kit da VEX Robotics ...................................................... 16 Figura 4 Exemplo de cdigo-fonte que utiliza a biblioteca OpenCV................................... 17 Figura 5 Imagem original e imagem aps aplicao do algoritmo de Canny....................... 17 Figura 6 Imagem original e a imagem com os padres a serem reconhecidos ..................... 18 Figura 7 Resultado do programa de deteco de face........................................................... 19 Figura 8 Gestos reconhecidos ............................................................................................... 21 Figura 9 Interface grfica do sistema de reconhecimento de gestos ..................................... 23 Figura 10 Tela de configurao de sadas ............................................................................. 25 Figura 11 Tela de configurao de Velocidade e Tempo de ciclo via gestos ....................... 26 Figura 12 Tela de configurao de velocidade atravs de gestos ......................................... 26 Figura 13 Tela de configurao de tempo de ciclo atravs de gestos ................................... 27 Figura 14 Possveis comportamentos do veculo em funo do sentido de suas rodas ........ 27 Figura 15 Montagem do kit VEX........................................................................................... 28 Figura 16 Exemplo de filtragem dos pontos de pele da imagem.......................................... 29 Figura 17 Convexidade e falhas de convexidade.................................................................. 30 Figura 18 Pontos analisados para identificao dos dedos ................................................... 31 Figura 19 Frmula para identificar possveis dedos.............................................................. 31 Figura 20 Exemplo de imagem com 5 dedos identificados .................................................. 32 Figura 21 Posio que o equipamento estar antes dos comandos ....................................... 34 Figura 22 Gesto 1 dedo para cima e comportamento do kit VEX..................................... 34 Figura 23 Gesto 2 dedos e comportamento do kit VEX.................................................... 35 Figura 24 Gesto 1 dedo para direita e comportamento do kit VEX................................... 35 Figura 25 Gesto 1 dedo para esquerda e comportamento do kit VEX............................... 36 LISTA DE QUADROS Quadro 1 Gestos reconhecidos e suas respectivas sadas...................................................... 22 Quadro 2 Possveis configuraes e suas respectivas sadas ................................................ 22 Quadro 3 Listagem das possveis exibies de sinais de sada............................................. 25 LISTA DE ABREVIATURAS E SIGLAS 2D Duas dimenses 3D Trs dimenses IHC Interao Homem-Computador USB Barramento Serial Universal (Universal Serial Bus) VB Visual Basic RESUMO Esta monografia apresenta o desenvolvimento de um sistema que executa o reconhecimento de uma mo, buscando encontrar, nos movimentos feitos por ela, gestos que esto predefinidos dentro do sistema. Ao reconhecer um gesto como sendo vlido, o sistema ter uma sada que poder ser utilizada, como entrada de comandos, em interfaces que faam a comunicao com equipamentos eletrnicos, robs, etc. A captura dos movimentos e gestos da mo do usurio ser feita atravs de um dispositivo de captura de vdeo. Aps a captura do vdeo cada imagem ser processada, interpretada e transformada, em tempo real, em sadas que podero se tornar comandos vlidos para o controle de tais dispositivos. Palavras-chave: Viso Computacional; Interao Homem-Computador; OpenCV; Reconhecimento de Gestos; Anlise de Imagens. ABSTRACT Title: A motion capture system for electronic equipment control This monograph presents the development of a system that runs the recognition of a hand.This system will try to find, in the movements of the hand, predefined gestures. When a gesture is recognized as valid, the system will have an output that can be used as na input command in interfaces that communicate with electronic equipment, robots and more. The capture of movements and gestures of the user's hand will be done through a video capture device. After the video capture, each image will be processed, interpreted and transformed, in real time, in outputs that may become valid commands to control such devices. Key-words: Computer Vision; Human-Computer Interaction; OpenCV; Gesture Recognition; Image Analysis. 1 INTRODUO Atualmente a forma mais comum de interao entre humanos e mquinas atravs de teclado, mouse e toutch screen. A utilizao destes equipamentos possui uma interface de baixa compreenso para pessoas leigas no assunto. H muitos anos, busca-se minimizar ao mximo a dificuldade nas operaes que envolvem mquinas e equipamentos eletrnicos. Para isto, foram inventadas interfaces que buscam tornar tais operaes o mais parecidas possvel com as atividades do dia-a-dia das pessoas e que, tambm, fossem de fcil aprendizado (PREECE, ROGERS e SHARP, 2005). Computadores que possuem interfaces utilizando o recurso touch screen (tela de toque) so um grande exemplo desta busca pela minimizao das dificuldades no momento de operar um aparelho eletrnico. Com isto, elimina-se o uso do mouse, e facilita-se o uso do computador para quem ainda no se acostumou com o uso de tal ferramenta. Atualmente existem muitas pesquisas com o objetivo de desenvolver interfaces intuitivas e inteligentes, onde o ponto chave a captura de movimentos e gestos tornando o corpo, ou parte dele, como sendo a ferramenta de controle de aplicaes. A prova da busca por abolir equipamentos como mouse e teclado desta nova interface de interao humano- computador o lanamento ao pblico do mais novo equipamento da Microsoft na rea de consoles de vdeo games, chamado Kinect. Ele possui como principal foco a utilizao de cmeras que fazem o rastreamento do corpo, pegando suas posies e movimentos e utilizando-os como comandos para os aplicativos. Tudo isto sem a necessidade do uso de nenhuma espcie de controle (XBOX, 2010). Na Figura 1 possvel ver uma imagem em que foi utilizada a movimentao do corpo do jogador para comandar o aplicativo. Figura 1 Jogador executando comandos atravs do Kinect 13 Uma das reas de aplicao das interfaces de comunicao, entre homens e mquinas, a robtica. A robtica uma rea da tecnologia que abrange reas como a Engenharia Mecnica, Engenharia Eltrica e Inteligncia Artificial, dentre outras. Robs podem ter inmeros formatos e tamanhos. Atualmente os robs so utilizados em linhas de produo para aumentar a produtividade, a padronizao e diminuir os riscos de acidentes com pessoas. Existem, tambm, robs submarinos que so utilizados para explorar o fundo do mar. Independentemente do tamanho, forma ou aplicao que o rob ter, ser necessrio ter uma interface de comunicao entre o ser humano e a mquina. Esta interface pode ser predefinida, onde o rob executar sempre a mesma rotina de atividade, como o caso dos robs de linha de produo de uma fbrica de automveis. A interface tambm pode ser composta de controles que utilizem botes para o envio dos comandos para o rob. Para a criao de interfaces de comunicao possvel utilizar a realidade virtual. A realidade virtual permite simular ambientes reais dentro de um mundo totalmente virtual, bem como ter ambientes virtuais e utilizar elementos do mundo real, misturando-se e interagindo, com o mundo virtual. Este o ponto que move a realidade virtual e faz com que ela evolua. a mistura entre o mundo virtual e o mundo real buscando torn-los o mais prximos possvel. Um exemplo desta fuso seria a possibilidade de se enxergar e tocar um objeto que somente existe virtualmente, isso atravs de projetores de imagem em 3D e emuladores de tato. Neste trabalho desenvolveu-se uma interface de captura de movimentos procura intermediar esta interao entre homem e mquina, analisando e interpretando seus movimentos. Em seguida, a interface envia comandos repassados ao equipamento eletrnico, que executa as aes desejadas e comandadas pelo usurio. Sempre focando a utilizao de movimentos intuitivos e que sejam do cotidiano do indivduo que estar operando o sistema de interface. O restante desta monografia est dividida da seguinte forma: o Captulo 2 apresenta a fundamentao terica; a seguir, o Captulo 3 apresenta a definio do projeto; o Captulo 4 apresenta o desenvolvimento do trabalho; o Captulo 5 apresenta os testes e anlises de resultados; e, por fim, so apresentadas a Concluses e as Referncias. 2 FUNDAMENTAO TERICA Um dos conceitos importantes para dar incio ao desenvolvimento deste trabalho o entendimento de padres de imagens. Todo objeto possui um formato. Entende-se por formato de um objeto o contorno de sua forma em um espao 2D ou 3D. Assim o formato de uma bola esfrico, o de um tabuleiro de xadrez quadrado. Para que se possa fazer a extrao dos contornos de uma imagem adquirida de uma webcam, necessrio usar um algoritmo para a deteco de bordas, que so os contornos de suas formas. Existem vrios algoritmos para deteco de contornos, um deles o algoritmo de Canny. Na Figura 2, possvel ver o algoritmo aplicado sobre uma imagem simples, de alto contraste e de fcil anlise. Nesta figura foram identificados basicamente padres circulares, e possvel notar que, para cada padro de crculo, foi utilizada uma cor. Os crculos mais arredondados e os crculos com formato oval no sentido vertical foram contornados com a cor vermelha, j os crculos de circunferncia mais oval no sentido horizontal, foram contornados com a cor verde, independentemente do tamanho do crculo. Pois, neste caso, o algoritmo foi destinado a identificar crculos que correspondessem a um padro, e no a uma figura de tamanho esttico. Figura 2 Imagem original e imagem com a aplicao do algoritmo 1
1 Imagem obtida a partir de um dos exemplos de aplicaes existentes nos diretrios de instalao da ferramenta OpenCV. 15 2.1 REALIDADE VIRTUAL A realidade virtual tem como objetivo tornar o mundo virtual o mais parecido possvel com o mundo real atravs de emulao de viso, tato ou qualquer que seja o sentido humano utilizado para esta simulao. Consegue-se isto criando artifcios que faam com que o usurio, ao entrar em um mundo virtual, no perceba que no est manipulando algo irreal, achando que o que ele est manipulando virtualmente um objeto existente. Somente possvel isto com o desenvolvimento de interfaces que consigam simular esta interao e consigam imitar o objeto real no mundo virtual. Alm de se ter uma interface que faa com que o usurio desprenda-se de certas ferramentas para a utilizao de equipamentos eletrnicos, necessrio fazer com que o usurio assimile os movimentos que ele est efetuando com as aes que esto sendo executadas, com a maior facilidade possvel, para que tanto o aprendizado como a utilizao se tornem de fcil compreenso e assimilao. Tornando, assim, a utilizao agradvel e dando a maior sensao de imerso no mundo virtual possvel. A eficincia na deteco dos movimentos a maior responsvel pela sensao de imerso. a partir da deteco, anlise e interpretao dos movimentos que possvel executar a ao de forma correta. Para a deteco destes movimentos, existem dispositivos de absoro de movimentos que fornecem a posio de certa parte do corpo. Estes dispositivos podem ser mecnicos, acsticos, magnticos ou pticos. Os dispositivos de rastreamento mais utilizados at hoje so os magnticos, porm a grande tendncia a da utilizao de dispositivos pticos. Os rastreadores pticos utilizam imagens para a deteco dos movimentos, e esta caracterstica faz com que, para a utilizao destes sensores, no haja limitao de movimentos ou, at mesmo, desconforto no uso devido a fios conectados a, por exemplo, uma luva. 2.2 VEX A VEX Robotics uma empresa que desenvolve e fabrica kits de robtica, cujo objetivo educacional, com foco tanto no meio acadmico quanto na rea infantil. A finalidade destes kits a introduo das pessoas no mundo dos robs, tendo em vista o desenvolvimento de equipamentos que auxiliem em tarefas do dia-a-dia. Com este kit, possvel desenvolver diversos modelos de robs, cada um com um formato e finalidade de uso diferente. Como possvel ver na Figura 3, estes kits so compostos, basicamente, por motores, engrenagens, rodas e sensores. Tambm possvel adquirir peas sobressalentes, caso seja necessrio, para a construo de determinado rob (VEX, 2010a). 16 Figura 3 Alguns componentes do Kit da VEX Robotics A escolha pela utilizao do kit VEX neste projeto foi devido grande possibilidade de movimentos que ele proporciona e facilidade em desenvolver, assim como o prprio rob, uma aplicao de comunicao com o ele. 2.3 OPENCV OpenCV (Open Source Computer Vision) uma biblioteca para o desenvolvimento de aplicativos na rea de viso computacional. Atravs dela, possvel fazer a anlise, interpretao e processamento de imagens em tempo real (BRADSKI e KAEHLER, 2008). Ela multiplataforma e totalmente livre para uso acadmico e comercial, bastando seguir o modelo de licena BSD. A verso 1.0 foi lanada no final do ano de 2006 e foi desenvolvida nas linguagens de programao C e C++. Atualmente ela est na verso 2.0, e d suporte tambm para desenvolvedores Phyton que desejem utiliz-la em seus projetos. Possui mais de 500 funes que podem ser aplicadas nas reas de Interao Homem-Computador (IHC), identificao de objetos, reconhecimento de face, tracking (seguir), reconhecimento de movimentos, dentre outras. OpenCV j possui um tempo considervel de vida e tambm possui muitos utilizadores. Trata-se de uma ferramenta que facilita o desenvolvimento de projetos que envolvam manipulao de imagens e que, assim, contribui para aumentar tambm a confiabilidade nas aplicaes desenvolvidas com ela. Outro ponto forte o fato de que o OpenCV multiplataforma, possibilitando a usurios de diferentes sistemas operacionais desenvolverem seus projetos. Na Figura 4, possvel ver um pequeno trecho de cdigo que utiliza a biblioteca OpenCV, escrito em linguagem C, que exibe uma imagem esttica (foto) em uma janela, e aps a exibio, aplica uma funo para deixar a imagem somente com tons de cinza. Logo aps, aplica o algoritmo de Canny que identifica, e destaca contornando as bordas da imagem com linhas brancas. E aps isso exibe a imagem em preto e branco com suas bordas destacadas. 17 #include <highgui.h> #include <cv.h> IplImage* img_original = 0; IplImage* img_cinza = 0; IplImage* img_contorno = 0; int main(int argc, char** argv){ /* Carregar imagem de entrada */ img_original = cvLoadImage(argv[1]); /* Cria janela p/ exibir a imagem Original */ cvNamedWindow("Imagem Original", CV_WINDOW_AUTOSIZE); /* Exibindo a imagem na janela criada */ cvShowImage("Imagem Original", img_original); img_cinza = cvCreateImage(cvSize(img_original->width, img_original->height), IPL_DEPTH_8U, 1); /* Transforma imagem para tons de cinza */ cvCvtColor(img_original, img_cinza, CV_RGB2GRAY); img_contorno = cvCreateImage(cvSize(img_cinza->width, img_cinza->height), IPL_DEPTH_8U, img_cinza- >nChannels); /*Aplica algoritmo de Canny */ cvCanny(img_cinza, img_contorno, 0, 255, 3); /*Cria janela para exibir imagem contornos*/ cvNamedWindow("Contornos", CV_WINDOW_AUTOSIZE); /*Exibindo a imagem na janela criada */ cvShowImage("Contornos", img_contorno); int keyCode = cvWaitKey(); /* Aguarda tecla p/ fechar programa */ cvReleaseImage(&img_original); /* Desalocar imagem */ cvDestroyWindow("Imagem Original"); /* Desalocar janela */ cvReleaseImage(&img_contorno); /* Desalocar imagem */ cvDestroyWindow("Contornada"); /* Desalocar janela */ return(0); } Figura 4 Exemplo de cdigo-fonte que utiliza a biblioteca OpenCV O resultado do algoritmo apresentado na Figura 4 pode ser visto na Figura 5. Figura 5 Imagem original e imagem aps aplicao do algoritmo de Canny A biblioteca OpenCV possui recursos para efetuar o reconhecimento de padres nas imagens analisadas. Para isto necessrio estipular um padro para que a anlise seja efetuada (OPENCV, 2010). possvel usar, como exemplo, uma mo humana. Caso seja inserido dentro do sistema que o padro a ser reconhecido por ele ser uma mo aberta, o sistema procurar na imagem uma espcie de bloco com cinco extremidades. Ao se mostrar para a cmera uma mo aberta, ela ser reconhecida como um padro vlido, e o sistema passar a executar os procedimentos estipulados para o reconhecimento deste padro. No momento em que a mo for fechada, ela deixar de ser reconhecida, e o sistema passar acusar a falta de padres na imagem. por isto que se deve prever a maior parte das possveis posies e 18 gestos da mo, para que ela continue sendo reconhecida como uma mo mesmo aps sofrer, perante o sistema, modificaes de formato durante a movimentao. Dentro das aplicaes de exemplo existentes no diretrio de instalao da biblioteca OpenCV, est a aplicao de face detect (deteco de face). Dentro desta aplicao esto predefinidos, de forma genrica e mais abrangente possvel, os padres existentes em uma face. Neste reconhecimento feita, inicialmente, a procura de uma figura que possua o formato de uma cabea, ou seja, so buscados padres ovais dentro da imagem analisada. Aps encontrar um destes padres, esta regio analisada para verificar se realmente se trata de uma cabea. Esta diviso ser feita para que cada parte possua um tratamento diferente, ou seja, cada parte buscar um novo padro que corresponder s caractersticas existentes em uma face. Neste algoritmo so buscadas, basicamente, as caractersticas das partes da face correspondentes a boca, olhos e testa. Na Figura 6, possvel ver como feita esta diviso da face de todo o resto da imagem, e posteriormente como feita a subdiviso de cada uma das partes da face. Figura 6 Imagem original e a imagem com os padres a serem reconhecidos possvel ver o resultado do programa de deteco de face, encontrado no diretrio de instalao da biblioteca OpenCV, na Figura 7. Este sistema faz um crculo em torno da regio da imagem que ele identifica como sendo uma face vlida. 19 Figura 7 Resultado do programa de deteco de face Na Figura 7, possvel verificar a falha do sistema de deteco de face, pois ele no marcou como sendo faces vlidas as faces de trs pessoas existentes na imagem. Isto aconteceu porque ele no conseguiu identificar todas as caractersticas necessrias para que configurasse as faces como sendo vlidas. Levando em considerao o reconhecimento de movimentos e padres, possvel realizar o reconhecimento de uma mo dentro do sistema. Com isto fica mais claro o entendimento do funcionamento da interface que se pretende desenvolver. Tendo em mente a dificuldade em se identificar um padro dentro de uma imagem, possvel entender o grau de dificuldade ao se desenvolver um sistema deste gnero. Tendo como exemplo o sistema de deteco de face apresentado acima, possvel verificar que, para que a identificao de padres seja perfeita, necessrio um grau de processamento e de conhecimento de todas as possibilidades de posies do padro para que no haja falhas como as que ocorreram na Figura 7. Para os humanos o processo de identificao do que , ou no, uma face fcil, porm para um programa o qual no possui aprendizagem durante seu fluxo de execuo um trabalho suscetvel a falhas. 3 DEFINIO Este trabalho tem como objetivo capturar os movimentos realizados pelo usurio, analisando-os e interpretando-os para ter como sada um comando que possa ser utilizado por um dispositivo eletrnico. A interface utiliza uma cmera de captura de vdeo para detectar os gestos feitos pelo usurio. E tambm utiliza a biblioteca OpenCV para fazer a comparao das imagens captadas pela cmera, com padres j estipulados na prpria interface. Se a imagem coletada pela cmera coincidir com pelo menos um dos padres predefinidos dentro do sistema, a interface ter como sada comandos que podero ser utilizados em sistemas eletroeletrnicos, tais como robs, articulaes eletromecnicas, etc. Com isto, possibilita-se o manuseio de determinado equipamento eletrnico, sem a necessidade de se apertar botes, movimentar alavancas, etc. Como a interface ter como padres gestos e sinais sem grande complexidade, e de uso corriqueiro, isto facilitar muito a aprendizagem do manuseio do equipamento em questo. Os movimentos bsicos sero os que coordenaro a direo, tais como andar, parar, girar para a direita, girar para a esquerda, andar de r. Com isto tm-se as funes bsicas requeridas para movimentar um rob que se desloca, por exemplo, utilizando rodas. 3.1 GESTOS IDENTIFICADOS Existem oito gestos que so reconhecidos pelo sistema, cada um deles corresponde a uma sada que a interface envia quando reconhec-los. O sistema tem de reconhecer o gesto dentro de uma taxa de variao de tonalidade da pele, tamanho da mo ou do tamanho dos dedos. Os gestos esto ilustrados na Figura 8. 21 Figura 8 Gestos reconhecidos Basicamente, o sistema faz a contagem dos dedos que esto estendidos, contando desde zero dedos at cinco dedos. A nica particularidade existente na contagem no caso de encontrar apenas 1 dedo estendido. Neste caso o sistema far a identificao de qual lado que o dedo est apontando, podendo ser para cima, para direita ou para esquerda. Todos os gestos que foram mostrados na Figura 8 foram feitos com a mo direita, mas no existe restrio alguma quanto a faz-los com a mo esquerda. O usurio poderia ter problemas para utilizar o sistema no caso de no possuir algum dedo. 3.2 SINAIS DE SADA possvel fazer com que um programa gere sadas, bem como possvel aproveitar estas sadas utilizando-as como entrada em outro programa. Como mostrado anteriormente, cada um dos gestos reconhecidos pelo sistema possuir uma interpretao diferente, ou seja, cada gesto far com que o sistema execute um procedimento diferente. Cada procedimento gerar, ao seu final, uma sada correspondente ao gesto identificado. Esta sada poder ser utilizada em qualquer sistema que d suporte a um recurso como este. A finalidade do desenvolvimento deste projeto para que se utilize esta interface em sistemas que movimentem equipamentos eletrnicos, mas como no se limitou a interface a um sistema em especfico, pode-se utiliz-la onde ela melhor se enquadrar. A ideia a de gerar sadas baseadas em caracteres, que tenham alguma relao com o gesto que est sendo identificado para que sejam de fcil interpretao. Como, por exemplo, quando se identificar o gesto da mo aberta, a interface envia o caractere P. Ao se identificar o gesto correspondente mo com dois dedos estendidos, a interface envia o caractere T. No momento em que a interface de reconhecimento de gestos identificar o gesto de um dedo da mo apontando para cima, gerar uma sada com o caractere F. Busca-se fazer com que os gestos tenham alguma relao lgica com o movimento que o equipamento eletrnico executar. No Quadro 1, cada gesto e a sua sada correspondente so apresentados 22 Quadro 1 Gestos reconhecidos e suas respectivas sadas Gesto Sada Possvel Movimento 0 dedos X - 1 dedo para cima F Frente 1 dedo para direita D Direita 1 dedo para esquerda E Esquerda 2 dedos T Trs 3 dedos Y - 5 dedos P Parar Os gestos 0 dedos e 3 dedos poderiam ser utilizados para qualquer outro movimento que um equipamento eletrnico tivesse. Todos os possveis movimentos foram baseados nos que o kit VEX poderia executar com a configurao que foi utilizada para os testes deste sistema. possvel notar que o gesto 4 dedos no consta no Quadro 1, isto devido a este gesto servir para a entrada em um menu de configurao. Ou seja, no momento que o sistema reconhece o gesto 4 dedos, ele entra neste menu de configurao. Aps isto, todos os gestos executados tero outro significado. Alm dos sinais de sada citados no Quadro 1, existem mais 6 sinais que o sistema pode enviar para o equipamento eletrnico. Estas sadas so enviadas de duas maneiras, quando o usurio acessa o menu de configurao atravs do gesto 4 dedos ou quando utiliza o mouse para clicar diretamente na configurao desejada que est na tela principal do sistema de reconhecimento de gestos. As possveis sadas para estas configuraes esto listadas no Quadro 2. Quadro 2 Possveis configuraes e suas respectivas sadas Configurao Sada Velocidade Lenta L Velocidade Intermediria N Velocidade Rpida R Ciclo Curto 1 Ciclo Intermedirio 2 Ciclo Longo 3 As sadas que foram sugeridas para cada uma das aes so configurveis, deixando o usurio livre para mudar, inclusive, a quantidade de caracteres que enviada ao equipamento a cada comando. A seguir ser apresentado como efetuar as configuraes de sadas. 4 DESENVOLVIMENTO DO TRABALHO Neste captulo ser apresentado o sistema de reconhecimento de gestos, bem como sua interface e o que cada componente desta interface faz, funcionamento interno para o reconhecimento de cada gesto e possveis configuraes que o usurio pode aplicar sobre o sistema. 4.1 INTERFACE GRFICA DO SISTEMA Na Figura 9, possvel ver a interface grfica do sistema. Aps ser feita uma explicao de cada funcionalidade presente no sistema. Figura 9 Interface grfica do sistema de reconhecimento de gestos Na Figura 9, foram enumeradas as funcionalidades do sistema de 1 at 11. Cada nmero corresponde a: Nmero 1: imagem original com a aplicao de algumas figuras geomtricas, como crculos e linhas retas, para que possa ser visualizado o que o sistema est identificando na imagem; 24 Nmero 2: exibe a imagem aps o filtro utilizado para deteco dos pontos que possuem colorao de pele. Esta imagem possuir apenas duas cores, preto e branco. Os pontos que estiverem pintados de branco so os pontos que foram considerados como pontos de pele. Os pontos que estiverem pintados de preto so os que no foram reconhecidos com pontos com tonalidade de pele; Nmero 3: possibilita a configurao da velocidade de locomoo do equipamento eletrnico quando ele receber os comandos de movimentao. Ao clicar em cada uma das opes, o sistema envia o respectivo comando de alterao de velocidade para o equipamento; Nmero 4: abre uma tela que possibilita a configurao das sadas que cada comando enviar esta tela pode ser visualizada na Figura 10 e cada uma das suas funcionalidades sero explicadas a seguir; Nmero 5: possibilita a configurao do tempo que o equipamento eletrnico ir se locomover quando receber comandos de movimentao. Ao clicar em cada uma das opes, o sistema envia o respectivo comando de alterao de velocidade para o equipamento; Nmero 6: este boto faz com que o sistema inicie e, aps ter iniciado, sua funo a de parar o sistema de captura; Nmero 7: a escolha do nmero de frames possibilita o controle do nmero mnimo de quadros, com o mesmo gesto, para que s ento o sistema reconhea-o como sendo um gesto vlido. Com esta configurao diminuem-se os erros ocorridos por falsos positivo onde, por apenas alguns instantes, foi reconhecido um gesto diferente ao que se est executando na frente da cmera; Nmero 8: representa o tempo em que o sistema aguardar, aps enviar um sinal, para s ento enviar outro sinal. Esta funcionalidade evita o congestionamento de sinais de sada ocasionados por atraso de hardware, sejam eles de origem do prprio computador ou do equipamento eletrnico; Nmero 9: faz uma listagem de todos os dispositivos de vdeo encontrados no computador, possibilitando a seleo de qual entrada de vdeo ser utilizada para a captura das imagens; Nmero 10: faz uma listagem de todas as portas seriais encontradas no computador, possibilitando a seleo de qual porta que receber os sinais de sada do sistema de reconhecimento de gestos; Nmero 11: exibe qual o sinal que est sendo identificado no momento. As possveis exibies esto listadas, juntamente com suas respectivas descries, no Quadro 3. 25 Figura 10 Tela de configurao de sadas Na Figura 10, foram enumerados de 1 a 4 cada um dos componentes da tela de configurao de sadas, que aceitam interao do usurio. Cada nmero corresponde a: Nmero 1: possibilita a seleo do comando que ir ser configurado. Aps selecionar o comando, exibida, no item de nmero 2, a sada correspondente ao comando selecionado; Nmero 2: mostra a sada que corresponde ao comando selecionado no item de nmero 1. Este item possibilita que o usurio digite o que ele deseja que seja enviado ao equipamento eletrnico quando for executado o gesto selecionado no item de nmero 1; Nmero 3: este boto faz o salvamento do que est escrito no item de nmero 2 atribuindo este valor ao gesto que estiver selecionado no item de nmero 1; Nmero 4: fecha a tela de configurao de sadas. Todas as configuraes so salvas em um arquivo XML no diretrio em que o sistema de reconhecimento de gestos estiver sendo executado. Isto d a possibilidade de, aps o fechamento do sistema, reabri-lo com as configuraes que foram efetuadas anteriormente. Quadro 3 Listagem das possveis exibies de sinais de sada Sinal Significado / No foi identificada uma figura de mo vlida 0 Identificado 0 dedos estendidos 1-F Identificado 1 dedo estendido apontando para cima/frente 1-D Identificado 1 dedo estendido apontando para a direita 1-E Identificado 1 dedo estendido apontando para a esquerda 2 Identificado 2 dedos estendidos 3 Identificado 3 dedos estendidos 5 Identificado 5 dedos estendidos Alm das telas apresentadas at o momento, existe mais uma cuja nica forma de acesso com o sistema em pleno funcionamento e efetuando o gesto de 4 dedo. Esta tela no possui outra forma de acesso devido ao fato de que ela simplesmente faz a mesma configurao que as funcionalidades de velocidade e tempo de ciclo apresentados anteriormente, com a diferena que esta tela no pode ser controlada pelo mouse. A nica forma de interagir com ela atravs de gestos. A Figura 11 mostra o layout desta tela. 26 Figura 11 Tela de configurao de Velocidade e Tempo de ciclo via gestos Os itens exibidos pela tela mostrada na Figura 11 so basicamente dois: Nmero 1: representa o nmero de dedos que devem ser reconhecidos como estando estendidos. Ao passo que se o usurio fizer o gesto de 1 dedo (indiferentemente se o dedo est apontando para cima, direita ou esquerda) a tela mudar as opes disponveis. As opes podem ser vistas na Figura 12. Nmero 2: descrio de qual opo corresponde ao nmero de dedos que est ao lado. Ao que o usurio fizer o gesto de 2 dedos o sistema mudar as opes exibidas, apresentando as opes que podem ser vistas na Figura 13. Figura 12 Tela de configurao de velocidade atravs de gestos 27 Figura 13 Tela de configurao de tempo de ciclo atravs de gestos No momento em que o sistema estiver exibindo as telas demonstradas na Figura 12 e na Figura 13, e quando o sistema reconhecer que o usurio estiver executando o gesto correspondente s opes de 1, 2 ou 3 dedos, ele enviar ao equipamento a sada correspondente quela configurao. No caso de ser identificado o gesto de 5 dedos o sistema fechar a tela de configurao e voltar para a tela principal do sistema. importante ressaltar que no momento em que o usurio estiver visualizando qualquer uma das telas de configurao, os gestos feitos na frente da cmera deixam de ser reconhecidos como gestos de controle do equipamento eletrnico, passando a ser somente gestos de configurao. 4.2 CONFIGURAO UTILIZADA PARA O KIT VEX O kit foi montado de maneira que possusse uma configurao que possibilitasse sua movimentao sem grande complexidade de comandos. Ele possui a aparncia de um carro com quatro rodas. Porm sua movimentao baseada na movimentao de tanques de guerra, ou seja, para efetuar as converses ele no muda o ngulo das rodas, ele apenas faz com que as rodas de cada lado girem em sentidos diferentes. Isto possibilita que as converses sejam efetuadas de maneira que no seja necessrio ocupar nenhum espao alm do que j est sendo ocupado pelo equipamento, pois ele gira em torno de seu prprio eixo. Na Figura 14, possvel ver uma ilustrao do que foi explicado anteriormente. Figura 14 Possveis comportamentos do veculo em funo do sentido de suas rodas 28 Esta configurao de locomoo foi escolhida devido facilidade de se trabalhar somente com dois motores, no sendo necessrio preocupar-se com rotao de rodas para efetuar as converses. A Figura 15 mostra a montagem utilizada para o kit VEX. Figura 15 Montagem do kit VEX A comunicao do computador com o rob est sendo feita atravs de um cabo USB- Serial que acompanha o kit. A escolha por este meio de comunicao foi devido praticidade de instalao. Basta instalar o driver do cabo, o que gera uma porta Serial (COM) virtual. A utilizao deste meio de comunicao deixa o equipamento limitado a um pequeno espao para efetuar seus movimentos. Esta desvantagem acaba se tornando nula se comparada s adaptaes necessrias para fazer a comunicao do equipamento de outra forma. 4.3 AMBIENTE DE DESENVOLVIMENTO DO KIT VEX Para o desenvolvimento de aplicaes para o kit VEX foi utilizado um ambiente de desenvolvimento integrado gratuito chamado MPLab (MICROCHIP, 2010a). Esta escolha foi devido necessidade de se ter um ambiente sem limitaes e que proporcionasse uma boa produtividade. Para ser possvel trabalhar com o VEX utilizando o MPLab foi instalado no ambiente o framework WPILib, que rene funcionalidades para programao em robs (WPILIB, 2010). Tambm foi necessria a instalao do compilador MCC18, que possui alguns recursos vlidos somente por um certo tempo, mas os recursos necessrios para o desenvolvimento no VEX no possuem nenhuma limitao (MICROCHIP, 2010b). Para se fazer a transferncia de um programa executvel para a controladora do VEX foi utilizado o IFILoader (VEX, 2010b). 29 4.4 FUNCIONAMENTO DO SISTEMA Para o reconhecimento dos gestos o sistema necessita, basicamente, de 2 passos. O primeiro deles filtrar da imagem pontos potencialmente irrelevantes. O segundo a anlise, atravs de clculos e utilizao de funes do OpenCV, da parte da imagem que foi considerada como possuindo uma mo e identificar o gesto que ela est executando. 4.5 COMO OPENCV FOI UTILIZADO Para o desenvolvimento do sistema foi utilizado o EmguCV, que uma plataforma em .Net para a biblioteca OpenCV. Ela permite que se invoquem as funes do OpenCV nas linguagens compatveis com .Net como C#, VB, VC++, etc. (EMGUCV, 2010) A escolha pela utilizao desta plataforma deu-se pela possibilidade de criao de uma interface grfica que fosse mais amigvel para a utilizao do sistema. 4.6 FILTRAGEM DA IMAGEM A filtragem consiste em encontrar na imagem pontos que possuam colorao de pele. Como a tonalidade da pele varia de pessoa para pessoa e a luminosidade tambm influencia nesta variao, esta filtragem faz uma busca dentro de um valor mnimo e mximo de cor, diminuindo as falhas por no identificao de pele. Para a filtragem so enviados para a funo: a imagem a ser analisada, a cor mnima e a cor mxima que devem ser consideradas vlidas. O retorno desta funo uma imagem binarizada, onde todos os pontos que foram considerados como possuindo cor de pele esto pintados na cor branca. E todos os pontos que no foram considerados como tendo cor de pele na cor preta. Um exemplo desta filtragem pode ser visto na Figura 16. Figura 16 Exemplo de filtragem dos pontos de pele da imagem Para um melhor desempenho desta filtragem importante que o fundo no possua tonalidade de pele, seno o sistema passar a acusar praticamente a imagem inteira como possuindo cor de pele. 30 4.7 ANLISE Aps encontrar os pontos que possuem cor de pele, o prximo processo encontrar um contorno na imagem. considerado um contorno o conjunto de pontos em que existe um alto contraste de cor. Se esta anlise for feita em uma imagem preto e branco torna-se fcil a tarefa de identificar os contornos. Como possvel que outros pontos da imagem sejam identificados como possuindo cor de pele, poder existir mais de um contorno na imagem. Para isto existe uma condio que far com que o sistema somente v para o prximo passo se o contorno possuir uma rea maior que certo valor, caso contrrio o sistema considera como a no existncia de uma imagem vlida. Encontrando um contorno vlido, ser feita a identificao das falhas de convexidade existentes neste contorno. A parte de fora de um crculo pode ser considerada uma figura convexa. As falhas de convexidade so os pontos em que no fosse possvel formar esta figura de crculo. A Figura 17 destaca na cor branca o que deveria formar a figura circular, as linhas na cor magenta representam o incio de uma falha de convexidade e as linhas verdes so o fim da falha de convexidade. Figura 17 Convexidade e falhas de convexidade Tendo a informao de quantas falhas de convexidade foram encontradas, e onde esto localizadas, o procedimento seguinte o de anlise de cada uma das falhas. Esta prxima anlise consiste em fazer a medio de cada falha. Tendo em mente que cada dedo estaria representado por uma falha de convexidade, e que um dedo possui uma tamanho proporcional ao tamanho da mo, basta medir cada falha e comparar sua altura com a altura total do contorno que est sendo analisado. Para fazer a comparao do tamanho de cada falha de convexidade com o tamanho total da figura, so utilizados 3 parmetros. O primeiro deles representa a altura total da figura que est sendo analisada. O segundo parmetro o ponto em que se inicia a falha de convexidade. O terceiro parmetro representa o ponto interno da falha de convexidade. Cada um desses pontos pode ser visualizado na Figura 18. 31 Figura 18 Pontos analisados para identificao dos dedos Os parmetros que foram citados acima so, respectivamente, representados pelo retngulo branco, crculos vermelhos e crculos amarelos. Se cada um desses parmetros for nomeado como sendo a, b e c, a frmula utilizada para identificar um dedo na imagem est descrita na Figura 19. Figura 19 Frmula para identificar possveis dedos Esta frmula utilizada em cada uma das falhas de convexidade encontradas. Caso a expresso seja vlida, ela uma forte candidata a ser um dedo. Para ser considerada um dedo, a falha ainda precisa se enquadrar em mais 2 afirmaes: 1. O dedo precisa estar acima do centro da imagem; 2. A ponta do dedo, ou seja, o incio da convexidade deve estar acima da base do dedo, ou seja, do meio da falha de convexidade. Na Figura 20, possvel ver um exemplo de imagem em que foram encontrados 5 dedos. Cada um deles foi marcado com uma linha verde, que se inicia na base do dedo e termina na ponta do dedo. 32 Figura 20 Exemplo de imagem com 5 dedos identificados Como citado anteriormente, depois de feita a contagem de dedos presentes na imagem e no caso da identificao de apenas 1 dedo na imagem, o sistema consegue identificar qual a direo que a ponta do dedo est apontando. A tcnica utilizada a mesma utilizada pelo nosso crebro para distinguir qual o lado que um dedo est apontando, bastando olhar qual o lado que se encontra a base do dedo e qual lado se encontra a ponta do dedo. Para isto utilizada a posio X dos pontos que representam a ponta e a base do dedo. 5 TESTES E ANLISE DE RESULTADOS Todos os testes, para reconhecimento de gestos efetuados no sistema, foram feitos atravs da sada existente no prprio sistema. Os testes das sadas que o sistema envia foram efetuados utilizando o kit de robtica VEX. Os resultados obtidos na sada do prprio sistema so totalmente satisfatrios. O sistema pode sofrer algumas variaes nos resultados quando se tem pouca luminosidade no ambiente ou quando se tem um fundo que possua uma tonalidade de cor que se assemelhe com a cor da pele. Outro fator que influencia nos resultados obtidos a qualidade do equipamento de captura de imagens, seja ela na qualidade de imagem ou na velocidade de captura das imagens. A qualidade influencia na deteco correta do gesto e a velocidade de captura influencia na velocidade de reconhecimento do gesto e, consequentemente, na velocidade do envio do comando para o equipamento eletrnico. Durante todos os testes realizados o sistema demonstrou muita velocidade no processamento das imagens, apresentando apenas duas falhas que esto relacionadas velocidade. A primeira delas a lentido do prprio equipamento de captura de imagens. Devido sua lentido o sistema parecia possuir um delay, demorando a fazer o reconhecimento dos gestos. A outra lentido ocorria aps o envio do comando para o equipamento eletrnico. Em alguns momentos o equipamento demorava a executar o comando enviado. A demora aps enviar o comando pode estar sendo causada pelo prprio VEX ou pelo sistema que responsvel pelo gerenciamento dos comandos na porta serial. Esta demora foi o que motivou o desenvolvimento do mecanismo que possibilita, ao usurio, estabelecer um tempo de espera aps o envio do comando ao equipamento eletrnico. Antes do desenvolvimento deste mecanismo, o equipamento eletrnico ficava com muitos comandos acumulados e, mesmo aps o fechamento do sistema de reconhecimento de gestos, continuava executando os comandos atrasados. Ambos os problemas encontrados, na questo da lentido, esto fora dos domnios do sistema de reconhecimento de gestos, que se demonstrou muito eficiente na execuo das suas tarefas. O sistema no exige o uso de um computador com grande poder de processamento, somente necessita de um equipamento que possui um custo monetrio relativamente baixo que o dispositivo de entrada de vdeo. Dos testes que foram realizados com o kit VEX, foram registrados alguns momentos para a comprovao do funcionamento do sistema. Para que seja possvel perceber a movimentao do kit VEX foi utilizada uma seta em marrom, que servir como ponto de referncia do ponto de partida do equipamento. Na Figura 21, o kit VEX est na sua posio 34 inicial. Esta ser a posio em que o equipamento estar antes de todos os comandos que sero enviados ao equipamento. Figura 21 Posio que o equipamento estar antes dos comandos A Figura 22 apresentar o gesto 1 dedo para cima, que foi executado no sistema, e o movimento executado pelo equipamento aps receber o comando respectivo ao gesto. Figura 22 Gesto 1 dedo para cima e comportamento do kit VEX A Figura 23 apresentar o gesto 2 dedos, que foi executado no sistema, e o movimento executado pelo equipamento aps receber o comando respectivo ao gesto. 35 Figura 23 Gesto 2 dedos e comportamento do kit VEX A Figura 24 apresentar o gesto 1 dedo para direita, que foi executado no sistema, e o movimento executado pelo equipamento aps receber o comando respectivo ao gesto. Da perspectiva de quem olha a Figura 24, possvel perceber que o lado que o dedo est apontando para a esquerda, mas da perspectiva do usurio o dedo est apontando para a direita. Figura 24 Gesto 1 dedo para direita e comportamento do kit VEX A Figura 25 apresentar o gesto 1 dedo para esquerda, que foi executado no sistema, e o movimento executado pelo equipamento aps receber o comando respectivo ao gesto. Da perspectiva de quem olha a Figura 25, possvel perceber que o lado que o dedo est apontando para a direita, mas da perspectiva do usurio o dedo est apontando para a esquerda. 36 Figura 25 Gesto 1 dedo para esquerda e comportamento do kit VEX Os gestos foram todos efetuados com a mo direita, mas no teria problema algum se tivessem sido executados com a mo esquerda. Lembrando que antes da execuo de cada gesto o kit VEX foi reposicionado para a posio inicial. 6 CONCLUSO O sistema de reconhecimento de gestos foi desenvolvido com o objetivo de reduzir a utilizao de equipamentos como teclado, mouse e joystick para a movimentao de equipamentos eletrnicos. A proposta do trabalho foi o de desenvolver uma interface que capturasse, e identificasse, gestos feitos com a mo e, aps a identificao do gesto, enviasse um comando para o equipamento eletrnico. Este objetivo foi alcanado com sucesso, sendo que consegue identificar at 8 gestos diferentes e envia os respectivos comandos para o equipamento eletrnico que estiver ligado a uma das portas seriais. O sistema ainda proporciona a facilidade de no utilizar todas as suas configuraes de forma fixa, permitindo ao usurio fazer alteraes em suas configuraes da maneira que melhor lhe convir. Esta caracterstica traz um diferencial da interface de reconhecimento de gestos para outros sistemas. Isto faz com que ela esteja mais prxima da realidade dos programas que esto no mercado. Independentemente da rea de atuao do software, ele precisa se adaptar ou permitir sua adaptao realidade do usurio. Os resultados dos testes realizados para a identificao dos gestos so totalmente satisfatrios, sendo que o sistema realiza o reconhecimento dos gestos de forma muito eficaz e com grande desempenho. Porm os resultados obtidos nos testes realizados para as sadas de cada comando no so to satisfatrios quanto os resultados do teste anterior. A lgica utilizada foi a de se enviar um comando ao equipamento, o mesmo execut-lo durante certo tempo, parar e aguardar o prximo comando. Isto faz com que o equipamento fique andando e parando, causando uma certa aflio para quem est operando o sistema. O ideal seria que o sistema enviasse um comando em intervalos de tempo muito curtos, e que o equipamento no parasse de executar o comando anterior enquanto o prximo comando no fosse diferente. Para que isto funcionasse, o sistema de reconhecimento de gestos deveria ter 100%, ou muito prximo disso, de acerto na identificao dos gestos executados. Alm disso, no poderia haver atrasos entre o envio e recebimento dos comandos. Como estes dois problemas foram encontrados durante o desenvolvimento do sistema, optou- se por ter um equipamento que demore mais para terminar a tarefa desejada, mas que tenha segurana na hora de executar os comandos. possvel citar algumas sugestes de melhorias do sistema de reconhecimento de gestos. Elas so apresentadas a seguir: Reconhecimento de gestos mais complexos como, por exemplo, sequncia de gestos que iro representar um gesto nico. Esta ideia vem da linguagem de libras, onde uma palavra representada por uma sequncia de movimentos. 38 Criar uma interface de hardware para a interface de reconhecimento de gestos que possibilite a comunicao entre o computador e o equipamento eletrnico, sem a utilizao de fios. Fazer o reconhecimento de movimentos de outras partes do corpo alm das mos como, por exemplo, a movimentao do brao inteiro. Este desenvolvimento possibilitaria a utilizao da interface com equipamentos eletrnicos que possussem movimentos mais complexos como, por exemplo, braos robticos. Efetuar a calibragem da cor da pele a partir de imagens capturadas pelo prprio equipamento de captura de imagens. Este recurso diminuiria algumas falhas na identificao da cor de pele. REFERNCIAS BRADSKI, Gary; KAEHLER, Adrian. Learning OpenCV: Computer Vision with the OpenCV Library. Sebastopol: OReilly, 2008. 555 p. EMGUCV: OpenCV in .Net. [S.l.]: [s.n.], 2010. Disponvel em: <http://www.emgu.com/wiki/index.php/Main_Page>. Acesso em: 28 out. 2010. MICROCHIP: MPLAB Integrated Development Environment. [S.l.]: [s.n.], 2010a. Disponvel em: <http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dD ocName=en019469&part=SW007002>. Acesso em: 28 out. 2010. MICROCHIP: MPLAB C Compiler for PIC18 MCUs. [S.l.]: [s.n.], 2010b. Disponvel em: <http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dD ocName=en010014>. Acesso em: 28 out. 2010. OPENCV 2.1 C Reference. [S.l.]: [s.n.], 2010. Disponvel em: <http://opencv.willowgarage.com/documentation/c/index.html>. Acesso em: 28 out. 2010. PREECE, Jennifer; ROGERS, Yvonne; SHARP, Helen. Design de interao: alm da interao homem-computador. So Paulo: Bookman, 2005. 348 p. VEX Robotics Design System. [S.l.]: [s.n.], 2010. Disponvel em: <http://www.vexrobotics.com>. Acesso em: 28 out. 2010. VEX Robotics Design System. [S.l.]: [s.n.], 2010. Disponvel em: <http://www.vexforum.com/wiki/index.php/Software_Downloads>. Acesso em: 28 out. 2010. WPILIB: Simplified Robot Controller Programming. [S.l.]: [s.n.], 2010. Disponvel em: <http://users.wpi.edu/~bamiller/WPILib/>. Acesso em: 28 out. 2010. XBOX Kinect. [S.l.]: Microsoft Corporation, 2010. Disponvel em: <http://www.xbox.com/pt-BR/kinect#>. Acesso em: 28 out. 2010