Uma Aplicação de Visão Computacional que Utiliza Gestos da Mão para Interagir com o Computador

Tamanho: px
Começar a partir da página:

Download "Uma Aplicação de Visão Computacional que Utiliza Gestos da Mão para Interagir com o Computador"

Transcrição

1 Michel Alain Quintana Truyenque Uma Aplicação de Visão Computacional que Utiliza Gestos da Mão para Interagir com o Computador Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título de Mestre pelo Programa de Pós- Graduação em Informática da PUC-Rio. Orientador: Prof. Marcelo Gattass Rio de Janeiro, março de 2005.

2 Michel Alain Quintana Truyenque Uma Aplicação de Visão Computacional que Utiliza Gestos da Mão para Interagir com o Computador Dissertação apresentada como requisito parcial para obtenção do título de Mestre pelo Programa de Pós- Graduação em Informática da PUC-Rio. Aprovada pela Comissão Examinadora abaixo assinada. Prof. Marcelo Gattass Orientador Departamento de Informática -- PUC-Rio Prof. Paulo Cezar Pinto Carvalho Instituto de Matemática Pura e Aplicada -- IMPA Prof. Raul Queiroz Feitosa Departamento de Engenharia Elétrica -- PUC-Rio Prof. Anselmo Antunes Montenegro Instituto de Matemática Pura e Aplicada -- IMPA Prof. Waldemar Celes Filho Departamento de Informática -- PUC-Rio Prof. José Eugênio Leal Coordenador(a) Setorial do Centro Técnico Científico - PUC-Rio Rio de Janeiro, 28 de março de 2005

3 Todos os direitos reservados. É proibida a reprodução total ou parcial do trabalho sem autorização da universidade, do autor e do orientador. Michel Alain Quintana Truyenque Graduo-se bacharel em Engenharia de Sistemas na UNSA (Universidad Nacional de San Agustín) em Ingressou no programa de mestrado do Departamento de Informática em 2003 e desde então participa em projetos de pesquisa no Tecgraf/PUC-Rio (Laboratório de Computação Gráfica) nas áreas de Visão Computacional e Visualização Científica. Atualmente participa do desenvolvimento de um sistema de visualização 3D de dados sísmicos realizado em parceria com a gerência de Tecnologia em Geofísica da Petrobras. Quintana Truyenque, Michel Alain Ficha Catalográfica Uma Aplicação de Visão Computacional que Utiliza Gestos da Mão para Interagir como o Computador / Michel Alain Quintana Truyenque; orientador: Marcelo Gattass -- Rio de Janeiro: PUC, Departamento de Informática, Informação técnica. 1. Dissertação (mestrado) - Pontifícia Universidade Católica do Rio de Janeiro, Departamento de Informática. Incluí referências bibliográficas. 1. Informática - Teses. 2. Visão Computacional. 3. Interação Humano-Computador (HCI). 4. Gestos da Mão. 5. Reconhecimento de gestos. 6. Interação Baseada em Visão. I. Gattass Marcelo. II. Pontifícia Universidade Católica do Rio de Janeiro. III. Departamento de Informática. IV. Título.

4 Com amor, a minha Família.

5 Agradecimentos Em primeiro lugar a Deus pelo caminho que me foi reservado até aqui. A minha família, com todo amor, aos meus pais Yanina e Santos pelos ensinamentos, apoio constante e amor de sempre. As minhas irmãs Shirley e Karla pelo carinho, apoio constante e alegria de sempre. A meu orientador Professor Marcelo Gattass pela confiança em mim depositada, pelos ensinamentos e a oportunidade de trabalhar a seu lado. Um agradecimento especial pelo apoio e compreensão nos momentos difíceis durante o curso do mestrado. Ao Anselmo pelos conselhos e ajuda constante durante o desenvolvimento deste trabalho. Aos meus professores do departamento, pelos ensinamentos e o aprendizado aqui desenvolvido. A Maria Clara pela luz no final do túnel, pelo companheirismo, compreensão e amor recebido. A karla, amiga constante, mesmo de longe pelo carinho e apoio. Aos meus colegas da pós-graduação, principalmente aos meus colegas do mestrado pelo companheirismo, os momentos de diversão e por ter me recebido sempre de braços abertos. Aos funcionários do departamento, pelo carinho e atenção. Aos colegas do Tecgraf pelo ótimo ambiente de trabalho, aos membros do grupo de visualização de dados sísmicos pela experiência aprendida e pela oportunidade de trabalharmos juntos. A PUC-Rio, Tecgraf e a Capes pelo apoio financeiro sem o qual este trabalho não poderia ter sido desenvolvido.

6 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, p. Dissertação de Mestrado - Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. A Visão Computacional pode ser utilizada para capturar gestos e criar dispositivos de interação com computadores mais intuitivos e rápidos. Os dispositivos comerciais atuais de interação baseados em gestos utilizam equipamentos caros (dispositivos de seguimento, luvas, câmeras especiais, etc.) e ambientes especiais que dificultam a difusão para o público em geral. Este trabalho apresenta um estudo sobre a viabilidade de utilizarmos câmeras Web como dispositivo de interação baseado em gestos da Mão. Em nosso estudo consideramos que a mão humana está limpa, isto é, sem nenhum dispositivo (mecânico, magnético ou óptico) colocado nela. Consideramos ainda que o ambiente onde ocorre a interação tem as características de um ambiente de trabalho normal, ou seja, sem luzes ou panos de fundo especiais. Para avaliar a viabilidade desenvolvemos alguns protótipos de dispositivos de interação. Neles os gestos da mão e as posições dos dedos são utilizados para simular algumas funções presentes em mouses e teclados, tais como selecionar estados e objetos e definir direções e posições. Com base nestes protótipos apresentamos algumas conclusões e sugestões para trabalhos futuros. Palavras-chave Visão Computacional; Interação Humano-Computador (HCI); Gestos da Mão; Reconhecimento de gestos; Interação Baseada em Visão.

7 Abstract Quintana Truyenque, Michel Alain. A Computer Vision Application for Hand-Gestures Human Computer Interaction. Rio de Janeiro, p. Dissertação de Mestrado - Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. Computer Vision can be used to capture gestures and create more intuitive and faster devices to interact with computers. Current commercial gesture-based interaction devices make use of expensive equipment (tracking devices, gloves, special cameras, etc.) and special environments that make the dissemination of such devices to the general public difficult. This work presents a study on the feasibility of using Web cameras as interaction devices based on hand-gestures. In our study, we consider that the human hand is clean, that is, it has no (mechanical, magnetic or optical) device. We also consider that the environment where the interaction takes place has the characteristics of a normal working place, that is, without special lights or backgrounds. In order to evaluate the feasibility, we have developed some prototypes of interaction devices. In these prototypes, hand gestures and the position of fingers were used to simulate some mouse and keyboard functions, such as selecting states and objects, and defining directions and positions. Based on these prototypes, we present some conclusions and suggestions for future works. Keywords Computer Vision; Human-Computer Interaction (HCI); Hand Gestures; Gestures Recognition; Vision Based Interaction.

8 Sumário 1 Introdução Motivação Objetivos Estrutura do Documento 18 2 Interfaces Baseadas em Visão Conceitos Básicos Requisitos Funcionais Requisitos Não-Funcionais Visão Computacional na Interação Humano-Computador em Tempo Real Vantagens dos Sistemas Baseados em Visão Desafios Trabalhos Relacionados Sistemas Baseados no Reconhecimento de Gestos Sistemas Baseados na Detecção dos Dedos Sistema de Interação Proposto 31 3 Subtração de Fundo Motivação Trabalhos Relacionados e Discussão dos Algoritmos de Segmentação de Fundo Algoritmos de Subtração de Fundo Modelo de Cor Subtração de Fundo Modelagem do Fundo Subtração ou Segmentação Seleção dos Limiares Resultados Conclusões Parciais 53 4 Detecção de Silhueta 55

9 4.1. Motivação Refinamento da Segmentação Detecção de Bordas Detecção de Contornos Seleção da Silhueta da Mão Considerações Finais do Capítulo 66 5 Reconhecimento Motivação Detecção de Feições Detecção dos Dedos Reconhecimento de Gestos Resultados Parciais Considerações Finais do Capítulo 79 6 Aplicações Detalhes da Implementação Controlando o Cursor do Mouse Controlando um Jogo de Computador Interação Gestual Conclusões Parciais 91 7 Conclusões Trabalhos Futuros 94 Bibliografia 96

10 Lista de figuras Figura 1 - Interfaces tradicionais e interfaces digitais. Adaptado de Bérard [1]. 21 Figura 2. Resultados do trabalho de Regh e Kanade [30]. O esqueleto é sobreposto na imagem original da mão. No lado direito, o modelo 3D é calculado a partir dos parâmetros encontrados no esqueleto. 27 Figura 3 Métodos simples para interagir através da Visão apresentados no trabalho de Freemam [8]. (a) Orientação da mão para dirigir um robô. (b) Subtração de imagens para inferir direção do movimento. (c) Histogramas de orientação. 28 Figura 4 (a) Extração do contorno da mão com o modelo de curva rígida. Adaptado de Heap [12]. (b) Posturas da mão para controlar funções básicas de um jogo de computador. Adaptado de Segen [33]. (c) Funções de Gauss (blobs) para detectar a mão e os dedos. Adaptado de Laptev [22]. 29 Figura 5 Sistema FingerMouse. Adaptado de Queck [29]. 30 Figura 6 (a) Interação com o computador posicionar a ponta do dedo num mesmo lugar por um determinado tempo ocasiona um clique. Adaptado de Handenberg [11]. (b) Detecção dos dedos no trabalho de Oka [27]. 31 Figura 7 Detecção do contorno da mão apresentado no trabalho de MacKormick [26]. A ponta do dedo detectada e utilizada para desenhar. 31 Figura 8 - Resultado dos algoritmos que parcialmente lidam com sombras; dificuldade na atribuição do limiar e impossibilidade de isolar as sombras; morfologia deformada do objeto. 36 Figura 9 - Modelo de cor no espaço tridimensional RGB proposto em [14]. representa o valor de cor esperado do ponto i na imagem de referência, I i representa a cor na imagem atual. A diferencia entre I i e E i E i é decomposta em distorção de brilho ( α ) e distorção de cor ( CD i). Adaptada de [14]. 38 i Figura 10 - Algoritmo de subtração de fundo baseado na decomposição da diferencia de cor, em distorção de brilho e distorção de cor. Seguindo a ordem das operações nos números, mostram-se as etapas de modelagem e subtração de fundo. A etapa de Modelagem é feita uma vez, enquanto que a etapa de subtração é feita a cada imagem (frame). 44 Figura 11 - Algoritmo de geração de silhuetas ou de subtração de fundo,

