Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto...

62
UNIVERSIDADE FEDERAL DE GOI ´ AS – UFG CAMPUS CATAL ˜ AO – CAC DEPARTAMENTO DE CI ˆ ENCIA DA COMPUTAC ¸ ˜ AO – DCC Bacharelado em Ciˆ encia da Computa¸c˜ ao Projeto Final de Curso Uso de Vis˜ ao Computacional para Interface Homem-Computador Autor: Lucas Faria Porto Orientador: M´ arcio de Souza Dias Catal˜ ao - 2011

Transcript of Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto...

Page 1: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

UNIVERSIDADE FEDERAL DE GOIAS – UFG

CAMPUS CATALAO – CAC

DEPARTAMENTO DE CIENCIA DA COMPUTACAO – DCC

Bacharelado em Ciencia da Computacao

Projeto Final de Curso

Uso de Visao Computacional para InterfaceHomem-Computador

Autor: Lucas Faria Porto

Orientador: Marcio de Souza Dias

Catalao - 2011

Page 2: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Lucas Faria Porto

Uso de Visao Computacional para Interface Homem-Computador

Monografia apresentada ao Curso de

Bacharelado em Ciencia da Computacao da

Universidade Federal de Goias Campus Catalao

como requisito parcial para obtencao do tıtulo de

Bacharel em Ciencia da Computacao

Area de Concentracao: Visao Computacional

Orientador: Marcio de Souza Dias

Catalao - 2011

Page 3: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

F. Porto, Lucas

Uso de Visao Computacional para Interface Homem-Computador/Marcio

de Souza Dias- Catalao - 2011

Numero de paginas: 48

Projeto Final de Curso (Bacharelado) Universidade Federal de Goias, Campus

Catalao, Curso de Bacharelado em Ciencia da Computacao, 2011.

Palavras-Chave: 1. Visao Computacional. 2. Processamento de Imagens Digitais.

3. Interface Homem-Computador

Page 4: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Lucas Faria Porto

Uso de Visao Computacional para Interface Homem-Computador

Monografia apresentada e aprovada em de

Pela Banca Examinadora constituıda pelos professores.

Marcio de Souza Dias – Presidente da Banca

Marcio Antonio Duarte

Thiago Jabur Bittar

Page 5: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Dedico este trabalho a todos que me apoiaram nesta ardua jornada; os meu amigos,

minhas irmas e principalmente aos meus pais.

Page 6: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

AGRADECIMENTOS

Agradeco primeiramente a Deus por ter me dado sabedoria para superar todos os de-

safios durante esta jornada. Agradeco especialmente aos meus pais, Eloi Porto e Gessiene

Andrade, no qual sou eternamente grato por me apoiarem em minhas escolhas, por esta-

rem comigo nesta caminhada e principalmente por compreenderem a minha ausencia. As

minhas irmas que sao um exemplo carater e determinacao para vencer qualquer desafio.

O agradecimento a todos os professores do DCC no qual sou grato pelos conhecimentos

adquiridos. Aos colegas e companheiros de curso nos quais serao sempre lembrados: pelas

historias, aulas, provas, algumas brigas, festas e principalmente pela amizade construıda;

lembrados como uma famılia, caracterizada pela amizade forte que permanece mesmo

com aqueles que por algum motivo mudaram de rumo no meio da jornada. Agradeco a

turma de 2007, vale ressaltar ”a melhor”.

Algumas pessoas em especial que apareceram atraves do destino e que de maneira inex-

plicavel marcou minha vida: Adam Moreira, Ana Paula Suzuki, Bleno Sampaio, Fabio

Amorim, Faimison Porto, Fernando Antonio, Hugo Sica, Igor Andre, Janaına Teixeira,

Leandro Pedrosa, Luana Fidellys (Band), Luiz Gustavo, Marcia Ribeiro, Marcos Braulio,

Max Gabriel, Renato Franca, Ricardo Rodrigues, Roger Costa, Vinıcius Gustavo, Wilkly-

ney Pires.

Muito obrigado a todos.

Page 7: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

”As derrotas so existem para aqueles que deixam de acreditar nas vitorias”

(Gichin Funakoshi)

Page 8: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

RESUMO

Porto, L. Uso de Visao Computacional para Interface Homem-Computador.

Curso de Ciencia da Computacao, Campus Catalao, UFG, Catalao, Brasil, 2011, 48p.

Pacientes portadores de tetraplegia apresentam um quadro clınico de paralisia grave

dos membros abaixo do pescoco, como resultado, estas pessoas, portadoras de necessidades

especiais tornam-se extremamente dependentes de auxılio em suas atividades cotidianas,

tendo diversas dificuldades ao acesso a informacao e uso dos meios computacionais dis-

ponıveis atualmente. O trabalho em questao aborda o estudo de tecnicas processamento

digital de imagens com foco em visao computacional, para o desenvolvimento de uma

interface homem-computador voltado para estes usuarios; baseado na utilizacao de uma

webcam de baixa qualidade sem a necessidade de investimento ou criacao de um hardware

especial. Com o resultado deste estudo foi possıvel o desenvolvimento de um prototipo

para captacao e interpretacao dos movimentos do olhar do usuario atraves da webcam e

refletindo na movimentacao do cursor do mouse. Os resultados obtidos foram satisfatorios

com altas taxas de acertos, comprovando a viabilidade do modelo proposto de interface

homem-computador.

Palavras-Chaves: Visao Computacional, Processamento de Imagens Digitais, Inter-

face Homem-Computador

i

Page 9: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Sumario

1 Introducao 1

2 Estado da Arte 4

3 Fundamentacao Teorica 6

3.1 Imagem Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.2 Visao Computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.3 Busca por Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3.1 Imagem Integral . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3.2 Algoritmo AdaBoost . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.3.3 Arvore de Decisao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Desenvolvimento 16

4.1 Abordagem Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.2 Restricoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.3 Carregar Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.4 Obter Imagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.5 Localizar Olhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.6 Pre-processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.7 Comparar Modelo de Decisao . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.8 Mover Cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5 Analise e Resultados 26

5.1 Detalhes dos Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5.2 Testes e Analises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

6 Conclusao 31

Referencias 33

Apendices 35

ii

Page 10: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

A Codigo Fonte 36

A.1 Classe eyeMouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

iii

Page 11: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Lista de Figuras

3.1 Representacao de uma Imagem digital, origem dos eixos em uma imagem

e a representacao de um ponto. . . . . . . . . . . . . . . . . . . . . . . . . 6

3.2 Relacao entre as areas de utilizacao de imagens. . . . . . . . . . . . . . . . 7

3.3 Passos de um sistema de Visao Computacional [Junior, 2009]. . . . . . . . 8

3.4 Dispositivos utilizados para aquisicao de imagem [Junior, 2009]. . . . . . . 9

3.5 Exemplo utilizacao de filtros de pre-processamento de imagem. . . . . . . . 9

3.6 Exemplo de extracao de borda e contorno. . . . . . . . . . . . . . . . . . . 10

3.7 Exemplo de segmentacao de imagem [Junior, 2009]. . . . . . . . . . . . . . 10

3.8 Exemplo de uma representacao [Junior, 2009]. . . . . . . . . . . . . . . . . 10

3.9 Exemplo de reconhecimento das maos para execucao de uma determinada

musica [Junior, 2009]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.10 Exemplos de calculos com imagem integral [Viola e Jones, 2001]. . . . . . . 12

3.11 Caracterısticas Haar-like [Viola e Jones, 2001]. . . . . . . . . . . . . . . . . 13

3.12 Exemplo de calculo de um elemento de caracterıstica Haar-like. . . . . . . 13

3.13 Caracterısticas Haar-like selecionadas pelo AdaBoost [Santos, 2008]. . . . . 14

3.14 Exemplo do classificador em cascata [Ma, 2007]. . . . . . . . . . . . . . . . 15

4.1 Passos de execucao do prototipo proposto. . . . . . . . . . . . . . . . . . . 17

4.2 Exemplos de posicoes do usuario em frente a webcam. . . . . . . . . . . . . 19

4.3 Pontos na tela onde o usuario tem que olhar, tanto para a criacao dos

modelos quanto para o funcionamento do prototipo. . . . . . . . . . . . . . 19

4.4 Modelos de decisao: Imagens capturadas do usuario olhando para cada

regiao no monitor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.5 Parte da codificacao do arquivo classificador no formato XML. . . . . . . . 20

4.6 Exemplo de criacao de classificador e utilizacao do metodo de busca Haar

de faces em uma imagem. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.7 Regiao do par de olhos encontrados delimitado pelo retangulo vermelho. . . 22

4.8 Histogramas referentes a quatro tipos basicos de imagens [Gonzalez e Woods, 2000]. 23

iv

Page 12: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

4.9 Aplicacao de Tecnicas de processamento de Imagens, temos respectiva-

mente a imagem colorida, a mesma em escala de cinza e apos a equalizacao

do histograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.10 Imagem sendo comparada com os modelos de decisao carregados em memoria 25

5.1 Imagem obtida durante a aplicacao do primeiro teste. . . . . . . . . . . . . 27

5.2 Imagem obtida durante a aplicacao do segundo teste. . . . . . . . . . . . . 28

5.3 Imagem obtida durante a aplicacao do terceiro teste. . . . . . . . . . . . . 29

v

Page 13: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Lista de Tabelas

4.1 Resultado da comparacao da imagem obtida na webcam com os modelos

de decisao conforme a Figura 4.10 . . . . . . . . . . . . . . . . . . . . . . . 25

5.1 Resultado referente ao primeiro teste. . . . . . . . . . . . . . . . . . . . . . 28

5.2 Resultado referente ao segundo teste. . . . . . . . . . . . . . . . . . . . . . 29

5.3 Resultado referente ao terceiro teste. . . . . . . . . . . . . . . . . . . . . . 30

vi

Page 14: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Lista de Siglas

FPS Frames Por Segundo

LED Light-Emitting Diode

OpenCV Open Source Computer Vision

PDI Processamento Digital de Imagens

RAM Random Access Memory

SSR Six Segmented Rectangular

SVM Support Vector Machines

XML eXtensible Markup Language

vii

Page 15: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Capıtulo 1

Introducao

Atualmente o computador e a forma de comunicacao mais utilizada no mundo, ofe-

recendo ferramentas cada dia mais presente na comunicacao. Sendo utilizados e-mails,

foruns de discussao, mensageiros eletronicos e outros. A vantagem dos recursos compu-

tacionais para a comunicacao e a facilidade ao acesso a informacao e a integracao entre

pessoas do mundo inteiro, seja de forma para o convıvio social ou um meio para relacoes

comerciais [Martins, ]. Infelizmente uma parcela da populacao fica restringida ao acesso

da tecnologia por nao existir um mecanismo de interacao com o mundo ao seu redor que

se encaixe com sua limitacao fısica.

No Brasil existem mais de 24,5 milhoes de pessoas com algum tipo de necessidade

especial, incluindo fısica e mental. Isso representa 14,5% da populacao no ano 2000

[IBGE, 2000]. No mundo ja existem diversas tecnologias com a finalidade de promover

uma inclusao social para as pessoas com necessidades especiais, possibilitando uma maior

acessibilidade a elas. Como exemplos, podem ser citadas adaptacoes em estruturas fısicas

de edifıcios e ruas para facilitar o deslocamento para os cadeirantes, produtos com texto

em braile para deficientes visuais, veıculos adaptados, etc. Ambos os exemplos citados,

sao alguns dos diversos utensılios, adaptacoes, dispositivos e equipamentos criados visando

facilitar a realizacao de algumas tarefas diarias e proporcionar uma vida mais produtiva

