Felipe Breve Siola Desenvolvimento de um software para reconhecimento de sinais em LIBRAS através de vı́deo Trabalho submetido à Universidade Federal do ABC como parte dos requisitos para a conclusão do Bacharelado em Ciência da Computação. Santo André 2010 Felipe Breve Siola Desenvolvimento de um software para reconhecimento de sinais em LIBRAS através de vı́deo Trabalho submetido à Universidade Federal do ABC como parte dos requisitos para a conclusão do Bacharelado em Ciência da Computação. Profo Dro Francisco José Fraga da Silva Orientador Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas - UFABC Santo André 2010 Resumo A LÍngua BRAsileira de Sinais - LIBRAS - é a forma de comunicação utilizada pela comunidade surda brasileira. Esta é uma lı́ngua espaço-visual estruturada com regras morfológicas, sintáticas e semânticas próprias. Para o reconhecimento dos sinais sendo realizados por um intérprete de lı́nguas de sinais é necessário levar em consideração a posição das mãos com relação ao corpo enquanto o sinal é realizado, a configuração das mãos durante a realização do sinal, a expressão facial do intérprete, além de outras caracterı́sticas. Esta grande quantidade de informações e a maneira como elas se relacionam são alguns dos principais fatores que dificultam a criação de um sistema de reconhecimento de lı́nguas de sinais. Este trabalho tem como propósito apresentar a fundamentação teórica, o desenvolvimento e os resultados obtidos durante a criação de um software capaz de reconhecer sinais em LIBRAS realizados de forma isolada e gravados em vı́deos digitais. iii Sumário 1 Introdução 1.1 1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Lı́nguas de Sinais 2 4 2.1 A LÍngua BRAsileira de Sinais - LIBRAS . . . . . . . . . . . . . . . . . . . 5 2.2 Representando Lı́nguas de Sinais . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.1 Sistema SignWriting . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.2 Sistema de Glosas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Processamento de Imagens 10 3.1 Imagens Digitais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Vı́deos Digitais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Modelo de cor HSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.4 Histograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.5 Segmentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.6 Backprojection 3.7 Momentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.8 Algoritmo Mean Shift 3.9 Algoritmo CamShift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.10 OpenCV: Open Computer Vision Library . . . . . . . . . . . . . . . . . . . 20 3.11 Processamento de Imagens e Lı́nguas de Sinais . . . . . . . . . . . . . . . . 21 4 Reconhecimento de Gestos 23 4.1 Processos de Markov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.2 Modelos Ocultos de Markov . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.2.1 Definição Formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 iv 4.2.2 4.3 Problemas relacionados aos HMMs . . . . . . . . . . . . . . . . . . 27 4.2.2.1 O problema da Avaliação . . . . . . . . . . . . . . . . . . 27 4.2.2.2 O problema da Decodificação . . . . . . . . . . . . . . . . 28 4.2.2.3 O problema do Aprendizado . . . . . . . . . . . . . . . . . 29 Ferramentas Computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3.1 HTK: Hidden Markov Models Toolkit . . . . . . . . . . . . . . . . . 31 4.3.2 GART: Gesture and Activity Recognition Toolkit . . . . . . . . . . . 31 5 Desenvolvimento do Software 5.1 32 Base de Vı́deos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.1.1 Restrições com Relação aos Vı́deos . . . . . . . . . . . . . . . . . . 32 5.2 Estrutura Geral do Software . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.3 Módulo de Processamento de Vı́deo . . . . . . . . . . . . . . . . . . . . . . 34 5.3.1 Pré-processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.3.2 Segmentação da Imagem . . . . . . . . . . . . . . . . . . . . . . . . 35 5.3.3 Vetor de Caracterı́sticas . . . . . . . . . . . . . . . . . . . . . . . . 38 5.4 Módulo de Reconhecimento de Sinais . . . . . . . . . . . . . . . . . . . . . 39 5.5 Execução do Software 5.6 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6 Considerações Finais 45 Referências Bibliográficas 47 v Capı́tulo 1 Introdução A LÍngua BRAsileira de Sinais - LIBRAS - é a forma de comunicação utilizada pela comunidade surda brasileira. Trata-se de uma lı́ngua de sinais completamente estruturada, com suas próprias e bem definidas regras morfológicas, sintáticas e semânticas. No ano de 2002, esta passou a ser oficialmente reconhecida como meio legal de comunicação, e ficou determinado que professores, educadores especiais e fonoaudiólogos deveriam ser capacitados a se comunicar tanto em Português como em LIBRAS 1 . Segundos dados do IBGE, existem no Brasil cerca de seis milhões de pessoas portadoras de deficiências auditivas em geral, sendo que destas, cerca de 170 mil são completamente surdas. Para a maior parte destas pessoas a lı́ngua natural principal utilizada para sua comunicação é a LIBRAS e não o Português. Pelo fato das lı́nguas de sinais não serem meras transcrições de lı́nguas faladas, é compreensı́vel a dificuldade de comunicação existente entre pessoas não surdas e surdas, mesmo que por meio da escrita, uma vez que pessoas surdas podem não ser alfabetizadas em Português. Uma ferramenta que constitui um passo inicial para facilitar a comunicação entre pessoas surdas e não surdas são os dicionários bilı́ngues, de lı́nguas orais e lı́nguas de sinais [Capovilla e Raphael 2001] [Lira e Souza 2008]. Um segundo passo é a existência de uma ferramenta de software que mapeia as palavras e frases em Português Brasileiro para os sinais correspondentes em LIBRAS [Rybená 2010]. Ferramentas desta natureza colocam os surdos em uma posição passiva na sociedade, uma vez que as mensagens em Português são disponibilizadas em LIBRAS, mas não o contrário. Ferramentas que realizam a tradução no sentido contrário, de lı́nguas de sinais para lı́nguas faladas, são 1 Lei federal número 10.436 de 24 de abril de 2002 1 escassas e ainda em desenvolvimento [Stein et al. 2007] [Souza e Vieira 2006] [Pistori e Neto 2003]. A grande dificuldade na criação destas ferramentas está na complexidade ligada ao problema, tanto no âmbito linguı́stico como no âmbito computacional. Com relação ao âmbito linguı́stico, a maior dificuldade se dá devido a falta de estudo sobre as lı́nguas de sinais, neste caso a LIBRAS [McCleary e Viotti 2007]. No âmbito computacional, a interpretação de uma frase em LIBRAS exige desde técnicas de processamento de imagens até técnicas avançadas de inteligência artificial para classificação de dados e tradução [Begun e Hasanuzzaman 2009] [Morrissey 2008]. Dado esta grande dificuldade de criação de uma ferramenta com este propósito, temos que uma possı́vel abordagem para seu desenvolvimento seria a divisão do sistema em blocos. O modelo proposto para o sistema é o apresentado na Figura 1.1. Os vı́deos com os sinais em LIBRAS seriam os dados de entrada sistema. O primeiro bloco do sistema consistiria no processamento do vı́deo de entrada para retirada de informações relevantes ao conteúdo do mesmo. Neste passo, são utilizadas técnicas de processamento de vı́deo, como reconhecimento de objetos, remoção de fundo, detecção de movimento, etc. O segundo bloco do sistema é o responsável pela classificação dos dados retirados dos vı́deos em uma forma escrita de LIBRAS. Para realizar esta tarefa, as principais técnicas utilizadas na atualidade são as técnicas de redes neurais artificiais e os Modelos Ocultos de Markov. Esta forma escrita de LIBRAS seria então enviada ao terceiro bloco do sistema, responsável por realizar a tradução da frase em LIBRAS escrita para Português Brasileiro. Neste passo, podem ser utilizadas técnicas de tradução automática, como tradução estatı́stica, baseada em regras, entre outras. A frase então traduzida é enviada ao quarto e último bloco, responsável por gerar áudio a partir do texto. Este trabalho em especı́fico consiste no estudo e desenvolvimento dos primeiro e segundo blocos do sistema, responsáveis pelo processamento do vı́deo de entrada e classificação do sinal LIBRAS, respectivamente. 1.1 Objetivos Este projeto de graduação teve como objetivo geral o desenvolvimento de um software capaz de processar e classificar sinais LIBRAS em vı́deos digital para uma forma escrita, com o intuito de realizar uma possı́vel futura tradução para o Português Brasileiro. Para a realização deste objetivo, o objetivo principal foi divido em quatro (04) objetivos especı́ficos. 2 Sistema de Tradução de LIBRAS para Português Vídeo Processamento de vídeo Dados do vídeo Classificação dos dados LIBRAS escrita Tradução Português escrito Texto para Voz Português falado Figura 1.1: Modelo em blocos do sistema proposto para tradução de sinais LIBRAS em vı́deo para o Português Brasileiro falado. O primeiro objetivo especı́fico refere-se ao estudo da LIBRAS, tanto com relação a sua estrutura em caráter linguı́stico como suas representações computacionais e escritas envolvendo também um levantamento do estado da arte de sistemas computacionais que trabalhem com LIBRAS. Este estudo teve como objetivo melhor compreender o modelo que deverá ser criado para representação e processamento dos dados presentes no sistema a ser desenvolvido. O segundo objetivo especı́fico foi o estudo das técnicas de processamento de vı́deo existentes e o estado da arte para extração de informações relevantes para reconhecimento de sinais e gestos de uma forma geral. O terceiro objetivo foi o estudo sobre técnicas de inteligência artificial utilizados na atualidade para classificação de dados de uma forma geral e as possı́veis utilizações para classificação de gestos extraı́dos de vı́deos. O quarto objetivo foi à implementação e validação do sistema como um todo. 3 Capı́tulo 2 Lı́nguas de Sinais Lı́nguas de sinais naturais não são somente transcrições de lı́nguas faladas. Trata-se de lı́nguas com estruturas próprias, e que assim como as lı́nguas faladas, apresentam uma evolução constante, adequando-se a necessidade de seus utilizadores. Todas as lı́nguas de sinais existentes possuem regras léxicas, sintáticas e semânticas próprias e utilizam de recursos não disponı́veis em lı́nguas faladas, como por exemplo, espacialidade [McCleary e Viotti 2007] [Pistori e Neto 2003]. Lı́nguas de sinais podem ser comparadas a lı́nguas faladas no que diz respeito à expressividade e flexibilidade, fatores dificilmente representáveis em lı́nguas escritas. Devido a esta flexibilidade, pessoas surdas, que utilizam lı́nguas de sinais, conseguem comunicarse muito mais rapidamente através destas do que através de lı́nguas escritas, fato que acontece também entre lı́nguas orais e lı́nguas escritas. Desta forma, muitos dos estudos na área de lı́nguas orais se aplicam também a lı́nguas de sinais [McCleary e Viotti 2007] [Pistori e Neto 2003]. As lı́nguas de sinais não são universais. A Ethnologue 1 cataloga atualmente um total de 130 lı́nguas de sinais em todo o mundo. Desta forma, uma pessoa brasileira surda que se comunica utilizando LIBRAS não é capaz de se comunicar com uma pessoa americana surda que utiliza a ASL (American Sign Language). Dentro de um mesmo paı́s é comum a utilização de diferentes dialetos em uma mesma lı́ngua de sinais, fato muito comum em paı́ses territorialmente grandes, como o Brasil. É possı́vel ainda, que mais de uma lı́ngua de sinais seja utilizada pela mesma comunidade surda [Pistori e Neto 2003]. A comunicação em lı́nguas de sinais faz uso do corpo do sinalizador como um todo, ou 1 http://www.ethnologue.com 4 seja, um sinal realizado não envolve somente movimentos das mãos, mas também movimentos de cabeça, tronco, braços e expressões faciais [Pistori e Neto 2003]. A forma com que o corpo se movimenta pode determinar ainda a intensidade do que esta sendo transmitido. Desta forma, o reconhecimento computacional deste tipo de lı́ngua se tornam extremamente complexos devido tanto a grande variedade de sinais que podem ser realizados quanto a grande variedade de formas que estes podem ser realizados. No entanto, em muitos casos é possı́vel determinar qual o sinal sendo realizado simplesmente avaliando a posição e movimentação das mãos com relação ao corpo [Fialho 2004]. A Figura 2.1 apresenta uma representação gráfica do espaço de sinalização utilizado por pessoas que utilizam-se de lı́nguas de sinais. É possı́vel verificar que este espaço de sinalização, requer que as ferramentas computacionais sejam capazes determinar não somente a localização em duas dimensões das mãos, mas sim a localização espacial em três dimensões das mãos e de todo o corpo do intérprete [Morrissey 2008]. Figura 2.1: Espaço de sinalização utilizado por um intérprete de lı́nguas de sinais. Retirado de [Morrissey 2008]. 2.1 A LÍngua BRAsileira de Sinais - LIBRAS A LÍngua BRAsileira de Sinais - LIBRAS - é a forma de comunicação oficial utilizada pela comunidade surda brasileira. Trata-se de uma lı́ngua natural de sinais completamente estruturada, com suas próprias e bem definidas regras morfológicas, sintáticas e semânticas, com origem na lı́ngua de sinais francesa [Capovilla e Raphael 2001]. No ano de 2002, esta passou a ser oficialmente reconhecida como meio legal de comunicação, e ficou determinado que professores, educadores especiais e fonoaudiólogos 5 deveriam ser capacitados a se comunicar tanto em Português como em LIBRAS 2 . Segundo dados do IBGE, existem no Brasil cerca de seis milhões de pessoas portadoras de deficiências auditivas em geral, sendo que destas, cerca de 170 mil são completamente surdas. Para a maior parte destas pessoas a lı́ngua natural principal utilizada para sua comunicação é a LIBRAS. Assim como em todas as lı́nguas de sinais, a LIBRAS é formada de um conjunto de formas básicas para as mãos, chamadas de configurações. É estimado que exista em LIBRAS um total de 46 configurações. Para a representação do alfabeto, por exemplo, são utilizadas 20 configurações estáticas, ou seja, que não exigem movimentos durante a sinalização, e 6 configurações dinâmicas, ou seja, exigem movimentação da mãos para representação (correspondentes as letras h, j, k, x, y, e z). A Figura 2.2 apresenta as 20 configurações estáticas que representam algumas das letras do alfabeto em LIBRAS [Pistori e Neto 2003]. Figura 2.2: Configurações estáticas que representam algumas das letras do alfabeto em LIBRAS. Retirado de [Pistori e Neto 2003]. 2 Lei federal número 10.436 de 24 de abril de 2002 6 Estas configurações do alfabeto, além de utilizadas para soletração de palavras, são comumente utilizadas para sinalização palavras em LIBRAS que não possuem sinal próprio, como por exemplo, palavras estrangeiras e nomes pessoais. As palavras em LIBRAS que possuem sinal próprio são representadas através da mistura de configurações das mãos e do posicionamento destas em relação ao corpo. A Figura 2.3 apresenta um exemplo de gravura utilizada em dicionários bilı́ngues para demonstração da execução de um sinal, no caso o sinal sendo representado é o da palavra “maça” [Capovilla e Raphael 2001]. Figura 2.3: Exemplo de gravura utilizada em dicionários bilı́ngues para demonstração da execução do sinal “maça”. Retirado de [Capovilla e Raphael 2001]. 2.2 Representando Lı́nguas de Sinais Para lı́nguas faladas, a única necessidade existente para duas pessoas se comunicarem é a necessidade de uma conseguir escutar a outra. Para a comunicação entre pessoas através da lı́ngua de sinais esta necessidade é substituı́da, sendo necessário que uma pessoa seja capaz de enxergar a outra [Morrissey 2008]. Para a realização de procedimentos computacionais com lı́nguas de sinais, como por exemplo, tradução ou armazenamento, é necessário uma forma escrita de representação destas. Um das principais diferenças entre lı́nguas de sinais e lı́nguas faladas está na falta de padrão para sistemas de escrita. Isto ocorre possivelmente tanto pela falta de estudo e investimento em lı́nguas de sinais como pela dificuldade de se expressar movimentos do corpo de forma escrita. Existem diversas formas de escrita de lı́nguas de sinais, sendo as mais utilizadas o sistema SignWriting e o sistema de glosas [Capovilla e Raphael 2001] [McCleary e Viotti 2007] [Morrissey 2008]. 2.2.1 Sistema SignWriting O sistema de escrita SignWriting é um modelo de escrita de lı́nguas de sinais proposto por [Sutton 1996], onde através de “gravuras” são representados os movimentos realizados 7 pelo corpo durante a execução do sinal. A Figura 2.4 apresenta a gravura que utiliza o modelo SignWriting para o sinal “maça” em LIBRAS [Martin 2000] [Capovilla e Raphael 2001]. Figura 2.4: Representação do sinal “maça” em LIBRAS usando o modelo SignWriting. Retirado de [Capovilla e Raphael 2001]. Esta representação possui como caracterı́stica principal o fato de representar o movimento do corpo realizado durante a sinalização. Contudo, este sistema de escrita requer do leitor um treinamento prévio tanto do sistema de escrita como da lı́ngua de sinais em questão, e principalmente, possui pouca utilidade computacional uma vez que são utilizadas figuras [McCleary e Viotti 2007] [Stein et al. 2007]. Entre os sistemas computacionais que utilizam o SignWritting como sistema de escrita dos sinais, destaca-se o Sign Web Message apresentado por [Souza e Vieira 2006]. Este permite ao usuário enviar mensagens via internet, utilizando o sistema como método de escrita. 2.2.2 Sistema de Glosas As glosas são sequências de caracteres que representam um sinal. Estas podem ser simples transcrições de uma lı́ngua escrita, como podem ser a junção de duas ou mais palavras na lı́ngua escrita para representação do sinal. A glosa MAÇA por exemplo, representa o sinal para a palavra “maça” em português. Já a glosa COMER PASSADO representa o sinal para o verbo “comer” conjugado em um determinado tempo verbal do Português [Martin 2000]. Este sistema não leva diretamente em consideração o movimento realizado pelo corpo para a sinalização. Devido a este fato, questões como intensidade e contexto são perdidas durante a escrita. Contudo, pelo fato do sinal ser representado somente por uma sequência de caracteres, muitas vezes transcrições diretas de uma lı́ngua falada, este sistema apresenta uma grande utilidade computacional e facilita o entendimento do que esta sendo transmitido [McCleary e Viotti 2007] [Stein et al. 2007]. 8 Com o intuito de aprimorar o significado das glosas com relação ao contexto do que está sendo transmitido, [McCleary e Viotti 2007] apresentam uma proposta de glosas com anotações adicionais. Estas anotações incluem, além da glosa em si, informações sobre a mão que realiza o sinal, a posição com relação ao corpo, expressões da face, entre outras caracterı́sticas que podem ser relevantes para compreensão do que está sendo transmitido. Esta proposta aumenta significativamente a utilização do sistema de glosas para representação de expressividade durante a sinalização e pode ser utilizada de forma a facilitar tarefas como a tradução de lı́nguas de sinais, onde muitas vezes o contexto de um frase apresenta grande relevância para um bom resultado do processo de tradução [McCleary e Viotti 2007]. São diversos os trabalhos computacionais que utilizam o sistema de glosas para representação de lı́nguas de sinais. [Stein et al. 2007] apresenta um sistema de tradução completo da ASL (American Sign Language) utilizando o sistema de glosas como intermediário [Stein et al. 2007]. Com relação a LIBRAS, o software Rybená [Rybená 2010] apresenta um sistema capaz de traduzir Português em sua forma escrita para LIBRAS na forma de glosas, juntamente com gravuras animadas dos sinais sendo realizados. Devido a facilidade de manipulação e representação das glosas, este será o sistema de representação utilizada neste trabalho. 9 Capı́tulo 3 Processamento de Imagens Sistemas computacionais que utilizam como entrada dados vindos de dispositivos diferentes de teclado e mouse podem ser classificados em duas categorias: intrusivos e nãointrusivos. Sistemas computacionais ditos intrusivos são aqueles que requerem do usuário a utilização de um dispositivo eletrônico adicional utilizado junto ao corpo do usuário para obtenção de dados para o processamento, como por exemplo, luvas de rastreamento (Figura 3.1). Sistemas desta natureza possuem como caracterı́stica o fato de serem pouco portáteis e necessitarem do usuário a obtenção e utilização de equipamentos especı́ficos. Contudo, estes equipamentos apresentam uma facilidade na obtenção dos dados e consequentemente diminuem o pré-processamento de dados necessário nas aplicações [Fialho 2004]. Figura 3.1: Luva de rastreamento de movimento dos dedos. http://www.souvr.com. 10 Retirado de Sistemas computacionais não-intrusivos são aqueles que não requerem do usuário o uso de um dispositivo junto ao corpo, por exemplo, sistemas que utilizam câmeras digitais para entrada de dados. A principal caracterı́stica destes sistemas é a facilidade de uso por parte do usuário, que não necessita acostumar-se com dispositivos conectados a seu corpo. Em contra partida a esta facilidade ao usuário, sistemas não-intrusivos requerem um processamento adicional para obtenção dos dados de entrada do sistema [Fialho 2004]. Neste trabalho será desenvolvido um sistema computacional que pode ser classificado como parcialmente intrusivo, fazendo uso de câmeras digitais para obtenção dos dados de entrada do reconhecedor de sinais, mas requerendo do usuário a utilização de luvas plásticas coloridas. Esta escolha tem como principal objetivo facilitar a etapa de processamento de imagens para extração dos dados de interesse dos vı́deos, como por exemplo, as posições do rosto e das mãos em cada quadro do vı́deo. Neste Capı́tulo serão apresentados os conceitos essenciais para compreensão das técnicas de processamento de imagens utilizadas nos Capı́tulos seguintes deste trabalho. 3.1 Imagens Digitais Uma imagem digital pode ser compreendida como uma matriz finita de elementos chamados pixels. As dimensões desta matriz, juntamente com a quantidade de bits utilizadas para representação de cada pixel definem a qualidade de uma imagem digital. Estas caracterı́sticas estão ligadas principalmente a implementação do aparelho que captura a imagem digital. Câmeras digitais modernas são capazes de captar imagens de até 4000 por 3000 pixels, resultando em imagens de altı́ssima qualidade 1 . [Gonzalez 2010] Imagens digitais gravadas em tons de cinza são matrizes de pixels, onde o valor de cada pixel corresponde a intensidade de luminância. Ou seja, caso sejam utilizados 8 bits para representar cada pixel, teremos que a luminância dos pixels podem variar de 0 (preto) até 255 (branco). Em imagens digitais coloridas, no modelo de cores RGB, cada pixel possui 3 valores associados, sendo um valor para a intensidade da cor vermelha (R), um valor para a intensidade da cor verde (G) e um valor para a intensidade da cor azul (B). A combinação destes três valores é capaz de gerar a visualização de qualquer outra cor [Gonzalez 2010]. É possı́vel utilizar o modelo de cores RGB, ou qualquer outro modelo de cores ndimensional (também chamado n-canais), como matrizes n-dimensionais ou matrizes co1 http://www.sony.pt/product/dsc-w-series/dsc-w210 11 muns, onde cada pixel é representado por 24 bits, por exemplo (8 bits para cada cor de modelos de 3 dimensões). Existem diversos modelos de cores para representação digital, como por exemplo, HSV, HSL, YCbCr, etc., sendo o modelo RGB o principal modelo utilizado em dispositivos de captura de imagens e o modelo HSV em técnicas de localização de objetos baseado em cor [Fialho 2004] [Bradski 1998]. 3.2 Vı́deos Digitais Um vı́deo digital, sem áudio, é uma sequência de imagens digitais exibidas cada uma destas durante um determinado intervalo de tempo. Entre as principais caracterı́sticas de um vı́deo digital destacam-se: • Taxa de atualização ou Quadros por segundo (Frames per Second - FPS): Quantidade de imagens exibidas em um determinado segundo do vı́deo. • Dimensões: Tamanho do vı́deo a ser apresentado. Geralmente um vı́deo digital possui as mesmas dimensões das imagens digitais exibidas nele. A qualidade de um vı́deo digital está ligado principalmente a qualidade das imagens digitais que o compõe, mas também a sua taxa de atualização. Vı́deo digitais ditos de alta definição (High-Definition) apresentam dimensões de 1920 por 1080 pixels, com taxa de atualização igual a 60 quadros por segundo [Gonzalez 2010]. 3.3 Modelo de cor HSV Conforme dito na Seção 3.1, existem diversos modelos de cores para representação digital de imagens. Um destes modelos, o HSV possui grande utilidade devido ao significado dado a cada canal do modelo. HSV é o acrônimo para Hue Saturation Value, em português, Matiz Saturação Valor. Este modelo de cores foi inventado em 1974 para suprir a necessidade de um modelo de cores que fosse capaz de representar bem a cor de um objeto sem sofrer fortes influências do brilho e luminosidade [Ribeiro 2006]. O modelo de cor HSV pode ser visto como um hexacone, onde o ângulo H com relação ao eixo horizontal determina a matiz da cor desejada, a distância perpendicular do centro até a borda determina a saturação S e a distância vertical determina o valor ou luminosidade V . A Figura 3.2 apresenta o sistema de cores HSV através da visualização do hexacone [Ribeiro 2006] [Bradski 1998]. 12 Figura 3.2: Modelo de cores HSV visto como um hexacone. Retirado de [Bradski 1998]. Para exemplificar a utilidade do modelo HSV no processo de localizar cores semelhantes em imagens digitais, temos que a Figura 3.3a apresenta uma imagem no modelo de cor RGB. As Figuras 3.3b, 3.3c e 3.3d apresentam esta mesma imagem decomposta respectivamente nos canais Hue, Saturation e Value do modelo HSV. Analisando a Figura 3.3b referente ao canal Hue, é possı́vel observar que cores semelhantes possuem valores muito próximos neste canal, facilitando assim a tarefa de detecção de regiões de interesse, por exemplo. São diversos os trabalhos que utilizam como modelo de cor o HSV com o intuito de tornar mais simples a segmentação da imagem em regiões definidas por cores conhecidas [Ribeiro 2006] [Bradski 1998]. Para a realização da transformação dos valores de um pixel em RGB para o modelo HSV, podem ser utilizadas as Equações 3.1. Neste trabalho, o modelo de cor utilizado para os quadros de entrada será o HSV. 1 ((R 2 − G) + (R − B)) H = arccos p ((R − G)2 + (R − B)(G − B)) min(R, G, B) , S =1−3 R−G−B 1 V = (R + G + B). 3 3.4 (3.1) Histograma O histograma de uma imagem digital é uma função discreta h(rk ) = nk , onde rk é o k-ésimo valor de intensidade e nk é o número de pixels da imagem com intensidade rk . 13 (a) (b) (c) (d) Figura 3.3: (a) Imagem exemplo no modelo RGB; (b) Canal Hue da Figura 3.3a convertida para o modelo de cor HSV; (c) Canal Saturation da Figura 3.3a convertida para o modelo de cor HSV; (d) Canal Value da Figura 3.3a convertida para o modelo de cor HSV. Ou seja, um histograma é um vetor de tamanho igual ao número de possı́veis valores que um pixel pode assumir. Cada elemento i do vetor contêm o número de vezes que o valor i aparece imagem [Gonzalez 2010]. A Figura 3.4 apresenta uma imagem digital em tons de cinza e seu respectivo his- 14 tograma. Histogramas são a base para muitas das técnicas de processamento de imagens atuais, como por exemplo, realce de contornos e detecção de pele humana. Servem também para obtenção de estatı́sticas úteis com relação às imagens sendo processadas. A partir de um histograma é possı́vel, por exemplo, gerar um modelo para compressão de imagem ou segmentar uma imagem em diferentes áreas [Gonzalez 2010]. Figura 3.4: Imagem digital em tons de cinza e seu respectivo histograma. 3.5 Segmentação A segmentação de uma imagem digital é o processo de divisão de uma imagem em diferentes regiões que satisfaçam uma caracterı́stica especial. Estas regiões definem uma nova imagem binária, de dimensões iguais a da imagem, onde cada elemento pertence ou não a região. Os algoritmos de segmentação para imagens em tons de cinza são baseados em duas categorias básicas: descontinuidade e similaridade dos valores de intensidade. Entre as principais utilizações de segmentações em imagens está a localização de pontos, bordas e linhas. A partir da detecção destes elementos é possı́vel detectar objetos e calcular áreas dentro da imagem por exemplo. [Gonzalez 2010] No contexto deste trabalho, a segmentação de imagens tem um caráter essencial no processamento dos vı́deos a serem processados. É necessário detectar a localização da pessoa que está realizando o sinal, a posição das mãos do intérprete, remover informações sobre o fundo da imagem e outros componentes que não serão úteis durante o processamento. 15 3.6 Backprojection Dada uma imagem digital e um histograma de uma imagem que contêm um objeto ou cor desejado, a imagem em tons de cinza produzida a partir desta imagem digital usando o histograma como uma look-up table é chamada de imagem de backprojection. Se o histograma é um modelo de densidade de probabilidades, então a imagem gerada será a distribuição de probabilidades do modelo na imagem original. Em outras palavras, o backprojection de uma imagem é uma outra imagem digital onde são apresentados os pixels que tem maior probabilidade de serem semelhantes a cor dos pixels representados no histograma [Bradski e Kaehler 2008]. Suponha a imagem representada na Figura 3.3a como exemplo. Se selecionarmos uma pequena janela nesta imagem (Figura 3.5), de modo que os pixels nesta janela sejam todos semelhantes, podemos construir um histograma (Figura 3.6) desta janela que representará basicamente a faixa de valores de pixels que estamos interessados. Utilizando a imagem original e este histograma, a imagem de backprojection (Figura 3.7) apresentará os pixels com maior probabilidade de serem semelhantes aos da janela selecionada. Podemos então utilizar está imagem gerada, juntamente informações estatı́sticas da imagem, para localizar facilmente objetos desejados em imagem digitais [Comaniciu e Meer 2002]. Figura 3.5: Janela de interesse sobre a Figura 3.3a. 3.7 Momentos Os momentos de uma imagem digital permitem calcular propriedades geométricas importantes dos objetos apresentados nestas [Ribeiro 2006]. Para uma imagem digital binária, temos que os momentos de ordem (p + q) são dados pela Equação 3.2, onde f (x, y) é o valor do pixel na imagem digital binária (0 ou 1). mpq = XX x y 16 xp y q f (x, y) (3.2) Figura 3.6: Histograma da Figura 3.5 sobre o canal Hue. Figura 3.7: Backprojection da Figura 3.3a com o histograma apresentado na Figura 3.6. Caso o objeto desejado seja o único componente da imagem digital, temos que o momento de ordem zero m00 (Equação 3.3) apresenta informações com relação a área ocupada pelo objeto na imagem. Os momentos de primeira ordem, m10 e m01 (Equações 3.4) apresentam informações com relação ao centro de gravidade do objeto. Já os momentos de segunda ordem, m11 e m20 e m02 (Equações 3.5), apresentam informações com relação aos momentos de inércia em relação ao eixo vertical, horizontal e aos dois eixos [Ribeiro 2006]. 17 m00 = XX x (3.3) y m10 = XX m01 = XX m11 = XX m20 = XX x xf (x, y); y x (3.4) yf (x, y); y x xyf (x, y) y x m02 = f (x, y) x2 f (x, y) (3.5) y XX x y 2 f (x, y) y Utilizando os valores resultantes dos cálculos do momento zero e do primeiro momento, podemos calcular o centro de massa (xc , yc ) do objeto apresentado na imagem digital através das Equações 3.6 [Ribeiro 2006]. m10 m00 (3.6) m01 yc = m00 Aproximando o objeto apresentado na imagem digital por uma elipse, podemos calxc = cular através dos valores do momentos o tamanho dos eixos desta elipse e a orientação desta. Definimos então θ como o ângulo correspondente entre o eixo maior da elipse e a horizontal, W como o comprimento do menor semi-eixo da elipse e L como o comprimento do maior semi-eixo. Para a determinação destes valores, podemos utilizar as Equações 3.7 [Ribeiro 2006]. 18 m20 − x2c , m00 m11 b = 2( − xc yc ), m00 m02 c= − yc2 , m00 b arctan (a−c) (3.7) , θ= 2 s p (a + c − b2 + (a − c)2 ) W = , 2 s p (a + c + b2 + (a − c)2 ) L= 2 A excentricidade (ε) da elipse que envolve o objeto pode ser calculada através tanto dos a= valores de a e b como dos valores de W e L (Equação 3.8). O valor da excentricidade da elipse que envolve o objeto apresenta neste trabalho uma possı́vel maneira de determinar se a mão de um intérprete está aberta ou fechada e se encontra-se de frente para a câmera ou de lado. L ε= = W 3.8 r a2 − b 2 a2 (3.8) Algoritmo Mean Shift O algoritmo Mean Shift é um método iterativo não paramétrico de localização de máximos locais utilizando gradientes ascendentes em uma distribuição de probabilidades. Utilizando uma imagem gerada pelo método backprojection, podemos utilizar este algoritmo para localização de regiões de interesse em imagens. Os passos de execução do algoritmo são os seguintes: 1. Determinar um tamanho de janela de busca inicial; 2. Determinar um ponto inicial para a janela de busca; 3. Calcular a localização do ponto com maior densidade (centróide) de probabilidade na janela; 4. Posicionar o centro da janela no centróide encontrado pelo passo anterior; 5. Repetir os passos 3 e 4 até que haja convergência. Para a localização do centróide, são utilizadas as Equações apresentadas na Seção 3.7. A utilização deste algoritmo é válida em situações onde se sabe inicialmente o tamanho 19 desejado da janela e uma boa posição inicial para a mesma. Contudo, muitas vezes estes valores não são conhecidos, dificultando assim a detecção de objetos em vı́deos onde o tamanho dos objetos e sua distribuição de probabilidades pode mudar com o passar das imagens [Bradski 1998] [Bradski e Kaehler 2008]. 3.9 Algoritmo CamShift O algoritmo Continuosly Adaptative Mean Shift (CamShift), proposto por [Bradski 1998] é baseado no algoritmo Mean Shift, e possui como principal objetivo sanar os problemas apresentados no Mean Shift com relação ao tamanho fixo da janela de busca e distribuições de probabilidades dinâmicas. Os passos realizados pelo algoritmo são os seguintes: 1. Selecionar a posição da janela de busca inicial; 2. Realizar o procedimento Mean Shift; armazenar o momento de ordem zero; 3. Redimensionar a janela de busca de acordo com o momento de ordem zero; 4. Realizar os passos 2 e 3 até que haja convergência. Pelo fato de reposicionar e redimensionar a janela iterativamente, o CamShift tornase invariante a escala, facilitando a localização de objetos em sequências contı́nuas de imagens onde a câmera ou objeto podem mover-se, tornando-se uma boa solução para o desenvolvimento deste projeto. 3.10 OpenCV: Open Computer Vision Library Open Computer Vision Library (OpenCV) é uma biblioteca de visão computacional de código aberto. Originalmente criada pela Intel utilizando as linguagens de programação C e C++, a biblioteca está em constante desenvolvimento pela comunidade e possui mais 500 funções relacionadas a processamento de imagens e visão computacional. Atualmente a biblioteca encontra-se em sua versão 2.1.0. Nesta versão, a biblioteca apresenta interface para utilização comas linguagens de programação Python e Matlab, por exemplo. Entre os principais usuários da ferramenta destacam-se Google, IBM, Microsoft, Sony e a própria Intel [Bradski e Kaehler 2008]. A biblioteca possui, além de uma documentação extensa, uma estrutura interna bem definida. A Figura 3.8 apresenta a estrutura interna básica da biblioteca. O bloco CV (Computer Vision) apresenta as funções para a manipulação e processamento de imagens e os algoritmos de visão computacional. O bloco MLL (Machine Learning Library) 20 apresenta implementações de técnicas de aprendizado de máquina. O bloco HighGUI apresenta funções para geração de interface gráficas com o usuário. Finalmente, o bloco CXCORE apresenta as estruturas de dados e funções básicas para funcionamento em conjunto dos blocos. Grande parte das técnicas de processamento de imagens apresentadas nas Seções anteriores apresentam implementação dentro da biblioteca, o que facilita o desenvolvimento rápido de aplicações complexas baseadas em processamento de imagens e visão computacional [Bradski e Kaehler 2008]. Figura 3.8: Estrutura interna básica da biblioteca OpenCV. Retirado de [Bradski e Kaehler 2008]. 3.11 Processamento de Imagens e Lı́nguas de Sinais Devido ao fato das lı́nguas de sinais serem lı́nguas espaço-visuais, a utilização destas em sistemas computacionais está intimamente ligada ao processamento de imagens digitais. Entre os trabalhos recentes que envolvem lı́nguas de sinais e processamento de imagens, destaca-se o trabalho de [Stein et al. 2007] que apresenta um sistema de reconhecimento da Lı́ngua Americana de Sinais (ASL) utilizando somente técnicas de processamento de imagens para obtenção dos dados necessários ao reconhecedor. Num mesmo sentido, [Assalehand et al. 2008] apresenta um sistema semelhante para a Lı́ngua de Sinais Arábica, utilizando técnicas de detecção de movimentos e remoção de fundo de imagens para me21 lhor extração dos dados. Ainda para a Lı́ngua de Sinais Arábica, [Mohandes, Quadri e Deriche 2007] propõe um trabalho para reconhecimento dos sinais requerendo do usuário a utilização de luvas coloridas com o intuito de facilitar o processo de localização das mãos nos vı́deos de entrada. Com relação a LIBRAS, [Peres et al. 2006] apresenta um trabalho para detecção de letras sinalizadas usando imagens estáticas somente das mãos do intérprete. Esta abordagem limita a funcionalidade do reconhecedor a sinais estáticos. [Pistori e Neto 2003] apresenta um sistema de reconhecimento de sinais em LIBRAS, aprimorado por [Fialho 2004] que utilizam somente imagens das mãos para detecção dos sinais. 22 Capı́tulo 4 Reconhecimento de Gestos O campo de reconhecimento e classificações de padrões é extremamente extenso e conta com diversas técnicas avançadas, cada uma com caracterı́sticas próprias que as tornam mais indicadas para cada tipo de problema. Entre as principais técnicas de classificação utilizadas em estudos de reconhecimento de lı́nguas de sinais destacam-se as Redes Neurais Artificiais (RNAs) e os Modelos Ocultos de Markov (Hidden Markov Models - HMMs) [Peres et al. 2006] [Pistori e Neto 2003]. As RNAs são utilizadas na maioria das vezes para o reconhecimento de sinais estáticos, onde são analisadas imagens isoladas dos sinais [Peres et al. 2006]. Já para o reconhecimentos de sinais dinâmicos, a grande maioria dos trabalhos na área utilizam-se dos Modelos Ocultos de Markov por sua caracterı́stica temporal e o resultados positivos obtidos na área de reconhecimento de fala [Pistori e Neto 2003] [Assalehand et al. 2008] [Begun e Hasanuzzaman 2009]. Utilizando-se dos HMMs para reconhecimento das lı́nguas de sinais, [Westeyn et al. 2003] apresenta um sistema de reconhecimento de sinais da ASL em primeira pessoa, juntamente com os passos realizados para a criação deste. [Assalehand et al. 2008] e [Begun e Hasanuzzaman 2009] fazem uso dos Modelos Ocultos de Markov para classificação de sinais das lı́nguas de sinais arábica e de Bangladesh respectivamente. Com relação a LIBRAS, [Pistori e Neto 2003] relatam o sucesso na utilização dos Modelos de Markov para o reconhecimento de sinais em vı́deos que apresentam somente imagens das mãos. Devido a grande utilização dos Modelos Ocultos de Markov para reconhecimento de lı́nguas de sinais, esta será a técnica de classificação utilizada neste trabalho. Neste Capı́tulo será apresentada a teoria básica por trás dos Modelos Ocultos de Markov e 23 softwares que implementam esta técnica de reconhecimento de padrões. Grande parte da teoria e exemplos apresentados neste Capı́tulo foi extraı́do de [Blunsom 2004] e [Rabiner 1989]. 4.1 Processos de Markov Um processo é dito de Marvok caso trata-se de um fenômeno estocástico que obedece a propriedade de Markov 1 . A propriedade de Markov refere-se a processos estocásticos em que a distribuição de probabilidade condicional do estado atual assumida em uma série de eventos depende somente dos j estados mais recentes. Caso o estado futuro dependa somente do estado atual (j = 1), o processo é dito de Markov de primeira ordem [Blunsom 2004]. [Starner e Pentland 1995] comentam que apesar da ordem das palavras na ASL não categorizarem um processo de Markov de primeira ordem, esta aproximação é válida quando consideradas as posições e orientações das mãos de um intérprete durante o tempo de sinalização. Da mesma forma podemos fazer esta aproximação para os sinais em LIBRAS. A Figura 4.1 apresenta um exemplo de processo de Markov. Neste exemplo é modelado um simples processo com três estados (cı́rculos), Bull, Bear e Even, e três possı́veis observações (retângulos), up, down e unchanged, e as transição entre os estados do modelo é probabı́listica (valores reais entre as setas ligando os estados). Dada a sequência de observações up-down-down, podemos concluir que a sequência de estados que produziram esta observação foi Bull-Bear-Bear, uma vez que estas observações só podem ser geradas através destes estados [Blunsom 2004]. 4.2 Modelos Ocultos de Markov O Modelo Oculto de Markov é uma ferramenta matemática estatı́stica amplamente utilizada na área de reconhecimento de fala e que nos últimos anos vem sendo utilizada também na área de reconhecimento de gestos e reconhecimento de lı́nguas de sinais. Trata-se de uma poderosa ferramenta estatı́stica para modelar a geração de sequências que podem ser caracterizadas por um processo subjacente gerando uma sequência de eventos observáveis [Blunsom 2004] [Seymore, Mccallum e Rosenfeld 1999]. 1 O nome Markov é uma referência ao matemático russo Andrei Markov, conhecido por seus estudos a cerca de processos estocásticos. 24 Figura 4.1: Exemplo de processo de Markov. Retirado de [Blunsom 2004]. A Figura 4.2 apresenta um exemplo de um Modelo Oculto de Markov para uma extensão ao processo de Markov apresentado na Figura 4.1. Neste modelo, é possı́vel que qualquer observação possa ser obtida a partir de todos os estados com uma distribuição de probabilidade em cada um destes [Blunsom 2004]. Figura 4.2: Exemplo de modelo oculto de Markov. Retirado de [Blunsom 2004]. Com o problema modelado como Modelo Oculto de Markov, não é possı́vel mais, somente a partir da sequência de observações, definir diretamente qual foi a sequência de estados que geraram as observações. Desta forma, é possı́vel somente determinar a 25 probabilidade de o modelo gerar uma sequência de observações e quais sequências de estados provavelmente geraram as observações. 4.2.1 Definição Formal Dado um alfabeto de estados S com tamanho N , e um alfabeto de observações V com tamanho M : S = (s1 , s2 , . . . , sn ) (4.1) V = (s1 , s2 , . . . , sm ) (4.2) Definimos Q como uma sequência de estados de tamanho T , e a sequência de observações correspondentes como O: Q = q1 , q2 , . . . , qT (4.3) O = o1 , o2 , . . . , oT (4.4) A é a matriz de transição que armazena as probabilidades do estado j seguir ao estado i no próximo intervalo de tempo: A = [aij ], aij = P (qt = sj |qt−1 = si ) (4.5) B é a matriz de observações que armazena as probabilidades da observação k ser obtida a partir do estado j, independentemente de t: B = [bi (k)], bi (k) = P (xt = vk |qt = si ) (4.6) π é a matriz de probabilidades inicial: π = [π], πi = P (q1 = si ) (4.7) Um Modelo Oculto de Markov é definido como: λ = (A, B, π) (4.8) O modelo parte também de duas suposições. A primeira é de que o modelo trata-se de um processo de Markov de primeira ordem, assim, o estado atual depende unicamente do estado anterior. A segunda suposição diz que a observação no instante t depende unicamente do estado atual. 26 4.2.2 Problemas relacionados aos HMMs A grande maioria das aplicações que utilizam HMMs se reduzem a solucionar três problemas: o problema da avaliação, o problema da decodificação e o problema do aprendizado [Blunsom 2004]. 4.2.2.1 O problema da Avaliação O problema da avaliação consiste em dado um HMM e uma sequência de observações, calcular P (O|λ), ou seja, a probabilidade de observarmos uma determinada sequência de observações dado um modelo. A probabilidade da sequência de observações O para uma sequência de estados Q é: P (O|Q, λ) = T Y P (ot |qt , λ) = bq1 (o1 ) × bq2 (o2 ) . . . bqT (oT ) t=1 e a probabilidade da sequência de estados é: P (Q|λ) = πq1 aq1q2 aq2q3 . . . aqT −1qT então podemos calcular a probabilidade das observações dado o modelo como: P (O|λ) = X P (O|Q, λ)P (Q|λ) = Q X πq1 bq1 (o1 )aq1q2 bq2 (o2 ) . . . aqT −1qT bqT (oT ) q1...qT Esta formulação nos permite calcular a probabilidade de O, contudo este modelo direto gera um cálculo de custo exponencial em T . Uma melhor abordagem consiste em armazenar os valores de probabilidade já calculados para que estes sejam obtidos de forma direta quando necessários. É definido então os valores α como as probabilidades parciais de observações da sequência o1 o2 . . . ot no estado si no instante t. αt (i) = P (o1 o2 . . . ot , qt = si |λ) O algoritmo que faz uso destes valores α é o chamado Forward Algorithm e este segue os seguintes passos: 1. Inicialização: α1 = πi bi (o1 ), 1 ≤ i ≤ N 27 2. Indução: N X αt+1 (j) = [ at (i)aij ]bj (ot+1 ), 1 ≤ t ≤ T − 1, 1 ≤ j ≤ N i=1 3. Finalização: P (O|λ) = N X αT (i) i=1 O passo da indução deste algoritmo determina que para cada estado sj , αj (t) armazena a probabilidade de atingir aquele estado tendo as observações até o instante t. Este armazenamento de probabilidades intermediárias diminui a complexidade do cálculo para N 2 T [Blunsom 2004]. No contexto do reconhecimento de gestos, a ideı́a básica é criar um Modelo Oculto de Markov para cada sinal conhecido, e a partir dos dados obtidos pelo processamento do vı́deo, determinar qual o sinal teve a maior probabilidade de ter sido realizado [Seymore, Mccallum e Rosenfeld 1999]. 4.2.2.2 O problema da Decodificação O problema da decodificação consiste em determinar qual sequência de estados de um modelo tem maior probabilidade de gerar uma sequência de observações conhecidas. Uma possı́vel solução para este problema é a utilização do algoritmo de Viterbi. Este algoritmo tem como objetivo encontrar a melhor sequência de estados para uma sequência de observações e é muito parecido com o Forward Algorithm, exceto que ao invés de somar as probabilidades de transição, estas são maximizadas a cada passo. Definimos como a probabilidade do mais provável caminho de estados para a sequência de observações parciais como: δt (i) = max q1 ,q2 ,...,qt−1 P (q1 q2 ...qt = si , o1 , o2 . . . ot |λ) O algoritmo de Viterbi segue os seguintes passos: 1. Inicialização: δ1 (i) = πi bi (o1 ), 1 ≤ i ≤ N, ψ(i) = 0 2. Recursão: δt (j) = max [δt−1 (i)aij ]bj (ot ), 2 ≤ t ≤ T, 1 ≤ j ≤ N 1≤i≤N ψt (j) = arg max [δt−1 (i)aij ], 2 ≤ t ≤ T, 1 ≤ j ≤ N i≤i≤N 28 3. Finalização: P ∗ = max [δT (i)] 1≤i≤N qT∗ = arg max [δt (i)] 1≤i≤N 4. Backtracking da sequência de estados ótima: ∗ ), t = T − 1, T − 2, . . . , 1 qt∗ = ψt+1 (qt+1 Com o uso da recursão e do backtracking, é possı́vel determinar pontos onde o algoritmo deve retroceder no processamento e procurar por outra sequência de estados melhor do que a sendo analisada no momento. Apesar de este algoritmo apresentar facilmente a sequência de estados que melhor descreve as observações, não existe uma maneira simples de determinar a segunda melhor sequência [Blunsom 2004]. 4.2.2.3 O problema do Aprendizado O problema do aprendizado consistem em estimar os parâmetros de λ que atendam a um critério de otimização. Este é tido como o problema mais difı́cil de solucionar, pois não há um método analı́tico para sua solução. Contudo, o algoritmo de Baum-Welch, baseado no algoritmo Expectation-Maximization, permite de maneira iterativa encontrar soluções locais para este problema. Este tem como entrada um modelo e uma sequência de observações de treinamento. Definimos ξt (i, j) (Equação 4.9) como a probabilidade de estar no estado si no momento t e passar ao estado sj no momento t + 1, dado um modelo e observação. ξt (i, j) = P (qt = si , qt+1 = sj |O, λ) (4.9) Tendo αt (i) como a probabilidade de estar no estado si no tempo t desde o inı́cio da observação e βt (i) como a probabilidade da geração da sequência no modelo no instante t + 1, podemos reescrever ξt (i, j) como: αt (i)aij bj (Ot+1 )βt+1 (j) P (O|λ) αt (i)aij bJ (Ot+1 )βt+1 (j) = PN PN i=1 j=1 αt (i)aij bj (Ot+1 )βt+1 (j) ξt (i, j) = (4.10) Definimos também a variável γt (i) como a probabilidade de estar no estado si no instante de tempo t. 29 γt (i) = P (qt = si |O, λ) (4.11) Podemos definir γt (i) também em função das váriaveis α e β: αt (i)βt (i) γt (i) = PN i=1 αt (i)βt (i) (4.12) Podemos ainda, relacionar γt (i) com ξt (i, j): γt (i) = N X ξt (i, j) (4.13) j=1 Assim, temos que a probabilidade de partir do estado si para o estado sj na sequência de observações é o somatório das probabilidades de estar em cada instante da observação no estado si e transitar para o estado sj , ou seja: T −1 X ξt (i, j) (4.14) t=1 Já a probabilidade de estar no estado si e partir para um estado é: T −1 X γt (i) (4.15) t=1 Assim, podemos definir as variáveis πi , aij e bi (k) utilizadas pelo algoritmo de BaumWelch: πi = probabilidade de estar no estado si no instante 1 = γ1 (i) (4.16) número de transições do estado si para o estado sj número de transições do estado si para qualquer estado (4.17) número de vezes que foi observado o sı́mbolo ok no estado si número de vezes no estado si (4.18) aij = bi (k) = A partir destas variáveis, o algoritmo Baum-Welch realiza diversas iterações para estimação de λ que melhor descreva a sequência de observações de treinamento. 30 4.3 Ferramentas Computacionais Existem atualmente diversas ferramentas computacionais que implementam os Modelos Ocultos de Markov e os algoritmos associados a seu uso. Nesta Seção são apresentadas duas ferramentas computacionais que fornecem ambientes completos para utilização dos modelos. 4.3.1 HTK: Hidden Markov Models Toolkit O Hidden Markov Model Toolkit (HTK) é um conjunto de ferramentas de código aberto para construção e manipulação de Modelos Ocultos de Markov, inicialmente desenvolvido na Universidade de Cambridge. As primeiras utilizações deste software foram para aplicações na área de reconhecimento de fala, mas atualmente este vem sendo utilizado para diversas aplicações que envolvem classificação de dados e reconhecimento de padrões. 4.3.2 GART: Gesture and Activity Recognition Toolkit O Gesture and Activity Recognition Toolkit (GART), inicialmente chamado de Georgia Tech Gesture Toolkit (GT2 K) é um conjunto de ferramentas de código aberto baseado no HTK, para desenvolvimento de sistemas baseados em reconhecimento de gestos em geral. O objetivo do toolkit é permitir que pesquisadores utilizem melhor seu tempo, focando-se no processamento dos dados desejados e não na implementação de técnicas de reconhecimento de gestos [Westeyn et al. 2003] [Lyons et al. 2007]. O GART foi desenvolvido com o objetivo de servir como ponte de comunicação entre os pesquisadores da área de reconhecimento de gestos e o HTK, permitindo o uso do mesmo sem conhecimentos profundos das especificidades do HTK. Entre os possı́veis uso deste, destacam-se os estudos de reconhecimento de sinais da ASL [Westeyn et al. 2003]. 31 Capı́tulo 5 Desenvolvimento do Software Neste Capı́tulo é apresentado o desenvolvimento dos componentes utilizados na construção do software de reconhecimento de sinais LIBRAS em vı́deo. 5.1 Base de Vı́deos Para o desenvolvimento do sistema, uma base de vı́deos exemplos foi criada para o treinamento do módulo de reconhecimento. Foram definidos inicialmente 50 sinais distintos para reconhecimento. Para cada um destes sinais foi realizada a gravação de 20 vı́deos exemplo. Os vı́deos foram gravados utilizando um webcam comum de notebook, capturando os vı́deos na resolução 640x480 pixels a 15 quadros por segundo. Com o intuito de gerar uma sistema de reconhecimento independente de usuário, os vı́deos foram gravados por 2 intérpretes distintos, sendo um destes uma intérprete mulher, com conhecimento avançado em LIBRAS e o outro intérpretes um homem sem conhecimento prévio da lı́ngua. Para a criação desta base de vı́deos exemplo, foram escolhidos sinais que apresentam representações bastante diferentes entre si no que diz respeito a movimentação e posicionamento das mãos com relação ao corpo do intérprete. Esta escolha se deu com o intuito de facilitar a criação e validação do módulo de reconhecimento de sinais nesta fase inicial do projeto. Embora o sistema criado neste trabalho só seja capaz de reconhecer os sinais presentes na base, a ampliação do vocabulário passı́vel de reconhecimento requer somente a gravação de vı́deos exemplos dos sinais desejados. 5.1.1 Restrições com Relação aos Vı́deos Para o funcionamento correto do módulo de processamento de vı́deo desenvolvido neste trabalho, algumas restrições iniciais sobre os vı́deos de entrada devem ser respeitadas. São 32 elas: • O fundo usado na gravação dos vı́deos deve ser branco ou claro; • Somente o intérprete deve ser visı́vel à câmera; • O intérprete deve utilizar roupas pretas de mangas compridas; • O intérprete deve utilizar uma luva azul na mão direita; • O intérprete deve utiliza uma luva laranja na mão esquerda; • No inı́cio do vı́deo, o intérprete deve estar com suas mãos para baixo; • No final do vı́deo, o intérprete deve estar com suas mãos para baixo. Estas restrições foram impostas com o intuito de facilitar a fase de segmentação e localização dos objetos desejados no vı́deo, no caso, o rosto do intérprete e suas mãos. A Figura 5.1 apresenta a situação ideal para o bom funcionamento do módulo desenvolvido. Figura 5.1: Situação ideal para o funcionamento correto do módulo de processamento de vı́deo desenvolvido. Conforme discutido na Seção 2, o reconhecimento da configuração da mão durante a realização do sinal e a expressão facial do intérprete são caracterı́sticas importantes para o reconhecimento do sinal. Contudo, com o objetivo de facilitar a implementação inicial do sistema apresentado neste trabalho, a expressão facial durante a realização do sinal 33 foi desconsiderada, e a configuração da mão foi simplificada aproximando a mão por uma elipse. 5.2 Estrutura Geral do Software O software desenvolvido é constituı́do de dois grandes blocos que se comunicam entre si. O primeiro bloco é o responsável pelo processamento dos vı́deos e extração das informações necessárias para o reconhecimento dos sinais sendo realizado. O segundo bloco é o responsável pelo reconhecimento do sinal realizado no vı́deo. A Figura 5.2 apresenta o estrutura do sistema desenvolvido. O bloco referente ao processamento dos vı́deos foi desenvolvido em linguagem de programação C utilizando a biblioteca OpenCV como suporte principal. O bloco referente ao reconhecimento dos sinais foi desenvolvido em duas partes, sendo a primeira parte com a linguagem de programação Java e o toolkit GART, e a segunda parte com a linguagem de programação C e o software HTK. Vídeo Processamento de Imagens Extração de Informações (OpenCV) Informações Reconhecimento dos Sinais (HTK + GART) Nome do Sinal Figura 5.2: Estrutura de blocos do sistema desenvolvido. 5.3 5.3.1 Módulo de Processamento de Vı́deo Pré-processamento Inicialmente, o software desenvolvido carrega em memória duas imagens exemplos que possuem cada uma somente uma amostra das cores das luvas utilizadas. Os histogramas sobre o canal Hue destas imagens é então realizado, para utilização futura com o método backprojection. Idealmente, estas imagens exemplos devem ser criadas utilizando a mesma câmera que realizará a gravação dos vı́deos de entrada, de modo a reduzir efeitos que possam surgir devido a diferenças entre câmeras. A Figura 5.3 apresenta a imagem exemplo utilizada para cálculo do histograma referente a luva laranja. É também carregado em memória o arquivo XML que acompanha o exemplo de detecção de rostos do OpenCV. Este contêm as informações necessárias para a localização de rostos em imagens utilizando o método desenvolvido por [Viola e Jones 2004]. 34 Figura 5.3: Imagem exemplo utilizada como amostra para cálculo do histograma referente a luva laranja. 5.3.2 Segmentação da Imagem Para cada quadro dos vı́deos de entrada, é realizada uma sequência de operações que tem como objetivo localizar a posição do rosto e das mãos do intérprete. A primeira etapa do processamento constitui em localizar a posição do rosto do intérprete na imagem. Para esta tarefa, é utilizado o método desenvolvido por [Viola e Jones 2004]. Devido ao alto custo computacional desta tarefa, a localização do rosto se dá somente nos primeiros quadros do vı́deo. Para todos os quadros seguintes assumimos que o rosto do intérprete permanece imóvel na mesma posição obtida inicialmente. A Figura 5.4 apresenta um quadro exemplo do vı́deo onde a localização do rosto detectado pelo método é demarcado com um retângulo vermelho sobre a imagem exemplo apresentada na Figura 5.1. Figura 5.4: Quadro do vı́deo processado marcando a localização do rosto do intérprete encontrado pelo método apresentado em [Viola e Jones 2004]. 35 Em seguida, a imagem de entrada é convertida para o modelo de cores HSV, utilizando as Equações 3.1. Utilizando esta imagem convertida, é criada então uma imagem máscara para as cores laranja e azul, de forma a facilitar a segmentação das luvas nas próximas etapas do processamento. A Figura 5.5 apresenta a imagem máscara criada para a cor laranja sobre a imagem de entrada (Figura 5.1) convertida para o modelo de cores HSV. Figura 5.5: Imagem máscara criada para a cor laranja sobre a imagem de entrada. Da imagem de entrada convertida para o modelo HSV, o canal Hue é separado e utilizando este, juntamente com os histogramas calculados para as imagens de exemplo das luvas, é criada a imagem backprojection para as luvas azul e laranja. É realizado então uma comparação pixel a pixel entre as imagens backprojection e as máscaras criadas e uma nova imagem, contendo somente os pixels de interesse é criada. Esta imagem então passa por uma sequência de erosões e dilatações morfológicas com o intuito de eliminar possı́veis ruı́dos. A Figura 5.6 apresenta a imagem de entrada (Figura 5.1) após a realização destas operações para a luva laranja. Finalmente, sobre esta imagem é executado o algoritmo CamShift, para localização do objeto na imagem. A Figura 5.7 apresenta o resultado final dos processamentos realizados sobre a imagem de entrada (Figura 5.1), onde o retângulo vermelho demarca a posição do rosto do intérprete, a elipse azul a posição da mão direita do intérprete e a elipse laranja a posição da mão esquerda do intérprete. 36 Figura 5.6: Imagem de entrada após a realização das operações de backproject, erosões e dilatações morfológicas para localização da luva laranja. Figura 5.7: Imagem de entrada após a realização dos processamentos. O quadrado vermelho determina a localização do rosto. As elipses determinam a localização das mãos. 37 5.3.3 Vetor de Caracterı́sticas Ao final do processo de segmentação de cada quadro do vı́deo, é possı́vel extrair as informações sobre a imagem, gerando um vetor de caracterı́sticas a ser enviado ao módulo de reconhecimento de sinais. Diversos trabalhos utilizam diferentes vetores de caracterı́sticas para o reconhecimento do sinal. [Mohandes, Quadri e Deriche 2007] utiliza informações sobre a centróide das mãos e a distância relativa entre estas, já [Westeyn et al. 2003] utiliza informações referentes a excentricidade das elipses que envolvem as mãos, a área ocupada pelas mãos entre outras informações geométricas. Neste trabalho foram inseridas no vetor de caracterı́sticas as seguintes informações: • Excentricidade da elipse que envolve a mão direita; • Excentricidade da elipse que envolve a mão esquerda; • Distância entre mão direita e centro do rosto; • Distância entre mão esquerda e centro do rosto; • Ângulo entre a reta que liga a mão direita ao centro rosto e a linha horizontal traçada no centro do rosto; • Ângulo entre a reta que liga a mão esquerda ao centro rosto e a linha horizontal traçada no centro do rosto; • Área ocupada pela mão direita; • Área ocupada pela mão esquerda. Com o intuito de minimizar possı́veis erros gerados pelo sistema reconhecedor devido a variações de posição do intérprete com relação a lente da câmera, as distâncias do vetor de caracterı́sticas foram normalizadas com relação a altura do rosto detectado. Ás áreas das mãos foram também normalizadas, mas com relação ao área do rosto detectado. Ainda com o intuito de aprimorar o sistema reconhecedor, foi utilizada a técnica de δ’s descrita em [Odell et al. 2000]. Esta consiste em adicionar ao vetor de caracterı́sticas um novo atributo para cada uma das informações, apresentando valores de diferença entre os quadros para cada atributo. Essa técnica tem como objetivo principal incluir no sistema reconhecedor a variação dos atributos em cada quadro, indicando onde houve grande variação de valores. 38 5.4 Módulo de Reconhecimento de Sinais O módulo de reconhecimento de sinais criado e utilizado neste trabalho é baseado nos Modelos Ocultos de Markov, técnica apresentada no Capı́tulo 4. Para a construção dos modelos, foi utilizado como base os softwares HTK e GART, apresentados nas Seções 4.3.1 e 4.3.2 respectivamente. O primeiro passo para a criação dos modelos de reconhecimento foi o processamento dos vı́deos exemplos. Para cada um dos vı́deos exemplo, foi gerado um arquivo contendo o vetor de caracterı́sticas apresentado na Seção 5.3.3. Com o intuito de eliminar quadros do vı́deo em que o sinal não está sendo executado, por exemplo, inı́cio e fim do vı́deo, vetores de caracterı́sticas repetidos em sequência foram eliminados dos arquivos. Depois de processados e gerados todos os arquivos com as informações, estes arquivos foram transformados em um único arquivo XML, seguindo o padrão de entrada do software GART. Este arquivo XML foi então enviado ao GART, que utilizando como base o HTK, gerou os arquivos de execução do módulo de reconhecimento de sinais. Durante a construção do modelo, o GART realiza um teste para verificar a taxa de acerto dos modelos criado. Nesta etapa, os parâmetros de criação dos modelos referentes ao número de estados e números de estados de skips foi determinada manualmente, buscando otimizar a taxa de acerto. 5.5 Execução do Software O software desenvolvido neste trabalho é capaz de realizar o reconhecimento de sinais tanto em vı́deos pré-gravados como em tempo real por imagens vindas de uma webcam. Para a execução de vı́deos pré-gravados, o usuário deve informar, via linha de comando, qual o arquivo de vı́deo a ser processado e possivelmente os parâmetros de configuração do processo de segmentação. Ao final do processamento, o software apresenta em forma de texto o sinal executado Para a execução em tempo real, uma vez iniciado o software, é exibido para o usuário duas telas. A primeira tela (Figura 5.8) apresenta uma interface para configuração do processo de segmentação. Nesta interface, é permitido ao usuário alterar valores como o número de erosões e dilatações para o processo de segmentação da luva azul e laranja, valores base para criação da máscara inicial, etc. Ainda nesta tela, a região de cor preta localizada abaixo dos controles apresenta em vermelho o resultado do processo de reconhecimento do sinal. 39 Figura 5.8: Interface para controle dos parâmetros de configuração do processo de segmentação e resposta do processo de reconhecimento. A segunda tela (Figura 5.9) apresenta a imagem sendo capturada pela webcam em tempo real. Na tela inicial, o software realiza a segmentação das luvas, apresentando ao usuário o resultado deste processo incluindo elipses coloridas em volta das mãos. Este mecanismo permite ao usuário verificar se o software está segmentando corretamente a imagem de entrada. Ainda na tela inicial, são incluı́dos três quadrados azuis. Os quadrados azuis localizados na parte superior da tela são utilizados para captura de novas imagens exemplos das luvas para cálculo do backproject. O quadrado azul localizado na parte inferior da tela é utilizado para informar ao software o inı́cio da execução de um sinal. Cada uma destas funções é iniciada deslizando a luva azul sobre a linha branca que tem inı́cio no centro dos quadrados azuis. Uma vez que o usuário determina que um sinal está sendo realizado, o software inicia 40 Figura 5.9: Tela inicial do software, apresentando a imagem de entrada da webcam juntamente com os 3 quadrados azuis de ação. o processo de segmentação da imagem de entrada, armazenando em um arquivo texto os valores do vetor de caracterı́sticas. Durante a realização do sinal, a imagem de entrada é exibida continuamente ao usuário, juntamente com as linhas que ligam o centro das mãos ao rosto, as elipses que envolvem as mãos, o quadrado que determina o rosto e os pontos onde as mãos já estiveram durante a realização do sinal (Figura 5.10). Ao finalizar a execução do sinal, o usuário deve posicionar suas mãos fora da captura da webcam e aguardar um segundo. O software verifica então que não existe mais movimentação por parte do usuário e envia ao módulo de reconhecimento o arquivo texto com os valores. Uma vez reconhecido o sinal, o software escreve em vermelho o nome do sinal reconhecido na interface de controle. 5.6 Resultados Conforme apresentado na Seção 5.1, foram selecionados 50 sinais distintos para a criação da base de vı́deos exemplo. A Tabela 5.1 apresenta as taxas de acerto para os Modelos Ocultos de Markov criados variando o número de estados e o número de estados de skip utilizando todos os vı́deos exemplo para treinamento e teste do sistema. A Tabela 41 Figura 5.10: Tela do software durante a realização de um sinal. As linhas ligam o rosto ao centro das mãos, as elipses determinam a posição das mãos, o quadrado a posição do rosto e os pontos isolados as posições por onde as mãos já passaram durante a realização do sinal. 5.2 apresenta as taxas de acerto para os Modelos Ocultos de Markov criados variado o número de estados e o número de estados de skip utilizando 70% da base de vı́deos para treinamento e o restante (30%) para testes. Campos apresentando valor “-” referem-se a configurações em que o sistema não foi capaz de gerar os modelos. Pela Tabela 5.1, temos que a melhor configuração para a criação dos Modelos Ocultos de Markov é utilizando 18 estados sendo nenhum deles de skip. Para esta configuração, a taxa de acerto obtida foi de 99,90% e o Modelo só errou a classificação de um exemplo do sinal ”Branco”com o sinal ”Azul”. Pela Tabela 5.2, temos que a melhor configuração para a criação dos Modelos Ocultos de Markov é utilizando 15 estados sendo 1 deles de skip, ou 17 estados sendo 1 deles de skip. Para ambas as configurações, a taxa de acerto obtida foi de 97,33%. Para a configuração com 15 estados, o Modelo errou no total a classificação de quatro sinais (maracujá, 2 vezes azul e marido). Para a configuração com 17 estados, o Modelo errou novamente total a classificação de quatro sinais (maracujá, marido, viver e sinal). 42 Tabela 5.1: Taxas de acertos para Modelos Ocultos de Markov utilizando 100% da base de vı́deos para treinamento e teste. Num. Estados de Skips Num. Estados 0 1 2 3 10 99,10 96,00 94,00 90,90 11 99,30 97,00 - 94,90 12 99,70 98,60 98,90 95,40 13 99,60 99,20 97,90 - 14 99,30 99,70 98,90 96,50 15 99,00 99,70 99,60 97,60 16 99,30 99,70 98,90 98,40 17 99,40 99,70 99,20 99,20 18 99,90 99,70 99,50 99,20 19 99,60 99,80 99,70 - 20 99,80 99,70 99,70 99,60 Tabela 5.2: Taxas de acertos para Modelos Ocultos de Markov utilizando 70% da base de vı́deos para treinamento e 30% para teste. Num. Estados de Skips Num. Estados 0 1 2 3 10 93,33 92,00 - 84,33 11 94,67 96,33 89,00 94,33 12 95,00 94,67 86,33 84,33 13 92,33 95,00 93,33 91,33 14 94,33 95,67 93,33 93,33 15 94,00 97,33 - 87,67 16 94,00 97,00 92,33 92,67 17 93,67 97,33 94,00 - 18 95,99 97,00 94,67 - 19 94,61 96,33 96,33 92,67 20 95,25 96,33 94,67 - Esta alta taxa de acerto para um sistema que possui um alto número de sinais indica a validade do sistema criado [Stein et al. 2007]. A escolha dos atributos que compõe o 43 vetor de caracterı́sticas se mostrou válida e capaz de representar corretamente os sinais escolhidos para compor a base. Embora questões importantes que devem ser consideradas para o reconhecimento de lı́nguas de sinais como a expressão facial e a configuração da mão foram abstraı́das neste trabalho, o sistema criado mostrou ser válido para situações onde estas questões podem ser desconsideradas [Stein et al. 2007]. 44 Capı́tulo 6 Considerações Finais A Lı́ngua Brasileira de Sinais - LIBRAS - é a forma de comunicação utilizada pela comunidade surda brasileira. Assim como as outras lı́nguas de sinais existentes, a LIBRAS é uma lı́ngua de sinais espaço-visual que tem como principal caracterı́stica a movimentação das mãos do intérprete para comunicar-se. Além da movimentação das mãos, outras caracterı́sticas importantes no reconhecimento de lı́nguas de sinais são a identificação da expressão facial, a localização espacial das mãos durante a realização do sinal e a configuração das mãos durante a sinalização. Esta grande quantidade de informações a serem consideradas para o reconhecimento de sinais dificulta muito a criação de softwares com este intuito. Contudo, softwares deste tipo são de extrema importância para a inclusão de pessoas surdas na sociedade. Neste trabalho foi apresentada a teoria e o desenvolvimento de um software capaz de reconhecer sinais em LIBRAS realizados isoladamente por intérpretes tanto em vı́deos digitais gravados como em tempo real. Foram determinadas como restrições dos vı́deos o uso de luvas coloridas, a utilização de roupas escuras e a parede atrás do intérprete com cor clara. Estas restrições se deram principalmente com o intuito de facilitar a tarefa de segmentação das imagens de entrada, para extração das caracterı́sticas utilizadas para reconhecimento dos sinais. Para a realização das tarefas de processamento de imagens, foi utilizada principalmente a técnica de segmentação baseada em histograma e momentos da imagem. Já para a tarefa de reconhecimento dos sinais foi realizada utilizando como base os Modelos Ocultos de Markov. Uma base de vı́deos exemplo contendo 20 repetições para cada um dos 50 sinais pré-determinados (1000 vı́deos exemplo no total) foi criada para o treinamento do sistema. Utilizando 70% dos vı́deos desta base para treinamento de 30% 45 desta para teste, obteve-se uma taxa de acerto de aproximadamente 97%, demonstrado a validade e eficiência do sistema de processamento de imagens criado . O software criado e apresentado neste trabalho servirá como parte fundamental na criação de um sistema completo de tradução LIBRAS/Português. Como trabalhos futuros, pretende-se inicialmente aumentar a quantidade de sinais que o software é capaz de reconhecer, realizando a gravação de novos vı́deos exemplos para os sinais desejados. Pretende-se também como passo inicial eliminar a necessidade de utilização de luvas coloridas, realizando a localização das mãos baseado na pigmentação da cor da pele do intérprete. Outra restrição que se pretende eliminar em trabalhos futuros é com relação reconhecimento de sinais isolados, uma vez que um software de tradução deve ser capaz reconhecer e traduzir frases completas. Por fim, o sistema de processamento de imagens pode também ser aprimorado para ser capaz de capturar e utilizar informações da expressão facial do intérprete. 46 Referências Bibliográficas [Assalehand et al. 2008]ASSALEHAND, K. et al. Vision-based system for continuous arabic sign language recognition in user dependent mode. Proceeding of the the 5 Internation Symposium on Mechatronics and its Applications, 2008. [Begun e Hasanuzzaman 2009]BEGUN, S.; HASANUZZAMAN, M. Computer visionbased bangladeshi sign language recognition system. 12th International Conference on Computers and Information Technology, p. 414, 2009. [Blunsom 2004]BLUNSOM, P. Hidden Markov Models. 2004. Http://ww2.cs.mu.oz.au/460/2004/materials/hmm-tutorial.pdf. [Bradski e Kaehler 2008]BRADSKI, G.; KAEHLER, A. Learning OpenCV: Computer Vision with the OpenCV Library. 1st. ed. [S.l.]: O’Reilly Media, 2008. Paperback. ISBN 0596516134. [Bradski 1998]BRADSKI, G. R. Computer vision face tracking for use in a perceptual user interface. Intel Technology Journal, n. Q2, p. 15, 1998. [Capovilla e Raphael 2001]CAPOVILLA, F. C.; RAPHAEL, W. D. Dicionário Enciclopédico Ilustrado Trilı́ngue da Lı́ngua de Sinais Brasileira. São Paulo, Brasil: Editora da Universidade de São Paulo, 2001. [Comaniciu e Meer 2002]COMANICIU, D.; MEER, P. Mean shift: A robust approach toward feature space analysis. IEEE Transactions on Pattern Analysis and Machine Intelligence, IEEE Computer Society, Los Alamitos, CA, USA, v. 24, p. 603–619, 2002. ISSN 0162-8828. [Fialho 2004]FIALHO, A. R. S. Estudo de Técnicas de Rastreamento das Mãos para o Desenvolvimento de Interfaces Homem-Máquina. Campo Grande, Brasil, 2004. 47 [Gonzalez 2010]GONZALEZ, R. C. Processamento Digital de Imagens. São Paulo, Brasil: Pearson Prentice Hall, 2010. [Lira e Souza 2008]LIRA, G. A.; SOUZA, T. A. F. LIBRAS - Dicionário da Lı́ngua Brasileira de Sinais. 2008. Http://www.acessobrasil.org.br/libras/. [Lyons et al. 2007]LYONS, K. et al. Gart: The gesture and activity recognition toolkit. In: JACKO, J. A. (Ed.). HCI (3). [S.l.]: Springer, 2007. (Lecture Notes in Computer Science, v. 4552), p. 718–727. [Martin 2000]MARTIN, J. A tems for Signed Languages: Linguistic Comparison: Two Notation Sys- Stokoe notation and Sutton SigWriting. 2000. Http://www.signwriting.org/archive/docs1/sw0032-Stokoe-Sutton.pdf. [McCleary e Viotti 2007]MCCLEARY, L.; VIOTTI, E. Transcrição de dados de uma lı́ngua sinalizada: um estudo piloto da transcrição de narrativas na lı́ngua de sinais brasileira (LSB). Goiânia, GO, Brasil: Cânone Editorial, 2007. [Mohandes, Quadri e Deriche 2007]MOHANDES, M.; QUADRI, S.; DERICHE, M. Arabic sign language recognition an image-based approach. Advanced Information Networking and Applications Workshops, International Conference on, IEEE Computer Society, Los Alamitos, CA, USA, v. 1, p. 272–276, 2007. [Morrissey 2008]MORRISSEY, S. Data-Driven Machine Translation for Sign Languages. Tese (Doutorado) — Dublin City University, Dublin, Irlanda, 2008. [Odell et al. 2000]ODELL, J. et al. The HTK Book for HTK V3.0. Cambridge, UK: Cambridge University Press, 2000. [Peres et al. 2006]PERES, S. M. et al. Libras signals recognition: a study with learning vector quantization and bit signature. In: SBRN ’06: Proceedings of the Ninth Brazilian Symposium on Neural Networks. Washington, DC, USA: IEEE Computer Society, 2006. p. 21. ISBN 0-7695-2680-2. [Pistori e Neto 2003]PISTORI, H.; NETO, J. J. Tecnologia Adaptativa em Engenharia de Computação: Estado da Arte e Aplicações. Tese (Doutorado) — USP, São Paulo, Brasil, 2003. 48 [Rabiner 1989]RABINER, L. R. A tutorial on hidden markov models and selected applications in speech recognition. Proceedings of the IEEE 77, p. 257—-286, 1989. [Ribeiro 2006]RIBEIRO, H. L. Reconhecimento de Gestos Usando Segmentação de Imagens Dinâmicas de Mãos Baseada no Modelo de Mistura de Gaussianas e Cor de Pele. Dissertação (Mestrado) — Universidade de São Paulo, São Carlos, SP, Brasil, 2006. [Rybená 2010]RYBENá. 2010. Http://www.rybena.org.br. [Seymore, Mccallum e Rosenfeld 1999]SEYMORE, K.; MCCALLUM, A.; ROSENFELD, R. Learning hidden markov model structure for information extraction. In AAAI 99 Workshop on Machine Learning for Information Extraction, p. 37–42, 1999. [Souza e Vieira 2006]SOUZA, V. C.; VIEIRA, R. Uma proposta para tradução automática entre libras e português no sign webmessage. Proceedings of the Brazilian Symposium on Artificial Intelligence, Ribeirão Preto, Brasil, 2006. [Starner e Pentland 1995]STARNER, A.; PENTLAND, A. Visual Recognition of American Sign Language Using Hidden Markov. Tese (Doutorado) — Massachussets Institute of Technology, Massachussets, 1995. [Stein et al. 2007]STEIN, D. et al. Hand in hand: Automatic sign language to speech translation. In: Conference on Theoretical and Methodological Issues in Machine Translation. Skövde, Sweden: [s.n.], 2007. p. 214–220. [Sutton 1996]SUTTON, V. SignWriting web site. 1996. Http://www.signwriting.org. [Viola e Jones 2004]VIOLA, P.; JONES, M. Robust real-time face detection. Int. J. Comput. Vision, Kluwer Academic Publishers, Hingham, MA, USA, v. 57, p. 137–154, May 2004. ISSN 0920-5691. [Westeyn et al. 2003]WESTEYN, T. et al. Georgia tech gesture toolkit: Supporting experiments in gesture recognition. In: Proceedings of the 5th international conference on Multimodal interfaces. New York, NY, USA: ACM, 2003. (ICMI ’03), p. 85–92. ISBN 1-58113-621-8. 49