11 baseado no ângulo entre dois vetores. 47 Figura 12 - (a) histograma da distorção normalizada de brilho ( α ˆ i ), e (b) histograma da distorção normalizada de cor ( CD ). Adaptado de [14]. 49 Figura 13 - Resultado da segmentação do algoritmo baseado na medida do ângulo [3]. O limiar no ângulo foi θ = o,mostram-se a segmentação com as cores originais do objeto e a segmentação binária onde é mais fácil perceber a morfologia do objeto segmentado. Frame Rate 30 fps. 51 Figura 14 - Resultados do algoritmo baseado na medida da distorção de brilho e a distorção de cor [14]. Desvio padrão mínimo ( σ ' = 1.0 ), distorção mínima de cor ( CD ' = 0.75), distorção mínima do brilho ( α ' = 0.01). Nos limiares de comparação para a etapa de subtração; limiar τ CD = 14.1 para a distorção de cor, limiar τ lo = 80.5 para a distorção do brilho. Frame rate 43.fps. 52 Figura 15 - Teste do algoritmo em [14] aplicando uma janela de 4 pixels. Não muda muito à morfologia do objeto, mas existe um ganho grande na velocidade, frame rate na casa dos 60 fps. 53 Figura 16 - Máscaras utilizadas nos filtros morfológicos de Dilatação e Erosão; vizinhança 4 ( 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 17 - Resultados obtidos da aplicação dos filtros morfológicos. Na seqüência (a) imagem resultado da segmentação; (b) resultado da aplicação da Dilatação em (a); e (c) resultado da aplicação da Erosão em (b). Considera-se (c) como resultado final desta etapa. 58 Figura 18 - Obtenção de contornos a partir da subtração das imagens (b) e (c) da Figura 17. O objeto mão é representado apenas pelo seu contorno, o mesmo acontece com o ruídos e erros da segmentação. 59 Figura 19 - Alguns resultados da detecção de contornos realizada em diferentes orientações da mão, (a) presença de ruídos, (b) presença de contornos internos ou buracos. 60 Figura 20 - Lista de Códigos (Chain Codes). Para cada ponto de referência (em azul) existem 4 ou 8 direções possíveis que se podem seguir na representação do contorno. 61 Figura 21 - Passos do algoritmo de percurso de contornos. A cada passo, novos pontos da silhueta são detectados e alguns pontos N são descartados. As setas curvas indicam o sentido de busca, as setas que apontam para os ˆ i

12 pontos marcados com X indicam a direção inicial de busca, as setas que apontam para os pontos marcados com P indicam o próximo ponto. 62 Figura 22 - Pequenos ciclos dentro dos contornos. Estes ciclos representam problemas para o algoritmo de percurso, pois como é indicado em (b) a detecção da silhueta pode acabar muito antes de percorrer o contorno inteiro, o que traz problemas na detecção. 63 Figura 23 - Resultados do processo de detecção da silhueta da mão aplicados à imagem da Figura 18 em (a), e às imagens da Figura 19 em (b). Em (a) e (b) são removidos os ruídos e em (b) não é considerada a silhueta interna. Figura 24 - Subamostragem dos pontos na silhueta detectada. A imagem à direita tem um quinto dos pontos da imagem à esquerda. 66 Figura 25 - Feições consideradas para o reconhecimento dos gestos. As pontas dos dedos são chamadas de Picos ( P ) e as junções entre eles de Vales ( V ). 69 Figura 26 - Medida de k-curvatura em cada ponto da silhueta. (a) Para cada ponto P é escolhido um ponto subseqüente P ( i + k) e outro anterior P( i k) i que formam dois vetores. A k-curvatura é o ângulo 65 α formado por esses i dois vetores e k é um inteiro positivo. (b) O parâmetro k deve ser ajustado de maneira que as regiões de interesse sejam preferentemente detectadas durante o cálculo da k-curvatura. 71 Figura 27 - Resultado da aplicação do algoritmo de detecção de feições à silhueta da mão. As feições são os pontos ressaltados na silhueta. (a) Mostra duas posturas da mão com os dedos estendidos Os valores utilizados para o teste foram k = 21 e T = 60. (b) Mesmo com pequenas mudanças de escala, aproximando-se a mão da câmera, e mantendo os mesmos parâmetros que em (a) pode-se ver a detecção das feições. 72 Figura 28 - Resultado do processo de detecção dos dedos da mão. Os pontos estão ressaltados na silhueta. 73 Figura 29 - Cálculo da direção dos dedos. (a) A direção aproximada de cada um dos dedos é mostrada como sendo uma linha. (b) A linha que representa a direção do dedo é a que passa pelo ponto P i 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. α

13 74 Figura 30 - Conjunto predefinido de gestos que são reconhecidos. Os 4 gestos são divididos em três classes: FECHADO, INDICE e ESTENDIDO. FECHADO é uma classe de gesto que não apresenta nenhum dedo estendido. INDICE representa uma classe com dois tipos de gestos: INDICE_1 (dedo índice estendido) e INDICE_2 (dedo índice e polegar estendidos). ESTENDIDO é uma classe de gesto que apresenta mais de dois dedos na mão estendidos. 76 Figura 31 - Autômato Finito Determinista que representa o processo de inferência dos gestos com base no número de dedos d detectados na silhueta da mão. O único símbolo do vocabulário é d, que significa dedo. Os estados de reconhecimento q2, q3 e q4 representam os gestos INDICE_1, INDICE_2 e ESTENDIDO, respectivamente. 77 Figura 32 - Mecanismo de movimento no cursor. Para cada ponto p1, p2 e p3, a direção do movimento é dada pelas coordenadas (x,y) do vetor e a velocidade do movimento é dada pela norma do vetor. Em torno do ponto de referência O existe uma área de inatividade na qual os pontos que caem nessa área (p2) não ocasionam nenhum movimento. 82 Figura 33 - Mecanismo de movimento do cursor. O vetor formado entre a posição do dedo índice e o ponto de referência indica a direção do movimento. A cada quadro este vetor é somado à última posição do cursor. 83 Figura 34 - Padrão de mudança do evento CLICK. Na nossa aplicação, o intervalo de tempo foi definido em número de quadros, T=20. Entre os gestos INDICE_2 pode haver vários gestos INDICE_1. A partir do gesto corrente (atual) é analisada a seqüência em busca do padrão de mudança requerido. 83 Figura 35 - Evento ARRASTAR. O evento acontece enquanto o gesto INDICE_1 é mantido. Para validar o evento, o intervalo de tempo em que o gesto INDICE_1 é mantido deve ser maior do que o t predefinido. Na nossa aplicação o tempo foi t =T-5. O tempo t está relacionado com o tempo T. 84 Figura 36 - Diagrama de fluxo do controle do cursor do mouse. Os eventos são validados dependo do gesto que está sendo processado. O evento CLICK é validado para diferenciar o CLICK do evento MOVIMENTAR. O evento ARRASTAR é validado para diferenciar se o gesto INDICE_1 indica o evento ARRASTAR o simplesmente faz parte da seqüência do CLICK. 85

14 Figura 37 - Gesto ESTENDIDO sendo mapeado para o evento CLICK_DIREITO do mouse no sistema Windows. Ao gerar o evento no arquivo selecionado, é mostrado o menu disponível no arquivo. 85 Figura 38 - Gesto INDICE_2 sendo utilizado para movimentar o ponteiro do mouse. Utilizando o gesto INDICE_2 podem-se selecionar itens do menu. 86 Figura 39 - Gesto INDICE_1 sendo mapeado para o evento ARRASTAR, o qual é utilizado para desenhar letras no PAINT. 86 Figura 40 - Mecanismo utilizado para calcular a direção do movimento. (a) Mecanismo utilizado para calcular as direções PARA_FRENTE e PARA_TRAS. (b) Mecanismo utilizado para calcular as direções DIREITA e ESQUERDA. O valor utilizado na nossa implementação foi α = Figura 41 - (a) Geração do evento ATIRAR utilizando o gesto INDICE_1. A posição e a direção do dedo índice não indicam movimento. (b) Movimentação do helicóptero utilizando o gesto INDICE_2. A posição e a direção de dedo indicam os eventos PARA_FRENTE e PARA_DIREITA. Neste caso não é gerado o evento ATIRAR. 88 Figura 42 - (a) Utilizando o gesto INDICE_1 para gerar o evento ATIRAR e ao mesmo tempo movimentar o helicóptero. A posição e a direção do dedo indicam a direção do movimento PARA_TRAS e PARA_ESQUERDA. (b) Gesto ESTENDIDO sendo utilizado para gerar o evento SOLTAR_EXPLOSIVO. 89 Figura 43 - Estados da aplicação representados como sendo um autômato finito de quatro estados. Os estados q2 e q3 geram os eventos AVANÇAR e RECUAR, respectivamente. 90 Figura 44 - Geração do evento AVANÇAR. A mudança do gesto (a) FECHADO para o gesto (b) ESTENDIDO gera o evento AVANÇAR, que é refletido na (c) tela do monitor. 91 Figura 45 - Geração do evento RECUAR. A mudança do gesto (a) FECHADO para o gesto (b) INIDICE_2 gera o evento RECUAR, que é refletido na (c) tela do monitor. 91

15 Lista de tabelas Tabela 1 - Resultado dos testes feitos para a avaliação do reconhecimento do número de dedos presente na mão. Para cada número de dedos é apresentada uma estatística indicando o número e a porcentagem de acertos e erros ao longo do teste. 78 Tabela 2 - Resultado dos testes feitos para a avaliação do reconhecimento dos gestos predefinidos. Para cada um dos 4 gestos é apresentada uma estatística indicando o número e a porcentagem de acertos e erros ao longo do teste. 79 Tabela 3 - Resultado do teste de reconhecimento dos eventos CLICK e CLICK_DUPLO. 84

16 1 Introdução Muitos usuários tentam imaginar por que os computadores ainda permanecem cegos apesar do grande avanço no poder de processamento. Mas como pode-se esperar inteligência de máquinas que não estão cientes do que acontece a seu arredor, se unicamente podem sentir sinais do teclado e movimentos do mouse? Recentemente, o preço das câmeras digitais de vídeo tem diminuído drasticamente. Por menos de 200 reais, cada computador pode ser equipado com um novo e útil sentido: a visão. Como a Visão Computacional pode ser utilizada para permitir uma interação mais veloz ou simplesmente mais intuitiva? Este trabalho tentará responder tais perguntas com um exemplo de dispositivo de interação baseado em gestos da mão Motivação Por muito tempo, a pesquisa em Interfaces Humano-Computador (HCI) tem sido restrita à utilização do monitor, do teclado e do mouse. Recentemente este paradigma tem mudado. Técnicas como Visão Computacional, Reconhecimento de Voz e Dispositivos de Rastreamento (Tracking) têm permitido uma interação mais intuitiva e natural entre homem e máquina. Mesmo com estas novas tecnologias, existe ainda um enorme abismo entre o mundo dos humanos e o mundo das máquinas. A maioria dos computadores existentes não está ciente de nós ou de nossos sentimentos a menos que os expressemos explicitamente. Os dispositivos de interação baseados em gestos são tradicionalmente construídos utilizando diferentes dispositivos de rastreamento (Tracking) óptico, magnético ou mecânico ligados ao computador e/ou colocados no corpo do usuário. Muitos desses sistemas utilizam equipamentos sofisticados (dispositivos de rastreamento, luvas, câmeras especiais, etc.) que os tornam difíceis de serem comercializados em massa devido ao alto custo. Além disso, muitas vezes, devido a sua operabilidade, requerem espaços e ambientes especiais.

17 Introdução 17 Alguns sistemas que não utilizam dispositivos de rastreamento, os baseados em Visão, utilizam técnicas de reconhecimento de padrões nas imagens capturadas. Para conseguir isto, os sistemas utilizam algumas restrições do ambiente, do fundo da cena, da cor dos objetos a serem reconhecidos, das condições de iluminação e das características das câmeras e constroem ambientes bem controlados, de maneira a facilitar as fases inicias do reconhecimento em benefício da operabilidade do sistema. Alguns desses sistemas são apresentados no Capítulo 2 da presente dissertação. Uma interação natural entre humanos e computadores não deveria nem requerer instalações especiais nem envolver qualquer dispositivo (mecânico, óptico ou magnético) que a pessoa devesse vestir ou manipular. Assim como temos a habilidade de estarmos cientes do ambiente à nossa volta através de nossos sentidos, a princípio o computador deveria ser capaz de imitar esta habilidade usando interfaces que emulem os sentidos, o que o tornaria mais fácil e mais intuitivo de usar. Conseqüentemente, novas linguagens e interfaces não convencionais precisam ser construídas e devem ser capazes de traduzir para o computador os gestos, sentimentos, expressões, linguagem e demais meios de comunicação utilizados na interação natural entre humanos Objetivos Este trabalho estará focado na interação humano-computador baseada em gestos de uma mão limpa. Limpa neste contexto significa que nenhum dispositivo (mecânico, magnético ou óptico) é colocado na mão para poder interagir como o computador. Além disso, o foco também estará centrado em diminuir ou eliminar as restrições especiais impostas para a interação. Ambientes especiais e com condições de iluminação controladas, cor de fundo preestabelecida e cores específicas dos objetos, a princípio, são descartados. Em termos de custo são levados em conta dispositivos (câmeras) de prateleira, facilmente accessíveis. Considerando as características que devem ser levadas em conta, o objetivo principal deste trabalho é mostrar que através do uso de diferentes tecnologias de Visão Computacional combinado com a utilização de dispositivos de baixo custo como simples câmeras Web, é possível construir uma Interface Humano-Computador sem considerar grandes restrições de ambiente,

18 Introdução 18 iluminação, cor dos objetos, etc. de forma que a interação com o computador seja feita da maneira mais natural possível. Para isto construímos uma interface baseada em gestos da mão na qual os gestos e as posições dos dedos são diretamente utilizados para interagir com as aplicações. O escopo desta pesquisa estará limitado ao reconhecimento de alguns gestos da mão (identificação de qual gesto dentre os gestos predefinidos está sendo mostrado pelo usuário) e à detecção e rastreamento dos dedos (localização da posição de certos dedos em imagens de vídeo). Às vezes são realizados alguns ajustes baseados nas características dos ambientes, mas tais ajustes são pequenos e feitos numa fase de instalação de forma a não comprometer a usabilidade do sistema. Para avaliar o desempenho do sistema de interação baseado em gestos da mão e por sua vez avaliar a Interface Humano-Computador sem restrições significativas, desenvolvemos algumas aplicações para demonstrar o sistema em funcionamento Estrutura do Documento O capítulo 2 está dividido em duas partes. Na primeira parte é feita uma revisão de alguns conceitos básicos, importantes para o melhor entendimento e contextualização do mecanismo de interação (interface) proposto. São definidos alguns requisitos funcionais e não-funcionais dos sistemas de interação em tempo real. Finalmente são expostas algumas vantagens dos sistemas de interação baseados em Visão que procuram justificar a sua utilização. Na segunda parte é apresentado um conjunto de trabalhos de pesquisa relacionados com o tema de estudo deste trabalho. No capítulo 3 é apresentada a técnica de Subtração de Fundo, utilizada para segmentar o objeto de interesse do fundo da cena. Nesse capitulo é feito um estudo e avaliação dos diferentes algoritmos propostos para este tema. O objetivo principal, além de facilitar a detecção do objeto, é diminuir ou eliminar as restrições do ambiente, de iluminação, de cor, etc. presentes em outros sistemas. Julgamos este capitulo importante, em linhas gerais, por ser a base sobre a qual foram implementadas as idéias desenvolvidas nos capítulos subseqüentes. No capítulo 4 é apresentado um mecanismo para a detecção da silhueta da mão. Nesse capítulo, em uma primeira etapa é feita uma melhoria da segmentação, e depois é apresentada uma abordagem para a obtenção das

19 Introdução 19 silhuetas. Os algoritmos implementados nesta etapa objetivam detectar, coletar e armazenar os pontos da imagem que conformam a silhueta da mão. No capítulo 5 é apresentado o processo de reconhecimento de gestos da mão. Além dos gestos, alguns parâmetros, tais como a posição e orientação dos dedos, também são calculados. O processo de reconhecimento é feito tendo como referência o número de dedos detectados na mão e um conjunto predefinido de gestos a serem reconhecidos. No capítulo 6 são apresentadas algumas aplicações da Interação Humano- Computador utilizando gestos da mão. Os gestos da mão e a posição dos dedos são diretamente utilizados para interagir com as aplicações. Finalmente no capítulo 7 temos as considerações finais sobre o trabalho de pesquisa desenvolvido e os trabalhos futuros que podem resultar a partir deste.

20 2 Interfaces Baseadas em Visão Neste capítulo, numa primeira parte, será feita a revisão de alguns conceitos básicos, importantes para explicar e contextualizar as interfaces baseadas em Visão. São discutidos alguns requisitos funcionais e não-funcionais dos sistemas de Visão em tempo real. Também é apresentada uma justificativa de por que consideramos a Visão Computacional importante na interação baseada em gestos. Na segunda parte deste capítulo são apresentados alguns trabalhos relacionados com o tema de pesquisa aqui exposto Conceitos Básicos Muitos dos sistemas de interação baseados em gestos tradicionalmente foram implementados utilizando diversos dispositivos de rastreamento (Tracking) ligados ao computador e ao corpo dos usuários. Os sistemas de interação baseados em Visão não utilizam dispositivos de rastreamento explícitos. Eles utilizam apenas câmeras para a captura das imagens, e técnicas de processamento de imagens e reconhecimento de padrões para o rastreamento dos objetos [11]. Não existem restrições para as características das câmeras. Conforme o fazem algumas aplicações [27], podem ser utilizadas câmeras infravermelhas, sensíveis à temperatura, baseadas em distância, etc. Desde que a câmera seja a única fonte de captura de informação, dizemos que o mecanismo de interação é baseado em Visão Computacional. No contexto da interação humano-computador o termo tempo real é freqüentemente substituído pelo termo fortemente acoplado [7]. Fitzmaurice [7] descreve essa expressão como: Os sistemas fortemente acoplados possuem uma perfeita sincronização entre suas representações física e virtual, os objetos físicos são detectados continuamente em tempo real. O termo perfeitamente sincronizado também requer de uma definição. Em aplicações reais sempre há uma latência (delay) entre a modificação do mundo físico e a adaptação da representação virtual no computador. Só o retardo não caracteriza os sistemas

21 Interfaces Baseadas em Visão 21 em tempo real. Perfeitamente sincronizado, portanto, significa uma sincronização sem retardo perceptível pelo usuário. O que tem mudando nestes últimos 20 anos na maneira como os usuários interagem com o computador? A resposta é simples: a interação tem mudado do teclado para o mouse, o teclado é utilizado em muitos casos unicamente para a digitação de texto. Hoje é difícil de pensar em um computador sem mouse, pois esse dispositivo permite uma interação mais intuitiva com objetos gráficos como botões, janelas, menus, barras de rolagem, etc., os quais antigamente precisavam do uso do teclado. Assim como o teclado foi substituído pelo mouse, recentemente e com ajuda da Visão Computacional têm aparecido novas interfaces com a finalidade de descartar os dispositivos físicos de interação. No trabalho de Bérard [1] é feita uma classificação que ajuda a entender melhor a natureza dessas interfaces. Figura 1 - Interfaces tradicionais e interfaces digitais. Adaptado de Bérard [1]. Nas interfaces tradicionais de interação, a presença de um dispositivo físico é importante para traduzir os comandos do usuário para o computador. Se o usuário manipula o dispositivo (por exemplo, muda sua posição) o computador recebe o sinal da mudança e manipula o objeto lógico ligado com esse dispositivo. Como acontece quando o mouse muda de posição, o computador mede essa mudança e modifica a posição do ponteiro. Joystick, Space Ball, Cyber Gloves, etc. são considerados no escopo desse tipo de interface, chamados também por Bérard [1] de Graspable Interfaces, ou interfaces que o usuário precisa agarrar para poder interagir. Nessas interfaces, dependendo do dispositivo, podem ser integradas diferentes funcionalidades além dos cliques do mouse (p. ex., posicionamento no espaço e rotações).

22 Interfaces Baseadas em Visão 22 Ao invés de usar os dispositivos físicos como intermediários, as interfaces digitais eliminam a presença desses dispositivos e permitem uma interação mais direta utilizando partes do corpo para manipular os objetos lógicos no computador. Por exemplo, os dedos da mão poderiam ser utilizados para movimentar o ponteiro do mouse. Uma das interfaces digitais mais conhecidas são as telas sensíveis ao tato Requisitos Funcionais Os requisitos funcionais podem ser definidos como sendo um conjunto de serviços que o sistema deve fornecer. Em sistemas de software existem diferentes níveis de abstração em que esses serviços podem ser desenvolvidos. Aqui, serão considerados apenas os mais básicos. Bérard [1] identifica três serviços que os sistemas de interação humano-computador baseados em Visão devem fornecer: detecção, identificação e rastreamento. A detecção determina a presença ou ausência de uma determinada classe de objetos na imagem. Tais classes de objetos poderiam ser partes do corpo, mãos, braços, etc. Tendo como referência a imagem inteira, o processo de detecção deve ser capaz de detectar na imagem a classe de objeto que se está procurando. Uma forma de facilitar o processo de detecção é limitar o número de objetos que podem estar presentes na cena em um determinado momento. As técnicas de detecção mais conhecidas são as baseadas em cor ou movimento. O processo de detecção deste trabalho será apresentado nos capítulos 3 e 4. A identificação determina qual objeto, dentre um conjunto conhecido de objetos, está presente na cena. Perante a presença de objetos compostos, por exemplo uma mão com os dedos, a identificação deve permitir determinar partes desses objetos, tais como os dedos. Outros exemplos são a identificação de símbolos escritos [35], de palavras na linguagem de signos [36] ou de palavras para o reconhecimento de voz. No nosso caso, o processo de detecção encontra os dedos presentes na mão. Para obter mais informações do gesto, o processo de identificação está orientado a identificar os dedos polegar e índice. Esse processo será apresentado no capítulo 5. Em muitos casos, os objetos de interesse não permanecem no mesmo lugar ao longo do tempo, o processo de rastreamento utiliza as informações dos dois processos anteriores para manter o foco nos objetos de interesse. No caso

23 Interfaces Baseadas em Visão 23 deste trabalho o rastreamento se refere à captura das posições de interesse nos dedos Requisitos Não-Funcionais Muitos dos sistemas de interação podem cumprir com todos os requisitos funcionais, mas demorar horas para fazer isto. Portanto, é indispensável definir alguns requisitos não-funcionais que estabeleçam a qualidade mínima com que os serviços devem ser implementados. Os requisitos não-funcionais considerados são latência, resolução e estabilidade. A latência é o tempo transcorrido entre a ação do usuário e a resposta do sistema. A latência é uma característica inerente a todo sistema, não existem sistemas sem latência. Frente a este problema, poderíamos perguntar: qual é a latência máxima que um sistema de tempo real pode ter? Essa pergunta é difícil de se responder já que é difícil determinar um valor aceitável, pois os valores dependem da tarefa que o sistema deve desempenhar. Seguindo a definição de interação em tempo real, tentamos conseguir uma interação sem uma latência perceptível para o usuário. Mas qual é o máximo valor de uma latência não perceptível? No trabalho de Handenberg [11] é discutido um experimento que visa encontrar um valor máximo para essa latência, o qual é determinado como sendo próximo a 50 ms ou 20Hz. Nos sistemas de interação em tempo real, a natureza contínua do mundo físico, onde são feitos os gestos, deve ser capturada e representada no mundo discreto ou mundo perceptível do sistema (Resolução Temporal). A ilusão desse mundo em movimento, como no cinema, pode ser criada capturando imagens a uma taxa maior que 20Hz, valor diretamente relacionado com a latência do sistema. A resolução espacial (número de pixels nas imagens) deve permitir uma representação adequada do ambiente capturado. Idealmente, esse número deveria ser igual ao número de pixels existente nos monitores, mas os sistemas de captura (câmeras) não possuem ainda essa resolução e estão limitados a resoluções menores. A estabilidade dos sistemas refere-se às flutuações significativas nos valores capturados (gestos ou posições dos dedos, neste caso). Por exemplo, um sistema pode ser considerado estável se ante um padrão (ex. ponta do dedo) imóvel os valores capturados não mudam significativamente. As possíveis

24 Interfaces Baseadas em Visão 24 causas de instabilidade são principalmente as flutuações nas fontes de iluminação e o ruído inerente aos dispositivos de captura 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 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

25 Interfaces Baseadas em Visão 25 e sem manipular dispositivos intermediários. Por esta razão, procuraremos desenvolver algoritmos de Visão Computacional que não requeiram equipamentos colados ao corpo (tais como marcadores ou luvas coloridas). Esses marcadores poderiam simplificar vários problemas dos algoritmos de Visão, mas destroem a principal vantagem da Visão Computacional que é a nã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 relativamente bem sucedidos 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.

26 Interfaces Baseadas em Visão 26 Nossas capacidades são o fruto da integração de nosso conhecimento do mundo (nossa experiência) ao longo de nossas vidas e é importante considerar isto nos algoritmos de Visão se quisermos resultados mais robustos. Por estas razões é difícil construir um sistema de Visão Computacional de propósito geral que seja capaz de trabalhar com toda classe de objetos e em todos os ambientes. É preciso restringir o campo de ação e construir sistemas mais específicos Trabalhos Relacionados Nos últimos anos, muitos trabalhos de pesquisa relacionados à interação humano-computador baseada em Visão têm sido desenvolvidos. No que diz respeito à interação utilizando a mão, muitos dos sistemas desenvolvidos têm se dedicado ao reconhecimento de gestos e posturas, o que significa que a interação com o computador é baseada no reconhecimento de diferentes posturas e gestos da mão. Uma interessante diversidade de abordagens tem sido apresentada, mas não existe uma que seja amplamente utilizada para o reconhecimento de gestos. Por outro lado os sistemas que, além de reconhecer alguns gestos básicos, interagem utilizando os dedos da mão têm captado pouco interesse. Não obstante, os sistemas existentes são de grande interesse para este trabalho porque na maioria dos casos se depararam com os mesmos problemas de segmentação e rastreamento que encontramos em nossa pesquisa Sistemas Baseados no Reconhecimento de Gestos Segundo Pavlovic [28], os sistemas de reconhecimento de gestos da mão podem ser classificados em dois grupos: os baseados no modelo 3D e os baseados na aparência da imagem 2D. Nos sistemas baseados no modelo 3D, o modelo da mão é definido através de um conjunto de parâmetros que descrevem todos os graus de liberdade da mão. Geralmente, o mecanismo consiste em procurar um conjunto de parâmetros que melhor ajustem o modelo 3D e sua projeção 2D na imagem. Alguns trabalhos que aplicam esta técnica são os de Kuck e Huang [18], Lee e Kunii [24], Regh e Kanade [30], Stenger [37] e Wu [46].

27 Interfaces Baseadas em Visão 27 Figura 2. Resultados do trabalho de Regh e Kanade [30]. O esqueleto é sobreposto na imagem original da mão. No lado direito, o modelo 3D é calculado a partir dos parâmetros encontrados no esqueleto. Nos sistemas baseados na aparência da imagem 2D, os parâmetros são extraídos diretamente das imagens. Parâmetros como a posição dos dedos na imagem, contornos e linhas, cor da mão, momentos e transformadas de espaço, entre muitos outros, são explorados. No trabalho de Freeman [8] são descritas algumas técnicas simples para a interação através de visão. Um desses exemplos mostra como a orientação da mão, que é o conjunto de pixels diferentes do fundo, é utilizada para dirigir um robô (Figura 3.a); outro exemplo mostra como a diferença de imagens pode ser utilizada para inferir direção e movimento (Figura 3.b); e outro exemplo mostra como os chamados histogramas de orientação dos pixels são utilizados para reconhecer diferentes posturas da mão (Figura 3.c). No trabalho de Staner [36] é utilizada uma segmentação simples da cor da mão sobre fundo preto e são empregados modelos de Markov para reconhecer algumas posturas da mão. No trabalho de Sato [31] os parâmetros de uma câmera infravermelha são ajustados para capturar a mão; depois, na imagem gerada, são reconhecidas algumas posturas simples da mão.

28 Interfaces Baseadas em Visão 28 Figura 3 Métodos simples para interagir através da Visão apresentados no trabalho de Freemam [8]. (a) Orientação da mão para dirigir um robô. (b) Subtração de imagens para inferir direção do movimento. (c) Histogramas de orientação. Outros sistemas utilizam feições locais das mãos e dos dedos para reconhecer gestos mais complexos na interação. Existem diferentes abordagens, com destaque para as baseadas no contorno e na silhueta. Tais sistemas utilizam diversos algoritmos de Visão para conseguir extrair a silhueta da mão. Nos trabalhos de Heap [12] e Hall [10], a silhueta da mão é modelada como sendo uma curva rígida e o reconhecimento é feito através de medidas de correlação (semelhança). No trabalho de Segen [33] é utilizado um ambiente controlado para a extração da silhueta; depois, utilizando algumas heurísticas, são reconhecidas algumas posturas da mão. Essas posturas são utilizadas para controlar um jogo e para navegar sobre um terreno (Figura 4.b). Outras abordagens para o reconhecimento de gestos constituem os sistemas que utilizam imagens de treinamento para modelar os gestos a serem reconhecidos. O trabalho de Laptev [22] utiliza funções gaussianas (blobs) para representar o conjunto de imagens de treinamento que contém as posturas a serem reconhecidas (Figura 4.c). Dentro deste grupo podemos considerar também os trabalhos baseados em HMM (Hidden Markov Models), tais como os apresentados por Lee e Kim [23], Schlenzing [32], Vogler e Metaxas [42] e Wilson e Bobick [44]. No trabalho apresentado por Viveck [41] é utilizada a transformada de Fourier-Mellin junto com Redes Neurais para o reconhecimento de posturas da mão.

29 Interfaces Baseadas em Visão 29 Figura 4 (a) Extração do contorno da mão com o modelo de curva rígida. Adaptado de Heap [12]. (b) Posturas da mão para controlar funções básicas de um jogo de computador. Adaptado de Segen [33]. (c) Funções de Gauss (blobs) para detectar a mão e os dedos. Adaptado de Laptev [22] Sistemas Baseados na Detecção dos Dedos Tradicionalmente, os sistemas baseados na detecção dos dedos são utilizados para construir interfaces que simulem funções básicas do mouse ou do teclado. Muitos desses sistemas podem ser considerados como sendo uma especialização dos sistemas de reconhecimento de gestos, pois a princípio eles utilizam as técnicas descritas na seção anterior, mas a detecção dos dedos é importante para a interação. Muitos desses sistemas, para poder reconhecer os dedos, utilizam diversas abordagens que exploram características da mão e os dedos, assim como das imagens. No trabalho de Queck [29] é apresentado um sistema chamado FingerMouse, que explora a cor da mão para segmentá-la do fundo; a ponta do dedo é sempre o ponto com maior coordenada y. Esse sistema é utilizado para movimentar o ponteiro do mouse com um dedo, e o clique é feito com uma tecla no teclado (Figura 5). Outro trabalho que explora a cor da mão é o de Kurata [21], que utiliza o dedo da mão para selecionar menus na imagem. No trabalho de Kulessa [19] é mostrado que é muito difícil construir um modelo de cor da mão que seja invariante a flutuações de iluminação. Por isso, os sistemas que

30 Interfaces Baseadas em Visão 30 utilizam unicamente informações da cor da mão não têm bom desempenho e são muito limitados. Figura 5 Sistema FingerMouse. Adaptado de Queck [29]. Muitos dos sistemas de detecção tentam explorar diferentes características da forma da mão e dos dedos. Para isto, estes utilizam medidas de correlação entre um padrão a ser reconhecido e os dados de entrada da imagem. Na maioria dos casos as imagens de entrada são imagens pré-processadas e a medida de similaridade (correlação) é feita nessas imagens. Devido à procura de um padrão específico na imagem, o número de gestos e a variação destes são muito limitados. No trabalho de Freeman [9] é apresentado um sistema de correlação que detecta uma mão estendida e fechada e utiliza a posição do dedo índice para interagir com um programa que controla algumas funções básicas de uma televisão. A medida de correlação é feita numa área definida da imagem e a segmentação da mão é feita por cor. Crowley [4] desenvolve um sistema, com um plano de fundo especial, que explora as características da forma do dedo na correlação, permitindo desenhar linhas utilizando a ponta do dedo. No trabalho de Handenberg [11] é apresentado um sistema que utiliza a diferença de imagens na segmentação e então, na correlação, utiliza círculos para procurar a posição dos dedos. Alguns gestos como o clique padrão e o clique direito do mouse são implementados (Figura 6.a). Outros sistemas facilitam a etapa de segmentação utilizando câmeras infravermelhas, o que permite uma segmentação mais acurada das mãos. No trabalho de Ukita [39] é mostrado um sistema que utiliza o dedo para desenhar linhas em que os dedos são modelados como sendo semicírculos, os quais são utilizados no processo de correlação. No trabalho de Oka [27] as pontas dos dedos são modeladas como sendo círculos no processo de correlação. O movimento dos dedos detectados é utilizado para reconhecer algumas figuras geométricas, as quais são utilizadas como comandos na interação (Figura 6.b).

31 Interfaces Baseadas em Visão 31 Figura 6 (a) Interação com o computador posicionar a ponta do dedo num mesmo lugar por um determinado tempo ocasiona um clique. Adaptado de Handenberg [11]. (b) Detecção dos dedos no trabalho de Oka [27]. Em vez de procurar diretamente pelas características dos dedos, alguns trabalhos procuram pelo contorno ou silhueta da mão e depois, na silhueta, procuram os pontos que representam as pontas dos dedos. Normalmente a modelagem do contorno é feita através de curvas B-Splines ou contornos ativos (Snakes) e o seguimento dos pontos de controle é feito através de algoritmos como Kalman ou Condensation. Nos trabalhos de Hall [10] e MacKormick [26] são utilizadas essas técnicas para a detecção e o seguimento dos contornos, onde depois são detectados os dedos. Figura 7 Detecção do contorno da mão apresentado no trabalho de MacKormick [26]. A ponta do dedo detectada e utilizada para desenhar Sistema de Interação Proposto Muitos dos sistemas aqui expostos utilizam os gestos reconhecidos e os dedos detectados em aplicações e ambientes específicos. Muitas vezes esses ambientes e aplicações condicionam os processos de detecção dos dedos e reconhecimento de gestos. Diferentemente desses sistemas, no presente trabalho é proposto um sistema base para o reconhecimento de alguns gestos simples da mão que possam ser utilizados para reconhecer gestos mais complexos em ambientes de trabalho convencionais. Este sistema se apresenta

32 Interfaces Baseadas em Visão 32 como sendo uma camada de baixo nível que garante o reconhecimento de um conjunto de gestos básicos para outras aplicações, as quais podem utilizar esses gestos de acordo as suas necessidades. O sistema proposto neste trabalho possui as características dos sistemas baseados na detecção dos dedos. O objetivo principal é a detecção e o rastreamento dos dedos da mão. Com base nos dedos detectados e em suas informações (número, posição, direção, etc.) é reconhecido também um conjunto básico de gestos. Assim, na interação, tanto os gestos reconhecidos quanto as informações dos dedos são utilizados. Para poder detectar os dedos da mão é empregada uma abordagem baseada na silhueta. Nesta abordagem é necessária a extração da silhueta da mão para detectar os dedos. A detecção da silhueta é baseada numa abordagem de segmentação que considera as características de cor e da iluminação do ambiente onde a mão está se movimentando. Nessa etapa de segmentação é introduzida uma abordagem de segmentação de fundo que, além de segmentar o objeto de interesse, procura diminuir as restrições do ambiente e a influência da iluminação na modelagem do fundo. Ao contrário de muitos trabalhos que se concentram exclusivamente nas características dos objetos para a sua segmentação e reconhecimento, neste trabalho são exploradas em conjunto as características do objeto e as características do ambiente. No próximo capítulo é apresentada a etapa de segmentação desse sistema, na qual uma abordagem de subtração do fundo é utilizada para segmentar a mão do fundo da cena.

33 3 Subtração de Fundo No presente capítulo apresenta-se o estudo feito sobre diferentes algoritmos para a detecção de objetos em movimento em uma cena com fundo estático. Tipicamente, estas cenas estão sob a influencia de mudanças na iluminação e presença de sombras. O objetivo principal neste capítulo é detectar e segmentar uma mão em movimento a partir de uma seqüência de imagens em cor, capturadas por uma câmera. Para isso, foram estudados diversos algoritmos de subtração de fundo, com a finalidade de achar abordagens capazes de lidar com problemas de mudanças na iluminação e presença de sombras. Na seção seguinte apresenta-se, a motivação para o estudo destes algoritmos e a aplicação específica para a qual foram utilizados no contexto da pesquisa desta dissertação. Em seguida uma discussão dos algoritmos estudados, trabalhos relacionados e qual abordagem de segmentação de fundo foi finalmente utilizada. Posteriormente uma apresentação dos algoritmos escolhidos e algumas discussões das suas etapas. Em seguida, os resultados obtidos e finalmente algumas conclusões parciais Motivação A capacidade de extrair objetos em movimento a partir de seqüências de vídeo é um problema crucial e fundamental de muitos sistemas de visão computacional. Essa capacidade permite focar a atenção dos sistemas, nos objetos que estão em movimento e que, possivelmente são peça crucial na execução da tarefa para a qual foram programados. Tipicamente, uma abordagem usual para a segmentação de objetos em movimento do fundo da cena é uma técnica chamada como subtração de fundo. A idéia de subtração de fundo é subtrair a imagem atual de uma imagem de referencia, a qual é adquirida e modelada a partir de um fundo estático durante um período de tempo; chamado também como período de treinamento. Como às vezes não existe um conhecimento antecipado do fundo, a chave para qualquer algoritmo de subtração é como modelá-lo e representá-lo. Uma

34 Subtração de Fundo 34 abordagem simples e às vezes muito razoável é: calcular uma imagem de referencia do fundo como sendo a media de um conjunto de imagens. Posteriormente, quando um objeto entra na cena, este causa uma divergência com a imagem de referencia. Assim o objeto pode ser facilmente detectado, como sendo mudanças significativas ao nível de pixel. Embora este planejamento seja teoricamente aceitável, existe um conjunto de problemas que fazem desta, uma tarefa difícil de se fazer. Qualquer mudança física da iluminação muda à modelagem do fundo, afetando indefinidamente o desempenho dos algoritmos. Por tanto, muitos dos algoritmos são susceptíveis às mudanças globais e locais da iluminação, tais como as sombras e flutuações nas fontes de iluminação. No contexto da pesquisa desta dissertação, o algoritmo de segmentação de fundo foi utilizado para segmentar o objeto MÃO do fundo onde ela está se movimentando. Este passo é muito importante, porque permite isolar a mão; que é o foco e objeto principal de análise nas etapas posteriores Trabalhos Relacionados e Discussão dos Algoritmos de Segmentação de Fundo Desde que a utilidade da subtração de fundo foi reconhecida como um método para detectar objetos em movimento, apareceram na literatura diversos modelos e abordagens para a implementação destes algoritmos. Alguns algoritmos; exploram a diferencia estatística e ou probabilística de cor entre a imagem atual e a imagem de referencia, a qual é treinada durante um período de tempo ou um número determinado de imagens [14] [15] [6] [13] [2] [3]; análise de movimento dos objetos [17]; as características das imagens em estéreo [45]; transformações logarítmicas [46]; aprendizado por markov e bayesiansas [20] e abordagens híbridas [17] [46] [5]. Embora, muitos dos algoritmos tenham desempenhos razoáveis, mudanças na iluminação e presença de sombras afetam consideravelmente seus desempenhos; sendo poucos os que razoavelmente conseguem lidar com estes problemas. Até aqui, é importante considerar o fator de robustez e eficiência na detecção do objeto em movimento, como sendo uma característica que permita um grau de detecção alto e uma segmentação que represente realmente a morfologia do objeto. No contexto desta pesquisa o objeto foi a MÃO, e as medições foram feitas baseados na qualidade de detecção e segmentação da morfologia da mão.

35 Subtração de Fundo 35 O maior problema para os algoritmos de subtração de fundo é lidar com a presença de sombras e mudanças da iluminação na cena. Já que o movimento dos objetos gera também sombras em movimento, às vezes estas sombras são detectadas como sendo parte do objeto afetando assim, a eficiência do algoritmo. Algoritmos susceptíveis a sombras [46] [2] são aqueles que têm seu desempenho altamente prejudicado pela presença de sombras; as sombras foram detectadas como sendo parte do objeto e não se teve uma alternativa para poder lidar com elas; irremediavelmente as sombras são detectadas como sendo o objeto e a morfologia deste é totalmente deformada na segmentação. Uma alternativa para estes algoritmos é testar eles em planos de imagens que não contenham as sombras do objeto, assim sem as sombras o seu desempenho melhora; como no nosso trabalho não são descartadas as sombras, estes algoritmos foram descartados. Algoritmos que parcialmente lidam com sombras [6] [46], são aqueles que também foram susceptíveis as sombras, mas tornaram se instáveis ante a presença delas. Muitos pontos da sombra do objeto foram considerados como sendo o objeto; ajustando o mecanismo do limiar destes algoritmos (valores de threshold) pode se melhorar esta situação, no entanto torna-se muito difícil e não existe um padrão de atribuição de valores do limiar, que não faça difícil a tarefa de excluir os pontos da sombra na segmentação (Figura 8). Existem situações para as quais é possível isolar as sombras, só que as pequenas mudanças na iluminação e os valores do limiar que não são susceptíveis a estas mudanças fazem que não se tenha um desempenho aceitável nestes algoritmos. Uma alternativa para estes algoritmos, além da não presença de sombras, é testar eles em fundos de cor com alto contraste e ou menos sensíveis a mudanças na iluminação (Superfícies que absorvem iluminação). Estas características certamente limitam o acionar destes algoritmos, deformando significativamente a morfologia da mão durante a segmentação.

36 Subtração de Fundo 36 Figura 8 - Resultado dos algoritmos que parcialmente lidam com sombras; dificuldade na atribuição do limiar e impossibilidade de isolar as sombras; morfologia deformada do objeto. A presença de sombras e mudanças nas condições de iluminação sugerem abordagens diferentes na modelagem dos algoritmos anteriores. É importante poder ter uma diferenciação clara do que realmente é sombra e o que é uma parte da cena com baixa iluminação devido à oclusão do objeto. Para poder detectar as sombras é importante saber que durante o movimento do objeto na cena, existem alguns pixels aonde a iluminação diminui devido à sombra; eles não mudam sua cor, mas sim experimentam uma baixa iluminação; por tanto é indispensável considerar modelos que permitam saber que houve apenas mudança na iluminação e não na cor original do fragmento da imagem, em resumo modelos mais sensíveis à mudanças da iluminação do que à mudanças na cor do fragmento na imagem. Dentro do estudo houve dois algoritmos que conseguiram modelar esta característica; o algoritmo apresentado em [14] [15] modela esta característica considerando e calculando a distorção do brilho e a distorção de cor de cada ponto no espaço RGB; o algoritmo de segmentação de fundo apresentado em [3] modela também esta características medindo o ângulo formado entre dois vetores que representam pontos no espaço RGB. Cada um destes algoritmos teve um desempenho aceitável para os requerimentos do presente estudo, se bem não se teve uma segmentação perfeita do objeto, eles tiveram, dentro do intervalo de erro, um desempenho aceitável. Na seção seguinte serão apresentados estes algoritmos com maiores detalhes e também algumas justificativas indicando qual deles foi finalmente escolhido.

37 Subtração de Fundo Algoritmos de Subtração de Fundo Uma das habilidades fundamentais no sistema de visão humano é a constância de cor. Humanos tendem a atribuir uma cor constante para um objeto, embora existam mudanças na iluminação ao longo do tempo ou espaço. Apontando esta característica, os algoritmos apresentados em [14],[15] e [3] tentam reproduzir esta habilidade na modelagem e subtração do fundo na cena. Ambos algoritmos tem a mesma filosofia; trabalham no espaço RGB; tem um período de treino para a modelagem do fundo estático, trabalham com a imagem media e têm um período de subtração para a detecção do objeto. Embora tenham similaridades existem também diferencias na modelagem do fundo e na etapa de subtração. Antes de apresentar cada uma das etapas dos algoritmos é importante mostrar o modelo computacional de cor que utilizam, os quais são importantes nas etapas de modelagem e de subtração. Ambos algoritmos trabalham com valores de cor, no espaço tridimensional RGB Modelo de Cor No algoritmo apresentado em [14], a idéia para desenhar o modelo é calcular a diferencia entre as cores medindo a distorção do brilho (brightness) e a distorção de cor (chromaticity). A Figura 9 ilustra o modelo computacional de cor proposto neste algoritmo no espaço tridimensional RGB. Considerando o ponto (pixel) i na imagem; denota-se E [ E ( i), E ( i), E ( i) ] i = R G B como sendo o vetor que representa a cor esperada do ponto (imagem de referencia). A linha OE i que passa na origem e a traves do ponto (expected chromaticity line). I [ I ( i), I ( i), I ( i) ] E i é chamada de linha de cor i = R G B é a cor RGB do ponto na imagem atual, a qual se quer subtrair do fundo. Neste modelo basicamente se quer medir a distorção existente entre I i e distorção de brilho e de cor, no valor RGB do pixel. E i. Isto é possível medindo a

38 Subtração de Fundo 38 Figura 9 - Modelo de cor no espaço tridimensional RGB proposto em [14]. E i representa o valor de cor esperado do ponto i na imagem de referência, I i representa a cor na imagem atual. A diferencia entre I i e E é decomposta em distorção de brilho ( α ) e i i distorção de cor ( CD i ). Adaptada de [14]. A distorção de brilho ( α i ) é o valor escalar que desloca a cor esperada a traves da linha de cor; o mais próximo possível do valor atual I i. Isto é obtido E i minimizando: φα ( i) = ( Ii αiei) 2 α i representa a distorção de brilho de I i com relação ao valor esperado α i é menor do que 1 este é mais escuro, se claro. A distorção de cor E i ; se α i é maior do que 1 este é mais CD i é definida como sendo a distancia ortogonal entre, o valor atual I i e a linha de cor no modelo; este é dado por: CD = I α E i i i i Para entender melhor este modelo, são importantes algumas considerações. A distorção de brilho é um valor escalar que posiciona o valor de cor esperada E i ao longo da linha de cor; uma característica importante desta linha é que mantém um certo padrão de cores ao longo dela, mudando apenas a intensidade luminosa. Assim sabe-se se um certo ponto na imagem tem um valor de cor bem parecido do que outro, mas com brilho diferente. Isto ajuda muito em identificar aqueles pontos que ficam com baixa iluminação quando são obstruídos pelo objeto em movimento. A distorção de brilho significa apenas uma

39 Subtração de Fundo 39 mudança na iluminação, e não uma mudança significativa na cor do pixel. Esta diferenciação permite identificar pontos da imagem que representam sombras, pois elas têm um brilho bem menor do que a original no modelo de referencia, mas ainda mantém uma cor parecida à original. A distorção de cor indica o grau de afastamento que temos desses padrões de cor que representa a linha, assim a traves deste indicador podemos saber se a cor atual está muito longe ou não do padrão de cores representado pela linha, o qual é útil para poder saber se aquele pixel faz parte de um objeto diferente que está presente na imagem atual. No algoritmo de subtração de fundo apresentado em [3], não existe um modelo especifico de decomposição de cor. Os valores de cor são considerados como sendo os valores RGB, e as etapas de modelagem e subtração de fundo consideram os valores de cor neste espaço. Por tanto, os valores de cor não são decompostos nem transformados neste algoritmo. O fato de que o algoritmo meça o ângulo entre dois vetores no espaço RGB, indica que a comparação é feita entre duas linhas de cor. Estas linhas de cor representam cada uma um padrão de cores; por tanto, ao medir o ângulo comparam-se conjuntos de cores, ao contrario de comparar só duas cores Subtração de Fundo Antes de discutir os algoritmos de detecção de objetos em movimento, é importante fazer algumas considerações para entender algumas características físicas que influenciam os equipamentos que são comumente utilizados no processo de captura de imagens, câmeras de vídeo para ser mais específicos. Os sensores utilizados nas câmeras, tipicamente transformam cores de um espaço de dimensão infinita para cores num espaço tridimensional RGB a traves de filtros de cor nas bandas vermelha, verde e azul. Este fato traz algumas características nas imagens capturadas que são importantes considerar, e que também são considerados nas etapas de modelagem de fundo nos algoritmos estudados. Além da perda de precisão na digitalização das cores, existe uma continua variação de cor ao longo do tempo; raramente é possível obter o mesmo valor RGB de cor num ponto especifico da imagem durante um período de tempo, isto devido ao ruído inerente aos equipamentos e as flutuações de iluminação presentes nas fontes de luz. Existe uma variação desigual nos filtros

40 Subtração de Fundo 40 de cor nas bandas vermelha, verde e azul, o que indica que existe uma sensibilidade diferente a traves destas bandas. O esquema básico de subtração de fundo nestes algoritmos é subtrair a imagem atual da imagem de referência, a qual modela o fundo. Para conseguir isto, os algoritmos começam com uma etapa de modelagem onde se constrói a imagem de referencia; depois, há uma etapa estatística para determinar um limiar apropriado nas variáveis de comparação; finalmente a etapa de subtração e classificação dos pixels da imagem, onde cada ponto é segmentado em grupos diferentes. A segunda etapa não está explicitamente indicada no algoritmo [3]; por tanto, a seleção do limiar é feita unicamente por um processo de tentativa e erro (testando diferentes valores) Modelagem do Fundo No processo de treinamento do algoritmo apresentado em [14], a imagem de referencia e alguns atributos relacionados com ela são calculados ao longo de um período de tempo ou um número definido de imagens de treino. Cada pixel é modelado como sendo um vetor de 4 posições Ei, si, ai, bi E i é o valor esperado de cor, s i é o desvio padrão, b i é a distorção de cor. imagem media das imagens de treino e presente neste conjunto de imagens. < >; onde a i é a distorção de brilho e E i neste algoritmo é considerado como sendo a s i como sendo o desvio padrão E S [ µ R ( i), µ G( i), B ( i) ] [ σ ( i), σ ( i), σ ( i) ] i = µ i = R G B para o cálculo de a i e b i são consideradas as seguintes equações [14]:

41 Subtração de Fundo 41 α i IR() i αµ i R() i IG() i αµ i G() i IB() i αµ i B() i = min + + σ R() i σ G() i σ B () i IR() i µ R() i IG() i µ G() i IB() i µ B() i σ R() i σg() i σ B() i = µ R() i µ G() i µ B() i σ R() i + + σg() i σ B() i (1) IR() i αµ i R() i IG() i αµ i G() i IB() i αµ i B() i CDi = + + σ R() i σ G() i σ B() i (2) O processo de treino e o cálculo das imagens de referencia do fundo, no algoritmo em [14], é mostrado numa parte da Figura 10. Em resumo, o processo começa com a captura de um número de imagens de treino, a partir destas imagens calcula-se uma imagem media e outra representando o desvio padrão (Passo 1). Para cada uma das imagens de referencia calcula-se imagens da distorção de brilho e da distorção de cor respeito à imagem media (Passo 2, 3); para obter estas imagens utiliza-se às equações (1) e (2) respectivamente. Para o cálculo destas imagens são utilizadas; a imagem original, a imagem media, o desvio padrão e as equações (1) e (2); completando-se assim os passos 2 e 3 indicados na Figura 10. Para o passo 5 utiliza-se a equação (3) e para o passo 4 utiliza-se a equação (4); completando assim o processo de treinamento. α i = RMS( αi) = N i= 0 ( α ) N 2 i 1 (3) bi= RMS( CDi) = N i= 0 ( CDi) N 2 (4) No final do processo de treino no algoritmo [14] são obtidas 4 imagens de referencia; a imagem media, imagem desvio padrão, imagem da distorção de brilho e a imagem da distorção de cor. Nestas imagens estão modeladas as

42 Subtração de Fundo 42 características do fundo e são estas imagens as utilizadas como referencia no processo de subtração. Observando para as equações (1) e (2) onde se calculam a distorção de brilho e de cor; pode-se ver que, no cálculo, estes valores são normalizados ou divididos pelo valor do desvio padrão [14]; assim, pixels com baixo desvio padrão podem ter valores de distorção de brilho e cor muitos altos. Para solucionar este problema é importante determinar um valor mínimo do desvio padrão que pode ter cada um dos pontos nas imagens. Não existe um padrão de atribuição deste valor em [14], por tanto, este valor é atribuído por um método de tentativa e erro (testando diferentes valores positivos menores ou iguais a 1) como foi feito aqui, na implementação do algoritmo. No processo de treinamento do algoritmo apresentado em [3] não existe um modelo detalhado de modelagem do fundo. A única imagem de referencia utilizada por este algoritmo é a imagem media, esta é calculada a partir de um determinado conjunto de imagens de treino; por tanto, só é preciso o cálculo da imagem media no espaço de cor RGB Subtração ou Segmentação Nesta parte do modelo é calculada a diferencia existente entre a imagem de referencia e a imagem atual. No algoritmo apresentado em [14] essa diferencia é decomposta em distorção de brilho e distorção de cor. Aplicando um limiar apropriado na comparação da distorção de brilho e da distorção de cor num pixel, pode-se obter uma máscara indicando qual é o tipo do pixel que está sendo comparado. Tomando em conta o modelo de decomposição de cor que é utilizado; cada pixel pode ser classificado em cada uma de 4 categorias na fase de subtração: Fundo original (B), se a distorção de brilho e a distorção de cor são similares com seus pares na imagem de referencia. Fundo com baixa iluminação ou sombra (S), se a distorção de cor é similar, mas a distorção de brilho é bem menor do que aquela na imagem de referencia.

43 Subtração de Fundo 43 Fundo como alta iluminação (H), si existe uma distorção de cor similar, mas uma distorção de brilho maior do que aquela na imagem de referencia. Objeto em Movimento (F), o pixel é considerado como sendo parte do objeto em movimento, se a distorção de cor é diferente aos valores esperados no treinamento. Na figura 10 mostra-se a etapa de subtração deste algoritmo. A imagem que contém o objeto é comparada com a imagem media e o desvio padrão para obter imagens que representam a distorção de brilho e a distorção de cor (Passo 6), aplica-se para isto as equações (1) e (2) respectivamente. As imagens são comparadas com as imagens de referencia aplicando valores apropriados do limiar (Thresholds) de comparação (Passo 7). No caso do algoritmo implementado neste trabalho foram considerados apenas dos grupos; fundo e objeto em movimento; assim pontos pertencentes a sombras ou pontos com maior iluminação foram consideradas como sendo parte do fundo. A comparação das imagens atuais com as imagens de referencia são feitas basicamente, nas diferencias existentes entre os valores das distorções de brilho e das distorções de cor.

44 Subtração de Fundo 44 Figura 10 - Algoritmo de subtração de fundo baseado na decomposição da diferencia de cor, em distorção de brilho e distorção de cor. Seguindo a ordem das operações nos números, mostram-se as etapas de modelagem e subtração de fundo. A etapa de Modelagem é feita uma vez, enquanto que a etapa de subtração é feita a cada imagem (frame). Como se tinha mencionado antes, o modelo de cor deste algoritmo é muito mais sensível à distorção de brilho do que à distorção de cor, por esta razão é mais fácil identificar as sombras como sendo pontos que mudam apenas seu brilho nas imagens. Assim como a mudança na distorção do brilho é maior do que a mudança na distorção de cor, existem diferentes pixels na imagem que têm diferentes distribuições de α i e CD i, é dizer os padrões de mudança não são iguais em todos os pixels. A fim de usar um limiar só para todos os pixels, é preciso normalizar os valores de α i e CD i. Seja

45 Subtração de Fundo 45 αˆ i α i 1 = ai CDˆ i = CD a distorção de brilho normalizada e a distorção de cor normalizada respectivamente. b i i Baseados nestas definições, segundo o algoritmo em [14] podemos classificar o pixel numa de quatro categorias B,S,H,F diferentes, através da seguinte regra de decisão: F: CDˆ i> τ CD, else B: αˆi< τα1 and αˆi > τα2, else M() i = S: αˆ i < 0, else H : otherwise onde τ CD, α1 τ e τ α 2 são os valores do limiar utilizados para determinar as similaridades de brilho e cor existentes entre as imagens de referencia do modelo e a imagem atual que está sendo observada. No entanto, observando bem o modelo de cor utilizado neste algoritmo; na imagem atual, poderia ser o caso de pixels do objeto em movimento que tenham valores RGB próximos da origem; objetos pretos ou partes pretas dos objetos. Estes pixels escuros, sempre serão classificados como sendo sombras e por tanto como sendo parte do fundo. Isto porque os valores de cor destes pixels estão perto da origem no espaço RGB, e o fato de que todas as linhas de cor no espaço RGB passam através da origem faz com que estas cores sejam consideradas parecidas com qualquer linha de cor. Para evitar este problema uma solução é introduzir um novo limiar para a distorção normalizada do brilho τ ( σlo ), que indica o limite de distorção de brilho que deve ter um pixel para ser ou não ser considerado como sombra. Então a regra de decisão ficaria como:

46 Subtração de Fundo 46 F: CDˆ i> τcd or αˆ i< τα lo else B: αˆi< τα1 and αˆi > τα2, else M() i = S: αˆ i < 0, else H : otherwise Na etapa de subtração do algoritmo apresentado em [3], a diferencia entre as imagens é calculada a traves do ângulo formado entre cada uma das cores na imagem de referencia e a imagem atual. O processo principal na subtração de fundo utilizado neste algoritmo é o calculo do ângulo, mediante o qual os pontos da imagem são classificados. Na figura 11 mostram-se os passos do processo de subtração de fundo feito neste algoritmo; a idéia principal é que alguns pontos da imagem sejam excluídos do teste do ângulo a traves de testes rápidos de variação de cor (distancia entre as cores d(i,j)). Se existe uma variação grande de cor, acima de um limiar estabelecido T U, o algoritmo supõe que a mudança neste ponto é consideravelmente alta, então considera o ponto como sendo parte do objeto (Passo 1). Se não existe uma mudança considerável na cor, pode ser que os valores de cor nos pontos não tenham sofrido grandes mudanças, assim se o a variação de cor é menor do que um outro limiar T L o ponto é considerado como sendo parte do fundo (Passo 2). Já para os pontos que apresentam variações de cor acima do T L e abaixo do T U o ângulo deve ser medido; uma vez mais tendo o critério do limiar para o ângulo entre os vetores, pode-se classificar os pontos dentro das duas classes; se não, é objeto. No presente algoritmo T U e T L C θ < T é fundo se representam a variação máxima e mínima de cor para que os pontos sejam considerados como sendo o objeto ou o fundo respectivamente (este teste, sem necessidade de medir o ângulo). O valor do limiar do ângulo T C indica o grau de semelhança que as cores devem ter para que possam ser consideradas como parecidas ou diferentes; o limiar é a medida de semelhança.

47 Subtração de Fundo Calcular a diferencia de cor if d(, i j) > T U dij (, ) = cr(, i j) cb(, i j) então o (, i j ) th é um ponto do objeto senão vai para o passo if d(, i j) < T L então o (, i j ) th não é um ponto do objeto senão vai para o passo Calcula o ângulo entre os dois vetores 1 cr(, i j). cb(, i j) θ = cos [ ] c (, i j) c (, i j) C if θ < T então o (, i j ) th não é um ponto do objeto senão o (, i j ) th é um ponto do objeto. r b Figura 11 - Algoritmo de geração de silhuetas ou de subtração de fundo, baseado no ângulo entre dois vetores Seleção dos Limiares Na seleção dos limiares calculam-se valores do limiar para conseguir melhores resultados no processo de subtração; tradicionalmente este procedimento é feito em base a um aprendizado estatístico, com imagens que ainda pertencem à etapa de modelagem do fundo. No algoritmo apresentado em [3] não existe um procedimento específico para atribuir valores no limiar do ângulo. Pelo fato de ser um único limiar não é muito complicado conseguir um valor, já que se pode utilizar um ajuste do limiar (seleção de valores) até chegar a resultados razoáveis. No algoritmo apresentado em [14], existe a necessidade de achar valores para o limiar, tanto para a distorção de brilho quanto para a distorção de cor. Pelo fato de serem dois limiares os que devem ser achados, um procedimento de ajuste do limiar poderia resultar num trabalho difícil de se fazer, pois existe um conjunto grande de combinações destes valores que podem ser atribuídos. Num processo de seleção de limiar tenta-se diminuir este conjunto de combinações de valores ao mínimo possível ou até, diretamente achar os

48 Subtração de Fundo 48 valores que devem ser atribuídos nestes limiares. A grande vantagem do processo de seleção é restringir o espaço de busca dos limiares para valores próximos dos limiares que finalmente serão utilizados. Manter o foco da atenção em valores que realmente ocasionam um melhor processo de subtração faz parte da finalidade do processo de seleção do limiar, já que muitas vezes acontece de estar testando valores sem saber se realmente estes valores em conjunto são discriminantes o suficiente para que possam ser utilizados. No processo de seleção do limiar no algoritmo apresentado em [14], os limiares para a distorção do brilho e para a distorção de cor são calculados a traves de um processo de aprendizado estatístico. Este aprendizado consiste em montar um histograma da distorção normalizada do brilho e a distorção normalizada de cor. Para montar este histograma são calculadas as distorções normalizadas do brilho e de cor de todas as imagens de treino respeito da imagem media. Tendo estes valores, se pode montar o histograma que representa o padrão de mudança das distorções ao longo do processo de treinamento ou modelagem do fundo; em outras palavras qualquer imagem que tenha objetos diferentes aos modelados no fundo, vai ter um histograma relativamente diferente. Na figura 12 mostra-se a curva típica dos histogramas da distorção normalizada de brilho e a distorção normalizada de cor respectivamente. Olhando para os histogramas podemos ver um determinado intervalo onde flutuam os valores das distorções, assim se existir valores fora deste intervalo se pode supor que esses pixels fazem parte de um objeto que não estava na modelagem do fundo. Uma vez que os histogramas são construídos, valores dos limiares são automaticamente selecionados de acordo com a taxa de detecção r (valor em porcentagem) que se quer obter; 100% corresponde a todas as amostras no intervalo. O limiar para a distorção de cor, τ CD, é o valor da distorção normalizada de cor na taxa de detecção r desejada (Ex corresponde a 99.95% ). Na distorção do brilho existem dois valores ( τ α1 e α2 τ ) por tanto deve se definir um intervalo no histograma. τ α1 é o valor na taxa r desejada e τ α2 é o valor na taxa (100% - r).

49 Subtração de Fundo 49 Figura 12 - (a) histograma da distorção normalizada de brilho ( α ˆ i ), e (b) histograma da distorção normalizada de cor ( CD ). Adaptado de [14]. ˆ i Neste processo de seleção de limiares existem algumas considerações importantes que devem ser feitas. Como se tinha falado antes, os valores da distorção do brilho e a distorção de cor são normalizados pelo valor do desvio padrão; isto traz alguns problemas na hora de calcular as distorções, que poderiam ter valores muito elevados. Já que o valor do desvio padrão e a natureza das variações deste dependem muito dos equipamentos que são utilizados na captura, os valores calculados das distorções também incluem estas características, por tanto, tendo em consideração este critério, os valores do limiar dependem da natureza dos equipamentos. Por isto sempre nas implementações realizadas deste algoritmo, os valores do limiar dependem dos equipamentos utilizados e até das condições particulares donde foram testados. Sugere-se deste modo construir os histogramas para o cálculo dos limiares e descartar os valores de limiar sugeridos em outros trabalhos. No cálculo e construção dos histogramas são utilizados os valores das distorções de brilho e de cor normalizados; na etapa de subtração os valores comparados também são os valores normalizados das distorções. Para os pixels na imagem que têm distorções de cor e brilho muito baixos, existe um problema na hora de normalizar; o valor da distorção normalizada pode ser muito elevado, assim qualquer valor do limiar é ultrapassado produzindo falsos pontos do objeto na etapa de subtração. Uma solução para este problema é atribuir valores de mudança mínima tanto para a distorção de brilho quanto para a distorção de cor, como foi feito no desvio padrão mínimo dos pixels. Todos estes problemas devem ser tomados em conta, tanto na hora de construir e calcular os histogramas das distorções quanto na hora do cálculo das distorções

50 Subtração de Fundo 50 normalizadas na etapa de subtração. Se estes problemas não forem considerados é difícil de se conseguir curvas parecidas às da Figura 12. A construção de curvas relativamente parecidas às da Figura 12, sem variações bruscas e tendências suaves, sugere um indicador muito útil para a avaliação dos valores mínimos atribuídos às distorções e o desvio padrão Resultados Nesta secção mostram-se os resultados obtidos na implementação dos algoritmos apresentados em [14] e [3]. Os testes foram realizados em seqüências de imagens (320x240) capturadas por uma câmera (WebCam Logitech QuickCamPro 4000) conectada via interface USB num computador com processador Pentium III de 1000Mhz e com 256 MB de memória RAM. De fato os modelos que lidam com as sombras e latências na iluminação permitem resultados melhores aos mostrados na Figura 8; isto porque são mais sensíveis a mudanças do brilho do que as mudanças na cor, conseguindo assim um resultado muito aproximado da morfologia do objeto MÃO. Nas imagens que se mostram a continuação, não foram feitos nenhum tipo de pós-processamento para melhorar a qualidade da segmentação; elas representam unicamente o resultado obtido na etapa de subtração de fundo dos algoritmos testados. Pós-processamentos são temas de etapas posteriores diferentes aos temas tratados neste capitulo. Na Figura 13 mostram-se os resultados obtidos pelo algoritmo baseado na medida do ângulo entre as cores [3], a imagem com só o fundo não é mostrada, mas fica claro na figura qual é a imagem do fundo. O objeto é segmentado com as suas cores originas dando uma impressão diferente à imagem da segmentação binária, onde a morfologia do objeto é mais fácil de perceber. Para fins práticos a imagem de segmentação binária é muito mais importante, e a qualidade desta influi muito nos processamentos posteriores que serão feitos. Particularmente para este algoritmo, o limiar atribuído no ângulo foi θ = o ; as sombras não são totalmente excluídas do objeto e deformam a morfologia dele, o qual não é desejável. Dependo do limiar atribuído no ângulo, às sombras somem, mas partes que realmente pertencem ao objeto também somem; por

51 Subtração de Fundo 51 isto é difícil determinar um limiar que depois de um determinado valor não comece a deformar o objeto. Figura 13 - Resultado da segmentação do algoritmo baseado na medida do ângulo [3]. O limiar no ângulo foi θ = o,mostram-se a segmentação com as cores originais do objeto e a segmentação binária onde é mais fácil perceber a morfologia do objeto segmentado. Frame Rate 30 fps. Na figura 14 mostram-se os resultados obtidos pelo algoritmo de subtração de fundo baseado na medida da distorção de brilho e a distorção de cor entre duas cores [14]. Como o objetivo é segmentar o objeto, o interesse unicamente está focado no objeto e não em detectar sombras ou partes com mudanças na iluminação; para isto só serão utilizados os parâmetros de limiar τ CD para a distorção de cor e τ lo para a distorção do brilho. Nos parâmetros de desvio padrão mínimo ( σ '), distorção mínima de cor ( CD ' ) e distorção mínima do brilho ( α ') foram atribuídos os valores σ ' = 1.0, CD ' = 0.75 e α ' = 0.01 respectivamente. Estes valores foram mantidos tanto para as etapas de modelagem do fundo e construção dos histogramas quanto para a etapa de subtração de fundo; lembremos que estes valores diminuem alguns problemas durante as etapas de modelagem de fundo e segmentação, assim como também na montagem dos histogramas para a seleção dos limiares. Os únicos limiares necessários para segmentar o objeto são τ CD para a distorção de cor e τ LO para a distorção do brilho. Os valores atribuídos para estes limiares foram τ CD = 14.1

52 Subtração de Fundo 52 e τ LO = Claramente se pode observar que este algoritmo possui uma segmentação melhor do que o algoritmo da Figura 13, o fato de ter dois parâmetros na comparação ajuda muito na eficiência deste algoritmo. Figura 14 - Resultados do algoritmo baseado na medida da distorção de brilho e a distorção de cor [14]. Desvio padrão mínimo ( σ ' = 1.0 ), distorção mínima de cor ( CD ' = 0.75 ), distorção mínima do brilho ( α ' = 0.01 para a etapa de subtração; limiar CD 14.1 para a distorção do brilho. Frame rate 43.fps. ). Nos limiares de comparação τ = para a distorção de cor, limiar τ lo = 80.5 Levando em conta o fator de processamento em tempo real, na Figura 15 mostra-se a segmentação binária feita pelo algoritmo de [14] com os mesmos parâmetros mostrados na Figura 14, só que neste teste foi considerada uma janela de 4 pixels. Nessa janela existe um ponto representativo que é testado; se este ponto passa pelo teste para ser parte do objeto, os outros pontos na janela também são considerados como sendo parte do objeto; se não os 4 pontos são considerados como sendo o fundo. Este teste simples não piora de maneira significativa a segmentação do objeto, mas tem um ganho muito grande no frame rate alcançando, valores na casa dos 60 fps.

53 Subtração de Fundo 53 Figura 15 - Teste do algoritmo em [14] aplicando uma janela de 4 pixels. Não muda muito à morfologia do objeto, mas existe um ganho grande na velocidade, frame rate na casa dos 60 fps Conclusões Parciais O processo de segmentação de objetos em movimento a traves de algoritmos subtração de fundo é um problema difícil de se fazer, existem muitos parâmetros que afetam sua eficiência e robustez. Conseguir um ótimo balanceamento destes parâmetros é um problema difícil e só é possível conseguir uma aproximação dos resultados ótimos de segmentação. Entenda se por parâmetros, valores e limiares que devem ser considerados pelo algoritmo; a combinação e o espaço de valores destes sugere dificuldade de achar ótimos balanceamentos entre eles. Inclusive, sob condições do ambiente e condições de atuação controladas, não é possível conseguir uma segmentação muito próxima da perfeita, até porque não existem métodos perfeitos e nem as condições do ambiente também são perfeitas para favorecer o desempenho dos algoritmos. Por tanto, só é possível obter aproximações boas ou ruis. O grande problema para todos os algoritmos de subtração de fundo é a dependência destes aos fatores da iluminação; formação de sombras e flutuações das fontes de luz são grandes problemas com as quais nem todos os algoritmos estudados puderam lidar satisfatoriamente. Existem muitas considerações (idéias) que podem ser tomadas dentro da formulação dos algoritmos de subtração de fundo, um grande problema é o processamento em tempo real que limita às vezes a inclusão de modelos mais sofisticados e robustos a cambio de velocidade no processamento. Tomando em

54 Subtração de Fundo 54 conta os algoritmos estudados é possível concluir que o problema de subtração de fundo é um problema que pode ter uma formulação para máquinas paralelas, explorando e facilitando assim, a inclusão de novos modelos mais sofisticados e robustos para lidar com os problemas típicos da subtração. Dentro deste estudo só foram considerados algoritmos que trabalham com a modelagem do fundo estático de uma cena. Apesar de todas as dificuldades, os estudos e os testes realizados demonstram que no presente trabalho foram conseguidos resultados satisfatórios em todos os requisitos necessários para a continuação do desenvolvimento do sistema de reconhecimento que é tema desta dissertação.

55 4 Detecção de Silhueta No decorrer deste capítulo é proposto um modelo de detecção da silhueta da mão capaz de lidar com os erros da segmentação e ruídos na sua morfologia. Num primeiro passo são considerados os filtros morfológicos, depois técnicas de detecção de bordas, e finalmente algoritmos de detecção, coleta e representação dos pontos que definem a silhueta da mão. Na próxima seção é apresentada uma motivação geral da detecção de silhueta considerando-se a sua importância no plano deste trabalho. Em seguida é feito um breve resumo do modelo de detecção e finalmente apresenta-se em forma mais detalhada cada um dos seus passos, os resultados obtidos e algumas considerações finais 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

56 Detecção de Silhueta 56 contorno [16] a partir das imagens geradas pela segmentação de fundo. Se a cada momento pode-se conhecer a silhueta de mão, então pode-se saber as diferentes formas que a mão está descrevendo ao longo do tempo. Isto ajuda muito e é uma grande vantagem, principalmente para objetos que mudam a sua morfologia ao longo do tempo. Interfaces baseadas em gestos, no caso da mão, poderiam facilmente ser suportadas com uma modelagem de silhueta. A detecção de silhueta é o processo que determina quais são os pontos da imagem que fazem parte da silhueta. Neste processo, são coletados pontos de forma a capturar a morfologia do objeto e finalmente estruturá-los de modo que possam servir como dado de entrada para as etapas posteriores do reconhecimento. No processo de detecção de silhueta são considerados três passos fundamentais. Em um primeiro passo, é feita uma abordagem de melhoria da segmentação; aqui são considerados filtros morfológicos para tentar corrigir e diminuir ao máximo os erros de segmentação e ruídos na morfologia do objeto. No segundo passo considera-se uma abordagem para a detecção das bordas dos objetos, que está diretamente influenciada pelo passo anterior. No último passo é feita a coleta e estruturação dos pontos que fazem parte da silhueta da mão. É fundamental que este passo seja capaz de lidar com os ruídos e erros ainda presentes após os dois passos anteriores. Nas seções seguintes são apresentados, com mais detalhes, cada um dos passos do processo de detecção de silhueta 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

57 Detecção de Silhueta 57 como os objetos se dilatam ou encolhem depende fortemente da escolha de uma máscara. As máscaras mais comuns são a de vizinhança 4 ( N 4) e de vizinhança 8 ( N 8), que estão ilustradas na Figura 16. A característica principal destes filtros é trabalhar com um ponto de referência (ponto do meio) e com as características da sua vizinhança. Assim, diferentes funções podem ser definidas nesta relação de vizinhança. Considerando apenas imagens binárias (preto ou branco), um exemplo desta relação seria: atribuir a cor preta ao ponto de referência se todos os vizinhos, definidos na máscara, forem da cor preta também. Na Figura 16, além da geometria de vizinhança definida pela máscara, mostram-se os valores dos vizinhos, onde a cor preta representa o fundo e a cor branca representa os objetos. Figura 16 - Máscaras utilizadas nos filtros morfológicos de Dilatação e Erosão; vizinhança 4 ( N 4) e vizinhança 8 ( 8) N. 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

58 Detecção de Silhueta 58 expandidas uniformemente. Depois, aplicando a Erosão na imagem dilatada, procura-se retornar ao objeto original; apenas as bordas serão afetadas, e os buracos totalmente preenchidos na etapa de Dilatação serão mantidos. Os resultados obtidos da aplicação desta seqüência de filtros morfológicos nas imagens de entrada são do tipo ilustrado na Figura 17. Figura 17 - Resultados obtidos da aplicação dos filtros morfológicos. Na seqüência (a) imagem resultado da segmentação; (b) resultado da aplicação da Dilatação em (a); e (c) resultado da aplicação da Erosão em (b). Considera-se (c) como resultado final desta etapa 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.

59 Detecção de Silhueta 59 Existem diversas abordagens para a obtenção de contornos em imagens binárias, como, por exemplo, as ilustradas por Trucco e Verri [38]. Tipicamente estas abordagens estão baseadas em medidas de gradiente ou na aplicação de filtros que exploram as características dos contornos. No presente trabalho, para encontrar as bordas nesta etapa foi considerada uma abordagem diferente, que explora os resultados da aplicação dos filtros morfológicos nas imagens da segmentação. Na Dilatação as bordas dos objetos se expandem, e na Erosão essas mesmas bordas se contraem, então através da diferença destas imagens (a dilatada e a erodida) podemos achar uma aproximação das bordas dos objetos. Esta abordagem tem uma vantagem, pois aproveita os resultados da etapa anterior, tornando o processo computacionalmente barato comparado com os outros. Além disso, não incorpora medidas de limiar e depende somente do tamanho da máscara. Outra vantagem é que tende a manter os contornos com a propriedade da conexidade. Os resultados da aplicação deste processo com as imagens (b) e (c) da Figura 17 são mostrados na Figura 18. Figura 18 - Obtenção de contornos a partir da subtração das imagens (b) e (c) da Figura 17. O objeto mão é representado apenas pelo seu contorno, o mesmo acontece com o ruídos e erros da segmentação. A Figura 18 mostra o resultado para a mão totalmente estendida com a silhueta externa. Alguns testes foram feitos com diferentes posições da mão e a presença de contornos internos; esses resultados são mostrados na Figura 19. Nota-se nesta figura ainda alguns ruídos e erros da segmentação, os quais serão removidos na próxima etapa do processo de detecção de silhueta. As figuras em preto e branco são consideradas como sendo o resultado da etapa de detecção de contornos.

60 Detecção de Silhueta 60 Figura 19 - Alguns resultados da detecção de contornos realizada em diferentes orientações da mão, (a) presença de ruídos, (b) presença de contornos internos ou buracos 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

61 Detecção de Silhueta 61 percorre e armazena os objetos, e a outra de seleção, esta última mais diretamente ligada ao reconhecimento. O percurso e armazenamento dos contornos é tradicionalmente feito numa ordem predeterminada, horária ou anti-horária. Partindo de um ponto qualquer do contorno os pontos são visitados seguindo a ordem estabelecida e o percurso é armazenado de forma que o contorno seja fielmente representado. Lista de Códigos (Chain Codes) é uma das abordagens mais utilizadas para a representação dos contornos [40]. Como seu nome bem o diz, é uma lista de códigos onde, para cada ponto na lista, existe uma direção a seguir para achar o próximo ponto do contorno. As direções definidas nesta representação, na ordem anti-horária, podem ser vistas na Figura 20. Figura 20 - Lista de Códigos (Chain Codes). Para cada ponto de referência (em azul) existem 4 ou 8 direções possíveis que se podem seguir na representação do contorno. A Lista de Códigos é uma representação que traz algumas vantagens, principalmente no que se refere ao armazenamento. Considerando a vizinhança 8 ( C 8) 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 ( C 8) mostrada na Figura 20. A idéia para percorrer os contornos é mostrada na Figura 21, em três passos. Nesta figura apenas é mostrado um trecho de um contorno maior, que serve para esquematizar alguns passos do algoritmo e entender a idéia de como é feito o percurso. Os pontos em branco representam o fundo e os pontos em preto representam o contorno que está sendo percorrido. Os pontos marcados

62 Detecção de Silhueta 62 com um X já fazem parte da silhueta, e os pontos onde as setas começam são os que estão sendo analisados; estes também pertencem à silhueta. As setas que apontam para os pontos marcados com X indicam a direção do ponto que o antecede na silhueta, e as setas que apontam para os pontos marcados com P indicam o próximo ponto da silhueta. As setas curvas indicam a direção de busca (anti-horária) para procurar o próximo ponto da silhueta. Todos os pontos de análise (onde começam as setas), a cada passo, têm um apontador para a direção do ponto que os antecede na silhueta. Tomando como referência essa direção e utilizando o sentido de busca (anti-horário), procura-se o próximo ponto que fará parte da silhueta; esse ponto é aquele que ainda não foi visitado, faz parte do contorno e é o primeiro a ser escolhido ou visitado a partir da direção inicial de busca. Em cada um dos passos (a), (b) e (c) as setas para os pontos X indicam a direção inicial de busca, as setas curvas indicam o sentido da busca e as setas para os pontos P apontam para o próximo ponto que faz parte da silhueta. O percurso do algoritmo tem dois critérios de parada: no caso de contornos fechados o algoritmo para quando são alcançadas posições próximas do ponto inicial de partida, e no caso de contornos não fechados o algoritmo para quando não existem mais posições de busca na direção oposta à direção de partida. Figura 21 - Passos do algoritmo de percurso de contornos. A cada passo, novos pontos da silhueta são detectados e alguns pontos N são descartados. As setas curvas indicam o sentido de busca, as setas que apontam para os pontos marcados com X indicam a direção inicial de busca, as setas que apontam para os pontos marcados com P indicam o próximo ponto. Como se pode ver no passo (a) da Figura 21, nem todos os pontos do contorno são considerados para fazer parte da silhueta, estes pontos não considerados estão marcados com N. Levando em conta que os contornos nem sempre são de largura unitária, muitos pontos são descartados ao longo do

63 Detecção de Silhueta 63 percurso e assim pode-se achar um número menor ainda de pontos que definem a silhueta. Na Figura 22 mostram-se alguns trechos de contornos com algumas particularidades produzidas durante o processo de detecção de silhueta. Nesta figura pode-se ver, dentro do contorno, um pequeno ciclo que deve ser considerado pelo algoritmo de percurso, já que este representa um problema para a robustez do algoritmo. Como se vê em (b) o percurso pode acabar prematuramente, afetando a detecção. Uma solução para este problema consiste em considerar o ponto z como sendo uma ponte especial, e deixar a Lista de Códigos passar duas vezes por este ponto. Freqüentemente o ponto z é um ponto no meio do contorno (que não é nem começo e nem fim) para onde o percurso volta em uma direção diferente à da direção original de saída (utilizando um caminho diferente). Figura 22 - Pequenos ciclos dentro dos contornos. Estes ciclos representam problemas para o algoritmo de percurso, pois como é indicado em (b) a detecção da silhueta pode acabar muito antes de percorrer o contorno inteiro, o que traz problemas na detecção. Uma vez que se tenham percorrido todos os contornos da imagem, as silhuetas dos objetos são armazenadas em um conjunto de listas. O próximo passo é a seleção das listas de códigos que representam o objeto de interesse Seleção da Silhueta da Mão No processo de seleção existe um problema de decisão. No caso de objetos ou gestos da mão que são representados por silhuetas internas e externas, qual ou quais silhuetas considerar? Considerar apenas a silhueta externa? Ou considerar todas as silhuetas que o objeto apresenta? A alternativa

64 Detecção de Silhueta 64 escolhida para lidar com este problema afeta diretamente a abordagem utilizada no reconhecimento, trazendo as suas vantagens e desvantagens. No caso particular dos gestos da mão, sabe-se que um dos objetos mais representativos na imagem é a própria mão. O tamanho da silhueta externa da mão é muito maior do que as silhuetas internas e do que os ruídos presentes nas imagens. Com base nesta hipótese a detecção da silhueta da mão é feita considerando, em número de pontos, a maior silhueta encontrada na imagem. Para expandirmos nossa aplicação para reconhecer duas mãos, necessitaremos de uma abordagem diferente e mais complexa. A abordagem utilizada neste trabalho é baseada apenas na silhueta externa de uma única mão. A Figura 23 ilustra os resultados da aplicação de detecção de silhueta nas imagens das Figuras 18 e 19 utilizando o critério de só considerarmos a maior Lista de Códigos.

65 Detecção de Silhueta 65 Figura 23 - Resultados do processo de detecção da silhueta da mão aplicados à imagem da Figura 18 em (a), e às imagens da Figura 19 em (b). Em (a) e (b) são removidos os ruídos e em (b) não é considerada a silhueta interna. As imagens da Figura 23 representam o resultado final da etapa de detecção de silhueta. A amostragem dos pontos da silhueta pode ser mudada para se ter uma amostragem menor, descartando assim um número maior de pontos da silhueta. Esta subamostragem pode ser feita sem afetar a morfologia da mão até um certo limite. A Figura 24 mostra a detecção de uma silhueta com uma subamostragem contendo um quinto dos pontos originalmente detectados.

66 Detecção de Silhueta 66 Figura 24 - Subamostragem dos pontos na silhueta detectada. A imagem à direita tem um quinto dos pontos da imagem à esquerda Considerações Finais do Capítulo A abordagem utilizada é baseada na silhueta externa da mão; uma única silhueta é considerada e a etapa de identificação de características no reconhecimento é feita sobre o conjunto de pontos que representa a silhueta da mão. A decisão de levar em conta as silhuetas externas certamente restringe e ao mesmo tempo facilita os processos que serão realizados na etapa do reconhecimento. É possível utilizar somente silhuetas externas em uma grande quantidade de aplicações, mas pode-se realizar tarefas de reconhecimento mais complexas utilizando mais informações provenientes do processo de detecção de silhueta.

67 5 Reconhecimento No decorrer deste capítulo é proposto um modelo para o reconhecimento de gestos da mão baseado na silhueta. Além dos gestos, são detectadas a posição e a orientação dos dedos. Num primeiro passo são localizadas algumas feições na silhueta, depois essas feições são avaliadas para reconhecer os dedos e finalmente alguns gestos pré-estabelecidos são reconhecidos. Na próxima seção é apresentada uma motivação geral do reconhecimento, na qual são definidos alguns parâmetros de interesse. Em seguida é apresentado um breve resumo do modelo e finalmente, de forma mais detalhada, cada um de seus passos, os resultados obtidos e algumas considerações finais 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

68 Reconhecimento 68 básicos de forma particular e de acordo com suas necessidades. Portanto, nesta etapa são compreendidos apenas os gestos estáticos, os quais serão denominados no texto simplesmente gestos. O reconhecimento dos gestos é feito com base no número de dedos que em um determinado momento a silhueta da mão apresenta. Portanto, para reconhecer os gestos é importante determinar com claridade o número de dedos presentes e também suas características, tais como sua posição, orientação e os pontos que os representam na silhueta. Levando em conta os dedos, existe um grande número de gestos que podem ser construídos, mas serão apenas 4 os gestos básicos reconhecidos neste trabalho. Esses gestos tentam ser os mais básicos possíveis, de forma que eles possam servir para construir ou reconhecer tipos de gestos mais complicados nas aplicações. Na literatura apresentada no segundo capítulo vimos que não existe uma única abordagem para reconhecer gestos da mão em imagens. Algumas técnicas utilizam forma, outras forma e cor, e outras utilizam ainda transformadas para o reconhecimento de gestos da mão. Apesar dessa diversidade, existem alguns parâmetros de interesse que são considerados pela maioria dessas abordagens. Entre eles podemos citar: Número de dedos presentes na mão a cada quadro. Posição e orientação dos dedos presentes com relação à imagem. Posição e orientação dos dedos com relação à mão. Posição e orientação da mão. Posição 3D dos pontos que representam os dedos. Os parâmetros considerados mais importantes neste trabalho são os três primeiros. Descartamos as abordagens tridimensionais por serem computacionalmente caras. Além disso, o reconhecimento 3D é condicionado e direcionado a certo tipo específico de aplicações. O processo de reconhecimento de gestos apresentado aqui possui três passos básicos. No primeiro passo a silhueta é analisada para procurar pontos que apresentem características dos dedos. Essa procura se baseia em medidas de curvatura que indicam alguns pontos candidatos. Alguns cuidados são levados em conta de maneira que o processo de detecção de feições seja dirigido a procurar, em sua maioria, os pontos que representam os dedos.

69 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 Detecção de Feições Na silhueta da mão existem duas feições a serem consideradas para o reconhecimento dos gestos (Figura 25): as pontas dos dedos, chamadas também de Picos ( P ), e as junções entre os dedos, denominados Vales ( V ). Identificar as regiões da silhueta que contêm esses pontos é importante para que o reconhecimento possa ser realizado satisfatoriamente. O objetivo desta etapa é identificar na silhueta da mão os conjuntos de pontos que mais se assemelhem com os Picos e Vales. Nesse processo não são encontrados diretamente os Picos nem os Vales, mas sim conjuntos de pontos com características similares nos quais também estão incluídos os Picos e Vales. Figura 25 - Feições consideradas para o reconhecimento dos gestos. As pontas dos dedos são chamadas de Picos ( P ) e as junções entre eles de Vales ( V ). O problema de se localizar os Picos e Vales na silhueta de uma mão pode ser reduzido ao problema de se encontrar cantos (corners) em curvas planares. Em nosso caso as curvas possuem muito ruído, como ilustra a Figura 25. O ruído faz com que as medidas de curvatura, baseadas em derivadas locais, não

70 Reconhecimento 70 sejam adequadas. Muitos pontos ao longo da curva têm alto valor de curvatura e seriam erroneamente considerados como pontos de interesse. O método utilizado para encontrar os Picos e Vales na silhueta deve ser insensível aos ruídos sem perder os verdadeiros pontos de interesse. A literatura apresenta diversos algoritmos para calcular curvaturas na presença de ruídos. Nos algoritmos descritos no trabalho de Liu e Srinath [25], por exemplo, a medida de curvatura é calculada através de um ângulo. Quando um ponto é processado, o valor de curvatura é calculado levando em conta um conjunto de pontos subseqüentes e anteriores a esse ponto na silhueta. Assim, dependendo do número de pontos a serem considerados, essa medida de curvatura pode ser pouco afetada pelos ruídos de alta freqüência presentes ao longo da silhueta. Apesar desses algoritmos poderem ser utilizados para nossos propósitos, neste trabalho é utilizado um cálculo de curvatura um tanto diferente que considera um número menor de pontos vizinhos na silhueta e será aqui chamado de k-curvatura. Quando um ponto Pi é processado, seu valor de k-curvatura é o ângulo α formado pelos vetores ( P + i Pi) e ( P i Pi), ilustrados na Figura i 26.(a). Diferentemente dos algoritmos descritos por Liu e Srinath [17], nos quais vários pontos são considerados para o cálculo da curvatura, em nosso cálculo são levados em conta dois vetores (Figura 26.(a)) formados por um único ponto subseqüente P ( i + k) e outro anterior P( i k) ao ponto Pi na silhueta, sendo k um inteiro positivo. Observando a Figura 26.(a) pode-se notar que utilizando esses dois vetores a tendência é diminuir o efeito do ruído ao longo da silhueta e ter ângulos menores onde a k-curvatura é maior. Em função do valor de k, do qual depende o tamanho dos vetores, o problema dos ruídos ao longo da silhueta pode afetar pouco o cálculo da k-curvatura.

71 Reconhecimento 71 Figura 26 - Medida de k-curvatura em cada ponto da silhueta. (a) Para cada ponto P i é escolhido um ponto subseqüente P ( i + k) e outro anterior P( i k) que formam dois vetores. A k-curvatura é o ângulo α formado por esses dois vetores e k é um inteiro positivo. i (b) O parâmetro k deve ser ajustado de maneira que as regiões de interesse sejam preferentemente detectadas durante o cálculo da k-curvatura. Para detectar principalmente as regiões com Picos e Vales é necessário levar em conta algumas observações referentes à forma da mão e explorar as características dos dedos na silhueta. Observando a Figura 26.(b) pode-se ver que os dedos são representados por um número considerável de pontos na silhueta, e esses pontos estão distribuídos de modo a formar regiões cilíndricas ou semi-cápsulas ao longo da silhueta. Assim, acrescentando o valor de k até um certo valor, é possível formar vetores suficientemente longos de modo que a característica dos dedos estendidos seja aproveitada na detecção dos Picos e Vales. Esses vetores são mostrados Figura 26.(b). É importante atribuir um valor a k que considere os dedos estendidos, mas que também possa ser flexível quando os dedos não estejam totalmente estendidos, por isso a escolha do valor de k é importante para o aproveitamento dessa característica na detecção de feições. No algoritmo de detecção de feições, além da escolha do valor de k, é necessário considerar um limiar T α para o valor da k-curvatura. Quando um ponto P i é processado são construídos dois vetores P( i+ k) Pi e P( i k ) Pi, e o ânguloα entre os vetores é calculado. Se o menor ângulo formado entre os i dois vetores for menor ou igual ao valor do limiar T α, o ponto é considerado

72 Reconhecimento 72 como feição. Nesta etapa esses pontos não podem ser ainda considerados como sendo Picos ou Vales, mas apenas como feições ou pontos de interesse. A seguir, na Figura 27, são mostrados os resultados da aplicação do algoritmo em imagens com diferentes posturas da mão. Os pontos reconhecidos como sendo feições são aqueles destacados na silhueta, em vermelho para os Picos e azul para os Vales. Os valores utilizados nos parâmetros de teste foram 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 27.(b) mostra a detecção das feições com ligeiras mudanças de escala na silhueta da mão. Figura 27 - Resultado da aplicação do algoritmo de detecção de feições à silhueta da mão. As feições são os pontos ressaltados na silhueta. (a) Mostra duas posturas da mão com os dedos estendidos Os valores utilizados para o teste foram k = 21 e = 60 T. (b) Mesmo com pequenas mudanças de escala, aproximando-se a mão da câmera, e mantendo os mesmos parâmetros que em (a) pode-se ver a detecção das feições. α

73 Reconhecimento Detecção dos Dedos Para que a detecção dos dedos seja um processo confiável e robusto, é importante ter como fonte feições que sempre possam ser encontradas na silhueta da mão. Os pontos detectados como sendo feições estão distribuídos em conjuntos isolados, os quais agrupam pontos com características semelhantes e representam um Pico ou um Vale na silhueta. Na Figura 27 pode-se ver que todos os Picos da mão são detectados, mas não são detectados todos os Vales. A k-curvatura dos Vales é um valor que depende da abertura da junção entre os dedos e, visto que essa abertura pode ser alterada, os parâmetros para a detecção das feições nem sempre garantem sua detecção. Na Figura 27(b) pode-se ver um Vale que não é detectado porque a abertura da junção é maior do que o limiar para a k-curvatura. Já que os Vales nem sempre são detectados na silhueta, eles não são considerados fontes confiáveis para o reconhecimento. Desse modo, no processo de detecção dos dedos, os pontos que representam os Vales são descartados. A detecção de um ponto que representa um dedo é o processo que analisa cada conjunto de pontos que representa os Picos e escolhe o ponto que possui o maior valor de k-curvatura dentro de cada conjunto. Assim, para cada conjunto de pontos que representa os Picos é detectado um ponto que representa um dedo. Na Figura 28 são mostrados os resultados desse processo aplicados a uma mão com três dedos estendidos. Agora existe apenas um ponto representando cada dedo. Figura 28 - Resultado do processo de detecção dos dedos da mão. Os pontos estão ressaltados na silhueta. Além da posição 2D do ponto que representa o dedo, nesta etapa também é calculada a direção de cada um dos dedos. A direção é representada por uma linha que passa através do dedo e aproxima sua direção (Figura 29(a)). Cada

74 Reconhecimento 74 ponto P i 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 P i. 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 P ] e o trajeto [ i P( i k ) [ ( i k) i P + ] da silhueta são divididos por n pontos igualmente espaçados. Depois, partindo do ponto P i, são formados n pares de pontos juntando pontos a cada lado do ponto P i (Figura 29(b)). Uma vez feito isso, os pontos de referência procurados são todos os pontos médios entre cada par de pontos. Na Figura 29(b) é mostrado um exemplo com 4 pares de pontos; os pontos de referência são marcados com uma x. Na segunda etapa, tendo esses pontos de referencia x e o ponto P i, é 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 P i. Figura 29 - Cálculo da direção dos dedos. (a) A direção aproximada de cada um dos dedos é mostrada como sendo uma linha. (b) A linha que representa a direção do dedo é a que passa pelo ponto P i 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.

75 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 Reconhecimento de Gestos Antes de falar do processo de reconhecimento é importante definir um conjunto pré-determinado de gestos que serão reconhecidos. Conforme dito na primeira parte deste capítulo, o conjunto de gestos será representado por apenas 4 gestos da mão, os quais são mostrados na Figura 30. Esses gestos por sua vez estão divididos em três classes: FECHADO, INDICE e ESTENDIDO. O nome de cada uma das classes indica uma característica da mão com relação aos dedos. FECHADO é uma classe de gesto que não apresenta nenhum dedo estendido. Esse gesto, já considerando algumas aplicações, poderia ser utilizado para indicar algum tipo de inatividade. INDICE é uma classe de gesto que apresenta um ou dois dedos da mão estendidos. Esse gesto é utilizado principalmente para interagir com as aplicações. INDICE engloba dois gestos parecidos, os quais são chamados de INDICE_1 e INDICE_2, cuja única diferença é a falta do dedo polegar em INDICE_1. ESTENDIDO é uma classe de gesto que apresenta mais do que dois dedos estendidos. O processo de reconhecimento dos gestos é um processo de classificação baseado em feições locais situadas ao longo da silhueta da mão. Essas feições são os pontos que representam os dedos e que foram calculados na etapa anterior. Para detectar um gesto é feita uma operação de comparação entre o número de dedos detectados e o número de dedos presentes em cada um dos gestos predefinidos para o reconhecimento. Nesta etapa se espera que os únicos gestos utilizados sejam os 4 gestos previamente definidos. Dentre os 4 gestos reconhecíveis existe um gesto FECHADO que apenas possui informação gestual e não possui parâmetros dos dedos e valores que possam ser aproveitados.

76 Reconhecimento 76 Figura 30 - Conjunto predefinido de gestos que são reconhecidos. Os 4 gestos são divididos em três classes: FECHADO, INDICE e ESTENDIDO. FECHADO é uma classe de gesto que não apresenta nenhum dedo estendido. INDICE representa uma classe com dois tipos de gestos: INDICE_1 (dedo índice estendido) e INDICE_2 (dedo índice e polegar estendidos). ESTENDIDO é uma classe de gesto que apresenta mais de dois dedos na mão estendidos. Quando não são detectados dedos na mão, o gesto inferido é o FECHADO. Quando são detectados mais do que dois dedos na mão, o gesto inferido é o ESTENDIDO. Se forem detectados um ou dois dedos, então, dependendo do número dos dedos, é inferido um gesto da classe INDICE. Este processo de inferência de gestos baseado no número de dedos pode também ser representado como sendo o reconhecimento de tokens feito por um Autômato Finito Determinista (Figura 31). Nesse autômato existe um único símbolo no vocabulário, d, que significa dedo. Há 4 estados diferentes, sendo três deles, q2, q3 e q4, estados finais ou de reconhecimento. O autômato só é testado quando existem cadeias de símbolos d que podem ser reconhecidos. No caso da mão FECHADA o autômato não é testado. Os estados de reconhecimento q2, q3 e q4 correspondem aos gestos INDICE_1, INDICE_2 e ESTENDIDO, respectivamente.

77 Reconhecimento 77 Figura 31 - Autômato Finito Determinista que representa o processo de inferência dos gestos com base no número de dedos d detectados na silhueta da mão. O único símbolo do vocabulário é d, que significa dedo. Os estados de reconhecimento q2, q3 e q4 representam os gestos INDICE_1, INDICE_2 e ESTENDIDO, respectivamente. Ao contrário dos gestos FECHADO e ESTENDIDO, nos gestos INDICE é necessário descobrir qual dos dedos é o índice. No caso de ser detectado apenas um dedo, este é assumido como sendo o índice. Quando dois dedos são detectados, o dedo índice é aquele que está à direita do outro (isto se aplica à mão direita). Já que os pontos da silhueta são armazenados na ordem antihorária, convém mencionarmos o conceito de Distância na Silhueta DNS P i, P ) ( j como sendo o número de pontos da silhueta entre o ponto P i e o ponto P j. Utilizando uma heurística simples podemos dizer que se DNS ( P, P ) N / 2 i j < então P i é o dedo índice e está à direita de P j ; se não, P j é o dedo índice e está à direita de P i. 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 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

78 Reconhecimento 78 avaliar o resultado do número de dedos reconhecidos na mão e os demais visaram avaliar o reconhecimento dos gestos predefinidos. Para avaliar o reconhecimento do número de dedos foi considerado um intervalo de tempo, de aproximadamente um minuto, contendo um determinado número de quadros. Durante esse tempo, dependendo do número de dedos testados, a mão foi mantida com um número específico de dedos. Ao final desta etapa foi contabilizado o número de acertos e erros no reconhecimento dos dedos. Com base nesses valores foram calculadas as porcentagens de acerto e erro para cada número de dedos presente na mão. A Tabela 1 mostra os resultados dos testes realizados para avaliar o reconhecimento do número de dedos presente na mão. Tabela 1 - Resultado dos testes feitos para a avaliação do reconhecimento do número de dedos presente na mão. Para cada número de dedos é apresentada uma estatística indicando o número e a porcentagem de acertos e erros ao longo do teste. Para a avaliação do reconhecimento dos gestos predefinidos, da mesma forma que no teste anterior, foi levado em conta um intervalo de tempo durante o qual o gesto da mão foi mantido. Ao final, foi contabilizado o número de acertos e erros no reconhecimento de cada um dos gestos. A Tabela 2 mostra os resultados da avaliação para o reconhecimento dos gestos predefinidos.

79 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 Considerações Finais do Capítulo Para a etapa do reconhecimento foi considerado apenas um conjunto de 4 gestos. Esses gestos procuram ser gestos básicos que ajudem no processo de reconhecimento e permitam mostrar que, a partir de um conjunto pequeno, podem ser construídas diferentes aplicações. As únicas feições consideradas foram os Picos e Vales. A silhueta possui mais informações relevantes que também podem ser consideras, mas requerem abordagens mais especificas para procurar outras feições. Características globais podem ser utilizadas como base para construir modelos de reconhecimento mais sofisticados baseados na silhueta. Neste trabalho procuramos caracterizar os gestos e posições com apenas as feições de Picos e Vales. Apesar de serem só duas, muitos gestos podem ser reconhecidos de forma estável.

80 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 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 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.

81 Aplicações Controlando o Cursor do Mouse Nesta aplicação, os gestos, seus parâmetros e algumas combinações destes são aplicados no controle do cursor de um mouse convencional. Para simular o cursor do mouse é necessária a realização de duas tarefas importantes. A primeira é movimentar o cursor e a segunda é simular os eventos básicos utilizando os gestos reconhecidos. Portanto, nesta aplicação, numa primeira parte é definido um mecanismo que, utilizando a posição do dedo índice, define a direção do movimento e a posição do cursor ao longo do tempo. Na segunda parte, é explicado que gestos e quais combinações destes foram utilizados para simular os eventos básicos do mouse. Os eventos a simular serão MOVIMENTAR, CLICK, CLICK_DUPLO, CLICK_DIREITO e ARRASTAR. Existem diferentes formas de mapear as coordenadas da posição do dedo detectado na imagem para as coordenadas da tela onde o cursor é exibido. Como a resolução da imagem capturada pela câmera na maioria dos casos é menor do que a resolução da tela, mecanismos de mapeamento direto, da imagem para a tela, têm problemas de escala. Um pixel na imagem muitas vezes representa um número maior de pixels na tela. Para evitar esse problema, nesta aplicação optamos por um mecanismo de mapeamento relativo. Nesse mecanismo, é necessário definir um ponto de referência na imagem e, depois, levando em conta a posição atual do dedo em relação a esse ponto de referência, é calculada a direção do movimento e a posição final do cursor. Na Figura 32 é esquematizado o mecanismo utilizado para movimentar o cursor. Os pontos p1, p2 e p3 representam três posições diferentes (em quadros diferentes) do dedo índice. Esses pontos, em relação o ponto de referência O, formam três vetores, os quais indicam a posição do dedo em relação ao ponto de referência. As coordenadas (x, y) dos vetores são calculadas levando em conta o ponto de referência O como sendo a origem. A cada quadro, a direção do movimento no cursor é dada pelas coordenadas (x, y) do vetor e a velocidade (ou salto) do movimento é dado pela norma do vetor.

82 Aplicações 82 Figura 32 - Mecanismo de movimento no cursor. Para cada ponto p1, p2 e p3, a direção do movimento é dada pelas coordenadas (x,y) do vetor e a velocidade do movimento é dada pela norma do vetor. Em torno do ponto de referência O existe uma área de inatividade na qual os pontos que caem nessa área (p2) não ocasionam nenhum movimento. Dada essa configuração, a única forma de manter o cursor estático seria com vetores cujas normas fossem zero. Isto na prática é difícil de se conseguir, pois implicaria manter o dedo totalmente parado no ponto O. Além disso, na etapa de detecção dos dedos sempre existem, entre os quadros, pequenas variações na posição detectada. Considerando este fato, em volta do ponto O foi definida uma área de inatividade onde os pontos que caem nessa área (p. ex., o ponto p2) não ocasionam movimento no cursor. Os únicos gestos que geram o evento MOVIMENTAR são o INDICE_2 e o INDICE_1 (estes gestos estão ilustrados na Figura 30). No caso do gesto INDICE_2, ele somente movimenta o cursor e não executa nenhum evento. No caso do gesto INDICE_1, o movimento é feito combinado ao evento ARRASTAR. A Figura 33 mostra o gesto INDICE_2 indicando uma direção específica de movimento para o cursor. Isto significa que, a partir da sua última posição, o cursor se movimenta na direção indicada pelo vetor e com saltos do tamanho da sua norma.

83 Aplicações 83 Figura 33 - Mecanismo de movimento do cursor. O vetor formado entre a posição do dedo índice e o ponto de referência indica a direção do movimento. A cada quadro este vetor é somado à última posição do cursor. Para simular o evento CLICK_DIREITO foi utilizado o gesto ESTENDIDO (mostrado na Figura 30). Assim, cada vez que este gesto é apresentado, o cursor do mouse se mantém na sua última posição e invoca o evento CLICK_DIREITO do mouse. Para simular o evento CLICK foi utilizada uma seqüência dos gestos INDICE_2 e INDICE_1. Cada vez que existe uma seqüência de mudança do gesto INDICE_2 para o gesto INDICE_1 e deste novamente para INDICE_2, essa seqüência é considerada como sendo um evento CLICK. Este depende do tempo e, para ser validado, a seqüência dos gestos deve ser feita dentro do intervalo de tempo T predefinido, como mostra a Figura 34. A partir do gesto corrente (atual) é analisada a seqüência de gestos anteriores. Se, dentro do intervalo de tempo definido existe o padrão de mudança procurado, então e evento CLICK é validado. Figura 34 - Padrão de mudança do evento CLICK. Na nossa aplicação, o intervalo de tempo foi definido em número de quadros, T=20. Entre os gestos INDICE_2 pode haver vários gestos INDICE_1. A partir do gesto corrente (atual) é analisada a seqüência em busca do padrão de mudança requerido.

84 Aplicações 84 Para simular o evento ARRASTAR foi utilizado o gesto INDICE_1. O evento acontece enquanto o gesto INDICE_1 é mantido. Para validar o evento ARRASTAR, o gesto INDICE_1 deve ser mantido além de um determinado tempo t (Figura 35). Este tempo é importante para poder diferenciar se o gesto INDICE_1 mostrado indica um evento ARRASTAR ou simplesmente faz parte da seqüência do evento CLICK. Figura 35 - Evento ARRASTAR. O evento acontece enquanto o gesto INDICE_1 é mantido. Para validar o evento, o intervalo de tempo em que o gesto INDICE_1 é mantido deve ser maior do que o t predefinido. Na nossa aplicação o tempo foi t =T-5. O tempo t está relacionado com o tempo T. O evento CLICK_DUPLO é simplesmente uma seqüência de dois eventos CLICK consecutivos. Na Tabela 3 são mostrados os resultados de um teste de reconhecimento feito para os eventos CLICK e CLICK_DUPLO. Gesto Total de Total de Total de Porcentagem Porcentagem Tentativas Acertos Erros de Acerto de Erro CLICK % 1.6 % CLICK_D % 7.5 % Tabela 3 - Resultado do teste de reconhecimento dos eventos CLICK e CLICK_DUPLO. Na Figura 36 é mostrado o diagrama de fluxo do controle do cursor. A entrada é sempre um gesto reconhecido e os eventos são gerados dependendo do gesto que no momento está sendo processado. O evento CLICK é validado para diferenciar o evento CLICK do evento MOVIMENTAR. Também o evento ARRASTAR é validado para diferenciar se o gesto INDICE_1 é apenas parte da seqüência do evento CLICK.

85 Aplicações 85 Figura 36 - Diagrama de fluxo do controle do cursor do mouse. Os eventos são validados dependo do gesto que está sendo processado. O evento CLICK é validado para diferenciar o CLICK do evento MOVIMENTAR. O evento ARRASTAR é validado para diferenciar se o gesto INDICE_1 indica o evento ARRASTAR o simplesmente faz parte da seqüência do CLICK. A seguir são apresentadas algumas imagens que mostram a implementação do controle do cursor feita para controlar o mouse do sistema Windows. Estas imagens mostram os gestos sendo mapeados em eventos do mouse, o que permite interagir com vários programas suscetíveis a esses eventos. Figura 37 - Gesto ESTENDIDO sendo mapeado para o evento CLICK_DIREITO do mouse no sistema Windows. Ao gerar o evento no arquivo selecionado, é mostrado o menu disponível no arquivo.

86 Aplicações 86 Figura 38 - Gesto INDICE_2 sendo utilizado para movimentar o ponteiro do mouse. Utilizando o gesto INDICE_2 podem-se selecionar itens do menu. Figura 39 - Gesto INDICE_1 sendo mapeado para o evento ARRASTAR, o qual é utilizado para desenhar letras no PAINT 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

87 Aplicações 87 ao longo do eixo horizontal, em volta do ponto de referência. Se a posição (x, y) do dedo está fora da área de inatividade, quer dizer que existe movimento. Dependendo de se a coordenada y da posição do dedo é maior (ex. p3) ou menor (ex. p1) do que a coordenada y do ponto de referência, inferem-se as direções PARA_FRENTE e PARA_TRAS, respectivamente. No caso do ponto p2 não se infere nenhum movimento. O valor da direção do dedo índice é dado por um ângulo aproximado que o dedo faz com a horizontal (cf. Capítulo 5). Os vetores (p1, p2 e p3) apresentados na Figura 40(b) representam diferentes direções do dedo índice. Se o valor do ângulo é menor (ex. p3) do que um valor α (ângulo limite da área de inatividade), a direção do movimento inferida é a DIREITA. Se o ângulo for maior (ex. p1) do que α, a direção de movimento inferida é a ESQUERDA. Para as direções próximas ao eixo vertical (ex. p2) não existe movimento. Figura 40 - Mecanismo utilizado para calcular a direção do movimento. (a) Mecanismo utilizado para calcular as direções PARA_FRENTE e PARA_TRAS. (b) Mecanismo utilizado para calcular as direções DIREITA e ESQUERDA. O valor utilizado na nossa implementação foi α = 75. No que se refere aos eventos que devem ser gerados, foram empregados alguns gestos e uma combinação destes. Para simular o evento ATIRAR, foi utilizado o gesto INDICE_1. O evento ATIRAR é mantido enquanto o gesto INDICE_1 também é mantido. Este gesto é utilizado da mesma maneira como foi usado no evento ARRASTAR da aplicação anterior (veja as Figuras 41(a) e 42(a)). Existe a possibilidade de se selecionar a arma com a qual se quer atirar. Para simular o evento MUDAR_ARMA foi utilizada uma seqüência específica

88 Aplicações 88 dos gestos INDICE_2 e INDICE_1. Neste evento foram empregados os gestos da mesma maneira que no evento CLICK da aplicação anterior. Para validar o evento deve existir uma seqüência de gestos que começa em INDICE_2, muda para INDICE_1 e novamente muda para INDICE_2. Além da arma convencional, existe a possibilidade de se soltar explosivos que são ganhos no transcurso do jogo. Para simular o evento SOLTAR_EXPLOSIVO foi utilizado o gesto ESTENDIDO (Figura 42(b)). A seguir são apresentadas algumas imagens que mostram cenas do jogo controlado com os gestos reconhecidos. Nas imagens são mostrados os eventos gerados de acordo com a direção e a posição do dedo índice e os gestos reconhecidos. Figura 41 - (a) Geração do evento ATIRAR utilizando o gesto INDICE_1. A posição e a direção do dedo índice não indicam movimento. (b) Movimentação do helicóptero utilizando o gesto INDICE_2. A posição e a direção de dedo indicam os eventos PARA_FRENTE e PARA_DIREITA. Neste caso não é gerado o evento ATIRAR.

89 Aplicações 89 Figura 42 - (a) Utilizando o gesto INDICE_1 para gerar o evento ATIRAR e ao mesmo tempo movimentar o helicóptero. A posição e a direção do dedo indicam a direção do movimento PARA_TRAS e PARA_ESQUERDA. (b) Gesto ESTENDIDO sendo utilizado para gerar o evento SOLTAR_EXPLOSIVO 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.

90 Aplicações 90 Existem outras mudanças nos gestos que podem gerar outros eventos, mas foram somente duas as utilizadas. Estas seqüências de gestos têm a particularidade de terem o mesmo ponto de partida (o gesto FECHADO). Na Figura 43 são mostrados os diferentes estados da aplicação como sendo um autômato finito. O autômato é composto por quatro estados; dois estados não terminais q0 e q1 e dois estados terminais q2 e q3, os quais geram os eventos AVANÇAR e RECUAR, respectivamente. As transições entre os estados representam os gestos que são mostrados ao longo do tempo. O estado inicial no autômato é o estado q0. Figura 43 - Estados da aplicação representados como sendo um autômato finito de quatro estados. Os estados q2 e q3 geram os eventos AVANÇAR e RECUAR, respectivamente. A seqüência que gera qualquer um dos dois eventos passa pelo estado q1. Dependendo do gesto da transição pode-se se chegar aos estados q2 ou q3, gerando os respectivos eventos. Isto quer dizer que qualquer um dos dois caminhos que geram os eventos passa pela mão fechada. Depois que os eventos são gerados, volta-se ao estado inicial no qual novamente são analisados os gestos subseqüentes. Antes de se voltar ao estado inicial, existe a possibilidade de se definir um retardo na transição, esperando-se assim que o evento do teclado seja gerado pelo sistema antes de voltar novamente ao estado inicial. A seguir são apresentadas duas imagens que mostram a geração dos eventos AVANÇAR e RECUAR na nossa implementação para mexer slides no PowerPoint.

91 Aplicações 91 Figura 44 - Geração do evento AVANÇAR. A mudança do gesto (a) FECHADO para o gesto (b) ESTENDIDO gera o evento AVANÇAR, que é refletido na (c) tela do monitor. Figura 45 - Geração do evento RECUAR. A mudança do gesto (a) FECHADO para o gesto (b) INIDICE_2 gera o evento RECUAR, que é refletido na (c) tela do monitor Conclusões Parciais Na implementação das três aplicações foram cumpridos todos os requisitos funcionais e não funcionais descritos no capítulo 2. Os dedos e os gestos foram adequadamente detectados, identificados e rastreados em tempo real, permitindo nos três casos interações maiores aos 20 quadros por segundo (20 Hz). 1 No que diz respeito ao ambiente e às condições de iluminação, para estas aplicações não foi feita nenhuma mudança que favoreça o seu desempenho. Em nenhuma das aplicações foram incluídas luzes ou ambientes especiais para a interação. Podemos dizer que houve uma adaptação ao ambiente e não uma adaptação do ambiente para o funcionamento das aplicações. Tal adaptação depende do ajuste dos parâmetros da subtração de fundo em cada ambiente. A influência do ambiente e das condições de iluminação é maior quanto maior for a área do ambiente capturada pela câmera. No caso da aplicação feita para movimentar os slides, a influência do ambiente foi maior, gerando ruídos e 1 Alguns vídeos que mostram a interação nas três aplicações podem ser vistos em

DISSERTAÇÃO DE MESTRADO

DISSERTAÇÃO DE MESTRADO 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

Leia mais

6 Aplicações Detalhes da Implementação

6 Aplicações Detalhes da Implementação 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

Leia mais

4 Detecção de Silhueta

4 Detecção de Silhueta 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

Leia mais

2 Interfaces Baseadas em Visão

2 Interfaces Baseadas em Visão 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

Leia mais

Otávio de Pinho Forin Braga. Uma Arquitetura para Síntese de Imagens Fotorrealistas baseada em Técnicas de Monte Carlo DISSERTAÇÃO DE MESTRADO

Otávio de Pinho Forin Braga. Uma Arquitetura para Síntese de Imagens Fotorrealistas baseada em Técnicas de Monte Carlo DISSERTAÇÃO DE MESTRADO Otávio de Pinho Forin Braga Uma Arquitetura para Síntese de Imagens Fotorrealistas baseada em Técnicas de Monte Carlo DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós graduação em Informática

Leia mais

MouseCam: aplicação de controle do mouse via câmera

MouseCam: aplicação de controle do mouse via câmera MouseCam: aplicação de controle do mouse via câmera Introdução ao Processamento de Imagens COS756 PESC/COPPE/UFRJ 2013 1 Renan Garrot garrot@cos.ufrj.br 1. Introdução O processo de tracking por vídeo consiste

Leia mais

SQLLOMining: Obtenção de Objetos de Aprendizagem utilizando técnicas de Aprendizado de Máquina

SQLLOMining: Obtenção de Objetos de Aprendizagem utilizando técnicas de Aprendizado de Máquina Susana Rosich Soares Velloso SQLLOMining: Obtenção de Objetos de Aprendizagem utilizando técnicas de Aprendizado de Máquina Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção

Leia mais

Mauricio Kreczmarsky Guimarães Meinicke. Opacidade 3D na Visualização Volumétrica de Dados Sísmicos

Mauricio Kreczmarsky Guimarães Meinicke. Opacidade 3D na Visualização Volumétrica de Dados Sísmicos Mauricio Kreczmarsky Guimarães Meinicke Opacidade 3D na Visualização Volumétrica de Dados Sísmicos Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título de Mestre

Leia mais

Mapeamento Automático de Horizontes e Falhas em Dados Sísmicos 3D baseado no algoritmo de Gás Neural Evolutivo

Mapeamento Automático de Horizontes e Falhas em Dados Sísmicos 3D baseado no algoritmo de Gás Neural Evolutivo Aurélio Moraes Figueiredo Mapeamento Automático de Horizontes e Falhas em Dados Sísmicos 3D baseado no algoritmo de Gás Neural Evolutivo Dissertação de Mestrado Dissertação apresentada como requisito parcial

Leia mais

Implementação de um protópito de uma interface para um controlador de cadeira. de rodas guiado pela direção do olhar.

Implementação de um protópito de uma interface para um controlador de cadeira. de rodas guiado pela direção do olhar. Implementação de um protópito de uma interface para um controlador de cadeiras de rodas guiado pela direção do olhar. Vinícius Assis Saueia da Silva 18 de abril de 2005 1 Título Implementação de um protópito

Leia mais

Computação Gráfica. Agostinho Brito. Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte

Computação Gráfica. Agostinho Brito. Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte Computação Gráfica Agostinho Brito Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte 30 de julho de 2015 O que é computação gráfica Entrada Saída IMAGEM MODELO

Leia mais

Tatiana Waintraub. Modelagem da calçada de Copacabana. Dissertação de Mestrado

Tatiana Waintraub. Modelagem da calçada de Copacabana. Dissertação de Mestrado Tatiana Waintraub Modelagem da calçada de Copacabana Dissertação de Mestrado Dissertação apresentada como requisito parcial para a obtenção do grau de Mestre pelo Programa de Pós-graduação em Informática

Leia mais

Adriano Francisco Branco. Um modelo de programação para RSSF com. Dissertação de Mestrado

Adriano Francisco Branco. Um modelo de programação para RSSF com. Dissertação de Mestrado Adriano Francisco Branco Um modelo de programação para RSSF com suporte à reconfiguração dinâmica de aplicações Dissertação de Mestrado Dissertação apresentada ao Programa de Pós graduação em Informática

Leia mais

Pontifícia Universidade Católica do Rio de Janeiro. Departamento de Informática. Fundamentos de Computação Gráfica

Pontifícia Universidade Católica do Rio de Janeiro. Departamento de Informática. Fundamentos de Computação Gráfica 1. Imagens sísmicas Pontifícia Universidade Católica do Rio de Janeiro Departamento de Informática Fundamentos de Computação Gráfica Aluno: Stelmo Magalhães Barros Netto Relatório do trabalho Imagens Sísmicas

Leia mais

2 Reconhecimento Facial

2 Reconhecimento Facial 2 Reconhecimento Facial Em termos gerais, o reconhecimento facial é o processo pelo qual se mede o grau de similaridade entre duas imagens faciais com o proposito de identificar a um indivíduo ou de verificar

Leia mais

Descritores de Imagem (introdução)

Descritores de Imagem (introdução) Descritores de Imagem (introdução) André Tavares da Silva andre.silva@udesc.br Roteiro da aula Definição de descritor de imagem Extração de Característica Tipos Geral x Específico Global (cor, textura,

Leia mais

Reconstrução de cenas a partir de imagens através de Escultura do Espaço por Refinamento Adaptativo

Reconstrução de cenas a partir de imagens através de Escultura do Espaço por Refinamento Adaptativo Tese de doutorado Reconstrução de cenas a partir de imagens através de Escultura do Espaço por Refinamento Adaptativo por Anselmo A. Montenegro Orientadores: Marcelo Gattass, PUC-Rio Paulo Cezar Carvalho,

Leia mais

INF Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza

INF Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza INF2608 - Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza Trabalho 02 Visualização de Imagens Sísmicas e Detecção Automática de Horizonte Resumo Este trabalho

Leia mais

APLICAÇÃO DA VISÃO COMPUTACIONAL PARA SEGMENTAÇÃO DE OBJETOS EM IMAGENS CAPTURADAS POR EQUIPAMENTOS MÓVEIS.

APLICAÇÃO DA VISÃO COMPUTACIONAL PARA SEGMENTAÇÃO DE OBJETOS EM IMAGENS CAPTURADAS POR EQUIPAMENTOS MÓVEIS. APLICAÇÃO DA VISÃO COMPUTACIONAL PARA SEGMENTAÇÃO DE OBJETOS EM IMAGENS CAPTURADAS POR EQUIPAMENTOS MÓVEIS. João Marcelo RIBEIRO 1 Heber Rocha MOREIRA 2 Fiama F. S. do AMARAL 3 RESUMO Através da visão

Leia mais

ESPECIFICAÇÃO DE SOFTWARE

ESPECIFICAÇÃO DE SOFTWARE ESPECIFICAÇÃO DE SOFTWARE Integrantes do grupo: Joel Edu Sánchez Castro Fernando Hattori Miguel Angel Galarreta Valverde Felipe Martins dos Santos 1 SUMÁRIO DESCRIÇÃO...3 REQUISITOS...3 REQUISITOS FUNCIONAIS

Leia mais

Rastreamento de objeto e estimativa de movimento

Rastreamento de objeto e estimativa de movimento Hiroito Watanabe Rastreamento de objeto e estimativa de movimento Brasil 2015 Hiroito Watanabe Rastreamento de objeto e estimativa de movimento Relatório do trabalho 2 da disciplina de Processamento Digital

Leia mais

Descritores de Imagens

Descritores de Imagens Descritores de Imagens André Tavares da Silva PPGCA/UDESC Outubro de 2017 André Tavares da Silva (PPGCA/UDESC) Descritores de Imagens Outubro de 2017 1 / 18 Descritores Locais e Frameworks SIFT SURF Viola-Jones

Leia mais

PMR2560 Visão Computacional Detecção de cores e blobs. Prof. Eduardo L. L. Cabral

PMR2560 Visão Computacional Detecção de cores e blobs. Prof. Eduardo L. L. Cabral PMR2560 Visão Computacional Detecção de cores e blobs Prof. Eduardo L. L. Cabral Objetivos Detecção de cores; Detecção de blobs. Detecção de cores Cores são facilmente identificadas nas imagens. Cor a

Leia mais

Visão Computacional. Alessandro L. Koerich. Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR)

Visão Computacional. Alessandro L. Koerich. Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR) Visão Computacional Alessandro L. Koerich Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR) Análise da Imagem Análise da Imagem O algoritmo opera sobre a imagem e extrai

Leia mais

Teclado Virtual. MAC0420/MAC5744 Introdução Computação Gráfica. IME Instituto de Matemática e Estatística USP Universidade de São Paulo

Teclado Virtual. MAC0420/MAC5744 Introdução Computação Gráfica. IME Instituto de Matemática e Estatística USP Universidade de São Paulo Teclado Virtual MAC0420/MAC5744 Introdução Computação Gráfica - IME Instituto de Matemática e Estatística USP Universidade de São Paulo Grupo Cristina Fang Daniel M. G. Clua Paulo Cheque Vivian D. Betoni

Leia mais

Visão computacional. Juliana Patrícia Detroz Orientador: André Tavares Silva

Visão computacional. Juliana Patrícia Detroz Orientador: André Tavares Silva Visão computacional Juliana Patrícia Detroz Orientador: André Tavares Silva Visão computacional Tentativa de replicar a habilidade humana da visão através da percepção e entendimento de uma imagem; Fazer

Leia mais

Aplicação de Tags em Objetos de Sistemas de Visualização em Tempo Real

Aplicação de Tags em Objetos de Sistemas de Visualização em Tempo Real Fundamentos de Computação Gráfica Aplicação de Tags em Objetos de Sistemas de Visualização em Tempo Real Renato Deris Prado Tópicos principais 1. Introdução e Objetivos Sistemas de visualização em tempo

Leia mais

Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia

Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia Gabriel Tavares Malizia Alves Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia Dissertação de Mestrado Dissertação apresentada ao Programa de Pósgraduação

Leia mais

Bruno Loureiro Rezende. Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO

Bruno Loureiro Rezende. Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO Bruno Loureiro Rezende Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós-graduação em Informática

Leia mais

PMR2560 Visão Computacional Detecção de bordas. Prof. Eduardo L. L. Cabral

PMR2560 Visão Computacional Detecção de bordas. Prof. Eduardo L. L. Cabral PMR56 Visão Computacional Detecção de bordas Prof. Eduardo L. L. Cabral Objetivos Processamento de imagens: Características; Detecção de bordas. Características Tipos de características: Bordas; Cantos;

Leia mais

Computaçã. Visão Geral. Sistema Gráfico. Computação Gráfica. Pixels. Sistema Gráfico e o Frame Buffer. Introdução à Computação Gráfica

Computaçã. Visão Geral. Sistema Gráfico. Computação Gráfica. Pixels. Sistema Gráfico e o Frame Buffer. Introdução à Computação Gráfica Visão Geral Computaçã ção o Gráfica Introduçã ção, conceitos básicosb sicos, áreas relacionadas Introdução à Computação Gráfica Como funciona um sistema gráfico Como imagens são representadas Áreas relacionadas,

Leia mais

Descritores de Imagem (exemplos)

Descritores de Imagem (exemplos) Descritores de Imagem (exemplos) André Tavares da Silva andre.silva@udesc.br Baseado em Penatti (2009) e Silva (2011) Alguns exemplos Descritores baseados em cor Na literatura existem quatro abordagens

Leia mais

Segmentação, Rastreamento de Objetos e Detecção de Eventos Primitivos com Aplicação no Monitoramento Automático de Ações Humanas em Vídeo

Segmentação, Rastreamento de Objetos e Detecção de Eventos Primitivos com Aplicação no Monitoramento Automático de Ações Humanas em Vídeo Segmentação, Rastreamento de Objetos e Detecção de Eventos Primitivos com Aplicação no Monitoramento Automático de Ações Humanas em Vídeo Dissertação de Mestrado Aluno: Bruno Costa Orientador: Herman Gomes

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens Ciência da Computação Processamento Digital de Imagens Tópicos Detecção de Pontos Isolados Detecção de Linhas Prof. Sergio Ribeiro 2 Operações lógicas e aritméticas orientadas a vizinhança utilizam o conceito

Leia mais

5 Protótipo e Resultados Obtidos

5 Protótipo e Resultados Obtidos 5 Protótipo e Resultados Obtidos 5.1. Introdução Este capítulo apresenta de forma minuciosa o protótipo desenvolvido durante este trabalho, que é uma ferramenta capaz de realizar o treinamento e a detecção

Leia mais

Processamento de Imagens Digitais

Processamento de Imagens Digitais Processamento de Imagens Digitais Antonio Cesar Germano Martins 2º semestre de 2018 Apresentações Nascido em Sorocaba. Graduado em Bacharelado em Física pela UNICAMP em 1989, tendo participado de pesquisas

Leia mais

vértices dessas células. Exemplos de malhas estruturadas e não-estruturadas são apresentados na Figura 2.

vértices dessas células. Exemplos de malhas estruturadas e não-estruturadas são apresentados na Figura 2. 1 Introdução O termo visualização corresponde, no contexto desta dissertação, aos métodos que permitem a extração de informações relevantes a partir de conjuntos de dados complexos, com o auxílio de técnicas

Leia mais

Matchmaking Uma infraestrutura para alinhamento de esquemas

Matchmaking Uma infraestrutura para alinhamento de esquemas Raphael do Vale Amaral Gomes Matchmaking Uma infraestrutura para alinhamento de esquemas Dissertação de mestrado Dissertação apresentada como requisito parcial para a obtenção do grau de Mestre pelo Programa

Leia mais

DEINF - UFMA Especialização em Análise e Projeto de Sistema

DEINF - UFMA Especialização em Análise e Projeto de Sistema DEINF - UFMA Especialização em Análise e Projeto de Sistema Interação Humano Computador Prof. Anselmo C. de Paiva Depto de Informática - UFMA Estilos de Interação todas as formas como os usuários se comunicam

Leia mais

Reconhecimento de Tipos de Movimento Humano baseados no método GMM.

Reconhecimento de Tipos de Movimento Humano baseados no método GMM. Reconhecimento de Tipos de Movimento Humano baseados no método GMM. C.Gonçalves 1 ; L.A.Pereira; J.C.Pizolato, Jr.; A.Gonzaga. Escola de Engenharia de São Carlos-EESC-USP Av. Trab. São-Carlense, 400 CP

Leia mais

Sistema para Consultas sobre Banco de Dados Relacional Baseado em Palavras-Chave

Sistema para Consultas sobre Banco de Dados Relacional Baseado em Palavras-Chave Leandro dos Santos Nazareth Sistema para Consultas sobre Banco de Dados Relacional Baseado em Palavras-Chave Dissertação de Mestrado Dissertação apresentada ao Programa de Pós-Graduação em Informática

Leia mais

Transformação de Imagens Digitais em Código CNC Aprimoradas com Redes Neurais Artificiais

Transformação de Imagens Digitais em Código CNC Aprimoradas com Redes Neurais Artificiais Transformação de Imagens Digitais em Código CNC Aprimoradas com Redes Neurais Artificiais Abstract. Jader Teixeira 1, Alex Vinícios Telocken 1 1 Universidade de Cruz Alta (UNICRUZ) jader033139@unicruz.edu.br,

Leia mais

Detalhes do método proposto e da sua implementação são descritos nas

Detalhes do método proposto e da sua implementação são descritos nas 4 Método Proposto 4.1. Descrição geral do método O objetivo do método proposto consiste em avaliar o potencial dos FERNS para detecção das características faciais, em tempo real, em uma seqüência de imagens

Leia mais

Iam Vita Jabour. O Impacto de Atributos Estruturais na Identificação de Tabelas e Listas em Documentos HTML. Dissertação de Mestrado

Iam Vita Jabour. O Impacto de Atributos Estruturais na Identificação de Tabelas e Listas em Documentos HTML. Dissertação de Mestrado Iam Vita Jabour O Impacto de Atributos Estruturais na Identificação de Tabelas e Listas em Documentos HTML Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do grau de

Leia mais

Fundamentos da Computação Gráfica

Fundamentos da Computação Gráfica Fundamentos da Computação Gráfica Trabalho 2 Visão. Detecção de cantos. Manuel Alejandro Nodarse Moreno (1322198) Introdução. Detecção de cantos é uma abordagem utilizada em sistemas de visão computacional

Leia mais

QuadLOD: Uma Estrutura para a Visualização Interativa de Terrenos

QuadLOD: Uma Estrutura para a Visualização Interativa de Terrenos QuadLOD: Uma Estrutura para a Visualização Interativa de Terrenos Rodrigo Penteado R. de Toledo Orientador: Marcelo Gattass Co-orientador: Luiz Velho PUC-RIO - TecGraf OBJETIVO Gerar imagem a partir dos

Leia mais

Guia do CFTV Sistemas de CFTV, IP, Seguranà a Eletrà nica, Conectividade, Informaà ões, Fórum e Tecnologia.

Guia do CFTV Sistemas de CFTV, IP, Seguranà a Eletrà nica, Conectividade, Informaà ões, Fórum e Tecnologia. VideoCAD - Software para Projeto de sistemas de CFTV Categoria : CFTV Publicado por Eng Marcelo Peres em 05-Aug-2009 01:30 Um projeto bem elaborado garantirá que as próximas etapas sejam feitas com uma

Leia mais

Exemplos. Propagação (Reconstrução)

Exemplos. Propagação (Reconstrução) Processamento de Imagens Médicas Morfologia Matemática em Imagens Prof. Luiz Otavio Murta Jr. Informática Biomédica Depto. de Física e Matemática (FFCLRP/USP) Propagação (Reconstrução) lgoritmos Baseados

Leia mais

4 Extração dos 6 Graus de Liberdade e Aplicações de Teste

4 Extração dos 6 Graus de Liberdade e Aplicações de Teste 4 Extração dos 6 Graus de Liberdade e Aplicações de Teste Neste capítulo, apresentaremos como o dispositivo de rastreamento óptico proposto nesta dissertação consegue recuperar os seis graus de liberdade

Leia mais

Renata Thomaz Lins do Nascimento. Visualização por Imagens Auto-animadas de Campos Vetoriais Baseada na sua Topologia. Dissertação de Mestrado

Renata Thomaz Lins do Nascimento. Visualização por Imagens Auto-animadas de Campos Vetoriais Baseada na sua Topologia. Dissertação de Mestrado Renata Thomaz Lins do Nascimento Visualização por Imagens Auto-animadas de Campos Vetoriais Baseada na sua Topologia Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção

Leia mais

Marcos Borges Pessoa. Geração e execução automática de scripts de teste para aplicações web a partir de casos de uso direcionados por comportamento

Marcos Borges Pessoa. Geração e execução automática de scripts de teste para aplicações web a partir de casos de uso direcionados por comportamento Marcos Borges Pessoa Geração e execução automática de scripts de teste para aplicações web a partir de casos de uso direcionados por comportamento Dissertação de mestrado Dissertação apresentada como requisito

Leia mais

Francisco Benjamim Filho. XHITS: Estendendo o Algoritmo HITS para Extração de Tópicos na WWW DISSERTAÇÃO DE MESTRADO

Francisco Benjamim Filho. XHITS: Estendendo o Algoritmo HITS para Extração de Tópicos na WWW DISSERTAÇÃO DE MESTRADO Francisco Benjamim Filho XHITS: Estendendo o Algoritmo HITS para Extração de Tópicos na WWW DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós-Graduação em Informática Rio de Janeiro,

Leia mais

Modelagem em Experimentos Mistura-Processo para Otimização de Processos Industriais

Modelagem em Experimentos Mistura-Processo para Otimização de Processos Industriais Luiz Henrique Abreu Dal Bello Modelagem em Experimentos Mistura-Processo para Otimização de Processos Industriais Tese de Doutorado Tese apresentada como requisito parcial para obtenção do título de Doutor

Leia mais

Inteligência Artificial

Inteligência Artificial Universidade Federal de Campina Grande Departamento de Sistemas e Computação Pós-Graduação em Ciência da Computação Inteligência Artificial Aprendizagem (Redes Neurais - Complementar) Prof. a Joseana Macêdo

Leia mais

Visão Computacional. Alessandro L. Koerich. Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR)