e feliz, em casa, na escola ou no trabalho [Rocha e Couto, 2008].

No uso dos computadores a historia nao e diferente, para casos de deficiencia fısica

mais complexa, as tarefas mais simples, como uso do mouse e teclado se tornam difıceis e

limitadas. Pessoas com tetraplegia ou problemas motores nos membros superiores ficam

impossibilitadas do uso dos mesmos. Para tentar contornar essas limitacoes, diversos

meios, sejam por softwares ou hardwares especiais foram criados e/ou adaptados para

possibilitar interacao destes usuarios com o computador [Rocha e Couto, 2008].

O avanco das tecnicas de processamento digital de imagens, estao possibilitando mais

qualidade, melhoramento nas imagens, equipamentos mais avancados e viaveis, conse-

quentemente novas solucoes estao surgindo para possibilitar o acesso das pessoas de-

1

Page 16: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

ficientes no meio computacional, onde estas solucoes estao conseguindo ajudar na in-

teracao destes usuarios. Um exemplo disso sao as tecnicas de Processamento Digital

de Imagens (PDI) aplicadas nos tons das imagens, melhorando o entendimento de um

usuario com dificuldades de distinguir ou perceber as diferencas entre as cores (dalto-

nismo) [Moreira e Santos, 2009].

Com novos avancos e pesquisas na area de PDI, o termo visao computacional surge

como um conjunto de tecnicas possibilitando um programa extrair dados e interpretar

as caracterısticas relevantes em uma imagem possibilitando que um sistema ou o com-

putador extraia as informacoes que foi pre-determinado. A ideia central dessa tecnica

e simular a visao humana no meio computacional baseando-se como o homem conse-

gue distinguir um objeto ou uma caracterıstica importante em uma determinada imagem

[Nascimento, 2009].

Com a aplicacao das tecnicas de PDI e Visao Computacional, espera-se neste trabalho

conseguir por meio do uso de uma simples webcam do usuario, desenvolver um prototipo

que identifique nas imagens obtidas em tempo real o rosto do mesmo, caracterısticas e

dados relevantes para obter a localizacao dos olhos e saber para qual a direcao que o olho

esta apontando na tela, com intuito de movimentar o cursor do mouse.

Muitos detalhes vao ser relevantes para que este estudo obtenha um resultado satis-

fatorio nos testes finais, onde diversas situacoes poderao influenciar no comportamento

do prototipo, sendo alguns deles: o ambiente em que o usuario se encontra (iluminacao),

posicionamento do usuario em frente a camera, se o mesmo usa oculos, computadores com

poder de processamento considerados fracos, baixa qualidade da webcam, etc.

Portanto, seria possıvel a criacao do prototipo resultante deste estudo visando o con-

trole do cursor do mouse atraves da mudanca da posicao dos olhos do usuario de forma

eficaz e financeiramente acessıvel, sem a necessidade da criacao de um hardware especıfico

ou investimentos em uma webcam com uma resolucao maior? E o que este estudo pretende

responder.

A presente monografia esta dividida nos capıtulos a seguir:

Capıtulo 1: Introducao

Texto introdutorio sobre a visao inicial do trabalho abordado, uma ideia do prototipo

a ser desenvolvido, com enfase no problema, objetivos e metas.

Capıtulo 2: Estado da Arte

Aborda varios trabalhos semelhantes ao proposto neste trabalho, citando as principais

caracterısticas abordadas, as tecnicas utilizadas, etc.

Capıtulo 3: Fundamentacao Teorica

2

Page 17: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Enfase na parte teorica por tras do trabalho proposto, reunindo a maioria dos concei-

tos cientıficos sobre processamento Digital de Imagens e Visao Computacional.

Capıtulo 4: Desenvolvimento

Enfase completa do desenvolvimento do prototipo. Descricao detalhada do algoritmo

e das tecnicas empregadas neste trabalho.

Capıtulo 5: Analise e Resultados

Neste capıtulo e abordada toda a analise referente a execucao de testes e resultados

alcancados no prototipo.

Capıtulo 6: Conclusao

Conclusao do trabalho proposto e abordagem de trabalhos futuros.

3

Page 18: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Capıtulo 2

Estado da Arte

Nesta secao sao apresentados alguns estudos semelhantes ao abordado aqui. Demons-

trando ao leitor que a area citada neste trabalho trata-se de fontes de interesse de estudos

cientıficos.

Diversos trabalhos de processamento de imagens e visao computacional estao focados

na extracao de caracterısticas faciais. No trabalho apresentado em [Carvalho et al., 2005]

o objetivo e detectar as informacoes do olho humano por meio de suas caracterısticas

geometricas em uma imagem estatica. Neste trabalho, tecnicas de processamento foram

utilizadas para possibilitar a extracao de bordas revelando a circunferencia que caracteriza

a ıris, posteriormente o centro da mesma.

E apresentado em [Moreira e Santos, 2009], o desenvolvimento de um software com

a mesma finalidade proposta neste trabalho. Os autores utilizaram alguns conceitos de

processamento de imagens digitais e visao computacional importantes para chegar ao

resultado esperado.

A captacao para a extracao e interpretacao dos dados essenciais, se deu com o uso

de uma webcam localizada na parte central e superior do monitor possibilitando captura

total da face do usuario. O desenvolvimento das tecnicas de processamento das imagens e

toda feita na linguagem de programacao Matlab que comporta diversos recursos e tecnicas

para o processamento de imagens.

O funcionamento geral e descrito com os seguintes passos: localizacao da regiao dos

olhos atraves da comparacao de template, neste caso o template e uma imagem de um

olho que serve como modelo para a busca em imagem e posteriormente, localizacao da

pupila comparando com um template padrao da pupila. Com a regiao da pupila localizada

na imagem, o ultimo passo e obter a coordenada cartesiana (x,y) referente ao centro da

pupila, possibilitando associar esta posicao em uma coordenada no monitor, toda mudanca

da posicao central da pupila reflete na posicao do cursor do mouse no monitor.

Outro trabalho semelhante, apresentado em [Peixoto et al., 2008], demonstra a com-

paracao de algumas tecnicas existentes para localizacao da regiao dos olhos em uma

4

Page 19: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

imagem digitalizada. A metodologia deste trabalho consiste no uso de tres tipos de com-

binacoes entre redes neurais artificiais e algoritmos de aprendizado de maquinas.

No treinamento da rede foram utilizadas imagens de faces possibilitando maior fi-

delidade do sistema de reconhecimento. Cada imagem foi devidamente normalizada e

distribuıda como entrada de treinamento para futuras comparacoes para a rede. A saıda

foi previamente definida com apenas quatro posicoes, sao elas: esquerda, direita, em baixo

e em cima; na qual se refere a direcao que o cursor do mouse tem que se mover.

A tecnica de rastreamento do olhar usando redes neurais tambem e proposto em

[Nascimento, 2009] que tem como caracterıstica principal o uso de um oculos especial para

utilizacao do usuario, que tem acoplado uma webcam que utiliza iluminacao de 6 LEDs

infravermelhos cujo comprimento de onda melhora a visualizacao da ıris. Este dispositivo

foi proposto no trabalho [Vieira, 2009] e desenvolvido em 2008 [Vieira e Fontana, 2008].

O trabalho proposto em [Restom, 2006] propoe o reconhecimento das caracterısticas

faciais (ponta do nariz e olhos), que sao detectados e monitorados em tempo real para

usar suas acoes como eventos de mouse. As coordenadas e movimento da ponta do nariz

no vıdeo sao interpretados para tornar as coordenadas e movimento do ponteiro do mouse

na tela do usuario.

O piscar dos dois olhos sao interpretados como eventos de click do botao do mouse. O

unico dispositivo externo que o usuario precisa e de uma webcam que alimenta o programa

com as imagens de vıdeo. O trabalho e desenvolvido na linguagem de programacao Java

que implementa o filtro SSR (Six Segmented Rectangular) e o classificador SVM (Support

Vector Machines) que trabalha com aprendizado de maquina a partir de imagens de

exemplo, ambas tecnicas sao utilizadas para encontrar a face e as caracterısticas faciais.

No proximo capıtulo sera abordada a parte teorica do trabalho proposto.

5

Page 20: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Capıtulo 3

Fundamentacao Teorica

3.1 Imagem Digital

A representacao de uma imagem digital se da por meio de uma matriz cujos ındices

de linhas e colunas identificam um determinado ponto na imagem. Essa representacao e

definida por uma funcao bidimensional f(x,y), onde x e y sao coordenadas espaciais na

imagem chamados ”pixels”, que corresponde ao valor do elemento e a intensidade ou nıvel

de cinza naquele ponto da matriz.

Uma imagem digital e em geral composta por uma quantidade finita de pixels, sendo

que cada um dos quais tem uma localizacao e um valor de intensidade especıfico. A Figura

3.1 abaixo, representa uma imagem digital, monocromatica, mostrando sua origem no

ponto (0,0) e o posicionamento dos eixos de coordenadas cartesianas.

Figura 3.1: Representacao de uma Imagem digital, origem dos eixos em uma imagem e a

representacao de um ponto.

O termo Processamento de Imagens Digitais e o estudo computacional sobre imagens

que se divide nas seguintes subareas; de acordo com o foco realizado sobre a imagem,

6

Page 21: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

sendo elas a computacao grafica, processamento de imagens e visao computacional, cada

uma destas subareas contem aspectos particulares que as diferenciam das demais.

A computacao grafica e a subarea que procura a representacao de dados e informacao

atraves de uma visualizacao grafica. A area de processamento de imagem tem como carac-

terıstica a entrada de uma determinada imagem em seu processo, que apos ser processada

tem como resultado de saıda uma nova imagem.

A visao computacional utiliza uma imagem como ponto de partida para a identificacao,

medicao ou quantificacao de objetos na mesma. A subdivisao das areas comentadas

anteriormente e representada conforme a Figura 3.2 que tambem mostra a subarea de

processamento de dados; a mesma tem como caracterıstica a entrada de uma massa de

dados, a mesma e processada e tem como retorno informacoes relevantes para resolucao

de um determinado problema. Mesmo com esta divisao, nada impede que as subareas se

relacione entre si para alcancar o objetivo desejado [Souza, 2008].

Figura 3.2: Relacao entre as areas de utilizacao de imagens.

3.2 Visao Computacional

Na visao computacional, os algoritmos mais sofisticados vem sendo usados em aplicacoes

de diversas areas e finalidades, tais como rastreamento de objetos, deteccao de movimen-

tos, reconhecimento de gestos e faces, dentre outras. Um exemplo de aplicacao seria um

sistema de reconhecimento de caracteres, que poderia ser utilizado para obter a informacao

automaticamente da placa de um motorista multado; outro exemplo de aplicacao seria

um sistema de vigilancia capaz de identificar o movimento de uma pessoa e movimentar

a camera para acompanha-la de maneira automatica [Leao et al., 2011].

Em geral, as aplicacoes de Visao Computacional sao estruturadas conforme ilustrado

7

Page 22: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

na Figura 3.3. Nesta figura, cada retangulo representa uma etapa do processo de extracao

e transformacao de imagens em dados.

Figura 3.3: Passos de um sistema de Visao Computacional [Junior, 2009].

A primeira etapa corresponde a aquisicao da imagem, isto e, captar uma imagem

digital atraves de um dispositivo de captacao, por exemplo, uma camera, scanner, lei-

tor biometrico, etc. Essa imagem capturada e tratada durante o pre-processamento a

fim de prepara-la para a etapa seguinte, as melhorias depende do problema relacionado,

as tecnicas podem ser para retirar ruıdos, realcar o contraste, entre outras; visando au-

