Michel Alain Quintana Truyenque Uma Aplicação de Visão
Transcrição
Michel Alain Quintana Truyenque Uma Aplicação de Visão
PUC-Rio - Certificação Digital Nº 0310888/CB Michel Alain Quintana Truyenque Uma Aplicação de Visão Computacional que Utiliza Gestos da Mão para Interagir com o Computador DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós-Graduação em Informática Rio de Janeiro , março de 2005 Michel Alain Quintana Truyenque Uma Aplicação de Visão Computacional que Utiliza PUC-Rio - Certificação Digital Nº 0310888/CB Gestos da Mão para Interagir com o Computador Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título de Mestre pelo Programa de PósGraduação em Informática da PUC-Rio. Orientador: Prof. Marcelo Gattass Rio de Janeiro, março de 2005. Michel Alain Quintana Truyenque Uma Aplicação de Visão Computacional que Utiliza PUC-Rio - Certificação Digital Nº 0310888/CB Gestos da Mão para Interagir com o Computador Dissertação apresentada como requisito parcial para obtenção do título de Mestre pelo Programa de PósGraduação em Informática da PUC-Rio. Aprovada pela Comissão Examinadora abaixo assinada. Prof. Marcelo Gattass Orientador Departamento de Informática – PUC-Rio Prof. Paulo Cezar Pinto Carvalho Instituto de Matemática Pura e Aplicada – IMPA Prof. Raul Queiroz Feitosa Departamento de Engenharia Elétrica – PUC-Rio Prof. Anselmo Antunes Montenegro Instituto de Matemática Pura e Aplicada – IMPA Prof. Waldemar Celes Filho Departamento de Informática – PUC-Rio Prof. José Eugênio Leal Coordenador(a) Setorial do Centro Técnico Científico – PUC-Rio Rio de Janeiro, 28 de março de 2005 Todos os direitos reservados. É proibida a reprodução total ou parcial do trabalho sem autorização da universidade, do autor e do orientador. Michel Alain Quintana Truyenque PUC-Rio - Certificação Digital Nº 0310888/CB Graduo-se bacharel em Engenharia de Sistemas na UNSA (Universidad Nacional de San Agustín) em 2002. Ingressou no programa de mestrado do Departamento de Informática em 2003 e desde então participa em projetos de pesquisa no Tecgraf/PUC-Rio (Laboratório de Computação Gráfica) nas áreas de Visão Computacional e Visualização Científica. Atualmente participa do desenvolvimento de um sistema de visualização 3D de dados sísmicos realizado em parceria com a gerência de Tecnologia em Geofísica da Petrobrás Ficha Catalográfica Truyenque, Michel Alain Quintana Uma aplicação de visão computacional que utiliza gestos da mão para interagir como o computador / Michel Alain Quintana Truyenque; orientador: Marcelo Gattass – Rio de Janeiro: PUC-Rio, Departamento de Informática, 2005. 100 f. : il. ; 30 cm Dissertaçào (mestrado) – Pontifícia Universidade Católica do Rio de Janeiro, Departamento de Informática. Incluí bibliografia 1. Informática – Teses. 2. Visão computacional. 3. Interação Humano-Computador. 4. Gestos da mão. 5. Reconhecimento de Gestos 6. Interação baseada em visão. I. Gattass, Marcelo. II. Pontifícia Universidade Católica do Rio de Janeiro. Departamento de Informática. III. Título. CDD:004 Com amor, a minha Família. PUC-Rio - Certificação Digital Nº 0310888/CB Agradecimentos Em primeiro lugar a Deus pelo caminho que me foi reservado até aqui. A minha família, com todo amor, aos meus pais Yanina e Santos pelos ensinamentos, apoio constante e amor de sempre. As minhas irmãs Shirley e Karla pelo carinho, apoio constante e alegria de sempre. A meu orientador Professor Marcelo Gattass pela confiança em mim depositada, pelos ensinamentos e a oportunidade de trabalhar a seu lado. Um agradecimento especial pelo apoio e compreensão nos momentos difíceis durante o curso do mestrado. Ao Anselmo pelos conselhos e ajuda constante durante o desenvolvimento PUC-Rio - Certificação Digital Nº 0310888/CB deste trabalho. Aos meus professores do departamento, pelos ensinamentos e o aprendizado aqui desenvolvido. A Maria Clara pela luz no final do túnel. A Karla, amiga constante, mesmo de longe pelo carinho e apoio. Aos meus colegas da pós-graduação, tanto do Mestrado quanto do Doutorado, pelo companheirismo, os momentos de diversão e por ter me recebido sempre de braços abertos. Aos funcionários do departamento, pelo carinho e atenção. Aos colegas do Tecgraf pelo ótimo ambiente de trabalho, aos membros do grupo de visualização de dados sísmicos pela experiência aprendida e pela oportunidade de trabalharmos juntos. A PUC-Rio, Tecgraf e a Capes pelo apoio financeiro sem o qual este trabalho não poderia ter sido desenvolvido. Resumo Quintana Truyenque, Michel Alain. Uma Aplicação de Visão Computacional que Utiliza Gestos da Mão para interagir com o Computador. Rio de Janeiro, 2005. 100p. Dissertação de Mestrado Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. A Visão Computacional pode ser utilizada para capturar gestos e criar dispositivos de interação com computadores mais intuitivos e rápidos. Os dispositivos comerciais atuais de interação baseados em gestos utilizam equipamentos caros (dispositivos de seguimento, luvas, câmeras especiais, PUC-Rio - Certificação Digital Nº 0310888/CB etc.) e ambientes especiais que dificultam a difusão para o público em geral. Este trabalho apresenta um estudo sobre a viabilidade de utilizarmos câmeras Web como dispositivo de interação baseado em gestos da Mão. Em nosso estudo consideramos que a mão humana está limpa, isto é, sem nenhum dispositivo (mecânico, magnético ou óptico) colocado nela. Consideramos ainda que o ambiente onde ocorre a interação tem as características de um ambiente de trabalho normal, ou seja, sem luzes ou panos de fundo especiais. Para avaliar a viabilidade deste mecanismo de interação, desenvolvemos alguns protótipos. Neles os gestos da mão e as posições dos dedos são utilizados para simular algumas funções presentes em mouses e teclados, tais como selecionar estados e objetos e definir direções e posições. Com base nestes protótipos apresentamos algumas conclusões e sugestões para trabalhos futuros. Palavras-chave Visão Computacional; Interação Humano-Computador (IHC); Gestos da Mão; Reconhecimento de gestos; Interação Baseada em Visão. Abstract Quintana Truyenque, Michel Alain. A Computer Vision Application for Hand-Gestures Human Computer Interaction. Rio de Janeiro, 2005. 100p. Dissertação de Mestrado - Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. Computer Vision can be used to capture gestures and create more intuitive and faster devices to interact with computers. Current commercial gesture-based interaction devices make use of expensive equipment (tracking devices, gloves, special cameras, etc.) and special environments that make the dissemination of such devices to the general public difficult. This work presents PUC-Rio - Certificação Digital Nº 0310888/CB a study on the feasibility of using Web cameras as interaction devices based on hand-gestures. In our study, we consider that the hand is clean, that is, it has no (mechanical, magnetic or optical) device. We also consider that the environment where the interaction takes place has the characteristics of a normal working place, that is, without special lights or backgrounds. In order to evaluate the feasibility of such interaction mechanism, we have developed some prototypes of interaction devices. In these prototypes, hand gestures and the position of fingers were used to simulate some mouse and keyboard functions, such as selecting states and objects, and defining directions and positions. Based on these prototypes, we present some conclusions and suggestions for future works. Keywords Computer Vision; Human-Computer Interaction (HCI); Hand Gestures; Gestures Recognition; Vision Based Interaction. Sumário 1 Introdução 17 1.1. Motivação 17 1.2. Objetivos 18 1.3. Estrutura do Documento 19 2 Interfaces Baseadas em Visão 21 2.1. Conceitos Básicos 21 2.2. Requisitos Funcionais 23 2.3. Requisitos Não-Funcionais 24 PUC-Rio - Certificação Digital Nº 0310888/CB 2.4. Visão Computacional na Interação Humano-Computador em Tempo Real 25 2.4.1. Vantagens dos Sistemas Baseados em Visão 25 2.4.2. Desafios 26 2.5. Trabalhos Relacionados 27 2.5.1. Sistemas Baseados no Reconhecimento de Gestos 27 2.5.2. Sistemas Baseados na Detecção dos Dedos 30 2.6. Sistema de Interação Proposto 32 3 Subtração de Fundo 34 3.1. Segmentação por Subtração de Fundo 34 3.2. Requisitos para o Algoritmo de Subtração de Fundo 35 3.3. Algoritmos Robustos de Subtração de Fundo 37 3.3.1. Modelo de Cor 38 3.3.2. Modelagem do Fundo 40 3.3.3. Subtração ou Segmentação 42 3.3.4. Seleção dos Limiares 47 3.4. Resultados 50 3.5. Conclusões 53 4 Detecção de Silhueta 55 4.1. Motivação 55 4.2. Refinamento da Segmentação 56 PUC-Rio - Certificação Digital Nº 0310888/CB 4.3. Detecção de Bordas 58 4.4. Detecção de Contornos 60 4.5. Seleção da Silhueta da Mão 63 4.6. Considerações Finais do Capítulo 66 5 Reconhecimento 67 5.1. Motivação 67 5.2. Detecção de Feições 69 5.3. Detecção dos Dedos 73 5.4. Reconhecimento de Gestos 75 5.5. Resultados Parciais 77 5.6. Considerações Finais do Capítulo 79 6 Aplicações 80 6.1. Detalhes da Implementação 80 6.2. Controlando o Cursor do Mouse 81 6.3. Controlando um Jogo de Computador 86 6.4. Interação Gestual 89 6.5. Conclusões Parciais 91 7 Conclusões 93 7.1. Trabalhos Futuros 94 Bibliografia 96 Lista de figuras Figura 1 - Interfaces tradicionais e interfaces digitais. Extraído de Bérard [1]. 22 Figura 2. Resultados do trabalho de Regh & Kanade [30]. O esqueleto é sobreposto na imagem original da mão. No lado direito, o modelo 3D é calculado a partir dos parâmetros encontrados no esqueleto. Extraída de Regh & Kanade [30]. 28 Figura 3 – Métodos simples para interagir através da Visão apresentados no trabalho de Freemam [8]. (a) Orientação da mão para dirigir um robô. (b) Subtração de imagens para inferir direção do movimento. (c) Histogramas de orientação. 29 PUC-Rio - Certificação Digital Nº 0310888/CB Figura 4 – (a) Extração do contorno da mão com o modelo de curva rígida. Extraído de Heap [12]. (b) Posturas da mão para controlar funções básicas de um jogo de computador. Extraído de Segen [33]. (c) Funções de Gauss (blobs) para detectar a mão e os dedos. Extraído de Laptev [22]. Figura 5 - Sistema “FingerMouse”. Extraído de Queck [29]. 30 31 Figura 6 – (a) Interação com o computador — posicionar a ponta do dedo num mesmo lugar por um determinado tempo ocasiona um clique. Extraído de Handenberg [11]. (b) Detecção dos dedos no trabalho de Oka [27]. Extraído de Oka [27]. 32 Figura 7 – Detecção do contorno da mão apresentado no trabalho de MacKormick [26]. A ponta do dedo detectada é utilizada para desenhar. Extraído de MacKormick [26]. 32 Figura 8 - Resultado dos algoritmos que lidam parcialmente com sombras; dificuldade na atribuição do limiar e impossibilidade de isolar as sombras; morfologia deformada do objeto. 37 Figura 9 - Modelo de cor no espaço tridimensional RGB proposto em [14]. Ei representa o valor de cor esperado do ponto i na imagem de referência, I i representa a cor na imagem atual. A diferença entre I i e Ei é decomposta em distorção de brilho ( α i ) e distorção de cor ( CDi ). (Extraída de [14]). 39 Figura 10 - Algoritmo de subtração de fundo baseado na decomposição da diferença de cor em distorção de brilho e distorção de cor. Seguindo a ordem das operações indicada pelos números, mostram-se as etapas de modelagem e subtração de fundo. A etapa de modelagem é feita uma vez, enquanto que a etapa de subtração é feita a cada imagem (frame). 44 Figura 11 – Regiões definidas pelo limiares no espaço bidimensional definido pela distorção normalizada de brilho β e a distorção normalizada de cor δ. 46 Figura 12 - Algoritmo de geração de silhuetas ou de subtração de fundo, baseado no ângulo entre dois vetores. Cr é a cor atual e Cb é a cor de referência. 47 Figura 13 - (a) histograma da distorção normalizada de brilho ( β )”, e (b) histograma da distorção normalizada de cor ( δ ). Extraído de [14]. 49 Figura 14 - Resultado da segmentação do algoritmo baseado na medida do ângulo [3]. O limiar utilizado para o ângulo foi de θ = 17.49o . Nas figuras à PUC-Rio - Certificação Digital Nº 0310888/CB esquerda são mostradas cenas com a mão e nas figuras à direita são mostrados os resultados da segmentação. Nos resultados são apresentados a segmentação com as cores originais do objeto e a segmentação binária, onde é mais fácil perceber a morfologia do objeto segmentado. O número de quadros por segundo alcançado foi igual a 30. 51 Figura 15 - Resultados do algoritmo baseado na medida da distorção de brilho e a distorção de cor [14]. Desvio padrão mínimo ( σ ' = 1.0 ), distorção mínima de cor ( CD ' = 0.75 ), distorção mínima do brilho ( α ' = 0.01 ). Limiares de comparação utilizados na etapa de subtração: τ CD = 14.1 para a distorção de cor, τ lo = −80.5 para a distorção de brilho. Número de quadros por segundo igual a 43. 52 Figura 16 - Teste do algoritmo em [14] aplicando uma janela de 4 pixels. Esta mudança aumenta consideravelmente o número de quadros por segundo sem alterar significativamente a segmentação do objeto. 60 qps. 53 Figura 17 - Máscaras utilizadas nos filtros morfológicos de Dilatação e Erosão; vizinhança 4 ( N 4 ) e vizinhança 8 ( N 8 ) . Além da vizinhança definida pela máscara, mostram-se em preto os pontos que representam o fundo e em branco os pontos que representam os objetos. 57 Figura 18 - Resultados obtidos da aplicação dos filtros morfológicos. Na seqüência (a) imagem resultado da segmentação; (b) resultado da aplicação da Dilatação em (a); e (c) resultado da aplicação da Erosão em (b). Considera-se (c) como resultado final desta etapa. Número médio de quadros por segundo igual a 53 qps. 58 Figura 19 - Obtenção de contornos a partir da subtração das imagens (b) e (c) da Figura 18. O objeto “mão” é representado apenas pelo seu contorno, o mesmo acontece com o ruídos e erros da segmentação. Número médio de quadros por segundo igual a 45 qps. 59 Figura 20 - Alguns resultados da detecção de contornos realizada em diferentes orientações da mão, (a) presença de ruídos, (b) presença de contornos internos ou buracos. 45 qps. 60 Figura 21 - Lista de Códigos (Chain Codes). Para cada ponto de referência (em azul) existem 4 ou 8 direções possíveis que se podem seguir na representação do contorno. 61 Figura 22 - Passos do algoritmo de percurso de contornos. A cada passo, novos pontos da silhueta são detectados e alguns pontos “N” são descartados. As setas curvas indicam o sentido de busca, as setas que PUC-Rio - Certificação Digital Nº 0310888/CB apontam para os pontos marcados com “X” indicam a direção inicial de busca, as setas que apontam para os pontos marcados com “P” indicam o próximo ponto. 62 Figura 23 - Pequenos ciclos dentro dos contornos. Estes ciclos representam problemas para o algoritmo de percurso, pois como é indicado em (b) a detecção da silhueta pode acabar muito antes de percorrer o contorno inteiro, o que traz problemas na detecção. 63 Figura 24 - Resultados do processo de detecção da silhueta da mão aplicados à imagem da Figura 19 em (a), e às imagens da Figura 20 em (b) e (c). Em (a) e (b) são removidos os ruídos e em (c) não é considerada a silhueta interna. Número médio de quadros por segundo igual a 35 qps. 65 Figura 25 - Subamostragem dos pontos na silhueta detectada. A imagem à direita tem um quinto dos pontos da imagem à esquerda. 66 Figura 26 - Feições consideradas para o reconhecimento dos gestos. As pontas dos dedos são chamadas de Picos (“P”) e as junções entre eles de Vales (“V”). 69 Figura 27 - Medida de k-curvatura em cada ponto da silhueta. (a) Para cada ponto Pi é escolhido um ponto subseqüente P(i + k ) e outro anterior P( i − k ) que formam dois vetores. A k-curvatura é o ângulo α i formado por esses dois vetores e k é um inteiro positivo. (b) O parâmetro k deve ser ajustado de maneira que as regiões de interesse sejam preferentemente detectadas durante o cálculo da k-curvatura. 71 Figura 28 - Resultado da aplicação do algoritmo de detecção de feições à silhueta da mão. As feições são os pontos ressaltados na silhueta. (a) e (b) Mostram duas posturas da mão com os dedos estendidos.Os valores utilizados para o teste foram k = 21 e Tα = 60° . (c) Mesmo com pequenas mudanças de escala, aproximando-se a mão da câmera, e mantendo os mesmos parâmetros que em (a) e (b) pode-se ver a detecção das feições. 72 Figura 29 - Resultado do processo de detecção dos dedos da mão. Os pontos estão ressaltados na silhueta. 73 Figura 30 - Cálculo da direção dos dedos. (a) A direção aproximada de cada um dos dedos é mostrada como sendo uma linha. (b) A linha que representa a direção do dedo é a que passa pelo ponto Pi e que melhor aproxima os pontos de referência. Os pontos de referência “x” são os pontos médios de PUC-Rio - Certificação Digital Nº 0310888/CB cada par de pontos que estão ligados por uma linha. O ângulo θ é o valor que representa a orientação da linha de direção com respeito à horizontal.74 Figura 31 - Conjunto predefinido de gestos que são reconhecidos. Os 4 gestos são divididos em três classes: FECHADO, INDICE e ESTENDIDO. FECHADO é uma classe de gesto que não apresenta nenhum dedo estendido. INDICE representa uma classe com dois tipos de gestos: INDICE_1 (dedo índice estendido) e INDICE_2 (dedo índice e polegar estendidos). ESTENDIDO é uma classe de gesto que apresenta mais de dois dedos na mão estendidos. 76 Figura 32 - Autômato Finito Determinista que representa o processo de inferência dos gestos com base no número de dedos “d” detectados na silhueta da mão. O único símbolo do vocabulário é “d”, que significa “dedo”. Os estados de reconhecimento q1, q2 e q3 representam os gestos INDICE_1, INDICE_2 e ESTENDIDO, respectivamente. 77 Figura 33 - Mecanismo de movimento no cursor. Para cada ponto p1, p2 e p3, a direção do movimento é dada pelas coordenadas (x,y) do vetor e a velocidade do movimento é dada pela norma do vetor. Em torno do ponto de referência O existe uma área de inatividade na qual os pontos que caem nessa área (p2) não ocasionam nenhum movimento. 82 Figura 34 - Mecanismo de movimento do cursor. O vetor formado entre a posição do dedo índice e o ponto de referência indica a direção do movimento. A cada quadro este vetor é somado à última posição do cursor. 83 Figura 35 - Padrão de mudança do evento CLICK. Na nossa aplicação, o intervalo de tempo foi definido em número de quadros, T=20. Entre os gestos INDICE_2 pode haver vários gestos INDICE_1. A partir do gesto corrente (atual) é analisada a seqüência em busca do padrão de mudança requerido. 83 Figura 36 - Evento ARRASTAR. O evento acontece enquanto o gesto INDICE_1 é mantido. Para validar o evento, o intervalo de tempo em que o gesto INDICE_1 é mantido deve ser maior do que o t predefinido. Na nossa aplicação o tempo foi t =T-5. O tempo t está relacionado com o tempo T. 84 Figura 37 - Diagrama de fluxo do controle do cursor do mouse. Os eventos são validados dependo do gesto que está sendo processado. O evento CLICK é validado para diferenciar o CLICK do evento MOVIMENTAR. O evento ARRASTAR é validado para diferenciar se o gesto INDICE_1 indica o PUC-Rio - Certificação Digital Nº 0310888/CB evento ARRASTAR o simplesmente faz parte da seqüência do CLICK. 85 Figura 38 - Gesto ESTENDIDO sendo mapeado para o evento CLICK_DIREITO do mouse no sistema Windows. Ao gerar o evento no arquivo selecionado, é mostrado o menu disponível no arquivo. 85 Figura 39 - Gesto INDICE_2 sendo utilizado para movimentar o ponteiro do mouse. Utilizando o gesto INDICE_2 podem-se selecionar itens do menu. 86 Figura 40 - Gesto INDICE_1 sendo mapeado para o evento ARRASTAR, o qual é utilizado para desenhar letras no PAINT. 86 Figura 41 - Mecanismo utilizado para calcular a direção do movimento. (a) Mecanismo utilizado para calcular as direções PARA_FRENTE e PARA_TRAS. (b) Mecanismo utilizado para calcular as direções DIREITA e ESQUERDA. O valor utilizado na nossa implementação foi α = 75° . 87 Figura 42 - (a) Geração do evento ATIRAR utilizando o gesto INDICE_1. A posição e a direção do dedo índice não indicam movimento. (b) Movimentação do helicóptero utilizando o gesto INDICE_2. A posição e a direção de dedo indicam os eventos PARA_FRENTE e PARA_DIREITA . Neste caso não é gerado o evento ATIRAR. 88 Figura 43 - (a) Utilizando o gesto INDICE_1 para gerar o evento ATIRAR e ao mesmo tempo movimentar o helicóptero. A posição e a direção do dedo indicam a direção do movimento PARA_TRAS e PARA_ESQUERDA. (b) Gesto ESTENDIDO SOLTAR_EXPLOSIVO. sendo utilizado para gerar o evento 89 Figura 44 - Estados da aplicação representados como sendo um autômato finito de quatro estados. Os estados q2 e q3 geram os eventos AVANÇAR e RECUAR, respectivamente. 90 Figura 45 - Geração do evento AVANÇAR. A mudança do gesto (a) FECHADO para o gesto (b) ESTENDIDO gera o evento AVANÇAR, que é refletido na (c) tela do monitor. 91 Figura 46 - Geração do evento RECUAR. A mudança do gesto (a) FECHADO para o gesto (b) INIDICE_2 gera o evento RECUAR, que é refletido na (c) PUC-Rio - Certificação Digital Nº 0310888/CB tela do monitor. 91 Lista de tabelas Tabela 1 - Resultado dos testes feitos para a avaliação do reconhecimento do número de dedos presente na mão. Para cada número de dedos é apresentada uma estatística indicando o número e a porcentagem de acertos e erros ao longo do teste. 78 Tabela 2 - Resultado dos testes feitos para a avaliação do reconhecimento dos gestos predefinidos. Para cada um dos 4 gestos é apresentada uma estatística indicando o número e a porcentagem de acertos e erros ao longo do teste. 79 Tabela 3 - Resultado do teste de reconhecimento dos eventos CLICK e PUC-Rio - Certificação Digital Nº 0310888/CB CLICK_DUPLO. 84 1 Introdução Muitos usuários tentam imaginar por que os computadores ainda permanecem “cegos” apesar do grande avanço no poder de processamento. Mas como pode-se esperar “inteligência” de máquinas que não estão cientes do que acontece a seu arredor, se unicamente podem sentir sinais do teclado e movimentos do mouse? Recentemente, o preço das câmeras digitais de vídeo tem diminuído drasticamente. Por menos de 200 reais, cada computador pode ser equipado com um novo e útil sentido: a visão. Como a Visão Computacional pode ser PUC-Rio - Certificação Digital Nº 0310888/CB utilizada para permitir uma interação mais veloz ou simplesmente mais intuitiva? Este trabalho tentará responder tais perguntas com um exemplo de dispositivo de interação baseado em gestos da mão. 1.1. Motivação Por muito tempo, a pesquisa em Interfaces Humano-Computador (IHC) tem sido restrita à utilização do monitor, do teclado e do mouse. Recentemente este paradigma tem mudado. Técnicas como Visão Computacional, Reconhecimento de Voz e Dispositivos de Rastreamento (Tracking) têm permitido uma interação mais intuitiva e natural entre homem e máquina. Mesmo com estas novas tecnologias, existe ainda um enorme abismo entre o mundo dos humanos e o mundo das máquinas. A maioria dos computadores existentes não está ciente de nós ou de nossos sentimentos a menos que os expressemos explicitamente. Os dispositivos de interação baseados em gestos são tradicionalmente construídos utilizando diferentes dispositivos de rastreamento (Tracking) óptico, magnético ou mecânico ligados ao computador e/ou colocados no corpo do usuário. Muitos desses sistemas utilizam equipamentos sofisticados (dispositivos de rastreamento, luvas, câmeras especiais, etc.) que os tornam difíceis de serem comercializados em massa devido ao alto custo. Além disso, muitas vezes, devido a sua operabilidade, requerem espaços e ambientes especiais. Introdução 18 Alguns sistemas que não utilizam dispositivos de rastreamento, os baseados em Visão, utilizam técnicas de reconhecimento de padrões nas imagens capturadas. Para conseguir isto, os sistemas utilizam algumas restrições do ambiente, do fundo da cena, da cor dos objetos a serem reconhecidos, das condições de iluminação e das características das câmeras e constroem ambientes bem controlados, de maneira a facilitar as fases inicias do reconhecimento em benefício da operabilidade do sistema. Alguns desses sistemas são apresentados no Capítulo 2 da presente dissertação. Uma interação natural entre humanos e computadores não deveria nem requerer instalações especiais nem envolver qualquer dispositivo (mecânico, óptico ou magnético) que a pessoa devesse vestir ou manipular. Assim como temos a habilidade de estarmos cientes do ambiente à nossa volta através de nossos sentidos, a princípio o computador deveria ser capaz de imitar esta PUC-Rio - Certificação Digital Nº 0310888/CB habilidade usando interfaces que emulem os sentidos, o que o tornaria mais fácil e mais intuitivo de usar. Conseqüentemente, novas linguagens e interfaces não convencionais precisam ser construídas e devem ser capazes de traduzir para o computador os gestos, sentimentos, expressões, linguagem e demais meios de comunicação utilizados na interação natural entre humanos. 1.2. Objetivos Este trabalho estará focado na interação Humano-Computador baseado em gestos de uma mão limpa. “Limpa” neste contexto significa que nenhum dispositivo (mecânico, magnético ou óptico) é colocado na mão para poder interagir com o computador. Além disso, o foco também estará centrado em diminuir ou eliminar as restrições especiais impostas para a interação. Ambientes especiais e com condições de iluminação controladas, cor de fundo preestabelecida e cores específicas dos objetos, a princípio, são descartados. Em termos de custo são levados em conta dispositivos (câmeras) de prateleira, facilmente accessíveis. Considerando as características que devem ser levadas em conta, o objetivo principal deste trabalho é mostrar que através do uso de diferentes técnicas de Visão Computacional combinado com a utilização de dispositivos de baixo custo como simples câmeras Web, é possível construir um mecanismo de interação Humano-Computador sem considerar grandes restrições de ambiente, Introdução 19 iluminação, cor dos objetos, etc. de forma que a interação com o computador seja feita da maneira mais natural possível. Para isto construímos uma interface baseada em gestos da mão na qual os gestos e as posições dos dedos são diretamente utilizados para interagir com as aplicações. O escopo desta pesquisa estará limitado ao reconhecimento de alguns gestos da mão (identificação de qual gesto dentre os gestos predefinidos está sendo mostrado pelo usuário) e à detecção e rastreamento dos dedos (localização da posição de certos dedos em imagens de vídeo). Às vezes são realizados alguns ajustes baseados nas características dos ambientes, mas tais ajustes são pequenos e feitos numa fase de instalação de forma a não comprometer a usabilidade do sistema. Para avaliar o desempenho do sistema de interação baseado em gestos da mão e por sua vez avaliar o mecanismo de interação Humano-Computador sem restrições significativas, desenvolvemos PUC-Rio - Certificação Digital Nº 0310888/CB algumas aplicações para demonstrar o sistema em funcionamento. 1.3. Estrutura do Documento O capítulo 2 está dividido em duas partes. Na primeira parte é feita uma revisão de alguns conceitos básicos, importantes para o melhor entendimento e contextualização do mecanismo de interação proposto. São definidos alguns requisitos funcionais e não-funcionais dos sistemas de interação em tempo real. Finalmente são expostas algumas vantagens dos sistemas de interação baseados em Visão que procuram justificar a sua utilização. Na segunda parte é apresentado um conjunto de trabalhos de pesquisa relacionados com o tema de estudo deste trabalho. No capítulo 3 é apresentada a técnica de Subtração de Fundo, utilizada para segmentar o objeto de interesse do fundo da cena. Nesse capitulo é feito um estudo e avaliação dos diferentes algoritmos propostos para este tema. O objetivo principal, além de facilitar a detecção do objeto, é diminuir ou eliminar as restrições do ambiente, de iluminação, de cor, etc. presentes em outros sistemas. Julgamos este capítulo importante, em linhas gerais, por ser a base sobre a qual foram implementadas as idéias desenvolvidas nos capítulos subseqüentes. No capítulo 4 é apresentado um mecanismo para a detecção da silhueta da mão. Nesse capítulo, em uma primeira etapa é feita uma melhoria da segmentação, e depois é apresentada uma abordagem para a obtenção das Introdução 20 silhuetas. Os algoritmos implementados nesta etapa objetivam detectar, coletar e armazenar os pontos da imagem que conformam a silhueta da mão. No capítulo 5 é apresentado o processo de reconhecimento de gestos da mão. Além dos gestos, alguns parâmetros, tais como a posição e orientação dos dedos, também são calculados. O processo de reconhecimento é feito tendo como referência o número de dedos detectados na mão e um conjunto predefinido de gestos a serem reconhecidos. No capítulo 6 são apresentadas algumas aplicações do mecanismo de interação Humano-Computador utilizando gestos da mão. Os gestos da mão e a posição dos dedos são diretamente utilizados para interagir com as aplicações. Finalmente no capítulo 7 temos as considerações finais sobre o trabalho de pesquisa desenvolvido e os trabalhos futuros que podem resultar a partir PUC-Rio - Certificação Digital Nº 0310888/CB deste. 2 Interfaces Baseadas em Visão Neste capítulo, numa primeira parte, será feita a revisão de alguns conceitos básicos, importantes para explicar e contextualizar as interfaces baseadas em Visão. São discutidos alguns requisitos funcionais e não-funcionais dos sistemas de Visão em tempo real. Também é apresentada uma justificativa de por que consideramos a Visão Computacional importante na interação baseada em gestos. Na segunda parte deste capítulo são apresentados alguns PUC-Rio - Certificação Digital Nº 0310888/CB trabalhos relacionados com o tema de pesquisa aqui exposto. 2.1. Conceitos Básicos Muitos dos sistemas de interação baseados em gestos tradicionalmente foram implementados utilizando diversos dispositivos de rastreamento (Tracking) ligados ao computador e ao corpo dos usuários. Os sistemas de interação baseados em Visão não utilizam dispositivos de rastreamento explícitos. Eles utilizam apenas câmeras para a captura das imagens, e técnicas de processamento de imagens e reconhecimento de padrões para o rastreamento dos objetos [11]. Não existem restrições para as características das câmeras. Conforme o fazem algumas aplicações [27], podem ser utilizadas câmeras infravermelhas, sensíveis à temperatura, baseadas em distância, etc. Desde que a câmera seja a única fonte de captura de informação, dizemos que o mecanismo de interação é baseado em Visão Computacional. No contexto da interação Humano-Computador o termo “tempo real” é freqüentemente substituído pelo termo “fortemente acoplado” [7]. Fitzmaurice [7] descreve essa expressão como: “Os sistemas fortemente acoplados possuem uma perfeita sincronização entre suas representações física e virtual, os objetos físicos são detectados continuamente em tempo real”. O termo “perfeitamente sincronizado” também requer uma definição. Em aplicações reais sempre há uma latência (delay) entre a modificação do mundo físico e a adaptação da representação virtual no computador. Interfaces Baseadas em Visão 22 O que tem mudado nestes últimos 20 anos na maneira como os usuários interagem com o computador? A resposta é simples: a interação tem mudado do teclado para o mouse, o teclado é utilizado em muitos casos unicamente para a digitação de texto. Hoje é difícil pensar em um computador sem mouse, pois esse dispositivo permite uma interação mais intuitiva com objetos gráficos como botões, janelas, menus, barras de rolagem, etc., os quais antigamente precisavam do uso do teclado. Assim como o teclado foi substituído pelo mouse, recentemente e com ajuda da Visão Computacional têm aparecido novas interfaces com a finalidade de descartar os dispositivos físicos de interação. No trabalho de Bérard [1] é feita uma classificação que ajuda a entender melhor a PUC-Rio - Certificação Digital Nº 0310888/CB natureza dessas interfaces (Figura 1). Figura 1 - Interfaces tradicionais e interfaces digitais. Extraído de Bérard [1]. Nas interfaces de interação tradicionais, a presença de um dispositivo físico é importante para traduzir os comandos do usuário para o computador. Se o usuário manipula o dispositivo (por exemplo, muda sua posição) o computador recebe o sinal da mudança e manipula o objeto lógico ligado com esse dispositivo. Como acontece quando o mouse muda de posição, o computador mede essa mudança e modifica a posição do ponteiro. Joystick, Space Ball, Cyber Gloves, etc. são considerados no escopo desse tipo de interface, chamados também por Bérard [1] de Graspable Interfaces, ou interfaces que o usuário precisa agarrar para poder interagir. Nessas interfaces, dependendo do dispositivo, podem ser integradas diferentes funcionalidades além dos cliques do mouse (p. ex., posicionamento no espaço e rotações). Ao invés de usar os dispositivos físicos como intermediários, as interfaces digitais eliminam a presença desses dispositivos e permitem uma interação mais direta utilizando partes do corpo para manipular os objetos lógicos no computador. Por exemplo, os dedos da mão poderiam ser utilizados para Interfaces Baseadas em Visão 23 movimentar o ponteiro do mouse. Uma das interfaces digitais mais conhecidas são as telas sensíveis ao tato. 2.2. Requisitos Funcionais Os requisitos funcionais podem ser definidos como sendo um conjunto de serviços que o sistema deve fornecer. Em sistemas de software existem diferentes níveis de abstração em que esses serviços podem ser desenvolvidos. Aqui, serão considerados apenas os mais básicos. Bérard [1] identifica três serviços que os sistemas de interação Humano-Computador baseados em Visão devem fornecer, estes são: detecção, identificação e rastreamento. A detecção determina a presença ou ausência de uma determinada classe de objetos na imagem. Tais classes de objetos poderiam ser partes do corpo, PUC-Rio - Certificação Digital Nº 0310888/CB mãos, braços, etc. Tendo como referência a imagem inteira, o processo de detecção deve ser capaz de detectar na imagem a classe de objeto que se está procurando. Uma forma de facilitar o processo de detecção é limitar o número de objetos que podem estar presentes na cena em um determinado momento. As técnicas de detecção mais conhecidas são as baseadas em cor ou movimento. O processo de detecção deste trabalho será apresentado nos capítulos 3 e 4. A identificação determina qual objeto, dentre um conjunto conhecido de objetos, está presente na cena. Perante a presença de objetos compostos, por exemplo uma mão com os dedos, a identificação deve permitir determinar partes desses objetos, tais como os dedos. Outros exemplos são a identificação de símbolos escritos [35], de palavras na linguagem de signos [36] ou de palavras para o reconhecimento de voz. No nosso caso, o processo de detecção encontra os dedos presentes na mão. Para obter mais informações do gesto, o processo de identificação está orientado a identificar os dedos polegar e indicador. Esse processo será apresentado no capítulo 5. Em muitos casos, os objetos de interesse não permanecem no mesmo lugar ao longo do tempo, o processo de rastreamento utiliza as informações dos dois processos anteriores para manter o foco nos objetos de interesse. No caso deste trabalho o rastreamento se refere à captura das posições de interesse nos dedos. Interfaces Baseadas em Visão 24 2.3. Requisitos Não-Funcionais Muitos dos sistemas de interação podem cumprir com todos os requisitos funcionais, mas demorar horas para fazer isto. Portanto, é indispensável definir alguns requisitos não-funcionais que estabeleçam a qualidade mínima com que os serviços devem ser implementados. Os requisitos não-funcionais considerados são latência, resolução e estabilidade. A latência é o tempo transcorrido entre a ação do usuário e a resposta do sistema. A latência é uma característica inerente a todo sistema, não existem sistemas sem latência. Frente a este problema, poderíamos perguntar: qual é a latência máxima que um sistema de tempo real pode ter? Essa pergunta é difícil de se responder já que é difícil determinar um valor aceitável, pois os valores dependem da tarefa que o sistema deve desempenhar. Seguindo a definição de PUC-Rio - Certificação Digital Nº 0310888/CB interação em tempo real, tentamos conseguir uma interação sem uma latência perceptível para o usuário. Mas qual é o máximo valor de uma latência não perceptível? No trabalho de Handenberg [11] é discutido um experimento que visa encontrar um valor máximo para essa latência, o qual é determinado como sendo próximo a 50 ms ou 20Hz. Nos sistemas de interação em tempo real, a natureza contínua do mundo físico, onde são feitos os gestos, deve ser capturada e representada no mundo discreto ou mundo perceptível do sistema (Resolução Temporal). A ilusão desse mundo em movimento, como no cinema, pode ser criada capturando imagens a uma taxa maior que 20Hz, valor diretamente relacionado com a latência do sistema. A resolução espacial (número de pixels nas imagens) deve permitir uma representação adequada do ambiente capturado. Idealmente, esse número deveria ser igual ao número de pixels existente nos monitores, mas os sistemas de captura (câmeras) não possuem ainda essa resolução e estão limitados a resoluções menores. A estabilidade dos sistemas refere-se às flutuações significativas nos valores capturados (gestos ou posições dos dedos, neste caso). Por exemplo, um sistema pode ser considerado estável se ante um padrão (ex. ponta do dedo) imóvel os valores capturados não mudam significativamente. As possíveis causas de instabilidade são principalmente as flutuações nas fontes de iluminação e o ruído inerente aos dispositivos de captura. Interfaces Baseadas em Visão 25 2.4. Visão Computacional na Interação Humano-Computador em Tempo Real No mercado existem diferentes dispositivos que permitem aos usuários usar as mãos para interagir com o computador. Alguns exemplos são teclado, mouse, TrackBall, Track-Pad, Joystick e controles remotos. Outros, mais sofisticados, incluem Cyber-Gloves, 3D-mice (ex. Labtec SpaceBall) e dispositivos de rastreamento magnético (ex. Polhemus Isotrack) ou mecânico. Muitos desses dispositivos são mais baratos, confiáveis e fáceis de fazê-los funcionar do que os atuais sistemas baseados em Visão Computacional. A evolução dos sistemas de Visão Computacional, entretanto, promete resultados melhores num futuro próximo. PUC-Rio - Certificação Digital Nº 0310888/CB 2.4.1. Vantagens dos Sistemas Baseados em Visão Primeiramente, a Visão Computacional é uma tecnologia com um grande potencial para integração em micro-circuitos digitais. Portanto a produção em massa é muito mais fácil de se realizar do que outros dispositivos com partes mecânicas, como os Cyber Gloves, por exemplo. Considerando o crescimento na velocidade de processamento existente, os custos de processamento das imagens poderão ser descartados. Outra vantagem, muito importante, é a versatilidade. Enquanto outros dispositivos tais como mouse, Joystick e Track-Pad são limitados a funções específicas, a Visão Computacional oferece uma ampla gama de possíveis aplicações, não somente na área da interação humano-computador, mas também em áreas tais como a identificação de usuários e vídeo-conferências. Essas aplicações tornam interessante a inclusão de câmeras em produtos tais como monitores, notebooks, telefones celulares, televisores, projetores e videogames (ex. EyeToy). Na nossa opinião, a principal vantagem da Visão Computacional é a nãointrusividade. Assim como os microfones ou câmeras, os dispositivos baseados em Visão são abertos e não precisam do contato físico com o usuário para interagir. Os usuários podem interagir com o computador livremente, sem cabos e sem manipular dispositivos intermediários. Por esta razão, procuraremos desenvolver algoritmos de Visão Computacional que não requeiram equipamentos colados ao corpo (tais como marcadores ou luvas coloridas). Interfaces Baseadas em Visão 26 Esses marcadores poderiam simplificar vários problemas dos algoritmos de Visão, mas destroem a principal vantagem da Visão Computacional que é a nãointrusividade. Idealmente, a parte técnica do sistema de Visão deveria estar escondida do usuário, o qual, com gestos e movimentos do corpo, poderia se comunicar com o computador. Em conjunção com o reconhecimento de voz, pode-se facilmente imaginar um computador que permita uma interação muito mais natural e intuitiva do que os atuais dispositivos. Claramente este objetivo é mais fácil de se imaginar do que de se fazer. Apesar do avanço das pesquisas recentes em Visão Computacional, ainda não dispomos de produtos comercias bem sucedidos. PUC-Rio - Certificação Digital Nº 0310888/CB 2.4.2. Desafios Muitos dos problemas da Visão Computacional, como por exemplo o de detectar uma mão em movimento sobre um fundo relativamente constante, que parecem simples à primeira vista, são na realidade produto de um complexo processo realizado em nosso cérebro. Reproduzir estes processos no computador é o desafio da Visão Computacional. Um dos grandes problemas é a quantidade de informação de entrada disponível. A retina tem aproximadamente 125 milhões de células receptivas para capturar informações do ambiente [11]. Mesmo se as câmeras (resolução máxima de captura em tempo real das WebCam: 480x680) tivessem a mesma capacidade de captura de informação, os computadores não possuem o enorme poder de processamento em paralelo que possui o nosso cérebro. Portanto, somente alguns processos básicos são implementados na maioria dos sistemas em tempo real baseados em Visão. Outro problema da Visão é a baixa confiabilidade e a instabilidade, ocasionadas, entre outras coisas, por mudanças de iluminação, oclusão, movimento e ruído nos equipamentos de captura. O sistema de visão humano integra várias características que são observadas em paralelo (ex. cor, movimento, contornos) junto ao seu conhecimento do mundo para lidar com esses problemas. Conseguir isto num computador não é uma tarefa fácil. Nossas capacidades são o fruto da integração de nosso conhecimento do mundo (nossa experiência) ao longo de nossas vidas e é importante considerar isto nos algoritmos de Visão se quisermos resultados mais robustos. Interfaces Baseadas em Visão 27 Por estas razões é difícil construir um sistema de Visão Computacional de propósito geral que seja capaz de trabalhar com toda classe de objetos e em todos os ambientes. É preciso restringir o campo de ação e construir sistemas mais específicos. 2.5. Trabalhos Relacionados Nos últimos anos, muitos trabalhos de pesquisa relacionados à interação Humano-Computador baseada em Visão têm sido desenvolvidos. No que diz respeito à interação utilizando a mão, muitos dos sistemas desenvolvidos têm se dedicado ao reconhecimento de gestos e posturas, o que significa que a interação com o computador é baseada no reconhecimento de diferentes posturas e gestos da mão. Uma interessante diversidade de abordagens tem PUC-Rio - Certificação Digital Nº 0310888/CB sido apresentada, mas não existe uma que seja amplamente utilizada para o reconhecimento de gestos. Por outro lado os sistemas que, além de reconhecer alguns gestos básicos, interagem utilizando os dedos da mão têm captado pouco interesse. Não obstante, os sistemas existentes são de grande interesse para este trabalho porque na maioria dos casos se depararam com os mesmos problemas de segmentação e rastreamento que encontramos em nossa pesquisa. 2.5.1. Sistemas Baseados no Reconhecimento de Gestos Segundo Pavlovic [28], os sistemas de reconhecimento de gestos da mão podem ser classificados em dois grupos: os baseados no modelo 3D e os baseados na aparência da imagem 2D. Nos sistemas baseados no modelo 3D, o modelo da mão é definido através de um conjunto de parâmetros que descrevem todos os graus de liberdade da mão. Geralmente, o mecanismo consiste em procurar um conjunto de parâmetros que melhor ajustem o modelo 3D e sua projeção 2D na imagem (Figura 2). Alguns trabalhos que aplicam esta técnica são os de Kuck & Huang [18], Lee & Kunii [24], Regh & Kanade [30], Stenger [37] e Wu [46]. Interfaces Baseadas em Visão 28 Figura 2. Resultados do trabalho de Regh & Kanade [30]. O esqueleto é sobreposto na imagem original da mão. No lado direito, o modelo 3D é calculado a partir dos parâmetros encontrados no esqueleto. Extraída de Regh & Kanade [30]. Nos sistemas baseados na aparência da imagem 2D, os parâmetros são extraídos diretamente das imagens. Parâmetros como a posição dos dedos na imagem, contornos e linhas, cor da mão, momentos e transformadas de espaço, PUC-Rio - Certificação Digital Nº 0310888/CB entre muitos outros, são explorados. No trabalho de Freeman [8] são descritas algumas técnicas simples para a interação através de visão. Um desses exemplos mostra como a orientação da mão, que é o conjunto de pixels diferentes do fundo, é utilizada para dirigir um robô (Figura 3.a); outro exemplo mostra como a diferença de imagens pode ser utilizada para inferir direção e movimento (Figura 3.b); e outro exemplo mostra como os chamados histogramas de orientação dos pixels são utilizados para reconhecer diferentes posturas da mão (Figura 3.c). No trabalho de Staner [36] é utilizada uma segmentação simples da cor da mão sobre fundo preto e são empregados modelos de Markov para reconhecer algumas posturas da mão. No trabalho de Sato [31] os parâmetros de uma câmera infravermelha são ajustados para capturar a mão; depois, na imagem gerada, são reconhecidas algumas posturas simples da mão. Interfaces Baseadas em Visão 29 Figura 3 – Métodos simples para interagir através da Visão apresentados no trabalho de Freemam [8]. (a) Orientação da mão para dirigir um robô. (b) Subtração de imagens para PUC-Rio - Certificação Digital Nº 0310888/CB inferir direção do movimento. (c) Histogramas de orientação. Outros sistemas utilizam feições locais das mãos e dos dedos para reconhecer gestos mais complexos na interação. Existem diferentes abordagens, com destaque para as baseadas na silhueta. Tais sistemas utilizam diversos algoritmos de Visão para conseguir extrair a silhueta da mão. Nos trabalhos de Heap [12] (Figura 4.a) e Hall [10], a silhueta da mão é modelada como sendo uma curva e o reconhecimento é feito através de medidas de correlação (semelhança). No trabalho de Segen [33] é utilizado um ambiente controlado para a extração da silhueta; depois, utilizando algumas heurísticas, são reconhecidas algumas posturas da mão. Essas posturas são utilizadas para controlar um jogo e para navegar sobre um terreno (Figura 4.b). Outras abordagens para o reconhecimento de gestos constituem os sistemas que utilizam imagens de treinamento para modelar os gestos a serem reconhecidos. O trabalho de Laptev [22] utiliza funções gaussianas (blobs) para representar o conjunto de imagens de treinamento que contém as posturas a serem reconhecidas (Figura 4.c). Dentro deste grupo podemos considerar também os trabalhos baseados em HMM (Hidden Markov Models), tais como os apresentados por Lee & Kim [23], Schlenzing [32], Vogler & Metaxas [42] e Wilson & Bobick [44]. No trabalho apresentado por Viveck [41] é utilizada a transformada de Fourier-Mellin junto com Redes Neurais para o reconhecimento de posturas da mão. Interfaces Baseadas em Visão 30 Figura 4 – (a) Extração do contorno da mão com o modelo de curva rígida. Extraído de PUC-Rio - Certificação Digital Nº 0310888/CB Heap [12]. (b) Posturas da mão para controlar funções básicas de um jogo de computador. Extraído de Segen [33]. (c) Funções de Gauss (blobs) para detectar a mão e os dedos. Extraído de Laptev [22]. 2.5.2. Sistemas Baseados na Detecção dos Dedos Tradicionalmente, os sistemas baseados na detecção dos dedos são utilizados para construir interfaces que simulem funções básicas do mouse ou do teclado. Muitos desses sistemas podem ser considerados como sendo uma especialização dos sistemas de reconhecimento de gestos, pois a princípio eles utilizam as técnicas descritas na seção anterior, mas a detecção dos dedos é importante para a interação. Muitos desses sistemas, para poder reconhecer os dedos, utilizam diversas abordagens que exploram características da mão e os dedos, assim como das imagens. No trabalho de Queck [29] é apresentado um sistema chamado “FingerMouse”, que explora a cor da mão para segmentá-la do fundo; a ponta do dedo é sempre o ponto com maior coordenada y. Esse sistema é utilizado para movimentar o ponteiro do mouse com um dedo, e o evento clique do mouse é gerado ao se apertar uma tecla no teclado (Figura 5). Outro trabalho que explora a cor da mão é o de Kurata [21], que utiliza o dedo da mão para selecionar menus na imagem. No trabalho de Kulessa [19] é mostrado que é muito difícil construir um modelo de cor da mão que seja invariante a flutuações de Interfaces Baseadas em Visão 31 iluminação. Por isso, os sistemas que utilizam unicamente informações da cor da mão não têm bom desempenho e são muito limitados. Figura 5 - Sistema “FingerMouse”. Extraído de Queck [29]. Muitos dos sistemas de detecção tentam explorar diferentes características da forma da mão e dos dedos. Para isto, estes utilizam medidas de correlação entre um padrão a ser reconhecido e os dados de entrada da imagem. Na PUC-Rio - Certificação Digital Nº 0310888/CB maioria dos casos as imagens de entrada são imagens pré-processadas e a medida de similaridade (correlação) é feita nessas imagens. Devido à procura de um padrão específico na imagem, o número de gestos e a variação destes são muito limitados. No trabalho de Freeman [9] é apresentado um sistema de correlação que detecta uma mão estendida e fechada e utiliza a posição do dedo indicador para interagir com um programa que controla algumas funções básicas de uma televisão. A medida de correlação é feita numa área definida da imagem e a segmentação da mão é feita por cor. Crowley [4] desenvolve um sistema, com um plano de fundo especial, que explora as características da forma do dedo na correlação, permitindo desenhar linhas utilizando a ponta do dedo. No trabalho de Handenberg [11] é apresentado um sistema que utiliza a diferença de imagens na segmentação e então, na correlação, utiliza círculos para procurar a posição dos dedos. Alguns gestos como o clique padrão e o clique direito do mouse são implementados (Figura 6.a). Outros sistemas facilitam a etapa de segmentação utilizando câmeras infravermelhas, o que permite uma segmentação mais acurada das mãos. No trabalho de Ukita [39] é mostrado um sistema que utiliza o dedo para desenhar linhas em que os dedos são modelados como sendo semicírculos, os quais são utilizados no processo de correlação. No trabalho de Oka [27] as pontas dos dedos são modeladas como sendo círculos no processo de correlação. O movimento dos dedos detectados é utilizado para reconhecer algumas figuras geométricas, as quais são utilizadas como comandos na interação (Figura 6.b). Interfaces Baseadas em Visão 32 Figura 6 – (a) Interação com o computador — posicionar a ponta do dedo num mesmo lugar por um determinado tempo ocasiona um clique. Extraído de Handenberg [11]. (b) Detecção dos dedos no trabalho de Oka [27]. Extraído de Oka [27]. Em vez de procurar diretamente pelas características dos dedos, alguns trabalhos procuram pelo contorno ou silhueta da mão e depois, na silhueta, procuram os pontos que representam as pontas dos dedos. Normalmente a modelagem do contorno é feita através de curvas B-Splines ou contornos ativos PUC-Rio - Certificação Digital Nº 0310888/CB (Snakes) e o seguimento dos pontos de controle é feito através de algoritmos como Kalman ou Condensation. Nos trabalhos de Hall [10] e MacKormick [26] (Figura 7) são utilizadas essas técnicas para a detecção e o seguimento dos contornos, onde depois são detectados os dedos. Figura 7 – Detecção do contorno da mão apresentado no trabalho de MacKormick [26]. A ponta do dedo detectada é utilizada para desenhar. Extraído de MacKormick [26]. 2.6. Sistema de Interação Proposto Muitos dos sistemas aqui expostos utilizam os gestos reconhecidos e os dedos detectados em aplicações e ambientes específicos. Muitas vezes esses ambientes e aplicações condicionam os processos de detecção dos dedos e reconhecimento de gestos. Diferentemente desses sistemas, no presente trabalho é proposto um sistema base para o reconhecimento de alguns gestos simples da mão que possam ser utilizados para reconhecer gestos mais Interfaces Baseadas em Visão 33 complexos em ambientes de trabalho convencionais. Este sistema se apresenta como sendo uma camada de baixo nível que garante o reconhecimento de um conjunto de gestos básicos para outras aplicações, as quais podem utilizar esses gestos de acordo as suas necessidades. O sistema proposto neste trabalho possui as características dos sistemas baseados na detecção dos dedos. O objetivo principal é a detecção e o rastreamento dos dedos da mão. Com base nos dedos detectados e em suas informações (número, posição, direção, etc.) é reconhecido também um conjunto básico de gestos. Assim, na interação, tanto os gestos reconhecidos quanto as informações dos dedos são utilizados. Para poder detectar os dedos da mão é empregada uma abordagem baseada na silhueta. Nesta abordagem é necessária a extração da silhueta da mão para detectar os dedos. A detecção da silhueta é baseada numa abordagem de segmentação que considera as características de cor e da PUC-Rio - Certificação Digital Nº 0310888/CB iluminação do ambiente onde a mão está se movimentando. Nessa etapa de segmentação é introduzida uma abordagem de segmentação de fundo que, além de segmentar o objeto de interesse, procura diminuir as restrições do ambiente e a influência da iluminação na modelagem do fundo. Ao contrário de muitos trabalhos que se concentram exclusivamente nas características dos objetos para a sua segmentação e reconhecimento, neste trabalho são exploradas em conjunto as características do objeto e as características do ambiente. No próximo capítulo é apresentada a etapa de segmentação desse sistema, na qual uma abordagem de subtração do fundo é utilizada para segmentar a mão do fundo da cena. 3 Subtração de Fundo Este capítulo apresenta um estudo sobre algoritmos para a detecção de objetos em movimento em uma cena com fundo estático. Normalmente, estas cenas estão sob a influência de mudanças na iluminação e sujeitas à presença de sombras. O objetivo principal deste capítulo é estabelecer um algoritmo para detectar e segmentar uma mão em movimento sobre um fundo qualquer a partir de uma seqüência de imagens em cores, capturadas por uma câmera. Para isso, são estudados diversos algoritmos de subtração de fundo, com a finalidade de achar abordagens capazes de lidar com fundos arbitrários sujeitos a mudanças PUC-Rio - Certificação Digital Nº 0310888/CB na iluminação e à presença de sombras. A seção seguinte apresenta um breve resumo da técnica de segmentação baseada em subtração de fundo seguido de uma discussão sobre alguns dos problemas dos algoritmos encontrados na literatura para o problema proposto. Posteriormente são descritos dois algoritmos selecionados para serem implementados em função deles serem capazes de lidar com mudanças de iluminação e sombras. Finalmente os resultados destes dois algoritmos são apresentados, comparados e analisados. Desta análise resulta uma escolha em função do objetivo desta etapa de segmentação. 3.1. Segmentação por Subtração de Fundo A capacidade de detectar objetos em movimento a partir de seqüências de vídeo é fundamental em muitos sistemas de visão computacional. Essa capacidade permite que os sistemas foquem a atenção nos objetos que estão em movimento e que possivelmente são uma peça crucial na execução da tarefa para a qual foram programados. Uma abordagem muito utilizada para a segmentação de objetos em movimento do fundo da cena é a subtração de fundo. A idéia da subtração de fundo é subtrair da imagem atual uma imagem de referência, a qual é adquirida e modelada a partir de um fundo estático durante um certo período de tempo, conhecido como período de treinamento. Assim, o fundo pode ser qualquer um, desde que permaneça razoavelmente estático. Subtração de Fundo 35 A qualidade dos resultados obtidos pelo processo de subtração de fundo depende muito do modelo utilizado para a representação do fundo da cena. Uma abordagem simples e às vezes satisfatória consiste em calcular uma imagem de referência do fundo como sendo a média de um conjunto de imagens. Posteriormente, quando um objeto entra na cena, este causa uma divergência na imagem capturada com relação à imagem de referência. Assim, os pixels da imagem capturada correspondentes ao objeto são aqueles nos quais ocorrem mudanças significativas. Desde que a técnica de subtração de fundo foi reconhecida como um método para detectar objetos em movimento, apareceram na literatura diversos modelos e abordagens para a implementação destes algoritmos. Alguns algoritmos exploram a diferença estatística e/ou probabilística de cor entre a imagem atual e a imagem de referência, a qual é treinada durante um período de tempo ou com base em um número determinado de imagens [14, 15, 6, 13, 2, 3]. PUC-Rio - Certificação Digital Nº 0310888/CB Outros se baseiam na análise de movimento dos objetos [17], nas características das imagens em estéreo [45], em transformações logarítmicas [46] e no aprendizado por markov e bayesianas [20]. Existem ainda algumas abordagens híbridas (por exemplo, [17, 46, 5]). No contexto da pesquisa desta dissertação, o algoritmo de segmentação de fundo foi utilizado para segmentar o objeto “MÃO” de um fundo estático qualquer sobre o qual ela está se movimentando. 3.2. Requisitos para o Algoritmo de Subtração de Fundo O sistema de reconhecimento de gestos precisa processar as imagens capturadas em tempo real. Como a etapa de extração de fundo é apenas a parte inicial deste sistema, a eficiência medida em termos de tempo de processamento é um requisito importante. Existem outros problemas que tornam o processo de segmentação, via subtração de fundo, bastante difícil. Qualquer mudança física na iluminação altera a imagem do fundo, o que torna o modelo inadequado e afeta o desempenho do algoritmo. Embora muitos dos algoritmos disponíveis na literatura tenham desempenhos satisfatórios, são poucos os que conseguem lidar razoavelmente bem com as mudanças globais e locais da iluminação, tais como sombras e flutuações nas fontes de luz. Subtração de Fundo 36 Também é importante considerar o fator de robustez e eficiência na detecção do objeto em movimento, característica que visa permitir um grau de detecção alto e uma segmentação que represente realmente a morfologia do objeto. No contexto desta pesquisa as medições foram feitas baseadas na qualidade de detecção e segmentação da morfologia da mão. O próprio movimento dos objetos gera sombras e ocasiona mudanças na iluminação. Às vezes estas sombras são detectadas como sendo parte do objeto, afetando a eficácia do algoritmo. Os algoritmos de Wu & Jeng [46] e de Butler et al. [2], por exemplo, têm seu desempenho muito prejudicado pela presença de sombras. Na implementação que fizemos destes algoritmos as sombras foram detectadas como sendo parte do objeto e não encontramos uma alternativa para destacá-las, de modo que a morfologia da mão ficou totalmente deformada na segmentação. Como é afirmado pelos autores destes algoritmos, PUC-Rio - Certificação Digital Nº 0310888/CB eles só são adequados para a extração de fundos que não contenham sombras do objeto. Existem ainda os algoritmos que tratam das sombras, mas que se tornam instáveis na presença delas. Na nossa implementação dos algoritmos de Elgammal et al. [6] e de Hong & Woo [13] muitos pontos da sombra do objeto foram considerados como sendo o objeto. Ajustando os limiares destes algoritmos (valores de threshold) pode-se melhorar esta situação, no entanto esse procedimento é difícil e não existe um padrão de atribuição de valores do limiar que torne fácil a tarefa de excluir os pontos da sombra na segmentação. A Figura 8 mostra o tipo de resultados obtidos para implementação destes algoritmos. Existem situações para as quais é possível isolar as sombras, entretanto pequenas mudanças na iluminação tornam os limiares escolhidos inadequados, fazendo com que estes algoritmos não tenham um desempenho aceitável. Subtração de Fundo 37 Figura 8 - Resultado dos algoritmos que lidam parcialmente com sombras; dificuldade na atribuição do limiar e impossibilidade de isolar as sombras; morfologia deformada do objeto. Como podemos notar na Figura 8, existem alguns pixels em que há diminuição da iluminação devido à oclusão da luz pela mão; estes pixels em sombra não mudam de cor, mas experimentam uma redução de luminosidade. PUC-Rio - Certificação Digital Nº 0310888/CB Portanto é indispensável considerar modelos que permitam saber que houve apenas mudança na iluminação e não na cor original do fragmento da imagem. Dentro do estudo sobre algoritmos de subtração de fundo, encontramos dois algoritmos que conseguem fazer esta distinção: o algoritmo de Horprasert et al. [14, 15], que calcula a distorção do brilho e a distorção de cor de cada ponto no espaço RGB, e o algoritmo de Cheung et al. [3], que calcula o ângulo formado entre os dois vetores que representam pontos no espaço RGB. Cada um destes algoritmos teve um desempenho aceitável para os requisitos do presente estudo. Na seção seguinte apresentamos estes algoritmos em mais detalhes procurando justificar a escolha do algoritmo de Horprasert et al. [14]. 3.3. Algoritmos Robustos de Subtração de Fundo Antes de discutirmos os algoritmos é importante fazermos algumas considerações para entendermos algumas características físicas que influenciam as câmeras de vídeo. Os sensores utilizados nas câmeras tipicamente transformam cores de um espaço de dimensão infinita em cores em um espaço tridimensional RGB através de filtros de cores nas bandas vermelha, verde e azul. Além da perda de precisão na digitalização das cores, existe uma contínua variação de cor ao longo do tempo. Raramente é possível obter o mesmo valor RGB de cor num ponto específico da imagem durante um certo período de tempo. Ruídos inerentes aos equipamentos e as flutuações de iluminação Subtração de Fundo 38 presentes nas fontes de luz fazem variar estes valores. Além disso, existe uma variação desigual nos filtros de cores nas bandas vermelha, verde e azul, o que indica que existe uma sensibilidade diferente para cada uma destas bandas (a variação é diferente em cada canal de cor). Uma das habilidades fundamentais no sistema de visão humano é a constância de cor. Os humanos tendem a atribuir uma cor constante a um objeto, embora existam mudanças na iluminação ao longo do tempo ou espaço. O algoritmo de Horprasert et al. [14, 15] e o algoritmo de Cheung et al. [3] tentam reproduzir esta habilidade na modelagem e subtração do fundo na cena. O esquema básico de subtração de fundo nestes algoritmos consiste em subtrair a imagem atual da imagem de referência, a qual modela o fundo. Para que isto possa ser feito, os algoritmos começam com uma etapa de modelagem na qual se constrói a imagem de referência; em seguida, há uma etapa estatística para determinar um limiar apropriado nas variáveis de comparação e PUC-Rio - Certificação Digital Nº 0310888/CB finalmente a etapa de subtração e classificação, em que cada ponto é segmentado em grupos diferentes. A segunda etapa não está explicitamente indicada no algoritmo de Cheung et al. [3]; portanto, a seleção do limiar é feita unicamente por um processo de tentativa e erro (testando diferentes valores). Antes de apresentarmos cada uma das etapas dos algoritmos é importante mostrarmos o modelo computacional de cor que eles utilizam. Ambos algoritmos citados acima trabalham com valores de cores no espaço tridimensional RGB. 3.3.1. Modelo de Cor No algoritmo apresentado por Horprasert et al. [14], o modelo é baseado na diferença entre as cores medida através de distorções de brilho (brightness) e de cromaticidade (chromaticity). A Figura 9 ilustra o modelo computacional de cor proposto neste algoritmo no espaço tridimensional RGB. Considerando o ponto (pixel) i na imagem, denota-se E i = [E R (i ), E G (i ), E B (i )] como sendo o vetor que representa a cor esperada do ponto (imagem de referência). A linha OEi , que passa pela origem e através do ponto Ei , é chamada de linha de cor (expected chromaticity line). I i = [I R (i ), I G (i ), I B (i )] é a cor RGB do ponto na imagem atual, da qual se quer subtrair o fundo. Neste modelo basicamente se quer medir a distorção existente entre I i e Ei . Isto é possível medindo a distorção de brilho e de cor, no valor RGB do pixel. Subtração de Fundo 39 Figura 9 - Modelo de cor no espaço tridimensional RGB proposto em [14]. o valor de cor esperado do ponto PUC-Rio - Certificação Digital Nº 0310888/CB imagem atual. A diferença entre Ei representa i na imagem de referência, I i representa a cor na I i e Ei é decomposta em distorção de brilho ( α i ) e distorção de cor ( CDi ). (Extraída de [14]). A distorção de brilho ( α i ) é o valor escalar que projeta a cor atual I i na linha de cor de modo que ela se aproxime o máximo possível do valor de referência E i . α i é o argumento que minimiza: φ (α i ) = (I i − α i Ei ) 2 O valor α i representa a distorção de brilho de Ii com relação ao valor esperado Ei ; se α i é menor do que 1 este é mais escuro, se α i é maior do que 1 este é mais claro. A distorção de cor CDi é definida como sendo a distância ortogonal entre o valor atual Ii e a linha de cor no modelo. Este é dado por: CDi = I i − α i Ei Para entender melhor este modelo, são importantes algumas considerações. A distorção de brilho é um valor escalar que posiciona o valor da cor atual ao longo da linha de cor. Uma característica importante desta linha é que ela mantém um certo padrão de cor ao longo dela, mudando apenas a intensidade luminosa. Assim é possível determinar se um certo ponto na imagem tem um valor de cor parecido com outro, mas com brilho diferente. A distorção de brilho significa apenas uma mudança na iluminação e não uma mudança Subtração de Fundo 40 significativa na cor do pixel. Esta diferenciação permite identificar pontos da imagem que representam sombras, pois eles têm um brilho bem menor do que o original no modelo de referência, mas ainda mantêm uma cor parecida à original. A distorção de cor indica o grau de afastamento que se tem dos padrões de cores representados pela linha. Assim, através deste indicador pode-se saber se a cor atual está muito longe ou não do padrão de cores representado pela linha, o que é útil para saber se aquele pixel faz parte de um objeto diferente que está presente na imagem atual. No algoritmo de subtração de fundo apresentado por Cheung et al. [3] não existe um modelo específico de decomposição de cores. Os valores de cor são considerados como sendo os valores RGB, e as etapas de modelagem e subtração de fundo consideram os valores de cor neste espaço. Portanto, os valores de cor não são decompostos nem transformados neste algoritmo. O fato PUC-Rio - Certificação Digital Nº 0310888/CB de que o algoritmo meça o ângulo entre dois vetores no espaço RGB indica que a comparação é feita entre duas linhas de cor. 3.3.2. Modelagem do Fundo No processo de treinamento do algoritmo apresentado por Horprasert et al. [14], a imagem de referência e alguns atributos relacionados com ela são calculados ao longo de um período de tempo ou com base em um número definido de imagens de treino. Cada pixel é modelado como sendo um vetor de 4 componentes, desvio padrão, < Ei, si, ai , bi > , ai onde Ei é o valor esperado da cor, é a distorção média de brilho e cor. Neste algoritmo, imagens de treino e bi si é a distorção média de Ei é considerado como sendo a imagem média das si como sendo o desvio médio padrão presente neste conjunto de imagens. Ou seja: Ei = [µ R (i ), µ G (i ), µ B (i )] S i = [σ R (i ), σ G (i ), σ B (i )] Para o cálculo de ai é o e bi são consideradas as seguintes equações [14]: Subtração de Fundo 41 I (i ) − α µ (i ) 2 I (i ) − α µ (i ) 2 I (i ) − α µ (i ) 2 i R i G i B + B + G α i = (arg min) R ( i ) ( i ) ( i σ σ σ R G B ) (1) I R (i ) µ R (i ) I G (i ) µ G (i ) I B (i ) µ B (i ) + + σ R (i ) 2 σ G (i ) 2 σ B (i ) 2 = µ (i ) 2 µ (i ) 2 µ (i ) 2 R + G + B σ R (i ) σ B (i ) σ G (i ) IR (i ) − α i µ R (i ) 2 IG (i ) − α i µ G (i ) 2 IB(i ) − α i µ B (i ) 2 CDi = + + σ R (i ) σ G ( i ) σ B ( i ) PUC-Rio - Certificação Digital Nº 0310888/CB N a i = RMS (α i ) = ∑ (α i =0 i − 1) 2 (3) N N bi = RMS (CDi ) = (2) ∑ (CD ) 2 i i =0 N (4) O processo de treino e o cálculo das imagens de referência do fundo, no algoritmo de Horprasert et al. [14], é mostrado na Figura 10. Em resumo, o processo começa com a captura de um número de imagens de treino, a partir das quais calcula-se uma imagem média e outra representando o desvio padrão (Passo 1). Para cada uma das imagens de referência calculam-se as imagens da distorção de brilho e da distorção de cor em relação à imagem média (Passos 2 e 3); para obter estas imagens utilizam-se as Equações (1) e (2) respectivamente. Para o cálculo destas imagens são utilizados a imagem original, a imagem média, o desvio padrão e as Equações (1) e (2), completando-se assim os Passos 2 e 3 indicados na Figura 10. Para o Passo 5 utiliza-se a Equação (3) e para o Passo 4 utiliza-se a Equação (4), completando assim o processo de treinamento. No final do processo de treino no algoritmo [14] são obtidas 4 imagens de referência: a imagem média, a imagem do desvio padrão médio, a imagem da Subtração de Fundo 42 distorção média de brilho e a imagem da distorção média de cor. Nestas imagens estão modeladas as características do fundo e são estas as utilizadas como referência no processo de subtração. Observando-se as Equações (1) e (2), onde se calculam a distorção de brilho e de cor, pode-se ver que, no cálculo, estes valores são normalizados ou divididos pelo valor do desvio padrão [14]; assim, pixels com baixo desvio padrão podem ter valores de distorção de brilho e cor muitos altos. Para solucionar este problema é importante determinar um valor mínimo do desvio padrão que pode ter cada um dos pontos nas imagens. Não existe um padrão de atribuição para este valor no algoritmo [14], portanto este valor é atribuído por um método de tentativa e erro (testando diferentes valores positivos menores ou iguais a 1) como foi feito aqui, na implementação do algoritmo. Os valores utilizados foram os mesmos para cada banda de cor. Estes variaram de 0.7 até 1.0 no espaço de cores de 0 até 255. PUC-Rio - Certificação Digital Nº 0310888/CB No processo de treinamento do algoritmo apresentado em [3] não existe um modelo detalhado de modelagem do fundo. A única imagem de referência utilizada por este algoritmo é a imagem média, esta é calculada a partir de um determinado conjunto de imagens de treino; por tanto, só é preciso o cálculo da imagem média no espaço RGB. 3.3.3. Subtração ou Segmentação Nesta parte do processo é calculada a diferença existente entre a imagem de referência e a imagem atual. No algoritmo apresentado por Horprasert et al. [14] essa diferença é decomposta em distorção de brilho e distorção de cor. Aplicando um limiar apropriado na comparação da distorção de brilho e da distorção de cor em um pixel, pode-se obter uma máscara indicando qual é o tipo do pixel que está sendo comparado. De acordo com o modelo de decomposição de cor que é utilizado na fase de subtração, cada pixel pode ser classificado em uma das 4 categorias seguintes: • Fundo original (B), se a distorção de brilho e a distorção de cor são similares aos valores correspondentes na imagem de referência. • Fundo com baixa iluminação ou sombra (S), se a distorção de cor é similar, mas a distorção de brilho é bem menor do que aquela na imagem de referência. Subtração de Fundo • 43 Fundo como alta iluminação (H), se existe uma distorção de cor similar, mas uma distorção de brilho maior do que aquela na imagem de referência. • Objeto em movimento (F), se a distorção de cor é diferente aos valores esperados no treinamento, caso em que o pixel é considerado como sendo parte do objeto em movimento. A Figura 10 ilustra a etapa de subtração deste algoritmo. A imagem que contém o objeto é comparada com a imagem média e o desvio padrão para obter imagens que representam a distorção de brilho e a distorção de cor (Passo 6), para o que aplicam-se as Equações (1) e (2) respectivamente. As imagens são comparadas com as imagens de referência aplicando valores apropriados do limiar (threshold) de comparação (Passo 7). No caso do algoritmo implementado neste trabalho foram considerados apenas dois grupos: fundo e objeto em PUC-Rio - Certificação Digital Nº 0310888/CB movimento. Pontos pertencentes a sombras ou pontos com maior iluminação foram considerados como sendo parte do fundo. A comparação da imagem atual com a imagem de referência é feita basicamente com base nas diferenças existentes entre os valores das distorções de brilho e das distorções de cor. PUC-Rio - Certificação Digital Nº 0310888/CB Subtração de Fundo 44 Figura 10 - Algoritmo de subtração de fundo baseado na decomposição da diferença de cor em distorção de brilho e distorção de cor. Seguindo a ordem das operações indicada pelos números, mostram-se as etapas de modelagem e subtração de fundo. A etapa de modelagem é feita uma vez, enquanto que a etapa de subtração é feita a cada imagem (frame). Como foi mencionado anteriormente, o modelo de cor deste algoritmo é muito mais sensível à distorção de brilho do que à distorção de cor. Por esta razão é mais fácil identificar as sombras como sendo pontos que mudam apenas seu brilho nas imagens. Assim como a mudança na distorção do brilho é maior do que a mudança na distorção de cor, existem diferentes pixels na imagem que têm diferentes distribuições de αi e CDi . Isto significa que os padrões de mudança não são iguais em todos os pixels. A fim de usar um limiar só para todos os pixels, é preciso normalizar os valores de αi e CDi com respeito aos Subtração de Fundo 45 valores médios da distorção de brilho a i e a distorção de cor bi . A distorção de brilho normalizada β i e a distorção de cor normalizada δ i , respectivamente, são: βi = αi −1 ai δi = CDi bi Com base nestas definições, segundo o algoritmo de Horprasert et al. [14] podemos classificar o pixel em uma das quatro categorias B, S, H, F PUC-Rio - Certificação Digital Nº 0310888/CB diferentes, através da seguinte regra de decisão: F : δ i > τ CD , senão B : β < τ e β > τ , senão i α1 i α2 M (i ) = S : β i < 0, senão H : caso contrário onde τ CD , τα 1 e τα 2 são os valores do limiar utilizados para determinar as similaridades de brilho e cor existentes entre as imagens de referência do modelo e a imagem atual que está sendo observada. No entanto, de acordo com o modelo de cor utilizado neste algoritmo, é possível que pixels do objeto em movimento que contenham valores RGB próximos da origem (objetos pretos ou partes pretas dos objetos) sejam classificados como sendo sombras, portanto como sendo parte do fundo. Isto ocorre porque o fato de que todas as linhas de cor no espaço RGB passam através da origem faz com que estas cores sejam consideradas parecidas com qualquer linha de cor. Para evitar este problema foi introduzido um novo limiar [14] para a distorção normalizada do brilho ( τσ lo ), que indica o limite de distorção de brilho que deve ter um pixel para ser ou não ser considerado como sombra. Desta forma, a regra de decisão ficaria como: F : δ i > τ CD ou β i < τ αlo senão B : β < τ e β > τ , senão i α1 i α2 M (i ) = S : β i < 0, senão H : caso contrário Subtração de Fundo 46 A Figura 11 ilustra o espaço bidimensional definido pela distorção normalizada de brilho β e pela distorção normalizada de cor δ . Este espaço é partilhado pelos limiares utilizados na etapa de subtração e representa graficamente a regra de decisão utilizada para classificar cada um dos pixels da imagem. Cada uma das 4 categorias F,B,S e H são representadas. No nosso caso as sombras (S) e as regiões com alta iluminação (H) foram consideradas PUC-Rio - Certificação Digital Nº 0310888/CB como sendo o fundo (B). Figura 11 – Regiões definidas pelos limiares no espaço bidimensional definido pela distorção normalizada de brilho β e a distorção normalizada de cor δ . Na etapa de subtração do algoritmo de Cheung et al. [3], a diferença entre as imagens é calculada através do ângulo formado entre cada uma das cores na imagem de referência e da imagem atual. O mecanismo principal de subtração de fundo utilizado neste algoritmo é baseado no cálculo do ângulo, mediante o qual os pontos da imagem são classificados. Na Figura 12, mostram-se os passos do processo de subtração de fundo feito neste algoritmo. A idéia principal é que alguns pontos da imagem sejam excluídos do teste do ângulo através de testes rápidos de variação de cor (distância entre as cores d(i,j)). Se existe uma variação grande de cor, acima de um limiar estabelecido TU, o algoritmo supõe que a mudança neste ponto é consideravelmente alta, e conseqüentemente considera o ponto como sendo parte do objeto (Passo 1). Se não existe uma mudança considerável na cor, então pode ser que os valores de cor nos pontos não tenham sofrido grandes mudanças. Deste modo, se a variação de cor é menor do que um outro limiar TL o ponto é considerado como sendo parte do fundo (Passo 2). Já para os pontos que apresentam variações de cor acima do TL e abaixo do TU o ângulo deve ser medido. Com base no critério de comparação entre o limiar e o ângulo entre os vetores, pode-se classificar os Subtração de Fundo 47 pontos dentro de duas classes: se θ < TC então o pixel pertence ao fundo, caso contrário pertence ao objeto. No presente algoritmo TU e TL representam a variação máxima e mínima de cor para que os pontos sejam considerados como sendo o objeto ou o fundo respectivamente. O valor do limiar do ângulo TC indica o grau de semelhança que as cores devem ter para que possam ser consideradas como parecidas ou diferentes. 1. Calcular a diferença de cor d (i, j ) = cr (i, j ) − cb(i , j ) se d (i, j ) > TU PUC-Rio - Certificação Digital Nº 0310888/CB então o (i, j )th é um ponto do objeto senão vai para o passo 2. 2. se d (i, j ) > TL então o (i, j )th não é um ponto do objeto senão vai para o passo 3. 3. Calcular o ângulo entre os dois vetores c (i, j ).cb (i, j ) θ = cos −1 r c r (i, j ) cb (i, j ) se θ < TC então o (i, j )th não é um ponto do objeto senão o (i, j )th é um ponto do objeto. Figura 12 - Algoritmo de geração de silhuetas ou de subtração de fundo, baseado no ângulo entre dois vetores. Cr é a cor atual e Cb é a cor de referência. 3.3.4. Seleção dos Limiares Na seleção automática dos limiares calculam-se valores dos limiares para conseguir melhores resultados no processo de subtração. Tradicionalmente este procedimento é feito com base em um aprendizado estatístico, com imagens que ainda pertencem à etapa de modelagem do fundo. No algoritmo apresentado por Cheung et al. [3] não existe um procedimento específico para atribuir valores ao limiar do ângulo. Pelo fato de ser um único limiar, não é muito complicado conseguir um valor adequado através da seleção de valores, até que se alcancem resultados razoáveis. Subtração de Fundo 48 Já no algoritmo apresentado por Horprasert et al. [14], existe a necessidade de se encontrarem valores para o limiar, tanto para a distorção normalizada de brilho quanto para a distorção normalizada de cor. Pelo fato de serem dois os limiares que devem ser determinados, um procedimento de ajuste do limiar poderia resultar em um trabalho difícil de se realizar, pois existe um conjunto grande de combinações destes valores que podem ser atribuídos. Num processo de seleção de limiares tenta-se diminuir este conjunto (espaço) de combinações de valores ao mínimo possível ou até que se encontrem diretamente os valores que devem ser atribuídos a estes limiares. A grande vantagem do processo de seleção de limiares é restringir o espaço de busca dos limiares para valores próximos dos limiares que finalmente serão utilizados. Encontrar sub-regiões do espaço de busca, onde os valores ocasionem um melhor processo de subtração, é uma das finalidades do processo de seleção de limiares. Sem uma estratégia de busca muitas vezes acontece de se testar PUC-Rio - Certificação Digital Nº 0310888/CB valores de limiar sem saber realmente se estes valores, como um par de limiares, são discriminantes o suficiente para serem utilizados. No processo de seleção dos limiares no algoritmo proposto em [14], os limiares para a distorção normalizada do brilho e para a distorção normalizada de cor são calculados através de um processo de aprendizado estatístico. Este aprendizado consiste em montar um histograma para a distorção normalizada do brilho e para a distorção normalizada de cor. Para montar este histograma são calculadas as distorções normalizadas do brilho e de cor de todas as imagens de treino em relação à imagem média. Tendo estes valores, pode-se montar o histograma que representa o padrão de mudança das distorções ao longo do processo de treinamento ou modelagem do fundo; em outras palavras, qualquer imagem que tenha objetos diferentes aos modelados no fundo vai ter um histograma relativamente diferente. Na Figura 13 mostra-se a curva típica dos histogramas da distorção normalizada de brilho e a distorção normalizada de cor respectivamente. Olhando para os histogramas pode-se ver um determinado intervalo onde flutuam os valores das distorções. Assim, se existirem valores fora deste intervalo pode-se supor que esses pixels fazem parte de um objeto que não estava na modelagem do fundo. Uma vez que os histogramas são construídos, os valores dos limiares são automaticamente selecionados de acordo com a taxa de detecção (valor em porcentagem) que se quer obter. Por exemplo 100% significa que todas as amostras pertencem ao intervalo. O limiar para a distorção normalizada de cor, τ CD , é o valor da distorção normalizada de cor na taxa de Subtração de Fundo detecção r 49 desejada (ex. 4.06 corresponde a 99.95% ). Na distorção normalizada de brilho existem dois valores (τα 1 e τα 2 ) e por isto deve-se definir um intervalo no histograma. τα 1 é o valor na taxa r desejada e τα 2 é o valor na taxa (100% - r). PUC-Rio - Certificação Digital Nº 0310888/CB Figura 13 - (a) histograma da distorção normalizada de brilho ( β )”, e (b) histograma da distorção normalizada de cor ( δ ). Extraído de [14]. Neste processo de seleção de limiares existem algumas considerações importantes que devem ser feitas. Como foi afirmado anteriormente, o valor da distorção de brilho e da distorção de cor é normalizado pelo valor do desvio padrão. Isto traz alguns problemas na hora de calcular as distorções, pois podem ter valores muito elevados. Já que o valor do desvio padrão e a natureza das variações deste dependem muito dos equipamentos que são utilizados na captura, os valores calculados das distorções também devem incluir estas características. Por isto, nas implementações realizadas deste algoritmo, os valores do limiar dependem dos equipamentos utilizados e até das condições particulares em que foram testados. Sugere-se deste modo construir os histogramas para o cálculo dos limiares e desconsiderar os valores de limiares sugeridos em outros trabalhos. No cálculo e construção dos histogramas são utilizados os valores das distorções de brilho e de cor normalizados. Na etapa de subtração os valores comparados também são os valores normalizados das distorções. Para os pixels na imagem que têm distorções de cor e brilho muito baixos, existe um problema na hora de normalizar: o valor da distorção normalizada pode ser muito elevado e assim qualquer valor do limiar é ultrapassado, produzindo falsos pontos do objeto na etapa de subtração. Uma solução para este problema é atribuir valores de mudança mínima tanto para a distorção de brilho quanto para a distorção de Subtração de Fundo 50 cor, como foi feito no desvio padrão mínimo dos pixels. Todos estes problemas devem ser levados em conta tanto ao se construir e calcular os histogramas das distorções quanto no cálculo das distorções normalizadas na etapa de subtração. Se estes problemas não forem considerados é difícil obter curvas parecidas às da Figura 13. A construção de curvas relativamente parecidas às da Figura 13, sem variações bruscas e com tendências suaves, sugere um indicador muito útil para a avaliação dos valores mínimos atribuídos às distorções e ao desvio padrão. 3.4. Resultados Nesta secção são apresentados os resultados obtidos da implementação dos algoritmos apresentados por Horprasert et al. [14] e Cheung et al. [3]. Os testes foram realizados em seqüências de imagens de vídeo com resolução de PUC-Rio - Certificação Digital Nº 0310888/CB 320x240 pixels, capturadas por uma câmera WebCam Logitech QuickCamPro 4000 conectada via interface USB em um computador com processador Pentium III de 800Mhz e com 128 MB de memória RAM. Os modelos que lidam com as sombras e flutuações na iluminação permitem resultados melhores que os mostrados na Figura 8. Isto ocorre porque são mais sensíveis a mudanças no brilho do que as mudanças na cor, conseguindo assim um resultado muito próximo da morfologia do objeto “MÃO”. Nas imagens que seguem são mostrados o tipo de resultados alcançados na implementação de cada um dos dois algoritmos. Estas imagens mostram um frame determinado da seqüência, mas representam o tipo e a qualidade de resultados obtidos ao longo da seqüência de vídeo testada. Além disto, a disposição do plano de fundo com relação à mão permite mostrar as sombras geradas, as quais, servem para testar o desempenho dos algoritmos frente à presença marcante das sombras dos objetos. Nos resultados não foi feito nenhum tipo de pós-processamento para melhorar a qualidade da segmentação. As imagens representam unicamente o tipo de resultado obtido na etapa de subtração dos algoritmos testados. Pós-processamentos são temas para etapas posteriores. Na Figura 14 são apresentados os resultados obtidos pelo algoritmo de subtração baseado na medida do ângulo entre as cores [3]. A imagem da cena sem o objeto de interesse não é mostrada, mas fica claro na figura qual é a imagem do fundo. O objeto é segmentado com as suas cores originais dando Subtração de Fundo 51 uma impressão diferente da imagem da segmentação binária, onde a morfologia do objeto é mais fácil de perceber. Para fins práticos a imagem de segmentação binária é muito mais importante, e a qualidade desta influi muito nos processamentos posteriores que serão feitos. Nos testes efetuados, o limiar atribuído ao ângulo foi θ = 17.49o . As sombras não são totalmente excluídas do objeto e deformam a sua morfologia, o qual não é desejável. Dependo do limiar atribuído ao ângulo, as sombras somem, porém partes que realmente pertencem ao objeto também somem. Por isto é difícil determinar um limiar que após um PUC-Rio - Certificação Digital Nº 0310888/CB determinado valor não cause a deformação do objeto. Figura 14 - Resultado da segmentação do algoritmo baseado na medida do ângulo [3]. O limiar utilizado para o ângulo foi de θ = 17.49o . Nas figuras à esquerda são mostradas cenas com a mão e nas figuras à direita são mostrados os resultados da segmentação. Nos resultados são apresentados a segmentação com as cores originais do objeto e a segmentação binária, onde é mais fácil perceber a morfologia do objeto segmentado. O número de quadros por segundo alcançado foi igual a 30. Na Figura 15 são mostrados os resultados obtidos pelo algoritmo de subtração de fundo baseado na medida da distorção de brilho e a distorção de cor entre duas cores [14]. Como o objetivo é segmentar o objeto, o interesse está focado unicamente no objeto e não em detectar sombras ou partes com mudanças na iluminação; para isto só serão utilizados os parâmetros de limiar τ CD para a distorção de cor e τ lo para a distorção de brilho. Aos parâmetros de desvio padrão mínimo ( σ ' ), distorção mínima de cor ( CD ' ) e distorção mínima de brilho ( α ' ) foram atribuídos os valores σ ' = 1.0 , CD ' = 0.75 e α ' = 0.01 Subtração de Fundo 52 respectivamente. Estes valores foram mantidos tanto para as etapas de modelagem do fundo e construção dos histogramas quanto para a etapa de subtração de fundo. Os únicos limiares necessários para segmentar o objeto são τ CD para a distorção de cor e τ LO para a distorção de brilho. Os valores atribuídos para estes limiares foram τ CD = 14.1 e τ LO = −80.5 . Claramente se pode observar que este algoritmo possui uma segmentação melhor do que o algoritmo baseado na medida do ângulo entre dois vetores [3] (Veja-se a Figura 14); o fato de ter dois parâmetros na comparação ajuda muito na eficácia deste algoritmo. Por este motivo, o algoritmo baseado na medida da distorção de brilho e na distorção de cor [14] foi escolhido como o método de segmentação a ser PUC-Rio - Certificação Digital Nº 0310888/CB utilizado neste trabalho. Figura 15 - Resultados do algoritmo baseado na medida da distorção de brilho e a distorção de cor [14]. Desvio padrão mínimo ( σ ' = 1.0 ), distorção mínima de cor ( CD ' = 0.75 ), distorção mínima do brilho ( α ' = 0.01 ). Limiares de comparação utilizados na etapa de subtração: τ CD = 14.1 para a distorção de cor, τ lo = −80.5 para a distorção de brilho. Número de quadros por segundo igual a 43. Com o objetivo de melhorar o desempenho do algoritmo baseado na distorção de brilho e de cor [14], foi efetuada uma pequena modificação para reduzir o número de pixels testados em cada iteração do processo de segmentação. Ao invés de serem testados todos os pixels da imagem, são testados apenas alguns pixels representativos para cada janela de 2x2 pixels. Se este ponto é considerado pelo algoritmo como sendo parte do objeto, então os demais pontos na janela também são considerados como sendo parte do objeto; Subtração de Fundo 53 caso contrário os 4 pontos são considerados como sendo parte do fundo. Este teste simples não piora muito a segmentação do objeto (Veja-se Figura 16), mas tem um ganho muito grande no número de quadros por segundo, alcançando a casa dos 60 qps. Figura 16 - Teste do algoritmo em [14] aplicando uma janela de 4 pixels. Esta mudança aumenta consideravelmente o número de quadros por segundo sem alterar PUC-Rio - Certificação Digital Nº 0310888/CB significativamente a segmentação do objeto. 60 qps. 3.5. Conclusões O processo de segmentação de objetos em movimento através de algoritmos de subtração de fundo é bastante complexo. Um dos grandes problemas é que existem muitos parâmetros que afetam sua eficiência e robustez. Conseguir um balanceamento ótimo destes parâmetros é um problema difícil e só é possível conseguir uma aproximação dos resultados ótimos de segmentação. Entendam-se por parâmetros os valores e limiares que devem ser obtidos pelo algoritmo. As combinações e o espaço de valores que eles podem assumir é uma das principais causas da dificuldade de se determinar um balanceamento ótimo entre eles. Outro problema importante é que os algoritmos de subtração de fundo dependem muito das condições da iluminação, formação de sombras e flutuações das fontes de luz, com as quais nem todos os algoritmos estudados puderam lidar satisfatoriamente. Mesmo sob condições controladas, é muito difícil conseguir uma segmentação próxima a do objeto original. Outra questão que teve que ser considerada é a capacidade de processamento em tempo real, que limita muitas vezes a inclusão de modelos mais sofisticados e robustos. É possível, entretanto, que tais métodos possam Subtração de Fundo 54 ser utilizados em sistemas de processamento paralelo, o que não é o objetivo deste trabalho. Dentro deste estudo só foram considerados algoritmos que trabalham com a modelagem do fundo estático de uma cena. Apesar de todas as dificuldades, os estudos e os testes realizados demonstram que no presente trabalho foram conseguidos resultados satisfatórios em todos os requisitos necessários para a continuação do PUC-Rio - Certificação Digital Nº 0310888/CB desenvolvimento do sistema de reconhecimento que é tema desta dissertação. 4 Detecção de Silhueta No decorrer deste capítulo é proposto um modelo de detecção da silhueta da mão capaz de lidar com os erros da segmentação e ruídos na sua morfologia. Num primeiro passo são considerados os filtros morfológicos, depois técnicas de detecção de bordas, e finalmente algoritmos de detecção, coleta e representação dos pontos que definem a silhueta da mão. Na próxima seção é apresentada uma motivação geral da detecção de silhueta considerando-se a sua importância no plano deste trabalho. Em seguida é feito um breve resumo do modelo de detecção e finalmente apresenta-se em PUC-Rio - Certificação Digital Nº 0310888/CB forma mais detalhada cada um dos seus passos, os resultados obtidos e algumas considerações finais. 4.1. Motivação A capacidade de se reconhecer objetos em uma imagem depende muito da quantidade de informações que se conheça de cada objeto. Logo, extrair características dos objetos é uma etapa e tarefa fundamental para alcançar os objetivos no processo de reconhecimento. A extração de características depende fortemente de como os objetos são representados computacionalmente. Por este motivo, é necessário um cuidado especial na escolha da representação dos objetos de tal maneira que o processo de detecção das características possa se dar da maneira mais natural possível. Para que o processo de reconhecimento possa ser realizado é necessário que os objetos de interesse sejam identificados e representados adequadamente. Uma forma bastante comum de representação dos objetos e que foi utilizada neste trabalho é a representação baseada na silhueta. A silhueta é uma representação concisa e suficiente para capturar a morfologia do objeto. Particularmente no caso da mão em movimento (objeto de estudo deste trabalho), muitas informações podem ser obtidas extraindo-se a silhueta ou contorno [16] a partir das imagens geradas pela segmentação de fundo. Se a cada momento pode-se conhecer a silhueta de mão, então pode-se saber as Detecção de Silhueta 56 diferentes formas que a mão está descrevendo ao longo do tempo. Isto ajuda muito e é uma grande vantagem, principalmente para objetos que mudam a sua morfologia ao longo do tempo. Interfaces baseadas em gestos, no caso da mão, poderiam facilmente ser suportadas com uma modelagem de silhueta. A detecção de silhueta é o processo que determina quais são os pontos da imagem que fazem parte da silhueta. Neste processo, são coletados pontos de forma a capturar a morfologia do objeto e finalmente estruturá-los de modo que possam servir como dado de entrada para as etapas posteriores do reconhecimento. No processo de detecção de silhueta são considerados três passos fundamentais. Em um primeiro passo, é feita uma abordagem de melhoria da segmentação; aqui são considerados filtros morfológicos para tentar corrigir e diminuir ao máximo os erros de segmentação e ruídos na morfologia do objeto. No segundo passo considera-se uma abordagem para a detecção das bordas PUC-Rio - Certificação Digital Nº 0310888/CB dos objetos, que está diretamente influenciada pelo passo anterior. No último passo é feita a coleta e estruturação dos pontos que fazem parte da silhueta da mão. É fundamental que este passo seja capaz de lidar com os ruídos e erros ainda presentes após os dois passos anteriores. Nas seções seguintes são apresentados, com mais detalhes, cada um dos passos do processo de detecção de silhueta. 4.2. Refinamento da Segmentação O objetivo principal nesta etapa é corrigir ou pelo menos diminuir os erros e ruídos do processo de segmentação. Para isto, é utilizada uma abordagem de processamento de imagens baseada em filtros morfológicos que visam corrigir a imagem do objeto segmentado completando pequenos buracos e eliminando regiões isoladas de poucos pixels. Os filtros morfológicos utilizados foram: o filtro de Dilatação e o filtro de Erosão [34]. A Dilatação, em geral, faz com que os objetos se dilatem ou aumentem de tamanho, enquanto que a Erosão faz com que eles encolham. Ambos filtros atuam nas bordas internas e externas dos objetos. A quantidade e a forma como os objetos se dilatam ou encolhem depende fortemente da escolha de uma máscara. As máscaras mais comuns são a de vizinhança 4 ( N 4 ) e de vizinhança 8 ( N 8 ) , que estão ilustradas na Figura 17. Detecção de Silhueta 57 A característica principal destes filtros é trabalhar com um ponto de referência (ponto do meio) e com as características da sua vizinhança. Assim, diferentes funções podem ser definidas nesta relação de vizinhança. Considerando apenas imagens binárias (preto ou branco), um exemplo desta relação seria: atribuir a cor preta ao ponto de referência se todos os vizinhos, definidos na máscara, forem da cor preta também. Na Figura 17, além da geometria de vizinhança definida pela máscara, mostram-se os valores dos vizinhos, onde a cor preta representa o fundo e a cor branca representa os PUC-Rio - Certificação Digital Nº 0310888/CB objetos. Figura 17 - Máscaras utilizadas nos filtros morfológicos de Dilatação e Erosão; vizinhança 4 ( N 4 ) e vizinhança 8 ( N 8 ) . Além da vizinhança definida pela máscara, mostram-se em preto os pontos que representam o fundo e em branco os pontos que representam os objetos. Na aplicação dos filtros morfológicos nas imagens provenientes da segmentação, foi utilizada a máscara ( N 8 ) . A seqüência de aplicação dos filtros foi: primeiro aplica-se a Dilatação e depois, na imagem dilatada, aplica-se o filtro de Erosão. Na Dilatação foi definido o seguinte critério: se um ponto faz parte do fundo e tem um vizinho que faz parte de um objeto, então ele também faz parte do objeto. Na Erosão, se um ponto faz parte do objeto e tem um vizinho que faz parte do fundo, então ele também faz parte do fundo. Com a aplicação destes filtros na seqüência indicada, procura-se em princípio com a Dilatação expandir o objeto através das suas bordas internas e externas. Assim os buracos tendem a ser preenchidos e as bordas a serem expandidas uniformemente. Depois, aplicando a Erosão na imagem dilatada, procura-se retornar ao objeto original; apenas as bordas serão afetadas, e os buracos totalmente preenchidos na etapa de Dilatação serão mantidos. A aplicação destes filtros na seqüência indicada é conhecida também como Detecção de Silhueta 58 “fechamento”. Os resultados obtidos da aplicação desta seqüência de filtros PUC-Rio - Certificação Digital Nº 0310888/CB morfológicos nas imagens de entrada são do tipo ilustrado na Figura 18. Figura 18 - Resultados obtidos da aplicação dos filtros morfológicos. Na seqüência (a) imagem resultado da segmentação; (b) resultado da aplicação da Dilatação em (a); e (c) resultado da aplicação da Erosão em (b). Considera-se (c) como resultado final desta etapa. Número médio de quadros por segundo igual a 53 qps. 4.3. Detecção de Bordas O objetivo principal desta etapa é localizar os contornos internos e externos dos objetos, dado que estes contornos são a representação da silhueta. A conexidade do contorno é um fator importante; essa propriedade garante uma vantagem para os algoritmos no processo de detecção e coleta dos pontos que representam a silhueta da mão. Considera-se como a saída deste processo uma imagem binária onde os objetos são representados apenas pelos seus contornos. Existem diversas abordagens para a obtenção de contornos em imagens binárias, como, por exemplo, as ilustradas por Trucco & Verri [38]. Tipicamente estas abordagens estão baseadas em medidas de gradiente ou na aplicação de filtros que exploram as características dos contornos. No presente trabalho, para Detecção de Silhueta 59 encontrar as bordas nesta etapa foi considerada uma abordagem diferente, que explora os resultados da aplicação dos filtros morfológicos nas imagens da segmentação. Na Dilatação as bordas dos objetos se expandem, e na Erosão essas mesmas bordas se contraem, então através da diferença destas imagens (a dilatada e a erodida) podemos achar uma aproximação das bordas dos objetos. Esta abordagem tem uma vantagem, pois aproveita os resultados da etapa anterior, tornando o processo computacionalmente barato comparado com os outros. Além disso, não incorpora medidas de limiar e depende somente do tamanho da máscara. Outra vantagem é que garante a conexidade dos contornos. Os resultados da aplicação deste processo com as imagens (b) e (c) PUC-Rio - Certificação Digital Nº 0310888/CB da Figura 18 são mostrados na Figura 19. Figura 19 - Obtenção de contornos a partir da subtração das imagens (b) e (c) da Figura 18. O objeto “mão” é representado apenas pelo seu contorno, o mesmo acontece com o ruídos e erros da segmentação. Número médio de quadros por segundo igual a 45 qps. A Figura 19 mostra o resultado para a mão totalmente estendida com a silhueta externa. Alguns testes foram feitos com diferentes posições da mão e a presença de contornos internos; esses resultados são mostrados na Figura 20. Nota-se nesta figura ainda alguns ruídos e erros da segmentação, os quais serão removidos na próxima etapa do processo de detecção de silhueta. As figuras em preto e branco são consideradas como sendo o resultado da etapa de detecção de contornos. PUC-Rio - Certificação Digital Nº 0310888/CB Detecção de Silhueta 60 Figura 20 - Alguns resultados da detecção de contornos realizada em diferentes orientações da mão, (a) presença de ruídos, (b) presença de contornos internos ou buracos. 45 qps. 4.4. Detecção de Contornos O problema de detecção da silhueta está fortemente relacionado como o processo de reconhecimento em si. Ainda que de certo modo o processo de detecção da silhueta possa ser visto como sendo um processo de reconhecimento (porque já identifica qual contorno representa um objeto), ele é considerado como sendo apenas um processo de identificação, diferente do processo de reconhecimento total, em que relações, características especiais e mudanças na morfologia dos objetos são reconhecidas e exploradas nas aplicações. Para localizar a silhueta dos objetos, os contornos presentes na imagem são percorridos em algum sentido e em seguida são armazenados. Como as bordas são todas conexas os objetos estarão sempre representados por um ou mais contornos. Após o percurso e armazenamento dos contornos é feito um processo de seleção, no qual alguns contornos são descartados e outros são identificados como sendo os objetos. Assim existem duas etapas: uma que Detecção de Silhueta 61 percorre e armazena os objetos, e a outra de seleção, esta última mais diretamente ligada ao reconhecimento. O percurso e armazenamento dos contornos é tradicionalmente feito numa ordem predeterminada, horária ou anti-horária. Partindo de um ponto qualquer do contorno os pontos são visitados seguindo a ordem estabelecida e o percurso é armazenado de forma que o contorno seja fielmente representado. Lista de Códigos (Chain Codes) é uma das abordagens mais utilizadas para a representação dos contornos [40]. Como seu nome bem o diz, é uma lista de códigos onde, para cada ponto na lista, existe uma direção a seguir para achar o próximo ponto do contorno. As direções definidas nesta representação, PUC-Rio - Certificação Digital Nº 0310888/CB na ordem anti-horária, podem ser vistas na Figura 21. Figura 21 - Lista de Códigos (Chain Codes). Para cada ponto de referência (em azul) existem 4 ou 8 direções possíveis que se podem seguir na representação do contorno. A Lista de Códigos é uma representação que traz algumas vantagens, principalmente no que se refere ao armazenamento. Considerando a vizinhança 8 (C8 ) necessitamos apenas de 3 bits para representar um ponto na cadeia. Definida a forma de representação dos pontos do contorno, o algoritmo parte de um ponto arbitrário escolhendo, em cada passo, um novo vizinho. As direções consideradas para a busca deste vizinho na nossa implementação foram as da vizinhança 8 (C8 ) mostrada na Figura 21. A idéia para percorrer os contornos é mostrada na Figura 22, em três passos. Nesta figura apenas é mostrado um trecho de um contorno maior, que serve para esquematizar alguns passos do algoritmo e entender a idéia de como é feito o percurso. Os pontos em branco representam o fundo e os pontos em preto representam o contorno que está sendo percorrido. Os pontos marcados com um “X” já fazem parte da silhueta, e os pontos onde as setas começam são Detecção de Silhueta 62 os que estão sendo analisados; estes também pertencem à silhueta. As setas que apontam para os pontos marcados com “X” indicam a direção do ponto que o antecede na silhueta, e as setas que apontam para os pontos marcados com “P” indicam o próximo ponto da silhueta. As setas curvas indicam a direção de busca (anti-horária) para procurar o próximo ponto da silhueta. Todos os pontos de análise (onde começam as setas), a cada passo, têm um apontador para a direção do ponto que os antecede na silhueta. Tomando como referência essa direção e utilizando o sentido de busca (anti-horário), procura-se o próximo ponto que fará parte da silhueta; esse ponto é aquele que ainda não foi visitado, faz parte do contorno e é o primeiro a ser escolhido ou visitado a partir da direção inicial de busca. Em cada um dos passos (a), (b) e (c) as setas para os pontos “X” indicam a direção inicial de busca, as setas curvas indicam o sentido da busca e as setas para os pontos “P” apontam para o próximo ponto que faz parte da silhueta. O percurso do algoritmo tem dois PUC-Rio - Certificação Digital Nº 0310888/CB critérios de parada: no caso de contornos fechados o algoritmo pára quando são alcançadas posições próximas do ponto inicial de partida, e no caso de contornos não fechados o algoritmo para quando não existem mais posições de busca na direção oposta à direção de partida. Figura 22 - Passos do algoritmo de percurso de contornos. A cada passo, novos pontos da silhueta são detectados e alguns pontos “N” são descartados. As setas curvas indicam o sentido de busca, as setas que apontam para os pontos marcados com “X” indicam a direção inicial de busca, as setas que apontam para os pontos marcados com “P” indicam o próximo ponto. Como se pode ver no passo (a) da Figura 22, nem todos os pontos do contorno são considerados para fazer parte da silhueta, estes pontos não considerados estão marcados com “N”. Levando em conta que os contornos nem sempre são de largura unitária, muitos pontos são descartados ao longo do Detecção de Silhueta 63 percurso e assim pode-se achar um número menor ainda de pontos que definem a silhueta. Na Figura 23 mostram-se alguns trechos de contornos com algumas particularidades produzidas durante o processo de detecção de silhueta. Nesta figura pode-se ver, dentro do contorno, um pequeno ciclo que deve ser considerado pelo algoritmo de percurso, já que este representa um problema para a robustez do algoritmo. Como se vê em (b) o percurso pode acabar prematuramente, afetando a detecção. Uma solução para este problema consiste em considerar o ponto “z” como sendo uma ponte especial, e deixar a Lista de Códigos passar duas vezes por este ponto. O ponto “z” é um ponto no meio do contorno (que não é nem começo e nem fim) para onde o percurso volta em uma direção diferente à da direção original de saída (utilizando uma aresta diferente). O percurso não permite se percorrer uma determinada aresta mais de PUC-Rio - Certificação Digital Nº 0310888/CB uma vez. Figura 23 - Pequenos ciclos dentro dos contornos. Estes ciclos representam problemas para o algoritmo de percurso, pois como é indicado em (b) a detecção da silhueta pode acabar muito antes de percorrer o contorno inteiro, o que traz problemas na detecção. Uma vez que se tenham percorrido todos os contornos da imagem, as silhuetas dos objetos são armazenadas em um conjunto de listas. O próximo passo é a seleção das listas de códigos que representam o objeto de interesse. 4.5. Seleção da Silhueta da Mão No processo de seleção existe um problema de decisão. No caso de objetos ou gestos da mão que são representados por silhuetas internas e externas, qual ou quais silhuetas considerar? Considerar apenas a silhueta Detecção de Silhueta 64 externa? Ou considerar todas as silhuetas que o objeto apresenta? A alternativa escolhida para lidar com este problema afeta diretamente a abordagem utilizada no reconhecimento, trazendo as suas vantagens e desvantagens. No caso particular dos gestos da mão, sabe-se que um dos objetos mais representativos na imagem é a própria mão. O tamanho da silhueta externa da mão é muito maior do que as silhuetas internas e do que os ruídos presentes nas imagens. Com base nesta hipótese a detecção da silhueta da mão é feita considerando, em número de pontos, a maior silhueta encontrada na imagem. Para expandirmos nossa aplicação para reconhecer duas mãos, necessitaremos de uma abordagem diferente e mais complexa. A abordagem utilizada neste trabalho é baseada apenas na silhueta externa de uma única mão. A Figura 24 ilustra os resultados da aplicação de detecção de silhueta nas imagens das Figuras 19 e 20 utilizando o critério de só considerarmos a maior PUC-Rio - Certificação Digital Nº 0310888/CB Lista de Códigos. PUC-Rio - Certificação Digital Nº 0310888/CB Detecção de Silhueta 65 Figura 24 - Resultados do processo de detecção da silhueta da mão aplicados à imagem da Figura 19 em (a), e às imagens da Figura 20 em (b) e (c). Em (a) e (b) são removidos os ruídos e em (c) não é considerada a silhueta interna. Número médio de quadros por segundo igual a 35 qps. As imagens da Figura 24 representam o resultado final da etapa de detecção de silhueta. A amostragem dos pontos da silhueta pode ser mudada para se ter uma amostragem menor, descartando assim um número maior de pontos da silhueta. Esta subamostragem pode ser feita sem afetar a morfologia da mão até um certo limite. A Figura 25 mostra a detecção de uma silhueta com uma subamostragem contendo um quinto dos pontos originalmente detectados. Detecção de Silhueta 66 Figura 25 - Subamostragem dos pontos na silhueta detectada. A imagem à direita tem um quinto dos pontos da imagem à esquerda. 4.6. Considerações Finais do Capítulo A abordagem utilizada é baseada na silhueta externa da mão; uma única silhueta é considerada e a etapa de identificação de características no PUC-Rio - Certificação Digital Nº 0310888/CB reconhecimento é feita sobre o conjunto de pontos que representa a silhueta da mão. A decisão de levar em conta as silhuetas externas certamente restringe e ao mesmo tempo facilita os processos que serão realizados na etapa do reconhecimento. É possível utilizar somente silhuetas externas em uma grande quantidade de aplicações, mas pode-se realizar tarefas de reconhecimento mais complexas utilizando mais informações provenientes do processo de detecção de silhueta. 5 Reconhecimento No decorrer deste capítulo é proposto um modelo para o reconhecimento de gestos da mão baseado na silhueta. Além dos gestos, são detectadas a posição e a orientação dos dedos. Num primeiro passo são localizadas algumas feições na silhueta, depois essas feições são avaliadas para reconhecer os dedos e finalmente alguns gestos pré-estabelecidos são reconhecidos. Na próxima seção é apresentada uma motivação geral do reconhecimento, na qual são definidos alguns parâmetros de interesse. Em seguida é apresentado um breve resumo do modelo e finalmente, de forma mais detalhada, cada um de PUC-Rio - Certificação Digital Nº 0310888/CB seus passos, os resultados obtidos e algumas considerações finais. 5.1. Motivação Os dois capítulos anteriores foram focados na localização de regiões de interesse nas imagens analisadas. O próximo passo é observar mais de perto essas regiões e encontrar algumas características que permitam extrair informações relevantes acerca da posição dos dedos e do gesto que está sendo mostrado. Existem dois tipos de gestos que poderiam ser reconhecidos na mão. Os gestos estáticos são aqueles que mostram apenas uma determinada postura da mão; o significado está na forma ou postura que apresentam. Os gestos dinâmicos são aqueles em que seu significado depende também do movimento que a mão descreve. Nos gestos estáticos é importante apenas saber qual é o gesto da mão a cada quadro, independentemente do tempo ou do número de quadros. Nos gestos dinâmicos é importante analisar o comportamento da mão ao longo do tempo. Certamente os gestos dinâmicos podem ser reconhecidos ou inferidos a partir de um conjunto de gestos estáticos. Por exemplo, a detecção de movimento poderia ser reconhecida a partir de um conjunto de gestos estáticos ou do comportamento dos gestos estáticos em um certo período de tempo. No presente trabalho o objetivo desta etapa é construir um módulo para o reconhecimento de alguns gestos básicos. As aplicações utilizam tais gestos Reconhecimento 68 básicos de forma particular e de acordo com suas necessidades. Portanto, nesta etapa são compreendidos apenas os gestos estáticos, os quais serão denominados no texto simplesmente gestos. O reconhecimento dos gestos é feito com base no número de dedos que em um determinado momento a silhueta da mão apresenta. Portanto, para reconhecer os gestos é importante determinar com claridade o número de dedos presentes e também suas características, tais como sua posição, orientação e os pontos que os representam na silhueta. Levando em conta os dedos, existe um grande número de gestos que podem ser construídos, mas serão apenas 4 os gestos básicos reconhecidos neste trabalho. Esses gestos tentam ser os mais básicos possíveis, de forma que eles possam servir para construir ou reconhecer tipos de gestos mais complicados nas aplicações. Na literatura apresentada no segundo capítulo vimos que não existe uma única abordagem para reconhecer gestos da mão em imagens. Algumas PUC-Rio - Certificação Digital Nº 0310888/CB técnicas utilizam forma, outras forma e cor, e outras utilizam ainda transformadas para o reconhecimento de gestos da mão. Apesar dessa diversidade, existem alguns parâmetros de interesse que são considerados pela maioria dessas abordagens. Entre eles podemos citar: • Número de dedos presentes na mão a cada quadro. • Posição e orientação dos dedos presentes com relação à imagem. • Posição e orientação dos dedos com relação à mão. • Posição e orientação da mão. • Posição 3D dos pontos que representam os dedos. Os parâmetros considerados mais importantes neste trabalho são os três primeiros. Descartamos as abordagens tridimensionais por serem computacionalmente caras. Além disso, o reconhecimento 3D é condicionado e direcionado a certo tipo específico de aplicações. O processo de reconhecimento de gestos apresentado aqui possui três passos básicos. No primeiro passo a silhueta é analisada para procurar pontos que apresentem características dos dedos. Essa procura se baseia em medidas de curvatura que indicam alguns pontos candidatos. Alguns cuidados são levados em conta de maneira que o processo de detecção de feições seja dirigido a procurar, em sua maioria, os pontos que representam os dedos. Reconhecimento 69 No segundo passo esses pontos são analisados de maneira a selecionar aqueles pontos que melhor se assemelhem às características que procuramos nos dedos. Além disso, as posições e as orientações dos dedos são calculadas. No último passo, os gestos são inferidos levando em conta o número e a característica dos dedos. Esses gestos são selecionados de um conjunto de gestos pré-estabelecidos para o reconhecimento. Nas próximas seções é apresentado em mais detalhe cada um dos passos do processo de reconhecimento de gestos. 5.2. Detecção de Feições Na silhueta da mão existem duas feições a serem consideradas para o reconhecimento dos gestos (Figura 26): as pontas dos dedos, chamadas PUC-Rio - Certificação Digital Nº 0310888/CB também de Picos (“P”), e as junções entre os dedos, denominados Vales (“V”). Identificar as regiões da silhueta que contêm esses pontos é importante para que o reconhecimento possa ser realizado satisfatoriamente. O objetivo desta etapa é identificar na silhueta da mão os conjuntos de pontos que mais se assemelhem com os Picos e Vales. Nesse processo não são encontrados diretamente os Picos nem os Vales, mas sim conjuntos de pontos com características similares nos quais também estão incluídos os Picos e Vales. Figura 26 - Feições consideradas para o reconhecimento dos gestos. As pontas dos dedos são chamadas de Picos (“P”) e as junções entre eles de Vales (“V”). O problema de se localizar os Picos e Vales na silhueta de uma mão pode ser reduzido ao problema de se encontrar cantos (corners) em curvas planares. Estes cantos, dentro da curva que descreve a mão, conceitualmente podem ser considerados como sendo máximos locais (para os Picos) e mínimos locais Reconhecimento 70 (para os Vales). Em nosso caso as curvas possuem muito ruído, como ilustra a Figura 26. O ruído faz com que as medidas de curvatura, baseadas em derivadas locais, não sejam adequadas. Muitos pontos ao longo da curva têm alto valor de curvatura e seriam erroneamente considerados como pontos de interesse. O método utilizado para encontrar os Picos e Vales na silhueta deve ser insensível aos ruídos sem perder os verdadeiros pontos de interesse. A literatura apresenta diversos algoritmos para calcular curvaturas na presença de ruídos. Nos algoritmos descritos no trabalho de Liu & Srinath [25], por exemplo, a medida de curvatura é calculada através de um ângulo. Quando um ponto é processado, o valor de curvatura é calculado levando em conta um conjunto de pontos subseqüentes e anteriores a esse ponto na silhueta. Assim, dependendo do número de pontos a serem considerados, essa medida de curvatura pode ser PUC-Rio - Certificação Digital Nº 0310888/CB pouco afetada pelos ruídos de alta freqüência presentes ao longo da silhueta. Apesar desses algoritmos poderem ser utilizados para nossos propósitos, neste trabalho é utilizado um cálculo de curvatura um tanto diferente que considera um número menor de pontos vizinhos na silhueta e será aqui chamado de k-curvatura. Quando um ponto Pi é processado, seu valor de k-curvatura é o ângulo α i formado pelos vetores ( P + i − Pi ) e ( P − i − Pi) , ilustrados na Figura 27.(a). Diferentemente dos algoritmos descritos por Liu & Srinath [17], nos quais vários pontos são considerados para o cálculo da curvatura, em nosso cálculo são levados em conta dois vetores (Figura 27.(a)) formados por um único ponto subseqüente P(i + k ) e outro anterior P( i − k ) ao ponto Pi na silhueta, sendo k um inteiro positivo. Observando a Figura 27.(a) pode-se notar que utilizando esses dois vetores a tendência é diminuir o efeito do ruído ao longo da silhueta e ter ângulos menores onde a k-curvatura é maior. Em função do valor de k , do qual depende o tamanho dos vetores, o problema dos ruídos ao longo da silhueta pode afetar pouco o cálculo da k-curvatura. Reconhecimento 71 Figura 27 - Medida de k-curvatura em cada ponto da silhueta. (a) Para cada ponto escolhido um ponto subseqüente A k-curvatura é o ângulo Pi é P(i + k ) e outro anterior P( i − k ) que formam dois vetores. α i formado por esses dois vetores e k é um inteiro positivo. PUC-Rio - Certificação Digital Nº 0310888/CB (b) O parâmetro k deve ser ajustado de maneira que as regiões de interesse sejam preferentemente detectadas durante o cálculo da k-curvatura. Para detectar principalmente as regiões com Picos e Vales é necessário levar em conta algumas observações referentes à forma da mão e explorar as características dos dedos na silhueta. Observando a Figura 27.(b) pode-se ver que os dedos são representados por um número considerável de pontos na silhueta, e esses pontos estão distribuídos de modo a formar regiões cilíndricas ou semi-cápsulas ao longo da silhueta. Assim, acrescentando o valor de k até um certo valor, é possível formar vetores suficientemente longos de modo que a característica dos dedos estendidos seja aproveitada na detecção dos Picos e Vales. Esses vetores são mostrados Figura 27.(b). É importante atribuir um valor a k que considere os dedos estendidos, mas que também possa ser flexível quando os dedos não estejam totalmente estendidos, por isso a escolha do valor de k é importante para o aproveitamento dessa característica na detecção de feições. No algoritmo de detecção de feições, além da escolha do valor de k , é necessário considerar um limiar Tα para o valor da k-curvatura. Quando um ponto Pi é processado são construídos dois vetores P(i + k ) − Pi e P( i − k ) − Pi , e o ângulo α i entre os vetores é calculado. Se o menor ângulo formado entre os dois vetores for menor ou igual ao valor do limiar Tα , o ponto é considerado Reconhecimento 72 como feição. Nesta etapa esses pontos não podem ser ainda considerados como sendo Picos ou Vales, mas apenas como feições ou pontos de interesse. A seguir, na Figura 28, são mostrados os resultados da aplicação do algoritmo em imagens com diferentes posturas da mão. Os pontos reconhecidos como sendo feições são aqueles destacados na silhueta, em vermelho para os Picos e azul para os Vales. Os valores utilizados nos parâmetros de teste foram k = 21 e Tα = 60° . Como se esperava, vários pontos foram considerados como sendo feições da silhueta, pois os pontos das regiões vizinhas aos Picos e Vales possuem valores de k-curvatura e características semelhantes. A Figura 28.(b) mostra a detecção das feições com ligeiras mudanças de escala na silhueta da PUC-Rio - Certificação Digital Nº 0310888/CB mão. Figura 28 - Resultado da aplicação do algoritmo de detecção de feições à silhueta da mão. As feições são os pontos ressaltados na silhueta. (a) e (b) Mostram duas posturas da mão com os dedos estendidos.Os valores utilizados para o teste foram k = 21 e Tα = 60° . (c) Mesmo com pequenas mudanças de escala, aproximando-se a mão da câmera, e mantendo os mesmos parâmetros que em (a) e (b) pode-se ver a detecção das feições. Reconhecimento 73 5.3. Detecção dos Dedos Para que a detecção dos dedos seja um processo confiável e robusto, é importante ter como fonte feições que sempre possam ser encontradas na silhueta da mão. Os pontos detectados como sendo feições estão distribuídos em conjuntos isolados, os quais agrupam pontos com características semelhantes e representam um Pico ou um Vale na silhueta. Na Figura 28 pode-se ver que todos os Picos da mão são detectados, mas não são detectados todos os Vales. A k-curvatura dos Vales é um valor que depende da abertura da junção entre os dedos e, visto que essa abertura pode ser alterada, os parâmetros para a detecção das feições nem sempre garantem sua detecção. Na Figura 28(b) pode-se ver um Vale que não é detectado porque a abertura da junção é maior do que o limiar para a k-curvatura. Já que os Vales PUC-Rio - Certificação Digital Nº 0310888/CB nem sempre são detectados na silhueta, eles não são considerados fontes confiáveis para o reconhecimento. Desse modo, no processo de detecção dos dedos, os pontos que representam os Vales são descartados. A detecção de um ponto que representa um dedo é o processo que analisa cada conjunto de pontos que representa os Picos e escolhe o ponto que possui o maior valor de k-curvatura dentro de cada conjunto. Assim, para cada conjunto de pontos que representa os Picos é detectado um ponto que representa um dedo. Na Figura 29 são mostrados os resultados desse processo aplicados a uma mão com três dedos estendidos. Agora existe apenas um ponto representando cada dedo. Figura 29 - Resultado do processo de detecção dos dedos da mão. Os pontos estão ressaltados na silhueta. Além da posição 2D do ponto que representa o dedo, nesta etapa também é calculada a direção de cada um dos dedos. A direção é representada por uma linha que passa através do dedo e aproxima sua direção (Figura 30(a)). Cada Reconhecimento 74 ponto Pi que representa um dedo teve como referência dois pontos, um anterior P( i − k ) e outro posterior P(i + k ) , para o cálculo da sua k-curvatura; esses pontos também serão úteis para o cálculo da direção do dedo que representa o ponto Pi . Na construção da linha existem duas etapas: na primeira são construídos alguns pontos de referência ao longo do dedo e, na segunda, esses pontos são utilizados para construir a linha. Na primeira etapa, o trajeto [ P( i − k ) Pi ] e o trajeto [ Pi P(i + k ) ] da silhueta são divididos por n pontos igualmente espaçados. Depois, partindo do ponto Pi , são formados n pares de pontos juntando pontos a cada lado do ponto Pi (Figura 30(b)). Uma vez feito isso, os pontos de referência procurados são todos os pontos médios entre cada par de pontos. Na Figura 30(b) é mostrado um exemplo com 4 pares de pontos; os pontos de referência PUC-Rio - Certificação Digital Nº 0310888/CB são marcados com uma “x”. Na segunda etapa, tendo esses pontos de referencia “x” e o ponto Pi , é construída a linha de direção utilizando o método de Mínimos Quadrados descrito por Weisstein [43]. Assim, a direção do dedo é a linha que melhor se aproxima dos pontos de referência e que passa pelo ponto Pi . Figura 30 - Cálculo da direção dos dedos. (a) A direção aproximada de cada um dos dedos é mostrada como sendo uma linha. (b) A linha que representa a direção do dedo é a que passa pelo ponto Pi e que melhor aproxima os pontos de referência. Os pontos de referência “x” são os pontos médios de cada par de pontos que estão ligados por uma linha. O ângulo θ é o valor que representa a orientação da linha de direção com respeito à horizontal. Reconhecimento 75 Para representar numericamente a direção de cada dedo é utilizado o ângulo θ que a linha faz com algum eixo principal da imagem. Neste caso o eixo principal escolhido foi a horizontal; assim, direções para a esquerda terão ângulos maiores de 90 graus e direções para a direita terão ângulos menores de 90 graus. 5.4. Reconhecimento de Gestos Antes de falar do processo de reconhecimento é importante definir um conjunto pré-determinado de gestos que serão reconhecidos. Conforme dito na primeira parte deste capítulo, o conjunto de gestos será representado por apenas 4 gestos da mão, os quais são mostrados na Figura 31. Esses gestos por sua vez estão divididos em três classes: FECHADO, INDICE e ESTENDIDO. PUC-Rio - Certificação Digital Nº 0310888/CB O nome de cada uma das classes indica uma característica da mão com relação aos dedos. FECHADO é uma classe de gesto que não apresenta nenhum dedo estendido. Esse gesto, já considerando algumas aplicações, poderia ser utilizado para indicar algum tipo de inatividade. INDICE é uma classe de gesto que apresenta um ou dois dedos da mão estendidos. Esse gesto é utilizado principalmente para interagir com as aplicações. INDICE engloba dois gestos parecidos, os quais são chamados de INDICE_1 e INDICE_2, cuja única diferença é a falta do dedo polegar em INDICE_1. ESTENDIDO é uma classe de gesto que apresenta mais do que dois dedos estendidos. As três classes de gestos são bem diferentes entre sim no que respeita ao número de dedos e forma. Esta característica faz com que o processo de reconhecimento de cada classe seja mais eficiente e mais simples ao mesmo tempo. Mesmo nos gestos de mesma classe (INDICE_1 e INDICE_2) existem diferenças grandes para poder reconhecer cada gesto em particular. O processo de reconhecimento dos gestos é um processo de classificação baseado em feições locais situadas ao longo da silhueta da mão. Essas feições são os pontos que representam os dedos e que foram calculados na etapa anterior. Para detectar um gesto é feita uma operação de comparação entre o número de dedos detectados e o número de dedos presentes em cada um dos gestos predefinidos para o reconhecimento. Nesta etapa se espera que os únicos gestos utilizados sejam os 4 gestos previamente definidos. Dentre os 4 gestos reconhecíveis existe um gesto — FECHADO — que apenas possui Reconhecimento 76 informação gestual e não possui parâmetros dos dedos e valores que possam ser aproveitados. Figura 31 - Conjunto predefinido de gestos que são reconhecidos. Os 4 gestos são divididos em três classes: FECHADO, INDICE e ESTENDIDO. FECHADO é uma classe PUC-Rio - Certificação Digital Nº 0310888/CB de gesto que não apresenta nenhum dedo estendido. INDICE representa uma classe com dois tipos de gestos: INDICE_1 (dedo índice estendido) e INDICE_2 (dedo índice e polegar estendidos). ESTENDIDO é uma classe de gesto que apresenta mais de dois dedos na mão estendidos. Quando não são detectados dedos na mão, o gesto inferido é o FECHADO. Quando são detectados mais do que dois dedos na mão, o gesto inferido é o ESTENDIDO. Se forem detectados um ou dois dedos, então, dependendo do número dos dedos, é inferido um gesto da classe INDICE. Este processo de inferência de gestos baseado no número de dedos pode também ser representado como sendo o reconhecimento de tokens feito por um Autômato Finito Determinista (Figura 32). Nesse autômato existe um único símbolo no vocabulário, d, que significa “dedo”. Há 4 estados diferentes, sendo três deles, q1, q2 e q3, estados finais ou de reconhecimento. O autômato só é testado quando existem cadeias de símbolos d que podem ser reconhecidos. No caso da mão FECHADA o autômato não é testado. Os estados de reconhecimento q1, q2 e q3 correspondem aos gestos INDICE_1, INDICE_2 e ESTENDIDO, respectivamente. Reconhecimento 77 Figura 32 - Autômato Finito Determinista que representa o processo de inferência dos gestos com base no número de dedos “d” detectados na silhueta da mão. O único símbolo do vocabulário é “d”, que significa “dedo”. Os estados de reconhecimento q1, q2 e q3 representam os gestos INDICE_1, INDICE_2 e ESTENDIDO, respectivamente. Ao contrário dos gestos FECHADO e ESTENDIDO, nos gestos INDICE é PUC-Rio - Certificação Digital Nº 0310888/CB necessário descobrir qual dos dedos é o índice. No caso de ser detectado apenas um dedo, este é assumido como sendo o índice. Quando dois dedos são detectados, o dedo índice é aquele que está à direita do outro (isto se aplica à mão direita). Já que os pontos da silhueta são armazenados na ordem antihorária, convém mencionarmos o conceito de Distância na Silhueta DNS ( Pi , Pj ) como sendo o número de pontos da silhueta entre o ponto Pi e o ponto Pj . Utilizando uma heurística simples podemos dizer que se DNS ( Pi , Pj ) < N / 2 então Pi é o dedo índice e está à direita de Pj ; se não, Pj é o dedo índice e está à direita de Pi . N é o número total de pontos da silhueta. Como os gestos são inferidos com base em feições locais ao longo da silhueta, diferentes gestos da mão com o mesmo número de dedos podem ser inferidos como sendo um mesmo gesto. Se um gesto diferente aos gestos predefinidos é mostrado, a resposta da inferência dos gestos será aquele gesto predefinido que mais se assemelhe, em número de dedos, com o gesto sendo analisado. 5.5. Resultados Parciais Nesta seção são apresentados os resultados de alguns testes feitos com o reconhecimento dos gestos da mão. Já que esse reconhecimento se baseia no número de dedos reconhecidos, os primeiros testes foram direcionados para Reconhecimento 78 avaliar o resultado do número de dedos reconhecidos na mão e os demais visaram avaliar o reconhecimento dos gestos predefinidos. Para avaliar o reconhecimento do número de dedos foi considerado um intervalo de tempo, de aproximadamente um minuto, contendo um determinado número de quadros. Durante esse tempo, dependendo do número de dedos testados, a mão foi mantida com um número específico de dedos. Ao final desta etapa foi contabilizado o número de acertos e erros no reconhecimento dos dedos. Com base nesses valores foram calculadas as porcentagens de acerto e erro para cada número de dedos presente na mão. A Tabela 1 mostra os resultados dos testes realizados para avaliar o reconhecimento do número de PUC-Rio - Certificação Digital Nº 0310888/CB dedos presente na mão. Tabela 1 - Resultado dos testes feitos para a avaliação do reconhecimento do número de dedos presente na mão. Para cada número de dedos é apresentada uma estatística indicando o número e a porcentagem de acertos e erros ao longo do teste. Para a avaliação do reconhecimento dos gestos predefinidos, da mesma forma que no teste anterior, foi levado em conta um intervalo de tempo durante o qual o gesto da mão foi mantido. Ao final, foi contabilizado o número de acertos e erros no reconhecimento de cada um dos gestos. A Tabela 2 mostra os resultados da avaliação para o reconhecimento dos gestos predefinidos. Reconhecimento 79 Tabela 2 - Resultado dos testes feitos para a avaliação do reconhecimento dos gestos predefinidos. Para cada um dos 4 gestos é apresentada uma estatística indicando o número e a porcentagem de acertos e erros ao longo do teste. 5.6. Considerações Finais do Capítulo PUC-Rio - Certificação Digital Nº 0310888/CB Para a etapa do reconhecimento foi considerado apenas um conjunto de 4 gestos. Esses gestos procuram ser gestos básicos que ajudem no processo de reconhecimento e permitam mostrar que, a partir de um conjunto pequeno, podem ser construídas diferentes aplicações. As únicas feições consideradas foram os Picos e Vales. A silhueta possui mais informações relevantes que também podem ser consideradas, mas requerem abordagens mais especificas para procurar outras feições. Características globais podem ser utilizadas como base para construir modelos de reconhecimento mais sofisticados baseados na silhueta. Neste trabalho procuramos caracterizar os gestos e posições com apenas as feições de Picos e Vales. Apesar de serem só duas, muitos gestos podem ser reconhecidos de forma estável. 6 Aplicações Neste trabalho, é importante implementar aplicações de interação em tempo real para que seja possível avaliar a aplicabilidade das técnicas de Visão Computacional descritas ao longo dos capítulos anteriores na interação homemmáquina. Neste capítulo são apresentadas três aplicações de interação baseadas em gestos da mão. Na primeira aplicação, é desenvolvido um mecanismo de interação em que a posição do dedo índice e os gestos reconhecidos são utilizados para movimentar o cursor e simular funções básicas do mouse. Na segunda aplicação, a posição e a direção dos dedos são PUC-Rio - Certificação Digital Nº 0310888/CB utilizadas para definir direções de movimento, simulando assim as teclas de direção do teclado. Juntamente com alguns gestos reconhecidos, essas direções são aplicadas ao controle de algumas das principais funções de um vídeo game. Na terceira aplicação o foco principal é a interação puramente gestual, ao contrário das duas anteriores, em que são requeridas posições e direções dos dedos. Nesta aplicação são reconhecidas duas mudanças específicas nos gestos, as quais são aplicadas na movimentação de slides de apresentação. 6.1. Detalhes da Implementação Aplicação, neste capítulo, significa o processo de mapear os gestos reconhecidos para o controle e simulação de algumas funções básicas em programas já existentes no computador. Para poder controlar funções básicas nesses programas é necessário um mecanismo que permita simular os controladores (drivers) de entrada, tanto o do mouse como o do teclado. Neste capítulo, todas as aplicações foram implementadas no sistema Windows, porque a plataforma SDK possui funções que permitem gerar eventos do mouse e do teclado da mesma forma que são gerados nos seus controladores convencionais. Os eventos gerados são automaticamente enviados para as janelas ativas e processados por qualquer programa do sistema. Aplicações 81 6.2. Controlando o Cursor do Mouse Nesta aplicação, os gestos, seus parâmetros e algumas combinações destes são aplicados no controle do cursor de um mouse convencional. Para simular o cursor do mouse é necessária a realização de duas tarefas importantes. A primeira é movimentar o cursor e a segunda é simular os eventos básicos utilizando os gestos reconhecidos. Portanto, nesta aplicação, numa primeira parte é definido um mecanismo que, utilizando a posição do dedo indicador, define a direção do movimento e a posição do cursor ao longo do tempo. Na segunda parte, é explicado que gestos e quais combinações destes foram utilizados para simular os eventos básicos do mouse. Os eventos a simular serão MOVIMENTAR, CLICK, CLICK_DUPLO, CLICK_DIREITO e PUC-Rio - Certificação Digital Nº 0310888/CB ARRASTAR. Existem diferentes formas de mapear as coordenadas da posição do dedo detectado na imagem para as coordenadas da tela onde o cursor é exibido. Como a resolução da imagem capturada pela câmera na maioria dos casos é menor do que a resolução da tela, mecanismos de mapeamento direto, da imagem para a tela, têm problemas de escala. Um pixel na imagem muitas vezes representa um número maior de pixels na tela. Para evitar esse problema, nesta aplicação optamos por um mecanismo de mapeamento relativo. Nesse mecanismo, é necessário definir um ponto de referência na imagem e, depois, levando em conta a posição atual do dedo em relação a esse ponto de referência, é calculada a direção do movimento e a posição final do cursor. Na Figura 32 é esquematizado o mecanismo utilizado para movimentar o cursor. Os pontos p1, p2 e p3 representam três posições diferentes (em quadros diferentes) do dedo índice. Esses pontos, em relação o ponto de referência ‘O’, formam três vetores, os quais indicam a posição do dedo em relação ao ponto de referência. As coordenadas (x, y) dos vetores são calculadas levando em conta o ponto de referência ‘O’ como sendo a origem. A cada quadro, a direção do movimento no cursor é dada pelas coordenadas (x, y) do vetor e a velocidade (ou salto) do movimento é dado pela norma do vetor. Aplicações 82 Figura 33 - Mecanismo de movimento no cursor. Para cada ponto p1, p2 e p3, a direção do movimento é dada pelas coordenadas (x,y) do vetor e a velocidade do movimento é dada pela norma do vetor. Em torno do ponto de referência O existe uma área de inatividade na qual os pontos que caem nessa área (p2) não ocasionam nenhum PUC-Rio - Certificação Digital Nº 0310888/CB movimento. Dada essa configuração, a única forma de manter o cursor estático seria com vetores cujas normas fossem zero. Isto na prática é difícil de se conseguir, pois implicaria manter o dedo totalmente parado no ponto O. Além disso, na etapa de detecção dos dedos sempre existem, entre os quadros, pequenas variações na posição detectada. Considerando este fato, em volta do ponto O foi definida uma área de inatividade onde os pontos que caem nessa área (p. ex., o ponto p2) não ocasionam movimento no cursor. Os únicos gestos que geram o evento MOVIMENTAR são o INDICE_2 e o INDICE_1 (estes gestos estão ilustrados na Figura 30). No caso do gesto INDICE_2, ele somente movimenta o cursor e não executa nenhum evento. No caso do gesto INDICE_1, o movimento é feito combinado ao evento ARRASTAR. A Figura 33 mostra o gesto INDICE_2 indicando uma direção específica de movimento para o cursor. Isto significa que, a partir da sua última posição, o cursor se movimenta na direção indicada pelo vetor e com saltos do tamanho da sua norma. Aplicações 83 Figura 34 - Mecanismo de movimento do cursor. O vetor formado entre a posição do dedo índice e o ponto de referência indica a direção do movimento. A cada quadro este vetor é somado à última posição do cursor. Para simular o evento CLICK_DIREITO foi utilizado o gesto ESTENDIDO (mostrado na Figura 30). Assim, cada vez que este gesto é apresentado, o cursor do mouse se mantém na sua última posição e invoca o evento CLICK_DIREITO do mouse. PUC-Rio - Certificação Digital Nº 0310888/CB Para simular o evento CLICK foi utilizada uma seqüência dos gestos INDICE_2 e INDICE_1. Cada vez que existe uma seqüência de mudança do gesto INDICE_2 para o gesto INDICE_1 e deste novamente para INDICE_2, essa seqüência é considerada como sendo um evento CLICK. Este depende do tempo e, para ser validado, a seqüência dos gestos deve ser feita dentro do intervalo de tempo T predefinido, como mostra a Figura 34. A partir do gesto corrente (atual) é analisada a seqüência de gestos anteriores. Se, dentro do intervalo de tempo definido existe o padrão de mudança procurado, então e evento CLICK é validado. Figura 35 - Padrão de mudança do evento CLICK. Na nossa aplicação, o intervalo de tempo foi definido em número de quadros, T=20. Entre os gestos INDICE_2 pode haver vários gestos INDICE_1. A partir do gesto corrente (atual) é analisada a seqüência em busca do padrão de mudança requerido. Aplicações 84 Para simular o evento ARRASTAR foi utilizado o gesto INDICE_1. O evento acontece enquanto o gesto INDICE_1 é mantido. Para validar o evento ARRASTAR, o gesto INDICE_1 deve ser mantido além de um determinado tempo t (Figura 35). Este tempo é importante para poder diferenciar se o gesto INDICE_1 mostrado indica um evento ARRASTAR ou simplesmente faz parte da PUC-Rio - Certificação Digital Nº 0310888/CB seqüência do evento CLICK. Figura 36 - Evento ARRASTAR. O evento acontece enquanto o gesto INDICE_1 é mantido. Para validar o evento, o intervalo de tempo em que o gesto INDICE_1 é mantido deve ser maior do que o t predefinido. Na nossa aplicação o tempo foi t =T-5. O tempo t está relacionado com o tempo T. O evento CLICK_DUPLO é simplesmente uma seqüência de dois eventos CLICK consecutivos. Na Tabela 3 são mostrados os resultados de um teste de reconhecimento feito para os eventos CLICK e CLICK_DUPLO. Total de Total de Total de Tentativas Acertos Erros de Acerto de Erro CLICK 300 295 5 98.4 % 1.6 % CLICK_D 200 185 15 92.5 % 7.5 % Gesto Porcentagem Porcentagem Tabela 3 - Resultado do teste de reconhecimento dos eventos CLICK e CLICK_DUPLO. Na Figura 36 é mostrado o diagrama de fluxo do controle do cursor. A entrada é sempre um gesto reconhecido e os eventos são gerados dependendo do gesto que no momento está sendo processado. O evento CLICK é validado para diferenciar o evento CLICK do evento MOVIMENTAR. Também o evento ARRASTAR é validado para diferenciar se o gesto INDICE_1 é apenas parte da seqüência do evento CLICK. Aplicações 85 Figura 37 - Diagrama de fluxo do controle do cursor do mouse. Os eventos são validados dependo do gesto que está sendo processado. O evento CLICK é validado para PUC-Rio - Certificação Digital Nº 0310888/CB diferenciar o CLICK do evento MOVIMENTAR. O evento ARRASTAR é validado para diferenciar se o gesto INDICE_1 indica o evento ARRASTAR o simplesmente faz parte da seqüência do CLICK. A seguir são apresentadas algumas imagens que mostram a implementação do controle do cursor feita para controlar o mouse do sistema Windows. Estas imagens mostram os gestos sendo mapeados em eventos do mouse, o que permite interagir com vários programas suscetíveis a esses eventos. Figura 38 - Gesto ESTENDIDO sendo mapeado para o evento CLICK_DIREITO do mouse no sistema Windows. Ao gerar o evento no arquivo selecionado, é mostrado o menu disponível no arquivo. Aplicações 86 Figura 39 - Gesto INDICE_2 sendo utilizado para movimentar o ponteiro do mouse. PUC-Rio - Certificação Digital Nº 0310888/CB Utilizando o gesto INDICE_2 podem-se selecionar itens do menu. Figura 40 - Gesto INDICE_1 sendo mapeado para o evento ARRASTAR, o qual é utilizado para desenhar letras no PAINT. 6.3. Controlando um Jogo de Computador Nesta aplicação o objetivo principal é simular algumas das principais funções de um vídeo game (AirStrike II). Nesta aplicação também há duas tarefas a cumprir no que se refere ao movimento e aos eventos que devem ser gerados. A posição e a direção do dedo índice serão utilizadas para definir quatro possíveis direções de movimento. Tais direções serão: ESQUERDA, DIREITA, PARA_FRENTE, PARA_TRAS. Com respeito aos eventos que devem ser gerados, os gestos reconhecidos serão mapeados para simular os eventos de ATIRAR, MUDAR_ARMA e SOLTAR_EXPLOSIVO. O mecanismo utilizado para calcular a direção do movimento é similar ao empregado na aplicação anterior. As direções PARA_FRENTE e PARA_TRAS são definidas pela posição do dedo índice com respeito a um ponto de refêrencia. As direções ESQUERDA e DIREITA são definidas pelo valor do ângulo da direção do dedo com relação à horizontal. Na Figura 40(a) são apresentadas três possíveis posições p1, p2 e p3 do dedo índice, um ponto de referência O e uma área de inatividade que se estende Aplicações 87 ao longo do eixo horizontal, em volta do ponto de referência. Se a posição (x, y) do dedo está fora da área de inatividade, quer dizer que existe movimento. Dependendo de se a coordenada y da posição do dedo é maior (ex. p3) ou menor (ex. p1) do que a coordenada y do ponto de referência, inferem-se as direções PARA_FRENTE e PARA_TRAS, respectivamente. No caso do ponto p2 não se infere nenhum movimento. O valor da direção do dedo índice é dado por um ângulo aproximado que o dedo faz com a horizontal (cf. Capítulo 5). Os vetores (p1, p2 e p3) apresentados na Figura 40(b) representam diferentes direções do dedo índice. Se o valor do ângulo é menor (ex. p3) do que um valor α (ângulo limite da área de inatividade), a direção do movimento inferida é a DIREITA. Se o ângulo for maior (ex. p1) do que − α , a direção de movimento inferida é a ESQUERDA. PUC-Rio - Certificação Digital Nº 0310888/CB Para as direções próximas ao eixo vertical (ex. p2) não existe movimento. Figura 41 - Mecanismo utilizado para calcular a direção do movimento. (a) Mecanismo utilizado para calcular as direções PARA_FRENTE e PARA_TRAS. (b) Mecanismo utilizado para calcular as direções DIREITA e ESQUERDA. O valor utilizado na nossa implementação foi α = 75° . No que se refere aos eventos que devem ser gerados, foram empregados alguns gestos e uma combinação destes. Para simular o evento ATIRAR, foi utilizado o gesto INDICE_1. O evento ATIRAR é mantido enquanto o gesto INDICE_1 também é mantido. Este gesto é utilizado da mesma maneira como foi usado no evento ARRASTAR da aplicação anterior (veja as Figuras 41(a) e 42(a)). Existe a possibilidade de se selecionar a arma com a qual se quer atirar. Para simular o evento MUDAR_ARMA foi utilizada uma seqüência específica Aplicações 88 dos gestos INDICE_2 e INDICE_1. Neste evento foram empregados os gestos da mesma maneira que no evento CLICK da aplicação anterior. Para validar o evento deve existir uma seqüência de gestos que começa em INDICE_2, muda para INDICE_1 e novamente muda para INDICE_2. Além da arma convencional, existe a possibilidade de se soltar explosivos que são ganhos no transcurso do jogo. Para simular o evento SOLTAR_EXPLOSIVO foi utilizado o gesto ESTENDIDO (Figura 42(b)). A seguir são apresentadas algumas imagens que mostram cenas do jogo controlado com os gestos reconhecidos. Nas imagens são mostrados os eventos gerados de acordo com a direção e a posição do dedo índice e os gestos PUC-Rio - Certificação Digital Nº 0310888/CB reconhecidos. Figura 42 - (a) Geração do evento ATIRAR utilizando o gesto INDICE_1. A posição e a direção do dedo índice não indicam movimento. (b) Movimentação do helicóptero utilizando o gesto INDICE_2. A posição e a direção de dedo indicam os eventos PARA_FRENTE e PARA_DIREITA . Neste caso não é gerado o evento ATIRAR. Aplicações 89 Figura 43 - (a) Utilizando o gesto INDICE_1 para gerar o evento ATIRAR e ao mesmo tempo movimentar o helicóptero. A posição e a direção do dedo indicam a direção do movimento PARA_TRAS e PARA_ESQUERDA. (b) Gesto ESTENDIDO sendo utilizado PUC-Rio - Certificação Digital Nº 0310888/CB para gerar o evento SOLTAR_EXPLOSIVO. 6.4. Interação Gestual Ao contrário das duas aplicações anteriores, nas quais foram consideradas as informações referentes ao dedo índice, nesta aplicação serão consideradas apenas informações gestuais. Nesta aplicação são reconhecidas duas mudanças específicas nos gestos para gerar dois eventos do teclado, que, neste caso, são aplicados ao movimento de slides de apresentação (PowerPoint). Os eventos que são reconhecidos, analisando-se a mudança nos gestos, são AVANÇAR e RECUAR. Cada vez que esses eventos são validados, são gerados eventos do teclado que, na configuração padrão, controlam o avanço e recuo nos slides. O evento AVANÇAR é gerado cada vez que existe uma mudança do gesto FECHADO para o gesto ESTENDIDO. Este evento valida a mudança nos gestos, isto é, se num determinado momento estamos com a mão fechada e logo abrimos a mão mostrando os cinco dedos, como o indica o gesto ESTENDIDO, é gerado o evento AVANÇAR. O evento RECUAR é gerado de maneira similar ao evento AVANÇAR. O ponto de partida é também o gesto FECHADO, com a diferença de que a mudança deve ser feita para o gesto INDICE_1 ou INDICE_2. Se num determinado momento estamos com a mão fechada e logo abrimos a mão mostrando o gesto INDICE_1 ou o gesto INDICE_2, o evento RECUAR é gerado. Aplicações 90 Existem outras mudanças nos gestos que podem gerar outros eventos, mas foram somente duas as utilizadas. Estas seqüências de gestos têm a particularidade de terem o mesmo ponto de partida (o gesto FECHADO). Na Figura 43 são mostrados os diferentes estados da aplicação como sendo um autômato finito. O autômato é composto por quatro estados; dois estados não terminais q0 e q1 e dois estados terminais q2 e q3, os quais geram os eventos AVANÇAR e RECUAR, respectivamente. As transições entre os estados representam os gestos que são mostrados ao longo do tempo. O estado inicial PUC-Rio - Certificação Digital Nº 0310888/CB no autômato é o estado q0. Figura 44 - Estados da aplicação representados como sendo um autômato finito de quatro estados. Os estados q2 e q3 geram os eventos AVANÇAR e RECUAR, respectivamente. A seqüência que gera qualquer um dos dois eventos passa pelo estado q1. Dependendo do gesto da transição pode-se se chegar aos estados q2 ou q3, gerando os respectivos eventos. Isto quer dizer que qualquer um dos dois caminhos que geram os eventos passa pela mão fechada. Depois que os eventos são gerados, volta-se ao estado inicial no qual novamente são analisados os gestos subseqüentes. Antes de se voltar ao estado inicial, existe a possibilidade de se definir um retardo na transição, esperando-se assim que o evento do teclado seja gerado pelo sistema antes de voltar novamente ao estado inicial. A seguir são apresentadas duas imagens que mostram a geração dos eventos AVANÇAR e RECUAR na nossa implementação para mexer slides no PowerPoint. Aplicações 91 Figura 45 - Geração do evento AVANÇAR. A mudança do gesto (a) FECHADO para o PUC-Rio - Certificação Digital Nº 0310888/CB gesto (b) ESTENDIDO gera o evento AVANÇAR, que é refletido na (c) tela do monitor. Figura 46 - Geração do evento RECUAR. A mudança do gesto (a) FECHADO para o gesto (b) INIDICE_2 gera o evento RECUAR, que é refletido na (c) tela do monitor. 6.5. Conclusões Parciais Na implementação das três aplicações foram cumpridos todos os requisitos funcionais e não funcionais descritos no capítulo 2. Os dedos e os gestos foram adequadamente detectados, identificados e rastreados em tempo real, permitindo nos três casos interações maiores aos 20 quadros por segundo (20 Hz).1 No que diz respeito ao ambiente e às condições de iluminação, para estas aplicações não foi feita nenhuma mudança que favoreça o seu desempenho. Em nenhuma das aplicações foram incluídas luzes ou ambientes especiais para a interação. Podemos dizer que houve uma adaptação ao ambiente e não uma adaptação do ambiente para o funcionamento das aplicações. Tal adaptação depende do ajuste dos parâmetros da subtração de fundo em cada ambiente. 1 Alguns vídeos que mostram a interação nas três aplicações podem ser vistos em www.tecgraf.puc-rio.br/~alain/current/ Aplicações 92 A influência do ambiente e das condições de iluminação é maior quanto maior for a área do ambiente capturada pela câmera. No caso da aplicação feita para movimentar os slides, a influência do ambiente foi maior, gerando ruídos e deformando a morfologia da mão capturada. Apesar disso, a detecção dos dedos e o reconhecimento dos gestos foram cumpridos satisfatoriamente. Para poder interagir adequadamente com as aplicações utilizando gestos, principalmente no caso de usuários sem experiência, é preciso um pequeno tempo de adaptação. Os principais problemas são referentes a algumas posições, ângulos ou a extensão dos dedos, os quais, às vezes, impedem que os gestos e os dedos sejam detectados. No geral, o conjunto de gestos é pequeno e fácil de ser lembrado. A interação mais simples se dá na aplicação de movimentar os slides. PUC-Rio - Certificação Digital Nº 0310888/CB Durante a interação e principalmente nas duas primeiras aplicações, alguns erros na detecção dos gestos ocasionam eventos não esperados. Esses erros acontecem devido a mudanças significativas no ambiente, as quais acontecem muito esporadicamente. Se considerarmos a idéia de utilizar gestos da mão para realizar algumas tarefas comuns nos computadores pessoais, estas aplicações, mesmo com os bons resultados obtidos, ainda estão longe de poder substituir os atuais dispositivos de interação na medida que os usuários esperam ou com que estão acostumados. 7 Conclusões Neste trabalho foi proposto um sistema em tempo real para a detecção e o rastreamento de gestos da mão em ambientes de trabalho convencionais. Esse sistema foi construído sobre a base de algoritmos de subtração de fundo e detecção de silhueta. Três aplicações de demonstração foram implementadas para provar a aplicabilidade da interação baseada em gestos da mão em aplicações reais e em ambientes de trabalho convencionais. Outro propósito do trabalho foi mostrar que sistemas de interação baseados em Visão Computacional podem ser implementados em computadores PUC-Rio - Certificação Digital Nº 0310888/CB convencionais utilizando como dispositivos de captura e interação câmeras de prateleira facilmente accessíveis2. Além disso, foi demonstrado que é possível construir o sistema de interação baseado em gestos da mão sem precisar de equipamentos e marcadores colados na mão. O modelo de segmentação via subtração de fundo utilizado neste trabalho mostrou que é possível lidar com os problemas de mudanças e latências da iluminação nos ambientes de interação. Alguns erros de segmentação ocasionados pelo brilho e reflexão de alguns objetos foram atenuados nas etapas posteriores à segmentação. Ainda que alguns erros tenham persistido, os modelos de segmentação e detecção da silhueta utilizados neste trabalho tiveram resultados satisfatórios. Outra contribuição deste trabalho foi o estudo e a avaliação dos diferentes algoritmos propostos para a subtração de fundo. Foram discutidos alguns dos problemas mais comuns que fazem deste processo uma tarefa difícil de se realizar. Este estudo contribui com o conhecimento sobre os principais problemas e abordagens de solução da subtração de fundo baseada unicamente em informações de cor. Foram descritos alguns métodos de solução que indicam tendências a serem seguidas nos algoritmos de subtração. 2 Ao longo do desenvolvimento deste trabalho foram utilizadas duas câmeras Web, uma Creative Nx Pro e uma Logitech QuickCam Pro, que têm um custo aproximado de U$ 50 e U$ 70, respectivamente. Conclusões 94 A partir do conjunto básico de gestos reconhecidos foi possível construir e reconhecer gestos mais complexos nas aplicações. Eventos como CLICK, ARRASTAR, AVANÇAR e RECUAR implicaram a análise da mudança dos gestos ao longo do tempo. A interação não está restrita a aplicações bidimensionais. Também podem ser construídas aplicações tridimensionais utilizando os gestos reconhecidos. No que se refere aos ambientes de trabalho convencionais, as condições de iluminação e a presença e intensidade das sombras nas imagens definem os parâmetros da segmentação. Uma dificuldade foi estabelecer mecanismos de ajuste automáticos ou ao menos semi-automáticos que considerem essas características. O mecanismo manual utilizado neste trabalho está sujeito a erros, mas mostrou nas aplicações que, apesar disso, pode funcionar de forma aceitável. Muitas aplicações interessantes podem ser construídas utilizando gestos PUC-Rio - Certificação Digital Nº 0310888/CB da mão. A inclusão de câmeras em muitos dos aparelhos eletrônicos incrementa o potencial de aplicação e justifica as pesquisas em interfaces digitais que não requerem dispositivos intermediários de interação. Apesar das dificuldades encontradas ao longo das fases deste trabalho, os objetivos desejados, isto é, construir um sistema base de reconhecimento de gestos e aplicações que provem sua aplicabilidade em ambientes de trabalho convencionais, foram alcançados. As taxas de erro estiveram dentro de intervalos que não comprometeram a usabilidade do sistema. 7.1. Trabalhos Futuros Acreditamos que na pesquisa de algoritmos de Visão Computacional é importante emular algumas características de nosso cérebro, principalmente no que diz respeito à integração de diferentes fontes de informação para resolver ambigüidades. No caso do processo de segmentação de fundo, seria interessante criar uma abordagem que utilizasse uma combinação da informação de cor com outros tipos de informações tais como forma, movimento, feições locais, coerência espacial e temporal, para construir modelos mais robustos, os quais possam se aplicar a qualquer tipo de ambiente e condições de iluminação. Nas etapas de detecção de silhueta e reconhecimento é importante poder considerar modelos de reconhecimento mais sofisticados, que permitam Conclusões 95 reconhecer gestos mais complexos e principalmente abordagens que propiciem uma interação envolvendo vários usuários e várias mãos. Explorar os gestos em outro tipo de aplicações, por exemplo, análise de movimento, permitiria reconhecer gestos dinâmicos na interação. É importante também considerar os gestos em aplicações tridimensionais. Finalmente, a interação natural entre os humanos tende a ser uma comunicação multimídia. Os gestos são apenas uma parte dentro do conjunto de meios utilizados. Meios como gestos faciais, posturas do corpo, fala, etc. também são importantes na interação. Os computadores também deveriam ser capazes de entender expressões, gestos e movimentos. Certamente essa capacidade implicaria um grande potencial na interação entre humano e PUC-Rio - Certificação Digital Nº 0310888/CB computador. Bibliografia [1] BÉRARD, F., Computer Vision for the Strongly Coupled HumanComputer Interaction. Doctoral These, Université Joseph Fourier, Grenoble 1999. [2] BUTLER, D., SRIDHARAM, S. and BOVE, M., Real–Time Adaptive Background Segmentation, MIT Media Laboratory, Queensland University of Technology. PUC-Rio - Certificação Digital Nº 0310888/CB [3] CHEUNG, K., KANADE, M., BOUGUET, J. and HOLLER, M., A Real Time System for Robust 3D Voxel Reconstruction of Human Motions, Proceedings of the 2000 IEEE Conference on Computer Vision and Pattern Recognition (CVPR '00), Vol. 2, June, 2000, pp. 714 - 720. [4] CROWLEY, J., BÉRARD, F. and COUTAZ, J., Finger Tracking as an input device for augmented reality. International Workshop on Automatic Face and Gesture Recognition, Zurich, 1995. [5] DEPARNIS, K., A Review of Vision-Based Hand Gesture, Department of Computer Science, York University, February, 2004. [6] ELGAMAL, A., HARWOOD, D. and DAVIS, L., Non-parametric Model for Background Subtraction, 6th European Conference on Computer Vision, Dublin, Ireland, June 2000. [7] FITZMAURICE, G., ISHII, H. and BUXTON, W., Bricks: Laying the Foundations of Graspable User Interfaces. ACM conference on Computer-Human Interaction, 1995. [8] FREEMAN, W., ANDERSON, D. and BEARDSLEY, P., Computer Vision for Interactive Computer Graphics. IEEE Computer Graphics and Applications, 1998. [9] FREEMAN, W. and WEISSMAN, C., Television control by hand gestures. International Conference on Automatic Face and Gesture Recognition, 1995. [10] HALL, D. and CROWLEY, J., Tracking Fingers and Hands with a Rigid Contour Model in an Augmented Reality, International Workshop on Managing Interactions in Smart Environments, 1999. Bibliografia 97 [11] HANDENBERG, C., Fingertracking and Handposture Recognition for Real-Time Human-Computer Interaction, Master These at Fachbereich Elektrotechnik und Informatik der Technischen Universität Berlin. 2001. [12] HEAP, T., Real Time Hand Tracking and Gesture Recognition using Smart Snakes, In Interface to Real and Virtual Worlds, Montpellier, 1995. [13] HONG, D. and WOO, W., A Background Subtraction for a Vision-based User Interface, ICICS-PCM 2003, Singapore, December 2003. [14] HOPRASERT, T., HARWOOD, D., A Robust Background Subtraction and Shadow Detection. In the proceedings of the fourth Asian Conference on Computer Vision, 2000. PUC-Rio - Certificação Digital Nº 0310888/CB [15] HOPRASERT, T., HARWOOD, D. and DAVIS, L., A Statistical Approach for Real-Time Robust Background Subtraction and Shadow Detection. In Proceedings IEEE ICCV’99 FRAME-RATE Workshop, Greece, September 1999. [16] ISARD, M. and BLAKE, A., Contour tracking by stochastic propagation of conditional density. In: ECCV, pages 343-356 Vol. 1, 1996. [17] KIM, C., WOO, W. and JEONG, H., Determination of Optical Flow by Stochastic Model, Journal of the Korea Information Science Society, Nov. 1992. [18] KUCH, J. and HUANG, T., Vision-based hand modeling and tracking for virtual teleconferencing and telecollaboration. International Symposium on Computer Vision, 1995. [19] KULESSA, T. and HOCH, M., Efficient Color Segmentation under Varying Illumination Conditions. IEEE Image and Multidimensional Digital Signal Processing Workshop, 1998. [20] KUMAR, P. and SENGUPTA, K., Foreground Background Segmentation using Temporal and Spatial Markov Processes, Department of Electrical and Computer Engineering, National University of Singapore, November 2000. [21] KURATA, T., OKUMA, T. and KOUROGI, M. The Hand Mouse: GMM Hand-color Classification and Mean Shift Tracking. In Second International Workshop RATFG-RTS, Canada, 2001. Bibliografia 98 [22] LAPTEV, I. and LINDEBERG, T., Tracking of Multi-State Hand Models Using Particle Filtering and a Hierarchy of Multi-Scale Image Features, Technical report ISRN, 2000. [23] LEE, H. and KIM, J., An HMM-based threshold model approach for gesture recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1999. [24] LEE, J. and KUNII, T., Model-based analysis of hand posture. IEEE Computer Graphics and Applications, 1999. [25] LIU, H. and SRINATH, M., Corner Detection from Chain-Codes. Pattern Recognition, pages 51-68 Vol. 1, 1990. PUC-Rio - Certificação Digital Nº 0310888/CB [26] MACCORMICK, J. and ISARD, M., Partitioned sampling, articulated objects and interface-quality hand tracking. European Conference on Computer Vision, 2000. [27] OKA, K., SATO, Y. and KOIKE, H., Real-time Tracking of Multiple Fingertips and Gesture Recognition for Augmented Desk Interface Systems, In IEEE Automatic Face and Gesture Recognition, Washington, D.C. May 2002. [28] PAVLOVIC, V., SHARMA, R. and HUANG, T., Visual Interpretation of Hand Gestures for Human-Computer Interaction: A Review, IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), 1997. [29] QUECK, F., MYSLIWIEC, T. and ZHAO, M., Finger Mouse: A freehand pointing interface. International Workshop on Automatic Face and Gesture Recognition, Zurich, 1995. [30] REGH, J. and KANADE, T., Visual Tracking of high DoF articulated structures: An application to human hand tracking. In European Conference on Computer Vision, 1994. [31] SATO, Y., KOBAYASHI, Y. and KOIKE, H., Fast Tracking of Hands and Fingertips in Infrared Images for Augmented Desk Interface. International Conference on Automatic Face and Gesture Recognition, Grenoble, 2000. [32] SCHLENZIG, J., HUNTER, E. and JAIN, R., Vision Based gesture interpretation using recursive estimation. In Asilomar Conference on Signals, Systems and Computer, 1994. Bibliografia 99 [33] SEGEN, J., GestureVR: Vision-Based 3D Hand interface for Spatial Interaction, ACM Multimedia Conference, Bristol, 1998. [34] SERRA J., Image Analysis and Mathematical Morphology, 1982, London: Academic Press. [35] STAFFORD-FRASER, J., Video-Augmented Environments, PhD thesis, Gonville & Caius College, University of Cambridge, 1996. [36] STANER, T. and PENTLAND, A., Real-Time American Sign Language recognition from video using hidden Markov models, International Symposium on Computer Vision, Coral Gables, USA, 1995. PUC-Rio - Certificação Digital Nº 0310888/CB [37] STENGER, B., MENDOÇA, P. and CIPOLLA, R., Model-based 3D Tracking of an articulated hand. In IEEE Conference on Computer Vision and Pattern Recognition, 2001. [38] TRUCCO, E. and VERRI, A., Introductory Techniques for 3-D Computer Vision, 1998 by Pretince Hall, Inc. [39] UKITA, N. and KIDODE, M., Wearable Virtual Tablet: Fingertip Drawing on a Portable Plane-Object using an Active-Infrared Camera. International Conference on Intelligent User Interfaces, 2004. [40] VAN, V. and VERWER, H., A Contour Processing Method for fast Binary Neighborhood, Signal Processing 1991. [41] VIVECK, A. and MEGGIOLARO, M., Sign language recognition using competitive learning in the HAVNET neural network. MIT, 2000. [42] VOLGER, C. and METAXAS, D., Towards scalability in ASL recognition: Breaking down sings into phonemes. In Gesture Workshop, 1999. [43] WEISSTEIN, E., Least Squares Fitting. From MathWorld - A Wolfam Web Resource. http://mathworld.wolfram.com/LeastSquaresFitting.html [44] WILSON, A. and BOBICK, A., Parametric hidden markov models for gesture recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1999. [45] WOO, W., KIM, N. and IWADATE, Y., Object Segmentation for Z-keying Using Stereo Images, In Proc. IEEE WCC-ICSP’2000, August. 2000. Bibliografia 100 [46] WU, Q. and JENG, B., Background subtraction based on logarithmic intensities, IEEE Pattern Recognition Letters, 2002. PUC-Rio - Certificação Digital Nº 0310888/CB [47] WU, Y., LIN, J. and HUANG, T., Capturing natural hand articulation. In IEEE International Conference on Computer Vision, 2001.