Visão Computacional. Alessandro L. Koerich. Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR) Visão Computacional Alessandro L. Koerich Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR) Processamento da Informação Capturei uma Imagem! E agora? Assumindo que

Leia mais

CAPÍTULO V 5 CONCLUSÕES E RECOMENDAÇÕES 5.1 SÍNTESE DO TRABALHO DESENVOLVIDO

CAPÍTULO V 5 CONCLUSÕES E RECOMENDAÇÕES 5.1 SÍNTESE DO TRABALHO DESENVOLVIDO 182 CAPÍTULO V 5 CONCLUSÕES E RECOMENDAÇÕES 5.1 SÍNTESE DO TRABALHO DESENVOLVIDO Neste trabalho foi proposta uma metodologia para a automação da resseção espacial de imagens digitais baseada no uso hipóteses

Leia mais

Aluno: Tiago Andrade Togores Orientador: Professor Flávio Soares Côrrea da Silva

Aluno: Tiago Andrade Togores Orientador: Professor Flávio Soares Côrrea da Silva Aluno: Tiago Andrade Togores Orientador: Professor Flávio Soares Côrrea da Silva Interação humano-computador Interação humano-computador Interfaces naturais Interação humano-computador Interfaces naturais

Leia mais

System Control Symbolic Input Cap. 8 Livro Bowman Cap. 9 Livro Bowman 3D User Interfaces