mentar o sucesso da extracao de caracterısticas importantes para a solucao do problema.

Durante a deteccao e segmentacao sao selecionadas as regioes das imagens que podem

ter informacoes relevantes, um exemplo seria um sistema de reconhecimento de caracte-

res, onde as informacoes relevantes sao os caracteres disponıveis na imagem. Na repre-

sentacao, as regioes segmentadas na etapa anterior sao preparadas para o ultimo passo,

a interpretacao. Nesta etapa, finalmente e retido as informacoes desejadas da imagem.

Logo abaixo ha a descricao mais detalhada dos passos citados acima.

Aquisicao: Como visto em [Gonzalez e Woods, 2000] e [Jahne et al., 2002], este passo

permite a producao de uma imagem digital, sendo que a aquisicao esta ligada diretamente

ao processo de captura da imagem por um ou varios dispositivos de captura. O resultado

da aquisicao da imagem pode variar entre uma imagem bidimensional, tridimensional ou

ainda um vıdeo que e uma sequencia de imagens. O resultado da imagem depende dire-

tamente do dispositivo de captura. Na Figura 3.4 mostra alguns dispositivos comuns de

aquisicao de imagens.

Pre-processamento: De acordo com [Gonzalez e Woods, 2000], neste passo e utili-

zado tecnicas relevantes na visao computacional que sao aplicadas em imagens; visando

melhorar significativamente a qualidade e/ou realcar alguma caracterıstica presente na

imagem, assim deixa-la mais adequada para as proximas etapas. Tem como exemplo de

aplicacao de filtros em imagens: a reducao de ruıdos, o controle do nıvel de brilho ou con-

8

Page 23: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Figura 3.4: Dispositivos utilizados para aquisicao de imagem [Junior, 2009].

traste, entre outras aplicacoes. A seguir dois exemplos de aplicacao de filtros em imagem;

na Figura 3.5(a) temos a imagem original; enquanto na Figura 3.5(b) temos a mesma

imagem em escala de cinza, e por ultimo na Figura 3.5(c), temos a imagem em preto e

branco, tambem conhecida como imagem binaria.

Figura 3.5: Exemplo utilizacao de filtros de pre-processamento de imagem.

Extracao de caracterısticas: Este passo visa transformar os dados de entrada da

imagem em um conjunto de caracterısticas relevantes para alcancar o objetivo esperado,

como exemplos, a deteccao de textura, deteccao de formas geometricas, deteccao de bor-

das, cantos, pontos ou movimento; como e mostrado na Figura 3.6(a), temos uma imagem

comum e na Figura 3.6(b) temos a extracao das bordas da mesma, deixando evidente a

presenca das formas geometricas presentes nos edifıcios [Jahne e Haußecker, 2000].

Deteccao e segmentacao: Em [Gonzalez e Woods, 2000], o autor cita que em algum

ponto do processo, uma decisao e feita sobre a importancia de uma ou mais regioes da

imagem. Neste passo visa dividir a imagens em partes ou objetos para facilitar sua

analise, um exemplo pratico seria em um sistema de reconhecimento de caracteres, onde a

segmentacao extrairia os caracteres presentes na imagem. A Figura 3.7 ilustra um exemplo

de segmentacao. Temos na Figura 3.7(a) a imagem com o objeto a ser localizado, enquanto

na Figura 3.7(b) temos a imagem de fundo sem a existencia do mesmo, por ultimo na

Figura 3.7(c), temos a identificacao do objeto de interesse na imagem.

9

Page 24: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Figura 3.6: Exemplo de extracao de borda e contorno.

Figura 3.7: Exemplo de segmentacao de imagem [Junior, 2009].

Representacao: No passo de representacao e uma parte da solucao para transformar

os dados da imagem em uma forma adequada de dados, agrupando-os e armazenando

os diversos padroes presentes no objeto [Jahne e Haußecker, 2000]. Sao enfatizadas as

caracterısticas de interesse para o passo seguinte. No exemplo de reconhecimento de ca-

racteres, buracos e concavidades sao caracterısticas importantes que ajudam na distincao

de algumas letras [Gonzalez e Woods, 2000]. Outro exemplo de representacao pode ser

visto na Figura 3.8; na Figura 3.8(a) temos a imagem sem a presenca do objeto. Na Figura

3.8(b) temos a presenca do objeto na imagem; a localizacao atraves da segmentacao pode

ser vista na Figura 3.8(c). No ultimo passo (Figura 3.8(d)), a imagem e transformada

para preto e branco contendo apenas o contorno do objeto, neste caso o contorno poderia

representar que o objeto esta em movimento.

Figura 3.8: Exemplo de uma representacao [Junior, 2009].

10

Page 25: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Interpretacao: Por fim, no passo de interpretacao permite a atribuicao de signifi-

cado ao conjunto de objetos reconhecidos na imagem [Gonzalez e Woods, 2000]. Geral-

mente neste passo, a entrada e uma quantidade pequena de dados provinda dos passos

anteriores, efetuando uma classificacao dos objetos detectados em diferentes categorias

[Jahne e Haußecker, 2000]. No exemplo de reconhecimento de caracteres, este passo seria

responsavel por identificar que um determinado conjunto de objetos, onde neste caso,

cinco numeros seguidos por um hıfen e outros tres numeros representa um codigo de en-

dereco postal, porem outros conjuntos podem ter diversos significados. Outro exemplo na

Figura 3.9(a) mostra uma pessoa simulando estar tocando um instrumento, enquanto na

Figura 3.9(b) o sistema identifica e interpreta o posicionamento das maos, resultando na

execucao de uma musica (Figura 3.9(c)).

Figura 3.9: Exemplo de reconhecimento das maos para execucao de uma determinada

musica [Junior, 2009].

3.3 Busca por Objetos

No trabalho de [Fu e Mui, 1981], na visao computacional o primeiro passo em analise

de imagens e a segmentacao da imagem; como foi discutido anteriormente aplicacao de

tecnicas de segmentacao e importante para medicao, quantificacao ou identificacao de

objetos em uma cena. As tecnicas de segmentacao de imagens podem ser baseadas nas

caracterısticas de um determinado pixel como cor e intensidade; o mesmo e capaz de

identificar pontos, linhas, bordas e combina-los.

De acordo com [Carvalho et al., 2005], a deteccao de faces em uma imagem, pode

ser caracterizada pela utilizacao de tecnicas de extracao de contorno para localizacao

e identificacao de formas geometricas caracterısticas de um rosto humano, variacoes de

cores e deteccao de determinadas caracterısticas faciais, como sobrancelhas, orelhas, olho,

boca, etc.

Neste trabalho foi utilizo a tecnica de segmentacao proposta por [Viola e Jones, 2001].

Este metodo consiste no aprendizado a partir de uma entrada de um conjunto de imagens

11

Page 26: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

que classifica o objeto a ser localizado. Como sugerido em [Viola et al., 2005], essa tecnica

pode ser usado para detectar faces humanas ou qualquer outro objeto dependendo do

treinamento inicial. Nos trabalhos apresentados em [Castrillon-Santana et al., 2008] e

[Lienhart e Maydt, 2002] e deixado bem claro a eficiencia na deteccao de faces do metodo

proposto acima.

O algoritmo de Viola-Jones e composto de tres partes distintas que o distingue de

outros, elas sao: (1) a criacao da imagem integral, (2) a utilizacao do algoritmo Adaboost

para classificacao utilizando caracterısticas Haar-like e (3) a criacao de uma estrutura em

arvore, chamada classificadores em cascata [Oliveira, 2008].

3.3.1 Imagem Integral

De acordo com [Santos, 2008], o metodo da imagem integral foi abordado para ser

possıvel localizar de maneira eficiente a presenca ou nao de uma caracterıstica Haar-like

em diversas localizacoes (sub-janelas) na imagem em que se quer localizar um objeto. Esta

tecnica corresponde ao somatorio dos valores da intensidade de todos os pixels localizados

acima e a esquerda do pixel em questao.

Na Figura 3.10 temos o exemplo de quatro sub-janelas em uma imagem qualquer,

onde o valor da imagem integral na posicao 1 e o resultado da soma da intensidade dos

pixels no retangulo A. O valor da posicao 2 e igual a soma de A+B, para a posicao 3 e

A+C e por ultimo a posicao 4, o valor e a soma de A+B+C+D. Para obter os valores dos

pixels do retangulo D o resultado e dado por 4+1-(2+3) [Santos, 2008]. Para descobrir

o valor medio desta regiao, basta dividir o valor do somatorio da intensidade dos pixels

pela quantidade dos mesmos. Os processos seguintes serao realizados com base no valor

da imagem integral como citado acima.

Figura 3.10: Exemplos de calculos com imagem integral [Viola e Jones, 2001].

Na Figura 3.11 mostra as caracterısticas do tipo Haar-like, cada uma contem retangulos

claros e escuros que representam as regioes da caracterıstica. O resultado referente a soma

12

Page 27: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

dos valores de intensidade dos pixels entre as regioes claras sao subtraıdas pela soma das

regioes escuras (Figura 3.12(a)); este valor encontrado representa a caracterıstica deter-

minada para aquela regiao na imagem (Figura 3.12(b)). Esta tecnica e eficiente para

avaliar se existe ou nao uma caracterıstica Haar-like em uma determinada posicao na

imagem [Araujo, 2010].

Figura 3.11: Caracterısticas Haar-like [Viola e Jones, 2001].

Figura 3.12: Exemplo de calculo de um elemento de caracterıstica Haar-like.

3.3.2 Algoritmo AdaBoost

De acordo com [Kuncheva, 2004] o algoritmo de aprendizado AdaBoost e uma variacao

do Adaptive Boosting. O mesmo define quais das caracterısticas Haar-like serao utilizadas

e quais os valores dos limiares para cada uma das caracterısticas.

De acordo com [Viola e Jones, 2001] um bom classificador nao necessita de uma grande

quantidade de caracterısticas Haar-like, o mesmo pode ser obtido pela combinacao de um

numero pequeno das mesmas; tornando um dos principais problemas, escolher qual das

caracterısticas e mais indicada para alcancar o resultado desejado.

13

Page 28: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Nas Figuras 3.13(a) e 3.13(b) o algoritmo escolheu as duas caracterısticas Haar-like

para identificacao da face na imagem positiva de entrada (Figura 3.13(c)). Nas Figuras

3.13(d) e 3.13(e) mostra a sobreposicao das caracterısticas Haar-like na mesma imagem

de entrada.

Na Figura 3.13(d) e possıvel perceber que a caracterıstica selecionada foi a de dois

retangulos na altura dos olhos e do nariz, neste caso o algoritmo percebeu a diferenca de

luminosidade na imagem entre o nariz e a regiao dos olhos. Enquanto na Figura 3.13(e)

a diferenca de luminosidade esta entre a regiao dos olhos e a testa [Santos, 2008].

Figura 3.13: Caracterısticas Haar-like selecionadas pelo AdaBoost [Santos, 2008].

Para que a identificacao seja executada rapidamente, e necessario ter uma sequen-

cia de classificadores em ordem crescente, onde os primeiros classificadores contem uma

quantidade de caracterıstica muito menor que os ultimos, ou seja, o primeiro classificador

ja descarta a maioria das sub-janelas que nao contem o objeto com muito pouco pro-

cessamento, pois realiza o calculo para apenas duas caracterısticas Haar-Like; segundo

[Viola e Jones, 2001] esta operacao executa apenas 60 instrucoes de um microprocessa-

dor. Os proximos classificadores executam o mesmo procedimento citados acima, porem

utilizando uma quantidade maior de caracterısticas Haar-like.

