michel alain quintana truyenque uma aplicação de visão...
TRANSCRIPT
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
Dissertação apresentada como requisito parcial para obtenção do título de Mestre pelo Programa de Pós-Graduaçã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
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ós-Graduaçã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
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 Petrobras.
Ficha Catalográfica
Quintana Truyenque, Michel Alain
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, Departamento de Informática, 2005.
Informação técnica.
1. Dissertação (mestrado) - Pontifícia Universidade Católica do Rio de Janeiro, Departamento de Informática.
Incluí referências bibliográficas.
1. Informática - Teses. 2. Visão Computacional. 3. Interação Humano-Computador (HCI). 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. III. Departamento de Informática. IV. Título.
Com amor, a minha Família.
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 deste
trabalho.
Aos meus professores do departamento, pelos ensinamentos e o aprendizado
aqui desenvolvido.
A Maria Clara pela luz no final do túnel, pelo companheirismo, compreensão e
amor recebido.
A karla, amiga constante, mesmo de longe pelo carinho e apoio.
Aos meus colegas da pós-graduação, principalmente aos meus colegas do
mestrado 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,
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 desenvolvemos alguns protótipos de
dispositivos de interação. 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 (HCI); 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 a study on the feasibility of using Web cameras as
interaction devices based on hand-gestures. In our study, we consider that the
human 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, 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 16
1.1. Motivação 16
1.2. Objetivos 17
1.3. Estrutura do Documento 18
2 Interfaces Baseadas em Visão 20
2.1. Conceitos Básicos 20
2.2. Requisitos Funcionais 22
2.3. Requisitos Não-Funcionais 23
2.4. Visão Computacional na Interação Humano-Computador em Tempo Real 24
2.4.1. Vantagens dos Sistemas Baseados em Visão 24
2.4.2. Desafios 25
2.5. Trabalhos Relacionados 26
2.5.1. Sistemas Baseados no Reconhecimento de Gestos 26
2.5.2. Sistemas Baseados na Detecção dos Dedos 29
2.6. Sistema de Interação Proposto 31
3 Subtração de Fundo 33
3.1. Motivação 33
3.2. Trabalhos Relacionados e Discussão dos Algoritmos de Segmentação de
Fundo 34
3.3. Algoritmos de Subtração de Fundo 37
3.3.1. Modelo de Cor 37
3.3.2. Subtração de Fundo 39
3.3.2.1. Modelagem do Fundo 40
3.3.2.2. Subtração ou Segmentação 42
3.3.2.3. Seleção dos Limiares 47
3.4. Resultados 50
3.5. Conclusões Parciais 53
4 Detecção de Silhueta 55
4.1. Motivação 55
4.2. Refinamento da Segmentação 56
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. Adaptado de Bérard [1]. 21
Figura 2. Resultados do trabalho de Regh e 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. 27
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. 28
Figura 4 – (a) Extração do contorno da mão com o modelo de curva rígida.
Adaptado de Heap [12]. (b) Posturas da mão para controlar funções básicas
de um jogo de computador. Adaptado de Segen [33]. (c) Funções de
Gauss (blobs) para detectar a mão e os dedos. Adaptado de Laptev [22]. 29
Figura 5 – Sistema “FingerMouse”. Adaptado de Queck [29]. 30
Figura 6 – (a) Interação com o computador — posicionar a ponta do dedo num
mesmo lugar por um determinado tempo ocasiona um clique. Adaptado de
Handenberg [11]. (b) Detecção dos dedos no trabalho de Oka [27]. 31
Figura 7 – Detecção do contorno da mão apresentado no trabalho de
MacKormick [26]. A ponta do dedo detectada e utilizada para desenhar. 31
Figura 8 - Resultado dos algoritmos que parcialmente lidam com sombras ;
dificuldade na atribuição do limiar e impossibilidade de isolar as sombras;
morfologia deformada do objeto. 36
Figura 9 - Modelo de cor no espaço tridimensional RGB proposto em [14]. iE
representa o valor de cor esperado do ponto i na imagem de referência, iI
representa a cor na imagem atual. A diferencia entre iI e iE é decomposta
em distorção de brilho ( iα ) e distorção de cor ( iCD ). Adaptada de [14]. 38
Figura 10 - Algoritmo de subtração de fundo baseado na decomposição da
diferencia de cor, em distorção de brilho e distorção de cor. Seguindo a
ordem das operações nos 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 - Algoritmo de geração de silhuetas ou de subtração de fundo,
baseado no ângulo entre dois vetores. 47
Figura 12 - (a) histograma da distorção normalizada de brilho ( ˆ iα )”, e (b)
histograma da distorção normalizada de cor ( ˆ iCD ). Adaptado de [14]. 49
Figura 13 - Resultado da segmentação do algoritmo baseado na medida do
ângulo [3]. O limiar no ângulo foi 17.49θ = o ,mostram-se 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. Frame Rate 30 fps. 51
Figura 14 - 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 ( ' 0.75CD = ), distorção mínima do brilho ( ' 0.01α = ). Nos limiares de
comparação para a etapa de subtração; limiar 14.1CDτ = para a distorção
de cor, limiar 80.5loτ = − para a distorção do brilho. Frame rate 43.fps. 52
Figura 15 - Teste do algoritmo em [14] aplicando uma janela de 4 pixels. Não
muda muito à morfologia do objeto, mas existe um ganho grande na
velocidade, frame rate na casa dos 60 fps. 53
Figura 16 - Máscaras utilizadas nos filtros morfológicos de Dilatação e Erosão;
vizinhança 4 )( 4N e vizinhança 8 )( 8N . 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 17 - 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. 58
Figura 18 - Obtenção de contornos a partir da subtração das imagens (b) e (c) da
Figura 17. O objeto “mão” é representado apenas pelo seu contorno, o
mesmo acontece com o ruídos e erros da segmentação. 59
Figura 19 - 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. 60
Figura 20 - 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 21 - 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. 62
Figura 22 - 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 23 - Resultados do processo de detecção da silhueta da mão aplicados à
imagem da Figura 18 em (a), e às imagens da Figura 19 em (b). Em (a) e
(b) são removidos os ruídos e em (b) não é considerada a silhueta interna.
65
Figura 24 - Subamostragem dos pontos na silhueta detectada. A imagem à
direita tem um quinto dos pontos da imagem à esquerda. 66
Figura 25 - 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 26 - Medida de k-curvatura em cada ponto da silhueta. (a) Para cada
ponto iP é escolhido um ponto subseqüente )( kiP + e outro anterior )( kiP −
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 27 - 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)
Mostra duas posturas da mão com os dedos estendidos Os valores
utilizados para o teste foram 21=k e °= 60αT . (b) Mesmo com pequenas
mudanças de escala, aproximando-se a mão da câmera, e mantendo os
mesmos parâmetros que em (a) pode-se ver a detecção das feições. 72
Figura 28 - Resultado do processo de detecção dos dedos da mão. Os pontos
estão ressaltados na silhueta. 73
Figura 29 - 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 iP 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.
74
Figura 30 - 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 31 - 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 q2, q3 e q4 representam os gestos
INDICE_1, INDICE_2 e ESTENDIDO, respectivamente. 77 Figura 32 - 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 33 - 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 34 - 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 35 - 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 36 - 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
evento ARRASTAR o simplesmente faz parte da seqüência do CLICK. 85
Figura 37 - 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 38 - Gesto INDICE_2 sendo utilizado para movimentar o ponteiro do
mouse. Utilizando o gesto INDICE_2 podem-se selecionar itens do menu. 86
Figura 39 - Gesto INDICE_1 sendo mapeado para o evento ARRASTAR, o qual
é utilizado para desenhar letras no PAINT. 86
Figura 40 - 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 41 - (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 42 - (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 para gerar o evento
SOLTAR_EXPLOSIVO. 89
Figura 43 - 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 44 - 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 45 - 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. 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
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
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 (HCI)
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 17
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
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 baseada 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 como 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
tecnologias de Visão Computacional combinado com a utilização de dispositivos
de baixo custo como simples câmeras Web, é possível construir uma Interface
Humano-Computador sem considerar grandes restrições de ambiente,
Introdução 18
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 a Interface
Humano-Computador sem restrições significativas, desenvolvemos 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 (interface) 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 capitulo 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 19
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 da 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
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
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 de 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. Só o retardo não caracteriza os sistemas
Interfaces Baseadas em Visão 21
em tempo real. Perfeitamente sincronizado, portanto, significa uma sincronização
sem retardo perceptível pelo usuário.
O que tem mudando 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 de 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
natureza dessas interfaces.
Figura 1 - Interfaces tradicionais e interfaces digitais. Adaptado de Bérard [1].
Nas interfaces tradicionais de interação, 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).
Interfaces Baseadas em Visão 22
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
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: 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,
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 índice. 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
Interfaces Baseadas em Visão 23
deste trabalho o rastreamento se refere à captura das posições de interesse nos
dedos.
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
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
Interfaces Baseadas em Visão 24
causas de instabilidade são principalmente as flutuações nas fontes de
iluminação e o ruído inerente aos dispositivos de captura.
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.
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ão-
intrusividade. 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
Interfaces Baseadas em Visão 25
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).
Esses marcadores poderiam simplificar vários problemas dos algoritmos de
Visão, mas destroem a principal vantagem da Visão Computacional que é a não-
intrusividade.
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
relativamente bem sucedidos.
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.
Interfaces Baseadas em Visão 26
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.
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
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.
Alguns trabalhos que aplicam esta técnica são os de Kuck e Huang [18], Lee e
Kunii [24], Regh e Kanade [30], Stenger [37] e Wu [46].
Interfaces Baseadas em Visão 27
Figura 2. Resultados do trabalho de Regh e 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.
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,
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 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.
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 no contorno e na silhueta. Tais sistemas
utilizam diversos algoritmos de Visão para conseguir extrair a silhueta da mão.
Nos trabalhos de Heap [12] e Hall [10], a silhueta da mão é modelada como
sendo uma curva rígida 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 e Kim [23], Schlenzing [32], Vogler e Metaxas [42] e
Wilson e 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 29
Figura 4 – (a) Extração do contorno da mão com o modelo de curva rígida. Adaptado de
Heap [12]. (b) Posturas da mão para controlar funções básicas de um jogo de
computador. Adaptado de Segen [33]. (c) Funções de Gauss (blobs) para detectar a
mão e os dedos. Adaptado 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 clique é feito com 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 iluminação. Por isso, os sistemas que
Interfaces Baseadas em Visão 30
utilizam unicamente informações da cor da mão não têm bom desempenho e
são muito limitados.
Figura 5 – Sistema “FingerMouse”. Adaptado 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
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
índice 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 31
Figura 6 – (a) Interação com o computador — posicionar a ponta do dedo num mesmo
lugar por um determinado tempo ocasiona um clique. Adaptado de Handenberg [11]. (b)
Detecção dos dedos no trabalho 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
(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]
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 e utilizada para desenhar.
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
complexos em ambientes de trabalho convencionais. Este sistema se apresenta
Interfaces Baseadas em Visão 32
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
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
No presente capítulo apresenta-se o estudo feito sobre diferentes
algoritmos para a detecção de objetos em movimento em uma cena com fundo
estático. Tipicamente, estas cenas estão sob a influencia de mudanças na
iluminação e presença de sombras. O objetivo principal neste capítulo é detectar
e segmentar uma mão em movimento a partir de uma seqüência de imagens em
cor, capturadas por uma câmera. Para isso, foram estudados diversos algoritmos
de subtração de fundo, com a finalidade de achar abordagens capazes de lidar
com problemas de mudanças na iluminação e presença de sombras. Na seção
seguinte apresenta-se, a motivação para o estudo destes algoritmos e a
aplicação específica para a qual foram utilizados no contexto da pesquisa desta
dissertação. Em seguida uma discussão dos algoritmos estudados, trabalhos
relacionados e qual abordagem de segmentação de fundo foi finalmente
utilizada. Posteriormente uma apresentação dos algoritmos escolhidos e
algumas discussões das suas etapas. Em seguida, os resultados obtidos e
finalmente algumas conclusões parciais.
3.1. Motivação
A capacidade de extrair objetos em movimento a partir de seqüências de
vídeo é um problema crucial e fundamental de muitos sistemas de visão
computacional. Essa capacidade permite focar a atenção dos sistemas, nos
objetos que estão em movimento e que, possivelmente são peça crucial na
execução da tarefa para a qual foram programados. Tipicamente, uma
abordagem usual para a segmentação de objetos em movimento do fundo da
cena é uma técnica chamada como subtração de fundo. A idéia de subtração de
fundo é subtrair a imagem atual de uma imagem de referencia, a qual é
adquirida e modelada a partir de um fundo estático durante um período de
tempo; chamado também como período de treinamento.
Como às vezes não existe um conhecimento antecipado do fundo, a chave
para qualquer algoritmo de subtração é como modelá-lo e representá-lo. Uma
Subtração de Fundo 34
abordagem simples e às vezes muito razoável é: calcular uma imagem de
referencia do fundo como sendo a media de um conjunto de imagens.
Posteriormente, quando um objeto entra na cena, este causa uma divergência
com a imagem de referencia. Assim o objeto pode ser facilmente detectado,
como sendo mudanças significativas ao nível de pixel.
Embora este planejamento seja teoricamente aceitável, existe um conjunto
de problemas que fazem desta, uma tarefa difícil de se fazer. Qualquer mudança
física da iluminação muda à modelagem do fundo, afetando indefinidamente o
desempenho dos algoritmos. Por tanto, muitos dos algoritmos são susceptíveis
às mudanças globais e locais da iluminação, tais como as sombras e flutuações
nas fontes de iluminação.
No contexto da pesquisa desta dissertação, o algoritmo de segmentação
de fundo foi utilizado para segmentar o objeto “MÃO” do fundo onde ela está se
movimentando. Este passo é muito importante, porque permite isolar a mão; que
é o foco e objeto principal de análise nas etapas posteriores.
3.2. Trabalhos Relacionados e Discussão dos Algoritmos de Segmentação de Fundo
Desde que a utilidade da 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 diferencia estatística e ou probabilística de cor entre a
imagem atual e a imagem de referencia, a qual é treinada durante um período de
tempo ou um número determinado de imagens [14] [15] [6] [13] [2] [3]; análise de
movimento dos objetos [17]; as características das imagens em estéreo [45];
transformações logarítmicas [46]; aprendizado por markov e bayesiansas [20] e
abordagens híbridas [17] [46] [5].
Embora, muitos dos algoritmos tenham desempenhos razoáveis,
mudanças na iluminação e presença de sombras afetam consideravelmente
seus desempenhos; sendo poucos os que razoavelmente conseguem lidar com
estes problemas. Até aqui, é importante considerar o fator de robustez e
eficiência na detecção do objeto em movimento, como sendo uma característica
que permita um grau de detecção alto e uma segmentação que represente
realmente a morfologia do objeto. No contexto desta pesquisa o objeto foi a
“MÃO”, e as medições foram feitas baseados na qualidade de detecção e
segmentação da morfologia da mão.
Subtração de Fundo 35
O maior problema para os algoritmos de subtração de fundo é lidar com a
presença de sombras e mudanças da iluminação na cena. Já que o movimento
dos objetos gera também sombras em movimento, às vezes estas sombras são
detectadas como sendo parte do objeto afetando assim, a eficiência do
algoritmo. Algoritmos susceptíveis a sombras [46] [2] são aqueles que têm seu
desempenho altamente prejudicado pela presença de sombras; as sombras
foram detectadas como sendo parte do objeto e não se teve uma alternativa para
poder lidar com elas; irremediavelmente as sombras são detectadas como sendo
o objeto e a morfologia deste é totalmente deformada na segmentação. Uma
alternativa para estes algoritmos é testar eles em planos de imagens que não
contenham as sombras do objeto, assim sem as sombras o seu desempenho
melhora; como no nosso trabalho não são descartadas as sombras, estes
algoritmos foram descartados.
Algoritmos que parcialmente lidam com sombras [6] [46], são aqueles que
também foram susceptíveis as sombras, mas tornaram se instáveis ante a
presença delas. Muitos pontos da sombra do objeto foram considerados como
sendo o objeto; ajustando o mecanismo do limiar destes algoritmos (valores de
threshold) pode se melhorar esta situação, no entanto torna-se muito difícil e não
existe um padrão de atribuição de valores do limiar, que não faça difícil a tarefa
de excluir os pontos da sombra na segmentação (Figura 8). Existem situações
para as quais é possível isolar as sombras, só que as pequenas mudanças na
iluminação e os valores do limiar que não são susceptíveis a estas mudanças
fazem que não se tenha um desempenho aceitável nestes algoritmos. Uma
alternativa para estes algoritmos, além da não presença de sombras, é testar
eles em fundos de cor com alto contraste e ou menos sensíveis a mudanças na
iluminação (Superfícies que absorvem iluminação). Estas características
certamente limitam o acionar destes algoritmos, deformando significativamente a
morfologia da mão durante a segmentação.
Subtração de Fundo 36
Figura 8 - Resultado dos algoritmos que parcialmente lidam com sombras; dificuldade na
atribuição do limiar e impossibilidade de isolar as sombras; morfologia deformada do
objeto.
A presença de sombras e mudanças nas condições de iluminação
sugerem abordagens diferentes na modelagem dos algoritmos anteriores. É
importante poder ter uma diferenciação clara do que realmente é sombra e o que
é uma parte da cena com baixa iluminação devido à oclusão do objeto. Para
poder detectar as sombras é importante saber que durante o movimento do
objeto na cena, existem alguns pixels aonde a iluminação diminui devido à
sombra; eles não mudam sua cor, mas sim experimentam uma baixa iluminação;
por tanto é 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,
em resumo modelos mais sensíveis à mudanças da iluminação do que à
mudanças na cor do fragmento na imagem. Dentro do estudo houve dois
algoritmos que conseguiram modelar esta característica; o algoritmo
apresentado em [14] [15] modela esta característica considerando e calculando
a distorção do brilho e a distorção de cor de cada ponto no espaço RGB; o
algoritmo de segmentação de fundo apresentado em [3] modela também esta
características medindo o ângulo formado entre dois vetores que representam
pontos no espaço RGB.
Cada um destes algoritmos teve um desempenho aceitável para os
requerimentos do presente estudo, se bem não se teve uma segmentação
perfeita do objeto, eles tiveram, dentro do intervalo de erro, um desempenho
aceitável. Na seção seguinte serão apresentados estes algoritmos com maiores
detalhes e também algumas justificativas indicando qual deles foi finalmente
escolhido.
Subtração de Fundo 37
3.3. Algoritmos de Subtração de Fundo
Uma das habilidades fundamentais no sistema de visão humano é a
constância de cor. Humanos tendem a atribuir uma cor constante para um
objeto, embora existam mudanças na iluminação ao longo do tempo ou espaço.
Apontando esta característica, os algoritmos apresentados em [14],[15] e [3]
tentam reproduzir esta habilidade na modelagem e subtração do fundo na cena.
Ambos algoritmos tem a mesma filosofia; trabalham no espaço RGB; tem um
período de treino para a modelagem do fundo estático, trabalham com a imagem
media e têm um período de subtração para a detecção do objeto. Embora
tenham similaridades existem também diferencias na modelagem do fundo e na
etapa de subtração.
Antes de apresentar cada uma das etapas dos algoritmos é importante
mostrar o modelo computacional de cor que utilizam, os quais são importantes
nas etapas de modelagem e de subtração. Ambos algoritmos trabalham com
valores de cor, no espaço tridimensional RGB.
3.3.1. Modelo de Cor
No algoritmo apresentado em [14], a idéia para desenhar o modelo é
calcular a diferencia entre as cores medindo a distorção do brilho (brightness) e
a distorção de cor (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 [ ])(),(),( iEiEiEE BGRi = como sendo o
vetor que representa a cor esperada do ponto (imagem de referencia). A linha
iOE que passa na origem e a traves do ponto iE é chamada de linha de cor
(expected chromaticity line). [ ])(),(),( iIiIiII BGRi = é a cor RGB do ponto na
imagem atual, a qual se quer subtrair do fundo. Neste modelo basicamente se
quer medir a distorção existente entre iI e iE . Isto é possível medindo a
distorção de brilho e de cor, no valor RGB do pixel.
Subtração de Fundo 38
Figura 9 - Modelo de cor no espaço tridimensional RGB proposto em [14]. iE representa
o valor de cor esperado do ponto i na imagem de referência, iI representa a cor na
imagem atual. A diferencia entre iI e iE é decomposta em distorção de brilho ( iα ) e
distorção de cor ( iCD ). Adaptada de [14].
A distorção de brilho ( iα ) é o valor escalar que desloca a cor esperada iE
a traves da linha de cor; o mais próximo possível do valor atual iI . Isto é obtido
minimizando:
2( ) ( )i i i iI Eφ α α= −
iα representa a distorção de brilho de iI com relação ao valor esperado iE ; se
iα é menor do que 1 este é mais escuro, se iα é maior do que 1 este é mais
claro. A distorção de cor iCD é definida como sendo a distancia ortogonal entre,
o valor atual iI e a linha de cor no modelo; este é dado por:
i i i iCD I Eα= −
Para entender melhor este modelo, são importantes algumas
considerações. A distorção de brilho é um valor escalar que posiciona o valor de
cor esperada iE ao longo da linha de cor; uma característica importante desta
linha é que mantém um certo padrão de cores ao longo dela, mudando apenas a
intensidade luminosa. Assim sabe-se se um certo ponto na imagem tem um valor
de cor bem parecido do que outro, mas com brilho diferente. Isto ajuda muito em
identificar aqueles pontos que ficam com baixa iluminação quando são
obstruídos pelo objeto em movimento. A distorção de brilho significa apenas uma
Subtração de Fundo 39
mudança na iluminação, e não uma mudança significativa na cor do pixel. Esta
diferenciação permite identificar pontos da imagem que representam sombras,
pois elas têm um brilho bem menor do que a original no modelo de referencia,
mas ainda mantém uma cor parecida à original. A distorção de cor indica o grau
de afastamento que temos desses padrões de cor que representa a linha, assim
a traves deste indicador podemos saber se a cor atual está muito longe ou não
do padrão de cores representado pela linha, o qual é útil para poder saber se
aquele pixel faz parte de um objeto diferente que está presente na imagem atual.
No algoritmo de subtração de fundo apresentado em [3], não existe um
modelo especifico de decomposição de cor. 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. Por tanto, os valores de cor não são
decompostos nem transformados neste algoritmo. O fato 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. Estas linhas de cor representam cada uma um
padrão de cores; por tanto, ao medir o ângulo comparam-se conjuntos de cores,
ao contrario de comparar só duas cores.
3.3.2. Subtração de Fundo
Antes de discutir os algoritmos de detecção de objetos em movimento, é
importante fazer algumas considerações para entender algumas características
físicas que influenciam os equipamentos que são comumente utilizados no
processo de captura de imagens, câmeras de vídeo para ser mais específicos.
Os sensores utilizados nas câmeras, tipicamente transformam cores de um
espaço de dimensão infinita para cores num espaço tridimensional RGB a traves
de filtros de cor nas bandas vermelha, verde e azul. Este fato traz algumas
características nas imagens capturadas que são importantes considerar, e que
também são considerados nas etapas de modelagem de fundo nos algoritmos
estudados. Além da perda de precisão na digitalização das cores, existe uma
continua variação de cor ao longo do tempo; raramente é possível obter o
mesmo valor RGB de cor num ponto especifico da imagem durante um período
de tempo, isto devido ao ruído inerente aos equipamentos e as flutuações de
iluminação presentes nas fontes de luz. Existe uma variação desigual nos filtros
Subtração de Fundo 40
de cor nas bandas vermelha, verde e azul, o que indica que existe uma
sensibilidade diferente a traves destas bandas.
O esquema básico de subtração de fundo nestes algoritmos é subtrair a
imagem atual da imagem de referência, a qual modela o fundo. Para conseguir
isto, os algoritmos começam com uma etapa de modelagem onde se constrói a
imagem de referencia; depois, há uma etapa estatística para determinar um
limiar apropriado nas variáveis de comparação; finalmente a etapa de subtração
e classificação dos pixels da imagem, onde cada ponto é segmentado em grupos
diferentes. A segunda etapa não está explicitamente indicada no algoritmo [3];
por tanto, a seleção do limiar é feita unicamente por um processo de tentativa e
erro (testando diferentes valores).
3.3.2.1. Modelagem do Fundo
No processo de treinamento do algoritmo apresentado em [14], a imagem
de referencia e alguns atributos relacionados com ela são calculados ao longo
de um período de tempo ou um número definido de imagens de treino. Cada
pixel é modelado como sendo um vetor de 4 posições , , ,i i i iE s a b< > ; onde
iE é o valor esperado de cor, is é o desvio padrão, ia é a distorção de brilho e
ib é a distorção de cor. iE neste algoritmo é considerado como sendo a
imagem media das imagens de treino e is como sendo o desvio padrão
presente neste conjunto de imagens.
[ ])(),(),( iiiE BGRi µµµ=
[ ])(),(),( iiiS BGRi σσσ=
para o cálculo de ia e ib são consideradas as seguintes equações [14]:
Subtração de Fundo 41
2 2 2
2 2 2
2 2
( ) ( ) ( ) ( ) ( ) ( )min
( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )( ) ( ) ( )
( ) ( ) ( )( ) ( ) ( )
R G B
R G B
R G B
R i G i B ii
R G B
R G B
R G B
R G B
I i i I i i I i ii i i
I i i I i i I i ii i i
i i ii i i
α µ α µ α µα
σ σ σ
µ µ µσ σ σ
µ µ µσ σ σ
− − −= + +
+ +
=
+ +
2
(1)
2 2 2( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( )R i R G i G B i B
iR G B
I i i I i i I i iCD
i i iα µ α µ α µ
σ σ σ
− − − = + +
(2)
O processo de treino e o cálculo das imagens de referencia do fundo, no
algoritmo em [14], é mostrado numa parte da Figura 10. Em resumo, o processo
começa com a captura de um número de imagens de treino, a partir destas
imagens calcula-se uma imagem media e outra representando o desvio padrão
(Passo 1). Para cada uma das imagens de referencia calcula-se imagens da
distorção de brilho e da distorção de cor respeito à imagem media (Passo 2, 3);
para obter estas imagens utiliza-se às equações (1) e (2) respectivamente. Para
o cálculo destas imagens são utilizadas; a imagem original, a imagem media, 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.
21
0
( )( )
N
i
ii iRMS
N
αα α
−
== =∑
(3)
2
0
( )( )
N
i
ii i
CDb RMS CD
N== =∑
(4)
No final do processo de treino no algoritmo [14] são obtidas 4 imagens de
referencia; a imagem media, imagem desvio padrão, imagem da distorção de
brilho e a imagem da distorção de cor. Nestas imagens estão modeladas as
Subtração de Fundo 42
características do fundo e são estas imagens as utilizadas como referencia no
processo de subtração.
Observando para 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 deste
valor em [14], por tanto, 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.
No processo de treinamento do algoritmo apresentado em [3] não existe
um modelo detalhado de modelagem do fundo. A única imagem de referencia
utilizada por este algoritmo é a imagem media, esta é calculada a partir de um
determinado conjunto de imagens de treino; por tanto, só é preciso o cálculo da
imagem media no espaço de cor RGB.
3.3.2.2. Subtração ou Segmentação
Nesta parte do modelo é calculada a diferencia existente entre a imagem
de referencia e a imagem atual. No algoritmo apresentado em [14] essa
diferencia é 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
num pixel, pode-se obter uma máscara indicando qual é o tipo do pixel que está
sendo comparado. Tomando em conta o modelo de decomposição de cor que é
utilizado; cada pixel pode ser classificado em cada uma de 4 categorias na fase
de subtração:
• Fundo original (B), se a distorção de brilho e a distorção de cor são
similares com seus pares na imagem de referencia.
• 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 referencia.
Subtração de Fundo 43
• Fundo como alta iluminação (H), si existe uma distorção de cor similar,
mas uma distorção de brilho maior do que aquela na imagem de
referencia.
• Objeto em Movimento (F), o pixel é considerado como sendo parte do
objeto em movimento, se a distorção de cor é diferente aos valores
esperados no treinamento.
Na figura 10 mostra-se a etapa de subtração deste algoritmo. A imagem
que contém o objeto é comparada com a imagem media e o desvio padrão para
obter imagens que representam a distorção de brilho e a distorção de cor (Passo
6), aplica-se para isto as equações (1) e (2) respectivamente. As imagens são
comparadas com as imagens de referencia aplicando valores apropriados do
limiar (Thresholds) de comparação (Passo 7). No caso do algoritmo
implementado neste trabalho foram considerados apenas dos grupos; fundo e
objeto em movimento; assim pontos pertencentes a sombras ou pontos com
maior iluminação foram consideradas como sendo parte do fundo. A comparação
das imagens atuais com as imagens de referencia são feitas basicamente, nas
diferencias existentes entre os valores das distorções de brilho e das distorções
de cor.
Subtração de Fundo 44
Figura 10 - Algoritmo de subtração de fundo baseado na decomposição da diferencia de
cor, em distorção de brilho e distorção de cor. Seguindo a ordem das operações nos
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 se tinha mencionado antes, 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 iCD , é dizer 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 iCD . Seja
Subtração de Fundo 45
1ˆ
ˆ
ii
i
ii
i
a
CDCD
b
αα −=
=
a distorção de brilho normalizada e a distorção de cor normalizada
respectivamente.
Baseados nestas definições, segundo o algoritmo em [14] podemos
classificar o pixel numa de quatro categorias B,S,H,F diferentes, através da
seguinte regra de decisão:
1 2
ˆ: , ˆ ˆ: ,
( )ˆ: 0,
:
i CD
i i
i
F CD elseB and else
M iS elseH otherwise
α α
τα τ α τ
α
>
>
< = <
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 referencia do
modelo e a imagem atual que está sendo observada.
No entanto, observando bem o modelo de cor utilizado neste algoritmo; na
imagem atual, poderia ser o caso de pixels do objeto em movimento que tenham
valores RGB próximos da origem; objetos pretos ou partes pretas dos objetos.
Estes pixels escuros, sempre serão classificados como sendo sombras e por
tanto como sendo parte do fundo. Isto porque os valores de cor destes pixels
estão perto da origem no espaço RGB, e 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
uma solução é introduzir um novo limiar 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. Então a regra de decisão ficaria como:
Subtração de Fundo 46
1 2
ˆ ˆ: ˆ ˆ: ,
( )ˆ: 0,
:
i CD i lo
i i
i
F CD or elseB and else
M iS elseH otherwise
α
α α
τ α τα τ α τ
α
>
> <
< = <
Na etapa de subtração do algoritmo apresentado em [3], a diferencia entre
as imagens é calculada a traves do ângulo formado entre cada uma das cores
na imagem de referencia e a imagem atual. O processo principal na subtração
de fundo utilizado neste algoritmo é o calculo do ângulo, mediante o qual os
pontos da imagem são classificados. Na figura 11 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 a traves de testes
rápidos de variação de cor (distancia 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, então considera o ponto
como sendo parte do objeto (Passo 1). Se não existe uma mudança considerável
na cor, pode ser que os valores de cor nos pontos não tenham sofrido grandes
mudanças, assim se o 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; uma vez mais tendo o critério do limiar para o ângulo entre os vetores,
pode-se classificar os pontos dentro das duas classes; se CTθ < é fundo se
não, é 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 (este teste, sem necessidade de medir o ângulo). 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; o limiar é a
medida de semelhança.
Subtração de Fundo 47
Figura 11 - Algoritmo de geração de silhuetas ou de subtração de fundo, baseado no
ângulo entre dois vetores.
3.3.2.3. Seleção dos Limiares
Na seleção dos limiares calculam-se valores do limiar para conseguir
melhores resultados no processo de subtração; tradicionalmente este
procedimento é feito em base a um aprendizado estatístico, com imagens que
ainda pertencem à etapa de modelagem do fundo.
No algoritmo apresentado em [3] não existe um procedimento específico
para atribuir valores no limiar do ângulo. Pelo fato de ser um único limiar não é
muito complicado conseguir um valor, já que se pode utilizar um ajuste do limiar
(seleção de valores) até chegar a resultados razoáveis.
No algoritmo apresentado em [14], existe a necessidade de achar valores
para o limiar, tanto para a distorção de brilho quanto para a distorção de cor.
Pelo fato de serem dois limiares os que devem ser achados, um procedimento
de ajuste do limiar poderia resultar num trabalho difícil de se fazer, pois existe
um conjunto grande de combinações destes valores que podem ser atribuídos.
Num processo de seleção de limiar tenta-se diminuir este conjunto de
combinações de valores ao mínimo possível ou até, diretamente achar os
1. Calcular a diferencia de cor
( , ) ( , ) ( , )r bd i j c i j c i j= −
if ( , ) Ud i j T>
então o ( , )thi j é um ponto do objeto senão vai para o passo 2.
2. if ( , ) Ld i j T<
então o ( , )thi j não é um ponto do objeto senão vai para o passo 3.
3. Calcula o ângulo entre os dois vetores
1 ( , ). ( , )cos [ ]
( , ) ( , )r b
r b
c i j c i jc i j c i j
θ −=
if CTθ < então o ( , )thi j não é um ponto do objeto
senão o ( , )thi j é um ponto do objeto.
Subtração de Fundo 48
valores que devem ser atribuídos nestes limiares. A grande vantagem do
processo de seleção é restringir o espaço de busca dos limiares para valores
próximos dos limiares que finalmente serão utilizados. Manter o foco da atenção
em valores que realmente ocasionam um melhor processo de subtração faz
parte da finalidade do processo de seleção do limiar, já que muitas vezes
acontece de estar testando valores sem saber se realmente estes valores em
conjunto são discriminantes o suficiente para que possam ser utilizados.
No processo de seleção do limiar no algoritmo apresentado em [14], os
limiares para a distorção do brilho e para a distorção de cor são calculados a
traves de um processo de aprendizado estatístico. Este aprendizado consiste em
montar um histograma da distorção normalizada do brilho e 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 respeito da
imagem media. Tendo estes valores, se pode 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 12 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 podemos ver um determinado
intervalo onde flutuam os valores das distorções, assim se existir valores fora
deste intervalo se pode 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, valores dos limiares são automaticamente selecionados de acordo
com a taxa de detecção r (valor em porcentagem) que se quer obter; 100%
corresponde a todas as amostras no intervalo. O limiar para a distorção de cor,
CDτ , é o valor da distorção normalizada de cor na taxa de detecção r desejada
(Ex. 4.06 corresponde a 99.95% ). Na distorção do brilho existem dois valores (
1ατ e 2ατ ) por tanto deve se definir um intervalo no histograma. 1ατ é o valor na
taxa r desejada e 2ατ é o valor na taxa (100% - r).
Subtração de Fundo 49
Figura 12 - (a) histograma da distorção normalizada de brilho ( ˆ iα )”, e (b) histograma da
distorção normalizada de cor ( ˆ iCD ). Adaptado de [14].
Neste processo de seleção de limiares existem algumas considerações
importantes que devem ser feitas. Como se tinha falado antes, os valores da
distorção do brilho e a distorção de cor são normalizados pelo valor do desvio
padrão; isto traz alguns problemas na hora de calcular as distorções, que
poderiam 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 incluem
estas características, por tanto, tendo em consideração este critério, os valores
do limiar dependem da natureza dos equipamentos. Por isto sempre nas
implementações realizadas deste algoritmo, os valores do limiar dependem dos
equipamentos utilizados e até das condições particulares donde foram testados.
Sugere-se deste modo construir os histogramas para o cálculo dos limiares e
descartar os valores de limiar 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,
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 cor,
como foi feito no desvio padrão mínimo dos pixels. Todos estes problemas
devem ser tomados em conta, tanto na hora de construir e calcular os
histogramas das distorções quanto na hora do cálculo das distorções
Subtração de Fundo 50
normalizadas na etapa de subtração. Se estes problemas não forem
considerados é difícil de se conseguir curvas parecidas às da Figura 12. A
construção de curvas relativamente parecidas às da Figura 12, sem variações
bruscas e tendências suaves, sugere um indicador muito útil para a avaliação
dos valores mínimos atribuídos às distorções e o desvio padrão.
3.4. Resultados
Nesta secção mostram-se os resultados obtidos na implementação dos
algoritmos apresentados em [14] e [3]. Os testes foram realizados em
seqüências de imagens (320x240) capturadas por uma câmera (WebCam
Logitech QuickCamPro 4000) conectada via interface USB num computador
com processador Pentium III de 1000Mhz e com 256 MB de memória RAM. De
fato os modelos que lidam com as sombras e latências na iluminação permitem
resultados melhores aos mostrados na Figura 8; isto porque são mais sensíveis
a mudanças do brilho do que as mudanças na cor, conseguindo assim um
resultado muito aproximado da morfologia do objeto “MÃO”.
Nas imagens que se mostram a continuação, não foram feitos nenhum tipo
de pós-processamento para melhorar a qualidade da segmentação; elas
representam unicamente o resultado obtido na etapa de subtração de fundo dos
algoritmos testados. Pós-processamentos são temas de etapas posteriores
diferentes aos temas tratados neste capitulo.
Na Figura 13 mostram-se os resultados obtidos pelo algoritmo baseado na
medida do ângulo entre as cores [3], a imagem com só o fundo não é mostrada,
mas fica claro na figura qual é a imagem do fundo. O objeto é segmentado com
as suas cores originas dando uma impressão diferente à 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.
Particularmente para este algoritmo, o limiar atribuído no ângulo foi 17.49θ = o ;
as sombras não são totalmente excluídas do objeto e deformam a morfologia
dele, o qual não é desejável. Dependo do limiar atribuído no ângulo, às sombras
somem, mas partes que realmente pertencem ao objeto também somem; por
Subtração de Fundo 51
isto é difícil determinar um limiar que depois de um determinado valor não
comece a deformar o objeto.
Figura 13 - Resultado da segmentação do algoritmo baseado na medida do ângulo [3]. O
limiar no ângulo foi 17.49θ = o ,mostram-se 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. Frame Rate 30 fps.
Na figura 14 mostram-se 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 unicamente
está focado 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 do brilho. Nos parâmetros de desvio
padrão mínimo ( 'σ ), distorção mínima de cor ( 'CD ) e distorção mínima do
brilho ( 'α ) foram atribuídos os valores ' 1.0σ = , ' 0.75CD = e ' 0.01α =
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; lembremos que estes valores diminuem alguns problemas
durante as etapas de modelagem de fundo e segmentação, assim como também
na montagem dos histogramas para a seleção dos limiares. Os únicos limiares
necessários para segmentar o objeto são CDτ para a distorção de cor e LOτ para
a distorção do brilho. Os valores atribuídos para estes limiares foram 14.1CDτ =
Subtração de Fundo 52
e 80.5LOτ = − . Claramente se pode observar que este algoritmo possui uma
segmentação melhor do que o algoritmo da Figura 13, o fato de ter dois
parâmetros na comparação ajuda muito na eficiência deste algoritmo.
Figura 14 - 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
( ' 0.75CD = ), distorção mínima do brilho ( ' 0.01α = ). Nos limiares de comparação
para a etapa de subtração; limiar 14.1CDτ = para a distorção de cor, limiar 80.5loτ = −
para a distorção do brilho. Frame rate 43.fps.
Levando em conta o fator de processamento em tempo real, na Figura 15
mostra-se a segmentação binária feita pelo algoritmo de [14] com os mesmos
parâmetros mostrados na Figura 14, só que neste teste foi considerada uma
janela de 4 pixels. Nessa janela existe um ponto representativo que é testado; se
este ponto passa pelo teste para ser parte do objeto, os outros pontos na janela
também são considerados como sendo parte do objeto; se não os 4 pontos são
considerados como sendo o fundo. Este teste simples não piora de maneira
significativa a segmentação do objeto, mas tem um ganho muito grande no
frame rate alcançando, valores na casa dos 60 fps.
Subtração de Fundo 53
Figura 15 - Teste do algoritmo em [14] aplicando uma janela de 4 pixels. Não muda muito
à morfologia do objeto, mas existe um ganho grande na velocidade, frame rate na casa
dos 60 fps.
3.5. Conclusões Parciais
O processo de segmentação de objetos em movimento a traves de
algoritmos subtração de fundo é um problema difícil de se fazer, existem muitos
parâmetros que afetam sua eficiência e robustez. Conseguir um ótimo
balanceamento destes parâmetros é um problema difícil e só é possível
conseguir uma aproximação dos resultados ótimos de segmentação. Entenda se
por parâmetros, valores e limiares que devem ser considerados pelo algoritmo;
a combinação e o espaço de valores destes sugere dificuldade de achar ótimos
balanceamentos entre eles.
Inclusive, sob condições do ambiente e condições de atuação controladas,
não é possível conseguir uma segmentação muito próxima da perfeita, até
porque não existem métodos perfeitos e nem as condições do ambiente também
são perfeitas para favorecer o desempenho dos algoritmos. Por tanto, só é
possível obter aproximações boas ou ruis.
O grande problema para todos os algoritmos de subtração de fundo é a
dependência destes aos fatores da iluminação; formação de sombras e
flutuações das fontes de luz são grandes problemas com as quais nem todos os
algoritmos estudados puderam lidar satisfatoriamente.
Existem muitas considerações (idéias) que podem ser tomadas dentro da
formulação dos algoritmos de subtração de fundo, um grande problema é o
processamento em tempo real que limita às vezes a inclusão de modelos mais
sofisticados e robustos a cambio de velocidade no processamento. Tomando em
Subtração de Fundo 54
conta os algoritmos estudados é possível concluir que o problema de subtração
de fundo é um problema que pode ter uma formulação para máquinas paralelas,
explorando e facilitando assim, a inclusão de novos modelos mais sofisticados e
robustos para lidar com os problemas típicos da subtração.
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
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
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
Detecção de Silhueta 56
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
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
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
Detecção de Silhueta 57
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 )( 4N e de
vizinhança 8 )( 8N , que estão ilustradas na Figura 16.
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 16, 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
objetos.
Figura 16 - Máscaras utilizadas nos filtros morfológicos de Dilatação e Erosão;
vizinhança 4 )( 4N e vizinhança 8 )( 8N . 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 )( 8N . 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
Detecção de Silhueta 58
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. Os
resultados obtidos da aplicação desta seqüência de filtros morfológicos nas
imagens de entrada são do tipo ilustrado na Figura 17.
Figura 17 - 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.
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.
Detecção de Silhueta 59
Existem diversas abordagens para a obtenção de contornos em imagens
binárias, como, por exemplo, as ilustradas por Trucco e 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
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 tende a manter os contornos com a
propriedade da conexidade. Os resultados da aplicação deste processo com as
imagens (b) e (c) da Figura 17 são mostrados na Figura 18.
Figura 18 - Obtenção de contornos a partir da subtração das imagens (b) e (c) da Figura
17. O objeto “mão” é representado apenas pelo seu contorno, o mesmo acontece com o
ruídos e erros da segmentação.
A Figura 18 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 19.
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.
Detecção de Silhueta 60
Figura 19 - 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.
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,
na ordem anti-horária, podem ser vistas na Figura 20.
Figura 20 - 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 )( 8C 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 )( 8C mostrada na Figura 20.
A idéia para percorrer os contornos é mostrada na Figura 21, 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
Detecção de Silhueta 62
com um “X” já fazem parte da silhueta, e os pontos onde as setas começam são
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
critérios de parada: no caso de contornos fechados o algoritmo para 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 21 - 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 21, 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 22 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. Freqüentemente 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 um caminho diferente).
Figura 22 - 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
externa? Ou considerar todas as silhuetas que o objeto apresenta? A alternativa
Detecção de Silhueta 64
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 23 ilustra os resultados da aplicação de detecção de silhueta nas
imagens das Figuras 18 e 19 utilizando o critério de só considerarmos a maior
Lista de Códigos.
Detecção de Silhueta 65
Figura 23 - Resultados do processo de detecção da silhueta da mão aplicados à imagem
da Figura 18 em (a), e às imagens da Figura 19 em (b). Em (a) e (b) são removidos os
ruídos e em (b) não é considerada a silhueta interna.
As imagens da Figura 23 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 24 mostra a detecção de uma silhueta com
uma subamostragem contendo um quinto dos pontos originalmente detectados.
Detecção de Silhueta 66
Figura 24 - 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
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
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
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 25): as pontas dos dedos, chamadas
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 25 - 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.
Em nosso caso as curvas possuem muito ruído, como ilustra a Figura 25. O
ruído faz com que as medidas de curvatura, baseadas em derivadas locais, não
Reconhecimento 70
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 e 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
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 )( PiP i −+ e )( PiP i −− , ilustrados na Figura
26.(a).
Diferentemente dos algoritmos descritos por Liu e 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 26.(a)) formados por um único ponto
subseqüente )( kiP + e outro anterior )( kiP − ao ponto Pi na silhueta, sendo k um
inteiro positivo. Observando a Figura 26.(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 26 - Medida de k-curvatura em cada ponto da silhueta. (a) Para cada ponto iP é
escolhido um ponto subseqüente )( kiP + e outro anterior )( kiP − 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.
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 26.(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 26.(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 iP é processado são construídos dois vetores iki PP −+ )( e iki PP −− )( , e o
ânguloi
α 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 27, 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
21=k e °= 60αT . 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 27.(b)
mostra a detecção das feições com ligeiras mudanças de escala na silhueta da
mão.
Figura 27 - 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) Mostra duas posturas da mão
com os dedos estendidos Os valores utilizados para o teste foram 21=k e °= 60αT .
(b) Mesmo com pequenas mudanças de escala, aproximando-se a mão da câmera, e
mantendo os mesmos parâmetros que em (a) 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 27 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 27(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
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 28 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 28 - 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 29(a)). Cada
Reconhecimento 74
ponto iP que representa um dedo teve como referência dois pontos, um anterior
)( kiP − e outro posterior )( kiP + , 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
iP .
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 ][ )( iki PP − e o trajeto
][ )( kii PP + da silhueta são divididos por n pontos igualmente espaçados. Depois,
partindo do ponto iP , são formados n pares de pontos juntando pontos a cada
lado do ponto iP (Figura 29(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
29(b) é mostrado um exemplo com 4 pares de pontos; os pontos de referência
são marcados com uma “x”. Na segunda etapa, tendo esses pontos de
referencia “x” e o ponto iP , é 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
iP .
Figura 29 - 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 iP 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 30. Esses gestos
por sua vez estão divididos em três classes: FECHADO, INDICE e ESTENDIDO.
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.
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
informação gestual e não possui parâmetros dos dedos e valores que possam
ser aproveitados.
Reconhecimento 76
Figura 30 - 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.
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 31). Nesse autômato existe um único
símbolo no vocabulário, d, que significa “dedo”. Há 4 estados diferentes, sendo
três deles, q2, q3 e q4, 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 q2, q3 e q4 correspondem aos gestos INDICE_1, INDICE_2 e
ESTENDIDO, respectivamente.
Reconhecimento 77
Figura 31 - 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 q2, q3
e q4 representam os gestos INDICE_1, INDICE_2 e ESTENDIDO, respectivamente.
Ao contrário dos gestos FECHADO e ESTENDIDO, nos gestos INDICE é
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 anti-
horária, convém mencionarmos o conceito de Distância na Silhueta ),( ji PPDNS
como sendo o número de pontos da silhueta entre o ponto iP e o ponto jP .
Utilizando uma heurística simples podemos dizer que se 2/),( NPPDNS ji <
então iP é o dedo índice e está à direita de jP ; se não, jP é o dedo índice e
está à direita de iP . 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
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
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 consideras, 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 homem-
má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
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
índice, 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 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 32 - 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.
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 33 - 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.
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 34 - 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
seqüência do evento CLICK.
Figura 35 - 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.
Gesto Total de
Tentativas
Total de
Acertos
Total de
Erros
Porcentagem
de Acerto
Porcentagem
de Erro
CLICK 300 295 5 98.4 % 1.6 %
CLICK_D 200 185 15 92.5 % 7.5 % 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 36 - 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 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 37 - 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 38 - Gesto INDICE_2 sendo utilizado para movimentar o ponteiro do mouse.
Utilizando o gesto INDICE_2 podem-se selecionar itens do menu.
Figura 39 - 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.
Para as direções próximas ao eixo vertical (ex. p2) não existe movimento.
Figura 40 - 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
reconhecidos.
Figura 41 - (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 42 - (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
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
no autômato é o estado q0.
Figura 43 - 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 44 - 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.
Figura 45 - 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.
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
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
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.
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
convencionais utilizando como dispositivos de captura e interação câmeras de
prateleira facilmente accessíveis 2. 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
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
computador.
Bibliografia
[1] BÉRARD, F., Computer Vision for the Strongly Coupled Human-Computer 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.
[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.
[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.
[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.
Bibliografia 98
[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.
[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.
[33] SEGEN, J., GestureVR: Vision-Based 3D Hand interface for Spatial Interaction, ACM Multimedia Conference, Bristol, 1998.
Bibliografia 99
[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.
[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.
[46] WU, Q. and JENG, B., Background subtraction based on logarithmic intensities, IEEE Pattern Recognition Letters, 2002.
Bibliografia 100
[47] WU, Y., LIN, J. and HUANG, T., Capturing natural hand articulation. In IEEE International Conference on Computer Vision, 2001.