System Control Symbolic Input Cap. 8 Livro Bowman Cap. 9 Livro Bowman 3D User Interfaces 3D User Interfaces http://www.tecgraf.puc-rio.br/~abraposo/inf2791/ Aula 07 System Control e Symbolic Input Alberto Raposo Tecgraf, Depto de Informática., PUC-Rio - Rio de Janeiro abraposo@ System Control

Leia mais

Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia

Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia Aluno: Gabriel Malizia Orientador: Professor Marcelo Gattass Co-Orientador: Professor Paulo Cezar Carvalho

Leia mais

RECONHECIMENTO FACIAL UTILIZANDO EIGENFACES

RECONHECIMENTO FACIAL UTILIZANDO EIGENFACES Universidade Federal do Rio de Janeiro Instituto Alberto Luiz Coimbra de Pós-Graduação e Pesquisa de Engenharia Programa de Engenharia de Sistemas e Computação Rio de Janeiro, RJ Brasil RECONHECIMENTO

Leia mais

Sistema de Reconhecimento de Logotipos

Sistema de Reconhecimento de Logotipos Sistema de Reconhecimento de Logotipos Fellipe Duarte, Saulo T. Oliveira {duartefellipe,sto}@cos.ufrj.br Relatório Técnico, Introdução ao Processamento de Imagens Programa de Engenharia de Sistemas e Computação

