Reconhecimento de Gestos com Segmentação de Imagens Dinâmicas Aplicadas a Libras Adilson Roberto Pavan Fábio Alexandre Caravieri Modesto Anhanguera Educacional [email protected] [email protected] Resumo O objetivo desse projeto é criar uma metodologia capaz de realizar o reconhecimento de gestos, onde a ideia é extrair características da mão segmentada, a partir de imagens dinâmicas capturadas de uma webcam e identificar padrões de sinais utilizados pelos usuários de Libras. O aplicativo desenvolvido com a metodologia descrita anteriormente será capaz de capturar as imagens e, com a utilização de filtros específicos de processamento de imagens, identificar as características de cada gesto realizado. Os dados identificados serão comparados a padrões préestabelecidos no aplicativo com o objetivo de identificar os sinais e reproduzir em forma de texto os sinais identificados. Com a criação desse mecanismo será possível desenvolver ferramentas para diversas áreas como educação, entretenimento e facilitar a comunicação dos usuários de Libras. Alem disso, pode ser utilizada como uma ferramenta de auxilio na alfabetização da própria Língua Brasileira de Sinais. 1. Objetivo O desenvolvimento desse projeto tem como objetivo criar uma técnica precisa para o rastreamento dos sinais de Libras, combinando a utilização de bibliotecas de visão computacional gratuitas com dispositivos de captura de imagens de fácil acesso como uma webcam, gerando assim um baixo custo computacional e tornando a técnica aplicável em diversas áreas. A expectativa é que o sistema seja capaz de rastrear todas as letras (sinais) do alfabeto, mas como o processo de criação dos classificadores exige muitas amostras e tempo de processamento a pesquisa se limitara a principio em letras suficientes para formação de palavras simples, mas até o momento foi possível identificar bons resultados, pois o classificador responsável por rastrear o sinal referente à letra “C” já está totalmente funcional e preciso. 2. Introdução Pesquisas relacionadas à visão computacional e reconhecimentos de gestos vêm ganhando grande espaço na comunidade cientifica. Com a evolução tecnológica dos computadores e dispositivos como câmeras, a capacidade de processamento e captura de imagens com alta qualidade facilita no desenvolvimento de diversos tipos de pesquisas, além disso, os preços acessíveis desses dispositivos possibilitam estudos e projetos em diversas áreas como robótica, educação, entretenimento, medicina, indústria e várias outras. Além da evolução dos dispositivos e da capacidade de processamento dos computadores, muitas bibliotecas de visão computacional foram desenvolvidas com o objetivo de facilitar e otimizar a captura, análise e manipulação das imagens, sendo que uma das mais conhecidas e escolhida para o desenvolvimento deste projeto é a OpenCV [4], desenvolvida pela Intel, é uma biblioteca gratuita que oferece mais de 500 (quinhentas) funções de manipulação, segmentação, rastreamento e reconhecimento de padrões [7]. Atualmente existem vários trabalhos relacionados a reconhecimento de gestos e, com a utilização da biblioteca OpenCV, tornou-se possível o desenvolvimento de técnicas de rastreamento em tempo real, dentre as quais identificou-se que a abordagem mais comum é a segmentação da Área de Interesse (Region Of Interest - ROI) através do algoritmo CamShift (Continuously Adaptive Mean-SHIFT), que captura a imagem original e realiza a distribuição de cores em um modelo de histograma, criando um padrão de cor a ser rastreado [3]. Após a segmentação pelo histograma – que para o caso do rastreamento da mão como área de interesse o mais comum a ser utilizado é a cor da pele – existem vários algoritmos disponíveis na biblioteca de detecção de bordas, tendo como um dos mais utilizados o algoritmo de Sobel [3]. Com a borda da imagem extraída pelo algoritmo de Sobel a última etapa é realizar a comparação com um template pré-definido através de uma técnica conhecida como Shape Matching [3] que é responsável por encontrar semelhanças entre as imagens capturadas e o template, respeitando certa taxa de erro. Toda a técnica descrita no parágrafo anterior faz parte de uma pesquisa realizada por [1] que demonstrou bons resultados na segmentação e no rastreamento dos gestos, porém existem técnicas similares que também apresentam resultados satisfatórios, mas que para a comparação das características extraídas utilizam métodos de classificação dos dados através de parâmetros definidos em um vetor, onde o autor [8] armazenou os mesmos em uma base de dados e posteriormente os utilizou para análise dos gestos. Outra proposta interessante é a utilização de classificadores [3], proposto inicialmente por [9], através da qual o sistema é capaz de identificar com velocidade os objetos, pois não depende de imagens em seqüência ou de um padrão de cores como em outras técnicas. O sistema utiliza a informação presente nas imagens capturadas em tons de cinza para realizar o rastreamento. Esta técnica exige o treinamento do classificador com muitas imagens para que se atinja uma precisão satisfatória, ela cria uma cascata de características em que a análise é realizada pelas diferenças de intensidade entre regiões distintas. O processo de treinamento, como mencionado acima, exige muitas imagens e capacidade de processamento para desenvolver um classificador preciso e robusto. A proposta inicial para esse projeto era utilizar técnicas como as mencionadas na pesquisa de [1]. Entretanto, durante o desenvolvimento foi possível identificar uma abordagem mais simplificada garantindo-se atingir resultados precisos e concretos, a partir da utilização de classificadores e detectores de bordas para realizar o rastreamento. O sistema utilizará um classificador criado por [5] que realiza o reconhecimento da mão fechada, em que o usuário poderá definir a área de interesse para executar os sinais de Libras. Após a definição, será aplicado o algoritmo de Sobel para extrair as bordas das imagens por meio da utilização dos classificadores Haar para identificação dos sinais. O processo de segmentação utilizará apenas o algoritmo de Sobel, pois a utilização de classificadores torna desnecessário extrair o fundo com o algoritmo CamShift, o que reduz consideravelmente os ruídos, pois realizando-se a análise diretamente na imagem segmentada a quantidade de decisões do classificador será menor e dessa forma o processamento será mais rápido e preciso. Além disso, a quantidade de imagens necessárias para realizar o treinamento de cada sinal será bem menor. 3. Metodologia O desenvolvimento do algoritmo de reconhecimento será baseado em contornos e em classificadores, possibilitando um melhor desempenho para o rastreamento em tempo real. Sendo assim, será utilizado a biblioteca OpenCV (Open Computer Vision), criada pela Intel e disponível para utilização sem limitações. A utilização da biblioteca facilitara muito o desenvolvimento do aplicativo final, pois reúne todos os recursos necessários para cada etapa do reconhecimento como, por exemplo, algoritmos para detecção de bordas, captura de imagens da webcam e comparação com as características definidas nos classificadores. As etapas de reconhecimento consistem basicamente em capturar as imagens dinâmicas pela webcam, utilizar o classificador criado por [5], responsável por realizar o reconhecimento da mão fechada para definir a área de interesse, aplicar o algoritmo de Sobel, responsável por extrair o contorno da imagem e realizar a análise com os classificadores treinados para identificar os sinais de Libras. A etapa mais importante para atingir a qualidade desejada é a criação dos classificadores mencionados anteriormente (ultima etapa), pois os mesmos serão responsáveis por analisar as imagens após a aplicação do filtro de Sobel, mas para atingir a precisão desejada será necessário realizar o treinamento de cada sinal com um número considerável de imagens. Esse processo, entretanto, será muito mais simplificado em comparação aos classificadores disponíveis pela própria biblioteca, pois as imagens utilizadas no treinamento já estão segmentadas pelo algoritmo de Sobel, o que elimina um considerável número de características. 4. Desenvolvimento O sistema será totalmente baseado na utilização de classificadores e na detecção de contornos. Desta forma, antes de aprofundar em cada etapa do processo, é necessário entender a metodologia básica envolvendo a técnica da cascata de classificadores. A pesquisa foi desenvolvida em etapas com o objetivo de facilitar e garantir a qualidade desejada, pois como o processo será realizado de uma forma mais simplificada em relação a outras técnicas mencionadas anteriormente, a etapa mais importante e que definirá a precisão do mecanismo é a criação dos classificadores que serão utilizados para realizar o rastreamento dos sinais. Durante essa seção serão apresentadas as informações básicas de cada etapa e o andamento das pesquisas que ainda não foram finalizadas, pois como será demonstrado a seguir o sistema já é capaz de rastrear um sinal com precisão, mas ainda é necessário repetir o processo de treinamento dos classificadores para os demais sinais de Libras. 4.1. Cascata de Classificadores A cascata de classificadores [9] é uma funcionalidade da biblioteca OpenCV que é responsável por identificar vários tipos de objetos em uma imagem, mas que ficou conhecida principalmente pelo reconhecimento da face como mostra o programa de exemplo FaceDetect disponível na biblioteca e a Figura 1. Figura 1 – Imagem extraída do livro “Learning OpenCV” [3] onde é possível observar o rastreamento da face utilizando a cascata de classificadores. A técnica utilizada no classificador consiste em uma análise de imagens em tons de cinza, em que as diferenças de intensidade de regiões distintas são comparadas a características armazenadas em uma arvore de decisões, que é desenvolvida através de um algoritmo de treinamento e um conjunto de imagens das quais são extraídas características especificas do objeto a ser rastreado. Para realizar o treinamento do classificador é necessário reunir um conjunto de imagens contendo o objeto de interesse, em diversas condições de iluminação e em posições diferentes. Este conjunto é chamado de amostras positivas. Após a criação das amostras positivas, é necessário reunir outro conjunto de imagens aleatórias onde o objeto de interesse não esteja incluído. Este outro conjunto é chamado de amostras negativas. Com a criação das amostras positivas e negativas é necessário apenas executar o algoritmo de treinamento que criara uma cascata de classificadores, onde todas as características do objeto serão armazenadas para posteriormente serem utilizadas na análise da imagem. O termo “cascata” é utilizado porque o algoritmo de treinamento cria uma série de classificadores que são analisados em seqüência, até que um padrão seja identificado. A Figura 2 mostra uma parte da cascata de classificadores que está disponível na biblioteca e que é utilizada para realizar o rastreamento da face. Figura 2 – Exemplo de uma cascata de classificadores armazenada em um arquivo XML que é utilizada na detecção de objetos pelas funções “cvLoad” e “cvDetectHaarCascade”. 4.2. Captura da Imagem A proposta do projeto é criar uma interação humano-computador (IHC) utilizando recursos de visão computacional, excluindo dispositivos como o teclado ou o mouse, utilizando especificamente imagens capturadas de uma webcam. Sendo assim, uma das etapas mais importantes é a captura da imagem, pois é a forma de entrada dos dados que serão tratados e analisados para realizar o reconhecimento dos sinais. A utilização da biblioteca OpenCV facilita esta etapa, pois possui recursos de captura de imagens de uma webcam ou de arquivos de vídeos através da utilização de comandos como cvCaptureFromCAM e cvCaptureFromAVI. 4.3. Seleção da Região de Interesse - ROI As pesquisas relacionadas à visão computacional e a reconhecimento de gestos utilizam como uma das principais técnicas a aplicação de filtros e análise das imagens a partir de uma área segmentada, ou seja, utiliza determinados critérios para identificar uma região de interesse na imagem original, o que reduz consideravelmente a quantidade de processamento para identificar o objeto desejado. Considerando várias técnicas abordadas anteriormente para realizar a segmentação da região de interesse, esse projeto tem como característica a utilização de um classificador [5], que realiza o reconhecimento da mão fechada, selecionando assim a ROI. Porém, para que uma nova ROI seja determinada, é necessário limpar a mesma através da ação de um botão e iniciar novamente o reconhecimento utilizando o classificador, como mostra a Figura 3. Figura 3 – Região de interesse selecionada pelo classificador da mão fechada e ao lado o botão “Limpar Segmentação” que é responsável por limpar o ROI. 4.4. Detecção de Bordas A principal característica da técnica envolvida na detecção de bordas é a localização de diferenças de intensidade luminosa entre regiões vizinhas. O algoritmo escolhido para realizar essa etapa da pesquisa é o operador de Sobel, que realiza uma análise na imagem original a fim de localizar diferenças de intensidades muito grandes entre regiões vizinhas e, assim, retornar essas regiões destacadas em uma escala de tons de cinza, o que caracteriza as bordas do objeto. Com a aplicação desse tipo de filtro, obtêm-se resultados muito bons, como mostra a Figura 4. Porém, sem a utilização de algoritmos de segmentação por cor de pele como o CamShift, o resultado contem muitos ruídos, que poderiam prejudicar a detecção dos sinais. Mas como a proposta dessa pesquisa é realizar o rastreamento através de classificadores treinados a partir de imagens, em que o algoritmo de Sobel já tenha sido aplicado, pode-se afirmar que o reconhecimento é mais rápido, mais preciso e mais robusto quando comparado aos resultados obtidos a partir da aplicação de outras técnicas. Figura 4 – A esquerda uma imagem original extraída de uma webcam e a direita a mesma imagem após aplicação do algoritmo de Sobel. 4.5. Treinamento do Classificador A última etapa e mais importante para que a aplicação final seja precisa e robusta é iniciar o treinamento dos classificadores que serão responsáveis por realizar o reconhecimento dos sinais. Como já descrito na seção “cascata de classificadores”, será necessário reunir amostras positivas e negativas para que o algoritmo de treinamento crie uma cascata de características e a utilize para realizar o rastreamento dos sinais. O levantamento bibliográfico teve grande importância nessa etapa do projeto, pois existe pouca documentação e exemplos sobre esse assunto, principalmente relacionado ao classificador responsável por rastrear a face que está disponível na biblioteca, pois não foi possível localizar nenhum detalhe de como o mesmo foi treinado. Estima-se que cerca de 5.000 amostras positivas e negativas tenham sido utilizadas. Os classificadores que serão desenvolvidos nesse projeto utilizarão um número muito menor de amostras, pois como já mencionado anteriormente, serão treinados a partir de imagens às quais o algoritmo de detecção de bordas já tenha sido aplicado, o que reduzira consideravelmente o número de características para realizar o rastreamento. A coleta das amostras será realizada através da utilização de uma ferramenta chamada Positivies Builder [2] que auxiliará na separação e seleção dos objetos de interesse, pois para a criação do classificador é necessário informar as coordenadas x e y de inicio do objeto, além de informar o tamanho do mesmo na imagem. O algoritmo de treinamento utiliza um arquivo onde são relacionadas todas as imagens com seus respectivos caminhos, as posições iniciais e o tamanho dos mesmos, para que a coleta das características seja iniciada, além de utilizar também outro arquivo com o caminho das amostras negativas para que um padrão seja criado entre as imagens que contem o objeto de interesse e as aleatórias onde os objetos não estejam incluídos. A Figura 5 mostra a configuração armazenada em um dos arquivos utilizados pelo algoritmo de treinamento. Entretanto, como essa etapa exige muito tempo apenas um classificador foi criado até o momento, mas através dele já é possível demonstrar que a técnica é totalmente viável e precisa. O objetivo nesta etapa do projeto é criar um classificador para cada letra do alfabeto, mas como o processo exige um número considerável de amostras a prioridade será criar letras ou sinais suficientes para a formação de palavras simples. Figura 6 – Detecção do sinal referente à letra “C” através do classificador criado com as amostras após a aplicação do filtro de Sobel. 5. Representação 3D com OpenGL e comparação com técnicas de marcadores A representação do sinal rastreado foi feita inicialmente em forma de texto, mas para demonstrar a utilização de outras formas foi construída uma mão 3D simples utilizando a biblioteca OpenGL. O sistema captura o centro das coordenadas do sinal realizado e passa as mesmas através de um arquivo XML, com o objetivo de sincronizar essas coordenadas com o aplicativo responsável por construir o objeto 3D. A Figura 7 mostra essa comunicação entre as coordenadas rastreadas e a construção do objeto 3D após o clique no botão “Gerar 3D”. Figura 5 – Exemplo de arquivo que será utilizado pelo algoritmo de treinamento para coletar as características das amostras positivas. Após muitos testes com as amostras e configurações dos parâmetros de treinamento, foi possível construir com sucesso um classificador preciso e robusto para o reconhecimento do sinal referente à letra “C”. A Figura 6 demonstra a detecção do sinal e sua representação em forma de texto. Figura 7 – Representação em 3D do sinal rastreado A criação dessa técnica de rastreamento demonstra que é possível utilizar os classificadores da mesma forma que os marcadores utilizados em outras bibliotecas como o ARToolkit. 6. Resultados A pesquisa e desenvolvimento da aplicação final demonstraram bons resultados, pois o sistema já é capaz de reconhecer uma área de interesse, realizar a detecção das bordas e rastrear o sinal de Libras referente à letra “C”. O objetivo final da pesquisa é desenvolver mais classificadores para que palavras completas sejam formadas, mas com a quantidade de amostras positivas (992) e negativas (224) utilizadas para a criação do classificador referente à letra “C”, pode-se perceber que os demais sinais após serem treinados nos mesmos parâmetros serão muito precisos e robustos como o criado até o momento. 7. Considerações Finais Esta pesquisa demonstrou uma técnica de reconhecimento de gestos, em que o objetivo é rastrear sinais de Libras a partir de imagens capturadas de uma webcam. O aplicativo já é capaz de capturar as imagens, realizar a segmentação através de detectores de bordas e analisar as características com os classificadores responsáveis pelo rastreamento dos sinais de Libras. A pesquisa demonstra uma melhoria significativa em relação a outras técnicas abordadas neste trabalho, sendo que a principal característica para obter resultados concretos é a utilização de classificadores treinados, a partir de imagens segmentadas que proporcionam velocidade e precisão no reconhecimento dos sinais. 8. Referências [1] BARBOSA, Bernardo; SILVA, Júlio. Interação Humano - Computador usando Visão Computacional. Revista Teccen: Edição Especial, Rio de Janeiro, v. 2, n. 1, p.9-16, mar. 2009. [2] BARNES, David. OpenCV HaarTraining - Object Detection with a Cascade of Boosted Classifiers Based on Haar-like Features. Disponível em: <: http://www.quotientrobotics.com/2010/04/opencv- haartraining-object-detection.html>. Acesso em: 15 maio 2010. [3] BRADSKI, Gary; KAEHLER, Adrian. Learning OpenCV: Computer Vision with the OpenCV Library. 1. ed. United States Of America: O’Reilly Media, 2008. 576 p. [4] INTEL. OpenCV FAQ: Open Source Computer Vision Library. Disponível em: <http://software.intel.com/enus/articles/intel-integrated-performance-primitives-intel-ippopen-source-computer-vision-library-opencv-faq/>. Acesso em: 10 mar. 2010. [5] J. Wachs, H. Stern, Y. Edan, M. Gillam, C. Feied, M. Smith, J. Handler. A Real-Time Hand Gesture Interface for Medical Visualization Applications. Applications of Soft Computing : Recent Trends. Springer Verlag, Germany, Séries: Advances in Soft Computing ,Tiwari, A.; Knowles, J.; Avineri, E.; Dahal, K.; Roy, R. (Eds.),2006. vol. 36, pp. 153-163. [6] LIBRAS. Portal de Libras destinado à comunidade surda, familiares, profissionais e pessoas interessadas em aprender. Disponível em: <http://www.libras.org.br/>. Acesso em: fev. 2010. [7] OPENCV. OpenCV Wiki: Tutoriais e exemplos de sua utilização. Disponível em: <http://opencv.willowgarage.com/wiki/>. Acesso em: 17 fev. 2010. [8] RIBEIRO, Hebert Luchetti. Reconhecimento de gestos usando segmentação de imagens dinâmicas de mãos baseadas no modelo de mistura de Gaussianas e cor de pele. 2006. 144 f. Dissertação (Mestrado) Curso de Engenharia Elétrica, Departamento de Escola de Engenharia de São Carlos, Universidade de São Paulo, São Carlos, 2006. [9] VIOLA, Paul; JONES, Michael. Robust Real-time Object Detection. In: SECOND INTERNATIONAL WORKSHOP ON STATISTICAL AND COMPUTATIONAL THEORIES OF, 2., 2001, Vancouver. Anais... . Vancouver: Second International Workshop On Statistical And Computational Theories Of Vision, 2001. p. 1 - 25.