Michel Alain Quintana Truyenque Uma Aplicação de Visão

Transcrição

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

Documentos relacionados