A medida que a sub-janela vai avancando, outros classificadores mais complexos sao

aplicados, consequentemente mais processamento e necessario, esta estrutura de formacao

hierarquica dos classificadores e conhecida como arvore de decisao em cascata, se a sub-

janela passa por todos os classificadores da arvore, a mesma e reconhecida como face

[Santos, 2008].

14

Page 29: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

3.3.3 Arvore de Decisao

Na etapa de aprendizado do AdaBoost, o algoritmo e responsavel por escolher as

caracterısticas Haar-like para cada classificador e treina-lo da melhor maneira possıvel. O

resultado do processo de aprendizagem sao os classificadores fracos, cada um contendo um

limiar e caracterısticas Haar-like; todos sao combinados, resultando em um classificador

forte visando minimizar a ocorrencia de falsos positivos durante a busca [Araujo, 2010].

A Figura 3.14 mostra os passos atraves dos classificadores, onde a sub-janela pode ser

rejeitada por um dos classificadores ou no fim ser considerada como o objeto localizado

na imagem.

A aplicacao do treinamento baseado em meta heurıstica AdaBoost, os ultimos classi-

ficadores sao treinados com as amostras que os primeiros nao conseguiram identificar de

maneira correta, ou seja, os falsos positivos que passaram pelos classificadores iniciais nao

irao passar pelos proximos classificadores [Santos, 2008]. Esta abordagem demonstra a

eficiencia na localizacao de um objeto em uma imagem.

No proximo capıtulo aborda a descricao detalhada do prototipo deste trabalho.

Figura 3.14: Exemplo do classificador em cascata [Ma, 2007].

15

Page 30: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Capıtulo 4

Desenvolvimento

4.1 Abordagem Inicial

Neste capıtulo serao abordados todos os passos realizados para se chegar ao resultado

esperado deste trabalho. Para o desenvolvimento foi utilizado a linguagem de programacao

C++ por ter suporte com a biblioteca OpenCV (Open Source Computer Vision) escrita

em C e C++ otimizada para processadores multicores ; com suporte aos sistemas ope-

racionais Unix e Windows. A biblioteca contem interface de desenvolvimento para as

linguagens de programacao C, C++ e Python; a mesma contem mais de 2000 tecnicas

robustas e eficientes voltadas para computacao aplicado nas areas de processamento de

imagens, visao computacional e com um forte foco em aplicacoes com imagens em tempo

real [Bradski e Kaehler, 2008].

O hardware envolvido no desenvolvimento e testes do prototipo foi um notebook, com

tela de 15,4 polegadas, processador Intel Core i3 2,26GHz com 3GB de memoria RAM, o

sistema operacional e o Windows 7 Ultimate 64 Bits. Para a programacao foi utilizada a

plataforma de desenvolvimento Microsoft Visual Studio C++ 2010 Express Edition que e

disponibilizada gratuitamente no site do software e e de simples configuracao a integracao

da biblioteca OpenCV.

Para atender a proposta deste trabalho, a webcam utilizada e que vem integrada no

notebook, uma webcam com resolucao baixa de 640 X 480 pixels. Esta decisao visa o

funcionamento do prototipo sem a necessidade de criacao ou compra de um hardware

especial como acontece em [Nascimento, 2009] que utiliza uma webcam com iluminacao

especial acoplado em um oculos para identificacao da ıris.

Com esta escolha, a mesma influenciou na precisao final do prototipo, pois a ideia

inicial era o desenvolvimento de um prototipo que rastreasse as coordenadas do centro da

pupila do olho do usuario, fazendo uma referencia desta coordenada com uma coordenada

qualquer no monitor, com isso para qualquer regiao que o usuario olhasse na tela o mouse

16

Page 31: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

iria se mover para a mesma.

A aplicacao da ideia inicial nao foi possıvel pelo fato da webcam nao ter resolucao e

qualidade suficiente para extracao das borda do olho e o cırculo da ıris para a localizacao

do centro da pupila. A abordagem deste trabalho foca com a comparacao de imagens da

regiao dos olhos do usuario, descrita com mais detalhes neste capıtulo. A mesma nao e

tao precisa quanto a primeira, mas bons resultados com os recursos de hardware presentes

foram alcancados.

Os passos de execucao do prototipo podem ser observados na Figura 4.1, onde cada

retangulo representa um passo importante para obter o resultado esperado, sendo eles

”Carregar Modelos”, ”Obter Imagem”, ”Localizar Olhos”, ”Pre-processamento”, ”Com-

parar Modelo de Decisao”e por ultimo ”Mover Cursor”.

Figura 4.1: Passos de execucao do prototipo proposto.

Carregar Modelos: Neste passo e carregado em memoria o classificador XML (Ex-

tensible Markup Language) para localizacao da regiao dos olhos e as imagens para com-

paracao em tempo de execucao, estas imagens sao chamadas de ”Modelos de Decisao”.

Obter Imagem: Neste passo e responsavel por obter o fluxo de imagens do usuario

captadas pela webcam.

Localizar Olhos: Em cada imagem captada pela webcam no passo anterior e feita a

busca para identificacao da regiao dos olhos do usuario.

Pre-processamento: Neste passo e efetuado o tratamento na imagem da regiao

dos olhos obtida do passo anterior, este tratamento tem como objetivo realcar as carac-

17

Page 32: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

terısticas presente na imagem deixando-a mais adequada para o proximo passo.

Comparar Modelo de Decisao: Com a imagem pre-processada o proximo passo e

compara-la com todas as imagens em memoria (Modelos de Decisao) visando descobrir

em qual direcao o usuario esta focando o olhar. Esta comparacao leva em conta com qual

dos modelos a imagem mais se parece.

Mover Cursor: No ultimo passo e movimentado o cursor do mouse para a direcao

da regiao resultante do passo anterior.

Apos a movimentacao do cursor do mouse, o prototipo pode ter dois possıveis estados,

onde o prototipo teria sua execucao finalizada ou voltar para o passo ”Obter Imagem”.

Caso o prototipo nao seja finalizado sera obtida a proxima imagem do fluxo da webcam

sendo aplicado todos os passos ate a nova movimentacao do mouse. Todos os passos acima

serao detalhados mais adiante neste capıtulo.

4.2 Restricoes

Antes de descrever todos os passos do prototipo e necessario que algumas restricoes

sejam obedecidas, tais como manter a cabeca na posicao reta, com toda a face do usuario

de frente, centralizada e visıvel para captura da webcam, visando o processamento correto

da regiao dos olhos.

A Figura 4.2 mostra alguns exemplos de posicoes do usuario em frente a webcam, note

que o unico posicionamento correto e da Figura 4.2(a); enquanto na Figura 4.2(b) mostra

a posicao do usuario mais a esquerda na imagem, nesta posicao o olhar do usuario nao tem

deslocamento da ıris para a esquerda quando o mesmo olhando nesta regiao do monitor,

ja nos demais exemplos se torna impossıvel da localizacao da regiao dos olhos necessaria

para o funcionamento correto do prototipo.

4.3 Carregar Modelos

No inıcio da execucao do prototipo ocorre com o carregamento em memoria das ima-

gens dos modelos de decisao e do classificador XML que serao abordados com mais detalhes

mais adiante neste capıtulo. Os modelos de decisao sao imagens da regiao dos olhos ja

processadas e criadas pelo prototipo a partir de imagens do usuario. As mesmas servirao

de modelos para comparacao com a imagem da regiao dos olhos do usuario capturadas

em tempo real pela webcam.

18

Page 33: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Figura 4.2: Exemplos de posicoes do usuario em frente a webcam.

Para a criacao dos modelos de decisao, o usuario devera olhar em alguns pontos da

tela do computador. As imagens modelos da regiao dos olhos do usuario sao processadas,

salvas em um diretorio do prototipo e sao carregadas em memoria uma unica vez no inıcio

a cada execucao do mesmo. Os modelos de decisao sao divididos em cinco classificacoes

das regioes no monitor, com elas o prototipo podera identificar para qual das cinco regioes

o usuario esta olhando, sendo elas: 1 - Em cima, 2 - Centro, 3 - Em Baixo, 4 -Direita e

5 - Esquerda, conforme representado na Figura 4.3 os pontos. Na Figura 4.4 demonstra

as imagens adotadas como modelo comparativo para determinar qual regiao o usuario

esta olhando no monitor. Para cada regiao e captura uma imagem da regiao dos olhos do

usuario, a mesma e pre-processada e salva pelo prototipo.

Figura 4.3: Pontos na tela onde o usuario tem que olhar, tanto para a criacao dos modelos

quanto para o funcionamento do prototipo.

19

Page 34: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Figura 4.4: Modelos de decisao: Imagens capturadas do usuario olhando para cada regiao

no monitor.

Tambem e neste passo que e efetuado carregamento do arquivo classificador no for-

mato XML, o mesmo contem os modelos de classificacao de reconhecimento da regiao

dos olhos baseado na tecnica de segmentacao para busca em tempo real proposta em

[Viola e Jones, 2001], na Figura 4.5 representa uma pequena parte da codificacao deste

classificador mostrando descricao dos retangulos presentes na caracterıstica e dos valores

obtidos apos o treinamento em uma imagem positiva. Uma vantagem desta tecnica de

busca e para alterar o objeto a ser localizado basta carregar o classificador referente ao

mesmo.

A OpenCV contem diversos classificadores prontos para serem utilizados em aplicacoes,

como busca de faces e caracterısticas faciais tais como par de olhos, sobrancelha, nariz,

boca, olho esquerdo, olho direito, etc. Neste trabalho foi utilizado o classificador de busca

para localizacao da regiao na imagem que contenha o par de olhos, este classificador

contem 15000 amostras negativas e 7000 amostras positivas de pares de olhos detectados,

de tamanho 45x11 pixels cada [Castrillon Santana et al., 2007]. Com essa classificador

e possıvel a localizacao do par de olhos disponıvel em qualquer face em uma imagem

estatica ou em tempo real [Bradski e Kaehler, 2008].

Figura 4.5: Parte da codificacao do arquivo classificador no formato XML.

20

Page 35: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

4.4 Obter Imagem

Com os modelos carregados em memoria no passo anterior, agora e obter o fluxo de

vıdeo da webcam. Este passo e responsavel pela entrada da imagem do usuario para

alcancar o resultado proposto.

O fluxo de vıdeo da webcam processado pelo prototipo e cerca de 30 FPS (Frames

Por Segundo) ou seja 30 imagens capturadas do usuario, onde cada uma vai passar pe-

los demais passos para a movimentacao do cursor do mouse. No trabalho proposto em

[Jackson, 1995], este valor obtido (30 FPS ), para a industria, e o mınimo para poder de-

terminar sendo um fluxo de vıdeo com qualidade. Esta informacao e de suma importancia

para a resposta do movimento do cursor do mouse, nao sendo perceptıvel qualquer atraso

em todos os passos do processamento da informacao, desde a captura da image ate a

movimentacao do cursor.

4.5 Localizar Olhos

Para o processo de reconhecimento da regiao dos olhos em imagens utilizada neste

trabalho, e uma tecnica de aprendizado de maquina baseada nas caracterısticas Haar-like

vista na secao 3.3. Esta foi proposta por [Viola e Jones, 2001] e em [Viola et al., 2005]

sendo aperfeicoada por Rainer Lienhart e faz parte das tecnicas de busca disponıveis na

biblioteca OpenCV. A mesma e capaz de processar imagens em alta velocidade com altas

taxas de acertos; para sua utilizacao e necessario o classificador citado anteriormente com

as caracterısticas do objeto para busca do mesmo.

A abordagem de busca de [Viola e Jones, 2001] atraves das caracterısticas Haar-like