Leia mais

Aula 7 - Representação e Descrição de Estruturas Bi-dimensionais. Prof. Adilson Gonzaga

Aula 7 - Representação e Descrição de Estruturas Bi-dimensionais. Prof. Adilson Gonzaga Aula 7 - Representação e Descrição de Estruturas Bi-dimensionais Prof. Adilson Gonzaga 1 Introdução Objetos ou Segmentos são representados como uma coleção de pixels em uma imagem. Para o reconhecimento

Leia mais

RV PlanoVision Viewer

RV PlanoVision Viewer RV PlanoVision Viewer Visualizador de Realidade Virtual com Estereoscopia Horizontal e Rastreamento de Cabeça Djalma Lúcio Soares da Silva Sumário I.Introdução... 3 II.Relatório... 4 1.Objetivo... 4 2.Arquitetura...

Leia mais

Francisco Eduardo Torres Cursino de Moura. Uma proposta para Rendering Baseado em Imagens em celulares

Francisco Eduardo Torres Cursino de Moura. Uma proposta para Rendering Baseado em Imagens em celulares Francisco Eduardo Torres Cursino de Moura Uma proposta para Rendering Baseado em Imagens em celulares Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título de Mestre

Leia mais

Conceitos Básicos INTRODUÇÃO À COMPUTAÇÃO E SUAS APLICAÇÕES