e muito interessante, esta abordagem codifica a existencia dos contrastes entre regioes

da imagem. O conjunto destas informacoes podem ser usadas codificando regioes de

contraste localizadas, por exemplo, em uma face humana. Este metodo de busca atraves

das caracterısticas comuns presentes no objeto visa tornar a deteccao em um processo

mais eficiente.

Para a utilizacao do metodo de deteccao e necessario a utilizacao do classificador

citado anteriormente. O classificador e obtido apos o treinamento com muitas imagens

do objeto a ser identificado em imagens, uma bola, um carro ou uma face por exemplo.

Essas imagens recebem a classificacao de Imagens Positivas. Sao utilizadas outras imagens

durante o treinamento, sendo imagens aleatorias que nao contenha o objeto em questao,

estas sao classificadas como Imagens Negativas [Viola e Jones, 2001]. A Figura 4.6 mostra

este processo descrito acima, onde na Figura 4.6(a) temos a representacao das ”Imagens

Positivas”e ”Imagens Negativas”, aplicando-as no metodo de treinamento disponıvel na

biblioteca OpenCV obteremos o classificador XML conforme a Figura 4.6(b). Aplicando

21

Page 36: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

o metodo de busca em uma imagem qualquer utilizando este classificador (Figura 4.6(b)),

obteremos a localizacao de todas as faces na foto (Figura 4.6(c)).

Figura 4.6: Exemplo de criacao de classificador e utilizacao do metodo de busca Haar de

faces em uma imagem.

Como pode ser visto em [Castrillon-Santana et al., 2008] e [Junior, 2009] a aplicacao

desta tecnica acima e bastante eficiente. Na Figura 4.7 mostra a regiao dos olhos encon-

trado pelo metodo de classificacao Haar delimitada pelo retangulo vermelho. A aplicacao

no fluxo de vıdeo da webcam, retorna apenas a regiao dos olhos do usuario necessaria para

atingir o objetivo proposto, sendo o restante da imagem eliminado para evitar processa-

mento desnecessario que pode prejudicar o desempenho final.

Figura 4.7: Regiao do par de olhos encontrados delimitado pelo retangulo vermelho.

22

Page 37: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

4.6 Pre-processamento

O proximo passo e de pre-processamento da imagem na regiao dos olhos retornado do

passo anterior. Esta etapa e de suma importancia nesta parte do prototipo, a imagem

captada e convertida de imagem colorida para imagem em escala de cinza, este proces-

samento e necessario para a aplicacao do proximo metodo de processamento visando a

melhora do contraste da imagem.

No trabalho de [Gonzalez e Woods, 2000] a representacao do contraste e uma medida

qualitativa e que esta relacionada com a distribuicao dos tons de cinza em uma imagem.

O histograma e a representacao grafica desta distribuicao dos nıveis de cinza de uma

imagem. A tecnica equalizacao de histograma tem como objetivo melhorar a qualidade

da imagem obtendo o melhor contraste da imagem capturada. Na Figura 4.8 tem a

representacao dos histogramas de quatro imagens basicas, sendo elas uma imagem escura

na Figura 4.8(a), uma imagem clara (Figura 4.8(b)), imagem de baixo contraste (Figura

4.8(c)) e a ultima, uma imagem de alto contraste (Figura 4.8(d)).

Figura 4.8: Histogramas referentes a quatro tipos basicos de imagens

[Gonzalez e Woods, 2000].

Esta tecnica melhora o contraste da imagem, resolvendo parcialmente a questao do

problema de variacao de luminosidade no ambiente, pois mesmo com uma mudanca sig-

nificativa na claridade, mais escuro ou mais claro, o resultado da equalizacao preserva as

caracterısticas importantes para o passo seguinte na execucao do prototipo.

A Figura 4.9 mostra a melhora na imagem apos aplicacao das tecnicas de processa-

mento de imagens, onde temos a imagem colorida a esquerda, ao centro a imagem em

23

Page 38: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

escala de cinza e a direita a imagem apos a equalizacao de seu histograma.

Figura 4.9: Aplicacao de Tecnicas de processamento de Imagens, temos respectivamente

a imagem colorida, a mesma em escala de cinza e apos a equalizacao do histograma

4.7 Comparar Modelo de Decisao

Com a imagem processada, o proximo passo e a comparacao desta com os modelos

de decisao. Como visto na secao 4.3, os modelos de decisao sao imagens processadas

do usuario focando o olhar nos pontos determinados na regiao do monitor carregada em

memoria no inıcio da execucao do prototipo. A regiao dos olhos encontrada em cada frame

da webcam, e comparada apos o pre-processamento com todos os modelos de decisao. No

trabalho apresentado em [Bradski e Kaehler, 2008] descreve claramente a eficiencia do

metodo proposto para comparacao de duas imagens disponıvel na OpenCV; este processo

e feito pixel-a-pixel levando em conta a posicao do mesmo na imagem.

Para cada comparacao com o modelo, e retornado um valor referente a igualdade das

duas imagens, onde se o retorno for zero significa que as duas imagens sao identicas, caso

for diferente de zero, significa que as imagens nao sao iguais, quanto maior este valor

maior a diferenca entre mesmas.

Durante a execucao do prototipo a imagem pre-processada originada do passo anterior

e comparada com as imagens dos modelos de decisao. Este passo de comparacao visa

identificar com qual dos modelos em memoria a imagem obtida em tempo real mais se

parece. Esta identificacao e importante para determinar para qual sentido o cursor do

mouse tem que se mover. Na Figura 4.10 representa o metodo de comparacao citado

anteriormente, onde cada imagem do modelo de decisao que representa uma regiao do

monitor e comparada com a imagem da obtida pela webcam em tempo real.

O resultado deste processo comparativo entre as imagens dos modelos de decisao e a

imagem pre-processada da regiao dos olhos do usuario, obtida pela webcam, pode ser visto

na tabela 4.1. Com a identificacao do menor valor de comparacao na tabela, podemos

associar que o usuario esteja olhando para aquela determinada regiao no monitor, com

isso definimos para qual direcao o cursor do mouse devera se mover.

24

Page 39: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Figura 4.10: Imagem sendo comparada com os modelos de decisao carregados em memoria

Tabela 4.1: Resultado da comparacao da imagem obtida na webcam com os modelos de

decisao conforme a Figura 4.10

Resultado da Comparacao

Modelo Resultado

Imagem 1 6345

Imagem 2 4789

Imagem 3 5234

Imagem 4 7123

Imagem 5 2145

4.8 Mover Cursor

Com o resultado da comparacao com os modelos de decisao, agora e possıvel movi-

mentar o cursor do mouse para o lado que o usuario esta olhando, para cada regiao dos

olhos encontrada no frame, o prototipo pega no momento localizacao (x,y) do mouse no

monitor e altera os valores da posicao cartesiana; como exemplo, se for constatado que o

usuario estiver olhando para a regiao ”em cima”o valor de posicao Y tera seu valor decre-

mentado, por outro lado, se o usuario estiver olhando na regiao ”em baixo”do monitor,

o valor de posicao Y tera seu valor incrementado. O mesmo vale para quando o usuario

estiver olhando para a regiao ”esquerda”e para a regiao ”direita”do monitor; sendo para

esquerda o valor de posicao X sera decrementado e para a direita o valor de posicao X

sera incrementado. Ao contrario desses quatro pontos, o central nao modifica a posicao

do cursor, o mesmo serve apenas como referencia para os demais modelos de decisao. No

proximo capıtulo sera abordada a parte referente aos testes no prototipo e analises dos

resultados dos mesmos.

25

Page 40: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Capıtulo 5

Analise e Resultados

5.1 Detalhes dos Testes

Neste capıtulo serao abordados os testes no prototipo e a analise dos resultados. Para

execucao dos testes, foram levadas em consideracao algumas possıveis posicoes do usuario

durante o uso do mesmo, sendo que ao utilizar um computador as pessoas fazem diversos

movimentos com o tronco e com a cabeca, estes movimentos, mesmo que involuntarios

podem afetar diretamente o funcionamento do prototipo.

Este posicionamento do usuario em frente ao computador pode variar dependendo

do comportamento, postura, etc. Porem os testes foram aplicados nas possıveis posicoes

permitidas para o uso do prototipo respeitando as restricoes vistas na Secao 4.2. As

situacoes de postura em frente a webcam para os testes foram:

• Posicionamento Ideal. Neste caso o usuario se mantem em frente ao computador

na mesma posicao e distancia de quando foram gerados os modelos de decisao.

• Movimento da Face. Neste posicionamento, o usuario move a face para qualquer

lado, mas sempre permitindo a captacao da regiao dos olhos.

• Usuario Distante. No ultimo caso, o usuario se encontra mais afastado do com-

putador.

Os testes foram executados visando reconhecer os limites e o desempenho final do

prototipo. Para cada teste foi verificado a capacidade de reconhecimento do usuario

olhando nos pontos definidos para funcionamento do prototipo. Para cada um dos cinco

pontos foi executado 500 comparacoes com imagens em tempo real do usuario, totalizando

2500 comparacoes para da cada posicionamento.

Os resultados dos testes estao divididos em dois grupos distintos, um grupo referente

aos ”Acertos”e outro de ”Erros”. No grupo de acertos foram computadas as comparacoes

26

Page 41: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

corretas, onde o usuario olhava para uma determinada regiao e o prototipo movimentou o

cursor do mouse para o sentido correto. No grupo de erros foi contabilizada a quantidade

de interpretacoes erradas do prototipo, onde o usuario olhava para uma determinada

regiao no monitor e o mesmo interpretava outra.

5.2 Testes e Analises

Como citado anteriormente, os testes levaram em consideracao tres possıveis posicio-

namento do usuario em frente ao computador. No primeiro teste e aplicado na posicao

ideal, onde o usuario mantem a face estatica e com uma distancia proxima ao monitor,

por volta de 30 a 40 centımetros; de preferencia similar quando foi calibrado no prototipo

na geracao dos modelos de decisao.

No segundo teste refere-se ao usuario movimentando a face para algum dos lados, mas

sendo possıvel a captacao da regiao dos olhos. No ultimo teste representa o usuario mais

afastado da tela, ou seja, com uma distancia maior da posicao da geracao dos modelos

que ocorre durante a calibracao.

• O primeiro teste foi com a cabeca na mesma distancia e posicao de criacao dos mo-

delos de decisao, como citado anteriormente, esta posicao e a ideal para a utilizacao

do prototipo, pois as imagens captadas tiveram um ındice de igualdade excelente.

Para este caso o resultado alcancado foi de 98,6% de acerto, a Figura 5.1 demonstra

o posicionamento correto sendo capturada durante dos testes. Na tabela 5.1 consta

os resultados deste teste para as direcoes consideradas.

Figura 5.1: Imagem obtida durante a aplicacao do primeiro teste.

27

Page 42: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Tabela 5.1: Resultado referente ao primeiro teste.

Resultado do Primeiro Teste

Total Imagens Acertos Erros % Acertos

Em Cima 500 489 11 97,80%

Centro 500 493 7 98,60%

Em Baixo 500 492 8 98,40%

Esquerda 500 497 3 99,40%

Direita 500 494 6 98,80%

TOTAL 2500 2465 35 98,60%

• O segundo teste foi com a cabeca na mesma distancia de criacao dos modelos de

decisao, porem com variacoes da face do usuario, tanto para esquerda, direita, em

cima e em baixo. Para este teste teve como resultado 74,48% de acertos. Na Figura

5.2 mostra o usuario olhando para a regiao central com a face voltada para a regiao

a direita do monitor, este movimento com a face pode influenciar na decisao para

qual sentido o mouse devera se mover. Com a execucao dos calculos de comparacao

com os modelos de decisao, a regiao dos olhos desta imagem poderia se parecer com

a outra, neste caso a regiao esquerda, logo o prototipo erra no sentido do movimento

do cursor. Na tabela 5.2 consta os resultados referentes aos testes no posicionamento

citado acima.

Figura 5.2: Imagem obtida durante a aplicacao do segundo teste.

• O terceiro e ultimo teste foi com a mesma posicao de criacao dos modelos de decisao

e com variacao na distancia, onde neste caso o usuario ficou mais afastado da tela,

a Figura 5.3 foi capturada durante o teste. O resultado obtido neste teste foi de

28

Page 43: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Tabela 5.2: Resultado referente ao segundo teste.

Resultado do Segundo Teste

Total Imagens Acertos Erros % Acertos

Em Cima 500 351 149 70,20%

Centro 500 370 130 74,00%

Em Baixo 500 369 131 73,80%

Esquerda 500 392 108 78,40%

Direita 500 380 120 76,00%

TOTAL 2500 1862 638 74,48%

89,24% de acerto, visto que mesmo com uma distancia maior do monitor o olhar do

usuario permanece voltado para a mesma regiao, porem com um deslocamento da ıris

menor, esta diferenca influencia principalmente para identificar o olhar nas regioes

”Em Cima”, ”Centro”e ”Em Baixo”, pois o deslocamento da ıris e menor, resultante

ao formato Widescreen do monitor. Outro ponto interessante destes testes e que

em hipotese temos que, com um monitor com um tamanho maior possivelmente os

resultados seriam melhores, para este caso da distancia, um monitor maior poderia

garantir um resultado mais preciso diante do metodo de comparacao com os modelos

de decisao. Na tabela 5.3 consta os resultados deste teste.

Figura 5.3: Imagem obtida durante a aplicacao do terceiro teste.

Ao concluir os testes e possıvel ver claramente a eficiencia do prototipo quando o

usuario esta na posicao de criacao dos modelos de decisao. Uma vantagem da abordagem

comparativa de imagens e que o prototipo funcionaria mesmo para uma pessoa utili-

29

Page 44: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Tabela 5.3: Resultado referente ao terceiro teste.Resultado do Terceiro Teste

Total Imagens Acertos Erros % Acertos

Em Cima 500 453 47 90,60%

Centro 500 411 89 82,20%

Em Baixo 500 466 34 93,20%

Esquerda 500 454 46 90,80%

Direita 500 447 53 89,40%

TOTAL 2500 2231 269 89,24%

zando oculos, claro que para isso dependeria de condicoes de luminosidade no ambiente;

e tambem para pessoas que sofrem de estrabismo, que e a perda de paralelismo dos olhos.

O prototipo resultante deste trabalho tem caracterısticas importantes que o difere dos

demais. No modelo proposto em [Moreira e Santos, 2009], foi obtido 10 frames por se-

gundo, isso ocorreu devido a busca da regiao dos olhos atraves do template, tendo em vista

que o posicionamento da face do usuario esta ao centro da imagem, sendo assim, com-

paracoes desnecessarias sao feitas nas extremidades da imagem. Este trabalho, baseado

na tecnica de busca de [Viola e Jones, 2001] e com comparacao com imagens em memoria,

o resultado chegou a 30 frames por segundo, dando resposta imediata ao movimento do

olho do usuario, desde a captacao ate o deslocamento do cursor do mouse.

No modelo semelhante ao proposto neste trabalho, apresentado em [Peixoto et al., 2008],

e utilizado tecnicas de comparacao de imagens utilizando tres metodos de redes neurais.

O resultado alcancado obtido pelo prototipo apresentado aqui e superior quando compa-

rado com o melhor resultado destas tres tecnicas para identificar a regiao que o usuario

esta olhando.

Uma caracterıstica importante e a utilizacao de uma simples webcam que esta agre-

gada ao notebook, sendo assim, nao ha a necessidade de um equipamento especıfico para

localizacao dos olhos, nao precisando comprar ou criar nenhum hardware para a execucao

de rastreamento como acontece em [Nascimento, 2009]. No proximo capıtulo aborda as

consideracoes finais deste trabalho.

30

Page 45: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Capıtulo 6

Conclusao

A execucao deste trabalho a respeito da utilizacao de tecnicas de Processamento de

Imagens Digitais e Visao Computacional para o desenvolvimento de uma interface homem-

computador propiciou um entendimento satisfatorio sobre o assunto. Como conclusao

deste trabalho obtem a resposta para a questao levantada no Capıtulo 1, mostrando que

se respeitado algumas restricoes de posicionamento e possıvel a criacao de um prototipo

para interpretacao do olhar do usuario para a movimentacao do cursor do mouse

O modelo resultante e baseado em tecnicas de processamento digital de imagens e visao

computacional, que estao entre as areas que mais crescem na area da computacao devido

a sua capacidade de abranger diversos segmentos de aplicacoes. Outra caracterıstica

importante foi a utilizacao da biblioteca OpenCV, a mesma demonstrou ser muito eficiente

e de simples utilizacao refletindo no bom resultado final.

Dentre as caracterısticas deste prototipo a que mais se destaca e a nao necessidade

de um hardware especıfico para seu funcionamento. Uma caracterıstica que deixou a

desejar e a nao existencia de um gerenciamento dos usuarios, necessitando a calibracao

do prototipo toda vez que trocar de usuario.

Os resultados dos testes mostram um grande potencial do prototipo, mostrando que

o modelo proposto pode ser empregado para o auxılio de pessoas portadoras de de-

ficiencia fısica, proporcionando maior acesso a informacao, conhecimento, independencia

e interacao social.

Como possıveis trabalhos futuros, pode-se apontar:

• Melhoria da imagem, aplicando filtros mais eficientes de processamento em para

solucao de ambientes com pouca luminosidade.

• Criar ambiente grafico para criacao dos modelos de decisao e execucao do prototipo,

possibilitando o mesmo ficar mais simples e intuitivo em seu uso.

• Agregar eventos de click do mouse associando os botoes aos olhos, sendo que, quando

o usuario piscar um determinado olho este representaria um dos botoes do mouse.

31

Page 46: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

• Agregar calculo do angulo tridimensional da cabeca para melhorar a precisao quando

o usuario movimenta a face para algum sentido.

• Agregar calculo de deslocamento da regiao do usuario perante a webcam, para nao

necessitar do usuario permanecer no centro da imagem captada, proporcionando

mais liberdade para o mesmo.

• Agregar funcionalidade para o prototipo nao so movimentar o cursor do mouse, mas

tambem identificar o usuario que esta utilizando o mesmo.

• Utilizacao do prototipo para interacao em jogos eletronicos com interacao do meio

atraves do olhar.

32

Page 47: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Referencias

Araujo, G. C. (2010). Algoritmo para reconhecimento de caracterısticas faciais baseado

em filtros de correlacao. Master’s thesis, Universidade Federal do Rio de Janeiro.

Bradski, G. e Kaehler, A. (2008). Learning OpenCV: Computer vision with the OpenCV

library. O’Reilly Media, 1 edition.

Carvalho, F., T., S., e J.M.R. (2005). Deteccao e extraccao de caracterısticas do olho

humano a partir de um modelo prototipo deformavel. ENVC2005-Encontro Nacional

de Visualizacaoo Cientifica.

Castrillon-Santana, M., O. Deniz-Suarez, L. A.-C., e Lorenzo-Navarro, J. (2008). Face

and facial feature detection evaluation. In Third International Conference on Computer

Vision Theory and Applications, VISAPP08.

Castrillon-Santana, M., Deniz-Suarez, O., Anton-Canalıs, L., e Lorenzo-Navarro, J.

(2008). Face and facial feature detection evaluation. In International Conference on

Computer Vision Theory and Applications.

Castrillon Santana, M., Deniz Suarez, O., Hernandez Tejera, M., e Guerra Artal, C.

(2007). Encara2: Real-time detection of multiple faces at different resolutions in video

streams. Journal of Visual Communication and Image Representation, pages 130–140.

Fu, K. e Mui, J. (1981). A survey on image segmentation. Pattern Recognition, 13(1):3–16.

Gonzalez, R. e Woods, R. (2000). Processamento de imagens digitais. Edgard Blucher, 1

edition.

IBGE (2000). Censo 2000 - estatısticas de pessoas com deficiencia. Dis-

ponıvel em: http://www.ibge.gov.br/home/presidencia/noticias/noticia visualiza.php

id noticia=438&id pagina=1. Acessado em: Marco de 2011.

Jackson, M. (1995). Software requirements & specifications. 8.

Jahne, B. e Haußecker, H. (2000). Computer vision and applications: a guide for students

and practitioners. Academic Pr.

Jahne, B., Haußecker, H., e Ray, L. (2002). Computer vision and applications: A guide

for students and practitioners. Journal of Electronic Imaging, 11:115.

Junior, J. B. (2009). Novo aeon: Um ambiente de programacao para visao computacional.

Monografia, Departamento de Ciencia da Computacao, Universidade Federal da Bahia.

33

Page 48: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Kuncheva, L. (2004). Combining pattern classifiers: methods and algorithms. Wiley-

Interscience.

Leao, L. P. S. P., Marques, T. P., e Matos, L. N. (2011). Sistema atencional para deteccao

e rastreamento de faces. 3:53–63.

Lienhart, R. e Maydt, J. (2002). An extended set of haar-like features for rapid object

detection. In Image Processing. 2002. Proceedings. 2002 International Conference on,

volume 1, pages I–900. Ieee.

Ma, E. L. H. (2007). Avaliacao de caracterısticas haar em um modelo de deteccao de face.

Monografia, Universidade de Brasılia.

Martins, C. F. Meios de entretenimento com computador, suas vantagens e desvantagens.

pages 1–4.

Moreira, H. S. e Santos, T. A. (2009). Tecnicas de processamento digital de imagens para

captacao e interpretacao do movimento ocular. Monografia, Universidade Federal de

Goias.

Nascimento, L. A. (2009). Uma interface humano inteligente baseada inteligente baseada

no rastreamento ocular para comunicacao escrita de pacientes com sındrome locked-in.

Monografia, Universidade Federal de Pernambuco.

Oliveira, E. (2008). Captura de expressoes faciais para identificacao de emocoes basicas

em humanos. Monografia, Universidade do Vale do Rio dos Sinos.

Peixoto, H., de Farias Gomes, S., et al. (2008). Classificacao da direcao do olhar para

interatividade humana utilizando processamento de imagens digitais. In Proceedings of

the VIII Brazilian Symposium on Human Factors in Computing Systems, pages 318–

319. Sociedade Brasileira de Computacao.

Restom, A. (2006). Visage: Using the face as a mouse. Monografia, Departament Of

Artificial Intelligence,University Of Damascus.

Rocha, E. C. F. e Couto, D. B. S. (2008). Inclusao sociodigital de portadores de necessi-

dades especiais. page 9.

Santos, K. E. A. (2008). Uma implementacao do algoritmo haar-cascade para localizacao

facial. Monografia, Universidade do Vale do Rio dos Sinos.

Souza, L. (2008). Dendrocronologia digital. Monografia, Departamento de Ciencia da

Computacao, Universidade Federal de Goias.

34

Page 49: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Vieira, T. (2009). Dispositivo de tecnologia assistiva baseado em processamento em tempo

real de imagens do globo ocular. Monografia, Universidade Federal de Pernambuco.

Vieira, T. e Fontana, E. (2008). Dispositivo de rastreamento de movimentos oculares