Conceitos Básicos INTRODUÇÃO À COMPUTAÇÃO E SUAS APLICAÇÕES FACULDADE DOS GUARARAPES INTRODUÇÃO À COMPUTAÇÃO E SUAS APLICAÇÕES Conceitos Básicos Prof. Rômulo César romulodandrade@gmail.com romulocesar@faculdadeguararapes.edu.br www.romulocesar.com.br INTRODUÇÃO

Leia mais

Integração de Ontologia com Modelagem de Processo: Um Método para Facilitar a Elicitação de Requisitos

Integração de Ontologia com Modelagem de Processo: Um Método para Facilitar a Elicitação de Requisitos Ana Luiza Ávila Cerqueira Integração de Ontologia com Modelagem de Processo: Um Método para Facilitar a Elicitação de Requisitos Dissertação de Mestrado Dissertação apresentada como requisito parcial para

Leia mais

5 Exemplos e testes 5.1 Exemplos de uso da Biblioteca Simula ao de um radar rodovi ario de monitoramento de velocidade automotiva

5 Exemplos e testes 5.1 Exemplos de uso da Biblioteca Simula ao de um radar rodovi ario de monitoramento de velocidade automotiva 5 Exemplos e testes Com o objetivo de experimentar a aplicação deste trabalho em simulações de radares, foram desenvolvidos exemplos de simulações de cenários realistas. Cinco simulações foram experimentadas:

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens 1 Ciência da Computação Processamento Digital de Imagens Objetivos e Prof. Sergio Ribeiro Tópicos Percepção por Máquina Imagens e Computação Gráfica, Armazenamento e Exibição Processamento Digital de Imagens