baseado em webcam e iluminacao com led infravermelho. XXI Congresso Brasileiro de

Engenharia Biomedica, pages 669–672.

Viola, P. e Jones, M. (2001). Rapid object detection using a boosted cascade of simple

features. Published by the IEEE Computer Society.

Viola, P., Jones, M., e Snow, D. (2005). Detecting pedestrians using patterns of motion

and appearance. International Journal of Computer Vision, 63(2):153–161.

35

Page 50: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

Apendice A

Codigo Fonte

A.1 Classe eyeMouse

1 // eyeMouse2 . cpp : De f ines the entry po int f o r the conso l e

a p p l i c a t i o n .

2 //

3

4 #inc lude ” s tda fx . h”

5 #inc lude <s t d i o . h>

6 #inc lude <highgu i . h>

7 #inc lude ”cv . h”

8

9 CvHaarClass i f i e rCascade ∗ cascade ,∗ ca s cade e ;

10 CvMemStorage ∗ s t o rage ;

11 IplImage ∗ imgCentro [ 5 ] , ∗imgCima [ 5 ] , ∗ imgBaixo [ 5 ] , ∗ imgEsquerda [ 5 ] , ∗imgDire i ta [ 5 ] ;

12

13 i n t img no ;

14 i n t t ipoPr ;

15

16 char ∗ f a c e c a s c a d e=”xml/ h a a r c a s c a d e f r o n t a l f a c e a l t 2 . xml” ;

17 char ∗ eye cascade =”xml/ haarca s cade mcs eyepa i r b i g . xml” ;

18

19 i n t tmain ( i n t argc , TCHAR∗ argv [ ] )

20 {21 CvCapture ∗ capture = 0 ;

22 IplImage ∗ frame = 0 ;

23 i n t key = 0 ;

24

25 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗26 //Tipo de execuc ao do programa

27 // 1 − Gerar Modelos

36

Page 51: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

28 // 2 − Mostrar Jane la s

29 // 3 − Funcionamento Normal

30 t ipoPr = 3 ;

31 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗32

33

34

35 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗36 // Carregar os XML c l a s s i f i c a d o r e s da f a c e e dos o lhos

37 s to rage = cvCreateMemStorage ( 0 ) ;

38 cascade = ( CvHaarClass i f i e rCascade ∗ ) cvLoad ( f a ce ca s cade , 0 , 0 ,

0 ) ;

39 ca scade e = ( CvHaarClass i f i e rCascade ∗ ) cvLoad ( eye cascade , 0 , 0 ,

0 ) ;

40

41 // V e r i f i c a r se carregou os c l a s s i f i c a d o r e s

42 i f ( ! ( cascade | | ca s cade e ) ) {43 f p r i n t f ( s tde r r , ”ERRO: Nao f o i p o s s i v e l c a r r ega r os

c l a s s i f i c a d o r e s cascade \n” ) ;

44 re turn −1;

45 }46 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗47

48

49 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗50 // Carregar modelos em memoria

51 i f ( t ipoPr == 3) {52 carregaImgsModelo ( ) ;

53 }54 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗55

56

57 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗58 // i n i c i a l i z a a webcam

59 capture = cvCaptureFromCAM( 0 ) ;

60

61 // V e r i f i c a se conseguiu i n i c i a l i z a r a webcam

62 i f ( ! capture ) {63 f p r i n t f ( s tde r r , ”Nao f o i p o s s i v e l i n i c i a l i z a r a webcam !\n” )

;

64 re turn 1 ;

65 }66 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗67

68 // Cria uma j a n e l a para e x i b i c a o da webcam

37

Page 52: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

69 cvNamedWindow( ” r e s u l t ” , CV WINDOW AUTOSIZE ) ;

70

71 // Mostrar j a n e l a s

72 i f ( t ipoPr == 2) {73 cvNamedWindow( ” o lhos1 ” , CV WINDOW AUTOSIZE ) ;

74 cvNamedWindow( ” o lhos2 ” , CV WINDOW AUTOSIZE ) ;

75 cvNamedWindow( ” o lhos3 ” , CV WINDOW AUTOSIZE ) ;

76 }77

78 whi l e ( key != ’ q ’ ) {79 //Pega o frame

80 frame = cvQueryFrame ( capture ) ;

81

82 // checa o frame

83 i f ( ! frame ) break ;

84

85 // car rega o frame na j a n e l a

86 de t e c t Fa c i a l Fe a t u r e s ( frame ) ;

87

88 cvShowImage ( ” r e s u l t ” , frame ) ;

89

90 // s a i r quando aper ta r ’ q ’

91 key = cvWaitKey ( 1 ) ;

92 }93

94 // Libera a memoria u t i l i z a d a

95 cvDestroyWindow ( ” r e s u l t ” ) ;

96

97 // l i b e r a r memoria j a n e l a s

98 i f ( t ipoPr == 2) {99 cvDestroyWindow ( ” o lhos1 ” ) ;

100 cvDestroyWindow ( ” o lhos2 ” ) ;

101 cvDestroyWindow ( ” o lhos3 ” ) ;

102 }103 cvReleaseCapture ( &capture ) ;

104 re turn 0 ;

105 }106

107

108

109 i n t d e t e c tF ac i a lF ea tu r e s ( IplImage ∗ img )

110 {111 IplImage ∗eyeFind , ∗eyeFindGray ;

112 i n t w = ( img )−>width ;

113 i n t h = ( img )−>he ight ;

38

Page 53: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

114 i n t i ;

115 i n t acao = 0 ;

116 CvSeq∗ f a c e s , ∗ o lhos ;

117 CvRect ∗ r ;

118 CvMemStorage∗ s t o rage=cvCreateMemStorage (0 ) ;

119 cvClearMemStorage ( s t o rage ) ;

120

121 // V e r i f i c a se o modelo de busca dos o lhos e s ta OK

122 i f ( ca s cade e )

123 o lhos = cvHaarDetectObjects ( img , cascade e , s torage , 1 . 15 , 3 ,

0 , cvS i z e (25 , 15) ) ;

124 e l s e

125 p r i n t f ( ”\ n C l a s s i f i c a d o r dos o lhos nao carregado ” ) ;

126

127 //Para cada img dos o lhos encontrada

128 f o r ( i = 0 ; i < ( o lhos ? olhos−>t o t a l : 0 ) ; i++ )

129 {130 // Obter coordenadas da f a c e

131 r = ( CvRect∗ ) cvGetSeqElem ( olhos , i ) ;

132

133 // Desenhar um c i r c u l o vermelho na r e g i a o

134 cvRectangle ( img , cvPoint ( r−>x , r−>y ) , cvPoint ( r−>x + r−>width , r−>y + r−>he ight ) ,

135 CV RGB( 255 , 0 , 0 ) , 1 , 8 , 0 ) ;

136

137 // Imprimir dados da coordenada no conso l e

138 // p r i n t f (”\n f a c e x=%d f a c e y=%d wd=%d ht=%d” , r−>x , r−>y , r−>width , r−>he ight ) ;

139

140 // Def in indo r e g i a o de i n t e r e s s e onde encontrou os o lhos

141 cvSetImageROI ( img , cvRect ( r−>x , r−>y , r−>width , r−>he ight ) ) ;

142

143 // Cr iar imagem da r e g i a o encontrada

144 eyeFind = cvCreateImage ( cvS i z e ( r−>width , r−>he ight ) , img−>depth , img−>nChannels ) ;

145 eyeFindGray = cvCreateImage ( cvS i z e ( r−>width , r−>he ight ) ,

IPL DEPTH 8U , 1 ) ;

146

147 //Copiando a r e g i a o de i n t e r e s s e para uma v a r i a v e l

148 cvCopyImage ( img , eyeFind ) ;

149

150 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗151 i f ( t ipoPr == 2) {152 // Mostrar r e g i a o o lho encontrado

153 cvShowImage ( ” o lhos1 ” , eyeFind ) ;

39

Page 54: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

154 }155 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗156

157

158 //Mudando cor da imagen de c o l o r i d a para c inza

159 cvCvtColor ( img , eyeFindGray , CV RGB2GRAY ) ;

160

161 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗162 i f ( t ipoPr == 2) {163 // Mostrar r e g i a o o lho c inza encontrado

164 cvShowImage ( ” o lhos2 ” , eyeFindGray ) ;

165

166 }167 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗168

169 // Equalizando o histograma da imagem em e s c a l a de c inza

170 cvEqua l i z eHi s t ( eyeFindGray , eyeFindGray ) ;

171

172 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗173 i f ( t ipoPr == 2) {174 // Mostrar r e g i a o o lho c inza equa l i zadoencontrado

175 cvShowImage ( ” o lhos3 ” , eyeFindGray ) ;

176 }177 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗178

179 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗180 i f ( t ipoPr == 1) {181 img no = 0 ;

182 cr iaModelos ( eyeFindGray ) ;

183 }184 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗185

186

187 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗188 //PROCESSAMENTO PRINCIPAL

189 i f ( t ipoPr == 3) {190 acao = comparaImagem ( eyeFindGray ) ;

191 executaAcao ( acao ) ;

192 }193

194 // detectEyes ( img , r ) ;

195 // r e s e t r eg i on o f i n t e r e s t

196 cvResetImageROI ( img ) ;

197 }198 // r e s e t r eg i on o f i n t e r e s t

40

Page 55: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

199 cvResetImageROI ( img ) ;

200 re turn 0 ;

201 }202

203 /∗204 ∗ comparaImagem ( ) − Metodo para comparacao com os modelos na memoria

205 ∗206 ∗ @param img − imagem que se ra comparada com os modelos car regados em

memoria

207 ∗ @return − i n t − i n t e i r o que corresponde qual e o lado para que o

mouse deve se movimentar

208 ∗/209 i n t comparaImagem ( IplImage ∗ img ) {210 i n t acao = 0 ;

211 i n t i ;

212 double menor= 999999999;

213 double norm = 0 ;

214 IplImage ∗imgAux ;

215

216

217 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗218 // c a l c u l a r normal : CENTRO

219 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗220 f o r ( i = 0 ; i < 5 ; i++){221 // Redimensionar para imagem menor ( para nao perder qua l idade )

222 i f ( img−>width >= imgCentro [ i ]−>width ) {223 // ’ img ’ maior temos que pegar o tamanho de ’ imgCentro [ i ] ’

para o tamanho da ’ imgAux ’

224 imgAux = cvCreateImage ( cvS i z e ( imgCentro [ i ]−>width , imgCentro [

i ]−>he ight ) , img−>depth , img−>nChannels ) ;

225 // red imens ionar ’ img ’ para o mesmo tamanho de ’ imgCentro [ i ] ’

226 cvRes ize ( img , imgAux , 1 ) ;

227

228 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗229 // Calculo da normal da imagem com os modelos c e n t r a i s

230 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗231 norm += cvNorm( imgAux , imgCentro [ i ] , 4 , 0 ) ;

232 } e l s e {233 // nes t e caso ’ imgCentro [ i ] ’ e maior que ’ img ’ logo pegamos o

tamanho de ’ img ’ para o tamanho da ’ imgAux ’

234 imgAux = cvCreateImage ( cvS i z e ( img−>width , img−>he ight ) ,

imgCentro [ i ]−>depth , imgCentro [ i ]−>nChannels ) ;

235 // agora redimensionamos ’ imgCentro [ i ] ’

236 cvRes ize ( imgCentro [ i ] , imgAux , 1 ) ;

237

41

Page 56: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

238 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗239 // Calculo da normal da imagem com os modelos c e n t r a i s

240 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗241 norm += cvNorm( imgAux , img , 4 , 0 ) ;

242 }243 }244 i f (norm < menor ) {245 menor = norm ;

246 acao = 0 ;

247 }248 norm = 0 ;

249 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗250

251

252 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗253 // c a l c u l a r normal : CIMA

254 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗255 f o r ( i = 0 ; i < 5 ; i++){256 // Redimensionar para imagem menor ( para nao perder qua l idade )

257 i f ( img−>width >= imgCima [ i ]−>width ) {258 // ’ img ’ maior temos que pegar o tamanho de ’ imgCima [ i ] ’ para

o tamanho da ’ imgAux ’

259 imgAux = cvCreateImage ( cvS i z e ( imgCima [ i ]−>width , imgCima [ i ]−>he ight ) , imgCima [ i ]−>depth , imgCima [ i ]−>nChannels ) ;

260 // red imens ionar ’ img ’ para o mesmo tamanho de ’ imgCima [ i ] ’

261 cvRes ize ( img , imgAux , 1 ) ;

262

263 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗264 // Calculo da normal da imagem com os modelos c e n t r a i s

265 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗266 norm += cvNorm( imgAux , imgCima [ i ] , 4 , 0 ) ;

267 } e l s e {268 // nes t e caso ’ imgCentro [ i ] ’ e maior que ’ img ’ logo pegamos o

tamanho de ’ img ’ para o tamanho da ’ imgAux ’

269 imgAux = cvCreateImage ( cvS i z e ( img−>width , img−>he ight ) , img−>depth , img−>nChannels ) ;

270 // agora redimensionamos ’ imgCentro [ i ] ’

271 cvRes ize ( imgCima [ i ] , imgAux , 1 ) ;

272

273 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗274 // Calculo da normal da imagem com os modelos c e n t r a i s

275 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗276 norm += cvNorm( imgAux , img , 4 , 0 ) ;

277 }278 }

42

Page 57: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

279 i f (norm < menor ) {280 menor = norm ;

281 acao = 1 ;

282 }283 norm = 0 ;

284 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗285

286

287 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗288 // c a l c u l a r normal : BAIXO

289 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗290 f o r ( i = 0 ; i < 5 ; i++){291 // Redimensionar para imagem menor ( para nao perder qua l idade )

292 i f ( img−>width >= imgBaixo [ i ]−>width ) {293 // ’ img ’ maior temos que pegar o tamanho de ’ imgBaixo [ i ] ’

para o tamanho da ’ imgAux ’

294 imgAux = cvCreateImage ( cvS i z e ( imgBaixo [ i ]−>width , imgBaixo [ i

]−>he ight ) , imgBaixo [ i ]−>depth , imgBaixo [ i ]−>nChannels ) ;

295 // red imens ionar ’ img ’ para o mesmo tamanho de ’ imgBaixo [ i ] ’

296 cvRes ize ( img , imgAux , 1 ) ;

297

298 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗299 // Calculo da normal da imagem com os modelos c e n t r a i s

300 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗301 norm += cvNorm( imgAux , imgBaixo [ i ] , 4 , 0 ) ;

302 } e l s e {303 // nes t e caso ’ imgBaixo [ i ] ’ e maior que ’ img ’ logo pegamos o

tamanho de ’ img ’ para o tamanho da ’ imgAux ’

304 imgAux = cvCreateImage ( cvS i z e ( img−>width , img−>he ight ) , img−>depth , img−>nChannels ) ;

305 // agora redimensionamos ’ imgBaixo [ i ] ’

306 cvRes ize ( imgBaixo [ i ] , imgAux , 1 ) ;

307

308 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗309 // Calculo da normal da imagem com os modelos c e n t r a i s

310 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗311 norm += cvNorm( imgAux , img , 4 , 0 ) ;

312 }313 }314 i f (norm < menor ) {315 menor = norm ;

316 acao = 2 ;

317 }318 norm = 0 ;

319 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

43

Page 58: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

320

321

322 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗323 // c a l c u l a r normal : ESQUERDA

324 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗325 f o r ( i = 0 ; i < 5 ; i++){326 // Redimensionar para imagem menor ( para nao perder qua l idade )

327 i f ( img−>width >= imgEsquerda [ i ]−>width ) {328 // ’ img ’ maior temos que pegar o tamanho de ’ imgEsquerda [ i ] ’

para o tamanho da ’ imgAux ’

329 imgAux = cvCreateImage ( cvS i z e ( imgEsquerda [ i ]−>width ,

imgEsquerda [ i ]−>he ight ) , imgEsquerda [ i ]−>depth ,

imgEsquerda [ i ]−>nChannels ) ;

330 // red imens ionar ’ img ’ para o mesmo tamanho de ’ imgEsquerda [ i

] ’

331 cvRes ize ( img , imgAux , 1 ) ;

332

333 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗334 // Calculo da normal da imagem com os modelos c e n t r a i s

335 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗336 norm += cvNorm( imgAux , imgEsquerda [ i ] , 4 , 0 ) ;

337 } e l s e {338 // nes t e caso ’ imgEsquerda [ i ] ’ e maior que ’ img ’ logo pegamos

o tamanho de ’ img ’ para o tamanho da ’ imgAux ’

339 imgAux = cvCreateImage ( cvS i z e ( img−>width , img−>he ight ) , img−>depth , img−>nChannels ) ;

340 // agora redimensionamos ’ imgEsquerda [ i ] ’

341 cvRes ize ( imgEsquerda [ i ] , imgAux , 1 ) ;

342

343 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗344 // Calculo da normal da imagem com os modelos c e n t r a i s

345 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗346 norm += cvNorm( imgAux , img , 4 , 0 ) ;

347 }348 }349 i f (norm < menor ) {350 menor = norm ;

351 acao = 3 ;

352 }353 norm = 0 ;

354 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗355

356

357 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗358 // c a l c u l a r normal : DIREITA

44

Page 59: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

359 f o r ( i = 0 ; i < 5 ; i++){360 // Redimensionar para imagem menor ( para nao perder qua l idade )

361 i f ( img−>width >= imgDire i ta [ i ]−>width ) {362 // ’ img ’ maior temos que pegar o tamanho de ’ imgDire i ta [ i ] ’

para o tamanho da ’ imgAux ’

363 imgAux = cvCreateImage ( cvS i z e ( imgDire i ta [ i ]−>width ,

imgDire i ta [ i ]−>he ight ) , imgDire i ta [ i ]−>depth , imgDire i ta [ i

]−>nChannels ) ;

364 // red imens ionar ’ img ’ para o mesmo tamanho de ’ imgDire i ta [ i

] ’

365 cvRes ize ( img , imgAux , 1 ) ;

366

367 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗368 // Calculo da normal da imagem com os modelos c e n t r a i s

369 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗370 norm += cvNorm( imgAux , imgDire i ta [ i ] , 4 , 0 ) ;

371 } e l s e {372 // nes t e caso ’ imgDire i ta [ i ] ’ e maior que ’ img ’ logo pegamos

o tamanho de ’ img ’ para o tamanho da ’ imgAux ’

373 imgAux = cvCreateImage ( cvS i z e ( img−>width , img−>he ight ) , img−>depth , img−>nChannels ) ;

374 // agora redimensionamos ’ imgEsquerda [ i ] ’

375 cvRes ize ( imgDire i ta [ i ] , imgAux , 1 ) ;

376

377 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗378 // Calculo da normal da imagem com os modelos c e n t r a i s

379 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗380 norm += cvNorm( imgAux , img , 4 , 0 ) ;

381 }382 }383 i f (norm < menor ) {384 menor = norm ;

385 acao = 4 ;

386 }387 norm = 0 ;

388 // ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗389

390 // l impar endere co memoria imagem

391 cvReleaseImage(&imgAux) ;

392

393

394 return acao ;

395 }396

397 /∗

45

Page 60: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

398 ∗ executaAcao ( ) − Metodo para para executar para qual o lado que o

mouse va i se mover .

399 ∗400 ∗ @param acao − i n t e i r o r e f e r e n t e a acao do mouse

401 ∗402 ∗ 0 − Centro

403 ∗ 1 − Cima

404 ∗ 2 − Baixo

405 ∗ 3 − Esquerda

406 ∗ 4 − D i r e i t a

407 ∗/408 i n t executaAcao ( i n t acao ) {409 POINT cursorPos ;

410 long x = 0 ;

411 long y = 0 ;

412 GetCursorPos(&cursorPos ) ;

413

414 x = cursorPos . x ;

415 y = cursorPos . y ;

416

417 //Cima

418 i f ( acao == 1) {419 y −= 10 ;

420 }421 // Baixo

422 i f ( acao == 2) {423 y += 10 ;

424 }425 // Esquerda

426 i f ( acao == 3) {427 x −= 10 ;

428 }429 // D i r e i t a

430 i f ( acao == 4) {431 x += 10 ;

432 }433 SetCursorPos (x , y ) ;

434 }435

436 /∗437 ∗ carregaModelos ( ) − Metodo para ca r r ega r na memoria os modelos para

comparacao

438 ∗/439 i n t carregaImgsModelo ( ) {440 i n t i ;

46

Page 61: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

441 char image [ 1 0 0 ] ;

442 IplImage ∗aux ;

443

444 // ca r r ega r imagem para os array : CENTRO

445 f o r ( i = 0 ; i < 5 ; i++){446 s p r i n t f ( image , ” imgModelos/ centro/%d . jpg ” , i ) ;

447 imgCentro [ i ] = cvLoadImage ( image ,CV LOAD IMAGE GRAYSCALE) ;

448 }449

450 // ca r r ega r imagem para os array : CIMA

451 f o r ( i = 0 ; i < 5 ; i++){452 s p r i n t f ( image , ” imgModelos/cima/%d . jpg ” , i ) ;

453 imgCima [ i ] = cvLoadImage ( image ,CV LOAD IMAGE GRAYSCALE) ;

454 }455

456 // ca r r ega r imagem para os array : BAIXO

457 f o r ( i = 0 ; i < 5 ; i++){458 s p r i n t f ( image , ” imgModelos/ baixo/%d . jpg ” , i ) ;

459 imgBaixo [ i ] =cvLoadImage ( image ,CV LOAD IMAGE GRAYSCALE) ;

460 }461

462 // ca r r ega r imagem para os array : ESQUERDA

463 f o r ( i = 0 ; i < 5 ; i++){464 s p r i n t f ( image , ” imgModelos/ esquerda/%d . jpg ” , i ) ;

465 imgEsquerda [ i ] =cvLoadImage ( image ,CV LOAD IMAGE GRAYSCALE) ;

466 }467

468 // ca r r ega r imagem para os array : DIREITA

469 f o r ( i = 0 ; i < 5 ; i++){470 s p r i n t f ( image , ” imgModelos/ d i r e i t a/%d . jpg ” , i ) ;

471 imgDire i ta [ i ] =cvLoadImage ( image ,CV LOAD IMAGE GRAYSCALE) ;

472 }473 return 0 ;

474 }475

476 /∗477 ∗ carregaModelos ( ) − Metodo para c r i a r modelos para comparacao

478 ∗479 ∗ @param img − imagem se ra sa lva como modelo

480 ∗/481 i n t cr iaModelos ( IplImage ∗ img ) {482 char image [ 1 0 0 ] ;

483 s p r i n t f ( image , ” cr iaModelos/%d . jpg ” , img no ) ;

484 cvSaveImage ( image , img , 0) ;

485 img no++;

47

Page 62: Uso de Vis~ao Computacional para Interface Homem-Computador · Catal~ao - 2011. Lucas Faria Porto Uso de Vis~ao Computacional para Interface Homem-Computador Monogra a apresentada

486 return 0 ;

487 }

48