Leia mais

SISTEMA AUTOMÁTICO PARA AVALIAÇÃO POSTURAL BASEADO EM DESCRITORES DE IMAGENS

SISTEMA AUTOMÁTICO PARA AVALIAÇÃO POSTURAL BASEADO EM DESCRITORES DE IMAGENS SISTEMA AUTOMÁTICO PARA AVALIAÇÃO POSTURAL BASEADO EM DESCRITORES DE IMAGENS GIAN LUCAS DE OLIVEIRA PAIVA GRADUANDO EM ENGENHARIA ELETRÔNICA ORIENTADOR: PROF. CRISTIANO JACQUES MIOSSO DR. EM ENGENHARIA

Leia mais

Informática I. Aula 2. Ementa

Informática I. Aula 2.  Ementa Informática I Aula 2 http://www.ic.uff.br/~bianca/informatica1/ Aula 2-29/08/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript e

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens Ciência da Computação Processamento Digital de Imagens Objetivos e Introdução Prof. Sergio Ribeiro Tópicos Introdução Percepção por Máquina Imagens e Computação Gráfica Complexidade de um Sistema Elementos

Leia mais

RECONHECIMENTO FACIAL 2D

RECONHECIMENTO FACIAL 2D RECONHECIMENTO FACIAL 2D PARA SISTEMAS DE AUTENTICAÇÃO EM DISPOSITIVOS MÓVEIS Luciano Pamplona Sobrinho Orientador: Paulo César Rodacki Gomes ROTEIRO Introdução Objetivos Fundamentação Teórica Conceitos

Leia mais

Processamento de Imagens

Processamento de Imagens Processamento de Imagens Morfologia Matemática Binária Prof. Luiz Eduardo S. Oliveira Universidade Federal do Paraná Departamento de Informática http://web.inf.ufpr.br/luizoliveira Luiz S. Oliveira (UFPR)

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens 1 Ciência da Computação Processamento Digital de Imagens Prof. Sergio Ribeiro Tópicos Introdução Espectro Eletromagnético Aquisição e de Imagens Sensoriamento Remoto 2 Introdução Espectro Eletromagnético

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens Ciência da Computação Processamento Digital de Imagens Prof. Sergio Ribeiro Tópicos Introdução Espectro Eletromagnético Aquisição e Digitalização de Imagens Efeitos da Digitalização Digitalização Sensoriamento

Leia mais

5. Tipos de produtos multimédia Baseados em páginas

5. Tipos de produtos multimédia Baseados em páginas 5. Tipos de produtos multimédia 5.1. Baseados em páginas 1 2 Baseados em páginas Os tipos de produtos multimédia baseados em páginas são desenvolvidos segundo uma estrutura organizacional do tipo espacial

Leia mais

Computação e Imagens: PI, CG e Visualização. Computação Visual

Computação e Imagens: PI, CG e Visualização. Computação Visual Computação e Imagens: PI, CG e Visualização Computação Visual Instituto de Ciências Matemáticas e de Computação ICMC-USP São Carlos, 2016 1 Roteiro Visão Geral das áreas da computação que envolvem manipulação

Leia mais

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica Introdução Geral a Computação Gráfica Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de 2 Introdução Geral a O que é CG? Áreas de Atuação Definição, Arte e Matemática Mercado

Leia mais

2 SIFT (Scale Invariant Feature Transform)

2 SIFT (Scale Invariant Feature Transform) SIFT (Scale Invariant Feature Transform) O SIFT é um algoritmo de visão computacional proposto e publicado pelo pesquisador David Lowe (Lowe, 1999), professor do departamento de Ciência da Computação na

Leia mais

Fazendo máquinas enxergarem com OpenCV. TCHÊLINUX 2017 Felipe Aguiar Corrêa

Fazendo máquinas enxergarem com OpenCV. TCHÊLINUX 2017 Felipe Aguiar Corrêa Fazendo máquinas enxergarem com OpenCV TCHÊLINUX 2017 Felipe Aguiar Corrêa Quem é esse cara aí? UFPEL Ciência da Computação Visão Computacional Rastreamento de Pedestres Visão Computacional Sub-área da

Leia mais

Revisão FUI. Tiago Alves de Oliveira

Revisão FUI. Tiago Alves de Oliveira Revisão FUI Tiago Alves de Oliveira Definição de Informática O que é informática? Onde é usado a informática nos dias atuais? Definição de Informática Informática é um termo usado para descrever o conjunto

Leia mais

Princípios sobre imagens digitais

Princípios sobre imagens digitais Princípios sobre imagens digitais Aula 1 LPV 5731 - ANÁLISE DE IMAGENS DE SEMENTES E PLÂNTULAS Programa de pós-graduação em Fitotecnia Francisco G Gomes-Junior Escola Superior de Agricultura Luiz de Queiroz

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens Ciência da Computação Processamento Digital de Imagens Propriedades de Imagem Digital Prof. Sergio Ribeiro Tópicos Propriedades de uma Imagem Digital Vizinhança Conectividade Operações Lógicas e Aritméticas

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens Ciência da Computação Processamento Digital de Imagens Propriedades de Imagem Digital Prof. Sergio Ribeiro Tópicos Propriedades de uma Imagem Digital Vizinhança e Aritméticas Efeitos de em Pixel a Pixel

Leia mais

-Periféricos -Dispositivos de Entrada/Saída - Unidade de medida. Gustavo Catarino da Costa Wilson Coelho Neto Paulo Wesley Fogaça

-Periféricos -Dispositivos de Entrada/Saída - Unidade de medida. Gustavo Catarino da Costa Wilson Coelho Neto Paulo Wesley Fogaça -Periféricos -Dispositivos de Entrada/Saída - Unidade de medida Gustavo Catarino da Costa Wilson Coelho Neto Paulo Wesley Fogaça O que é o Computador? Máquina composta de partes eletrônicas e eletromecânicas

Leia mais

VISÃO DIGITAL, OS OLHOS DO FUTURO

VISÃO DIGITAL, OS OLHOS DO FUTURO VISÃO DIGITAL, OS OLHOS DO FUTURO Eduardo Marcelo Nicastro Carvalho*, Luana Fonseca Guimarães*, Priscila Amâncio da Silva*, Maurício Neves Asenjo** * Acadêmicos da Faculdade de Ciências e de Tecnologia

Leia mais

Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão

Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão Luiz Rodolfo Neves Caldeira Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão Dissertação de Mestrado Dissertação apresentada como requisito

Leia mais

Implementação de um Dispositivo de Rastreamento Óptico com 6 Graus de Liberdade para Interação com Aplicações de Realidade Virtual

Implementação de um Dispositivo de Rastreamento Óptico com 6 Graus de Liberdade para Interação com Aplicações de Realidade Virtual Manuel Eduardo Loaiza Fernández Implementação de um Dispositivo de Rastreamento Óptico com 6 Graus de Liberdade para Interação com Aplicações de Realidade Virtual Dissertação de Mestrado Dissertação apresentada

Leia mais

Visualização Volumétrica de Horizontes em Dados Sísmicos 3D

Visualização Volumétrica de Horizontes em Dados Sísmicos 3D Pedro Mário Cruz e Silva Visualização Volumétrica de Horizontes em Dados Sísmicos 3D Tese de Doutorado Tese apresentada como requisito parcial para a obtenção do título de Doutor pelo Programa de Pós-Graduação

Leia mais

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

Estrutura e Funcionamento dos Computadores (Conceitos Básicos) Estrutura e Funcionamento dos Computadores (Conceitos Básicos) Sistema Computacional Peopleware (usuário) Software (programas) Hardware (máquina) Hardware Corresponde à parte material, aos componentes

Leia mais

Daniel Ribeiro Trindade. Técnicas de Navegação 3D Usando o Cubo de Distâncias DISSERTAÇÃO DE MESTRADO. Programa de Pós graduação em Informática

Daniel Ribeiro Trindade. Técnicas de Navegação 3D Usando o Cubo de Distâncias DISSERTAÇÃO DE MESTRADO. Programa de Pós graduação em Informática Daniel Ribeiro Trindade Técnicas de Navegação 3D Usando o Cubo de Distâncias DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós graduação em Informática Rio de Janeiro Março de 2010 Daniel

Leia mais

Extração de objetos de interesse em imagens digitais utilizando a biblioteca de Visão Computacional OpenCV

Extração de objetos de interesse em imagens digitais utilizando a biblioteca de Visão Computacional OpenCV Extração de objetos de interesse em imagens digitais utilizando a biblioteca de Visão Computacional OpenCV Izadora Aparecida RAMOS 1,3,4 ; Servílio Souza de ASSIS 1,3,4 ; Bruno Alberto Soares OLIVEIRA

Leia mais

Processamento de Imagens: fundamentos. Julio C. S. Jacques Junior

Processamento de Imagens: fundamentos. Julio C. S. Jacques Junior Processamento de Imagens: fundamentos Julio C. S. Jacques Junior juliojj@gmail.com Fronteiras do Processamento de Imagens Processamento de dados Dados / Informação Visão Computacional Computação Gráfica

Leia mais

Primeira Prova 25 de abril de DURAÇÃO DA PROVA: 90m

Primeira Prova 25 de abril de DURAÇÃO DA PROVA: 90m Departamento de Ciência da Computação IME-USP MAC0420/5744 Introdução à Computação Gráfica Primeira Prova 25 de abril de 2013 Nome: NUSP: Assinatura: Instruções: 1. Desligue o seu celular, pager, ou outro

Leia mais

Uma abordagem baseada em SPH para animação interativa de águas rasas em jogos

Uma abordagem baseada em SPH para animação interativa de águas rasas em jogos Algemiro Augusto da Silva Neto Uma abordagem baseada em SPH para animação interativa de águas rasas em jogos Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do grau

Leia mais

2 Subtração de fundo

2 Subtração de fundo 14 2 Subtração de fundo Este capítulo apresenta a subtração de fundo, tarefa para qual foi reservado um grande esforço inicial devido a sua enorme importância para a boa funcionalidade das outras etapas.

Leia mais

Dr. Sylvio Barbon Junior. Departamento de Computação - UEL. 1 o Semestre de 2015

Dr. Sylvio Barbon Junior. Departamento de Computação - UEL. 1 o Semestre de 2015 Introdução a Computação Gráfica [5COP100] Dr. Sylvio Barbon Junior Departamento de Computação - UEL 1 o Semestre de 2015 Assunto Aula 8 Descritores de Imagens Digitais 2 of 47 Sumário Descritores e Reconhecimento

Leia mais

Controle da Execução e Disponibilização de Dados para Aplicativos sobre Seqüências Biológicas: o Caso BLAST

Controle da Execução e Disponibilização de Dados para Aplicativos sobre Seqüências Biológicas: o Caso BLAST Maíra Ferreira de Noronha Controle da Execução e Disponibilização de Dados para Aplicativos sobre Seqüências Biológicas: o Caso BLAST Dissertação de Mestrado Dissertação apresentada como requisito parcial

Leia mais

Identificação de veículos utilizando técnicas de visão computacional

Identificação de veículos utilizando técnicas de visão computacional Identificação de veículos utilizando técnicas de visão computacional Eliézer Fazzioni Bourchardt,, Maximiliano Zambonatto Pezzin Curso de Sistemas de Informação Universidade do Contestado (UnC) Rua Victor

Leia mais