monografia_poc_2_duilio_campos_sasdelli_sift_no_android

49
Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Ciências da Computação DUÍLIO CAMPOS SASDELLI MONOGRAFIA DE PROJETO ORIENTADO EM COMPUTAÇÃO II EXTRAÇÃO DE PONTOS DE INTERESSE DE IMAGENS UTILIZANDO O ALGORITMO SIFT NO AMBIENTE ANDROID Belo Horizonte – MG 2010 / 1 o semestre

Upload: duilio-campos-sasdelli

Post on 28-Jun-2015

562 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Universidade Federal de Minas Gerais

Instituto de Ciências Exatas

Departamento de Ciências da Computação

DUÍLIO CAMPOS SASDELLI

MONOGRAFIA DE PROJETO ORIENTADO EM COMPUTAÇÃO II

EXTRAÇÃO DE PONTOS DE INTERESSE DE IMAGENS UTILIZANDO O

ALGORITMO SIFT NO AMBIENTE ANDROID

Belo Horizonte – MG

2010 / 1o semestre

Page 2: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Universidade Federal de Minas Gerais

Instituto de Ciências Exatas

Departamento de Ciências da Computação

EXTRAÇÃO DE PONTOS DE INTERESSE DE IMAGENS

UTILIZANDO O ALGORITMO SIFT NO AMBIENTE

ANDROID

por

DUÍLIO CAMPOS SASDELLI

Monografia de Projeto Orientado em Computação II

Apresentado como requisito da disciplina de Projeto Orientado em

Computação I do Curso de Bacharelado em Ciência da Computação da UFMG

Prof. Dr. Fernando Magno Pereira Quintão

Orientador

Prof. Dr. David Menotti

Co-Orientador

Belo Horizonte – MG

2010 / 1o semestre

Page 3: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Aos meus familiares,

aos meus amigos,

aos colegas de curso,

aos professores,

ao Solid Snake,

ao Cloud Striffe,

e ao meu cão Mitternacht,

dedico este trabalho.

i

Page 4: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Agradecimentos

Inicialmente, agradeço aos meus familiares, pelo amor incondicional.

Aos meus amigos, pela presença e companheirismo.

Aos meus professores, pelos conhecimentos adquiridos.

Aos colegas de curso, pela convivência e trocas de experiências.

Ao Solid Snake por salvar o mundo de uma guerra nuclear.

Ao Cloud Striffe por salvar o mundo do impacto de um meteoro.

E finalmente ao meu cão Mitternacht, pela proteção e fidelidade.

ii

Page 5: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

“What is the difference between a man and a parasite?

A man builds. A parasite asks ’Where is my share?’

A man creates. A parasite says, ’What will the neighbors think?’

A man invents. A parasite says, ’Watch out, or you might tread on the toes of God... ”’

Andrews Ryan

iii

Page 6: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Sumário

Lista de Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

Lista de Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

Lista de Siglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x

Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.1 Visão Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.2 Objetivo, justificativa e motivação . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 REFERENCIAL TEÓRICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.2 Visão Computacional e Deteccção de Pontos de Interesse . . . . . . . . . . . . . . 16

3 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1 Tipo de Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2 Visão Geral do SIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2.1 Deteccção de Extremos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2.2 Localização de Pontos de Interesse . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 Definição de Orientação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2.4 Definição de Descritores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.3 SIFT no Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

iv

Page 7: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

3.3.1 Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.3.2 Modificações Realizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.4 Cronograma de Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4 RESULTADOS E DISCUSSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1 Aplicativos Desenvolvidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.2 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.2 Experimentos sobre o SIFT-Desktop . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3 Experimentos sobre as Modificações Propostas . . . . . . . . . . . . . . . . . . . 34

4.4 Experimentos sobre o SIFT-Android . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.4.1 Tempo de Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4.4.2 Economia de Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5 CONCLUSÕES E TRABALHOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.1 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Referências Bibliográficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Apêndice A -- Técnicas Concorrentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

A.1 GLOH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

A.2 SURF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Apêndice B -- Ferramentas e Termos Matemáticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

B.1 Matriz Hessiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

B.2 Transformação Afim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

B.3 Aproximação de Taylor da Função de Diferença de Gaussianas . . . . . . . . . . . 44

B.4 Curvaturas Principais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

v

Page 8: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Apêndice C -- Scale-Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

C.1 Por que utilizar a função gaussiana? . . . . . . . . . . . . . . . . . . . . . . . . . 46

vi

Page 9: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Lista de Figuras

Figura 1.1 Visão geral da Arquitetura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Figura 3.1 Etapas do SIFT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Figura 3.2 Implementação do Scale-Space Utilizando Abordagem Piramidal. . . . . . . . . . 22

Figura 3.3 Deteccção de Extremos da Função Diferença de Gaussianas . . . . . . . . . . . . . . 22

Figura 3.4 Pontos de interesse nas diferentes etapas do SIFT. . . . . . . . . . . . . . . . . . . . . . . . . 24

Figura 3.5 Cálculo de Gradientes e Orientações na Região do Ponto de Interesse. . . . . . 26

Figura 3.6 Histograma de Orientação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Figura 3.7 Exemplo de Cálculo de um Descritor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Figura 4.1 Aplicativos Implementados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Figura 4.2 Aplicativo SIFT-Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Figura 4.3 Resultado dos Testes de Correção e Robustez . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Figura 4.4 Gráfico de tempo de execução (em segundos) por tamanho de imagem (mega-

pixels) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

vii

Page 10: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Figura 4.5 Gráfico de uso máximo de memória (em megabytes por tamanho de imagem

(megapixels) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Figura 4.6 Gráfico de tempo de execução (em segundos) por tamanho de imagem (mega-

pixels) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Figura 4.7 Gráfico da economia de memória:tota

por pixels. . . . . . . . . . . . . . . . . . . . . . . . . . 38

Figura B.1 Transformação Afim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Figura B.2 Curvaturas Principais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Figura C.1 Exemplo da Aplicação da Função Scale-Space. . . . . . . . . . . . . . . . . . . . . . . . . . . 46

viii

Page 11: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Lista de Tabelas

Tabela 3.1 Atividades realizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

ix

Page 12: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Lista de Siglas

SIFT Scale-invariant Feature Transform

PNG Portable Network Graphics

SDK Software Development Kit

IDE Integrated Development Enviroment

DoG Difference of Gaussians

NPDI Núcleo de Processamento Digital de Imagens da UFMG)

GLOH Gradient Location and Orientation Histogram

SURF Speeded Up Robust Features

x

Page 13: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Resumo

Nas últimas décadas, a área de telefonia móvel tem apresentado grandes avanços tecnó-logicos. Dotados de processadores mais rápidos e memórias maiores, os celulares e smartpho-nes incorporaram diversas funcionalidades antes restritas a computadores pessoais. O presentetrabalho tem como objetivo apresentar a implementação do algoritmo SIFT no ambiente de te-lefonia móvel Android. O SIFT realiza a detecção de pontos de interesse em imagens e é umalgoritmo computacionalmente custoso. Os pontos de interesse são utilizados em uma amplagama de aplicações de visão computacional e processamento digital de imagens, notadamentedetecção e reconhecimento de objetos. Com a implementação do SIFT no ambiente Android,espera-se reduzir a carga de trabalho na rede por substituir a transmissão de imagens pelosdados relativos aos pontos de interesse dessas imagens.

Palavras-chave: SIFT, Android, Pontos de Interesse

xi

Page 14: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

Abstract

In the past few decades, mobile phones underwent huge technological changes. Ha-ving faster processors and increased memory allowed cellphones and smartphones to incorpo-rate many applications once restricted to desktop computers. This paper aims to present theimplementation of the SIFT algorithm on the Android mobile environment. SIFT is a com-putationally heavy algorithm responsible for detecting and describing local features in images.These features are used in a broad range of computer vision and digital imaging processingapplications, most notably object detection and recognition. As object recognition and otherSIFT-related applications may require an high bandwidth network connection for picture trans-mission, we intend to eliminate this undesirable bottleneck by transmitting merely the featuresdetected by the SIFT algorithm.

Keywords: SIFT, Android, Interest Points

xii

Page 15: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

13

1 INTRODUÇÃO

1.1 Visão Geral

Nas duas últimas décadas a telefonia móvel passou por grandes avanços tecnológicos.

Além de se sujeitarem a uma diminuição de preço que, por si só, propiciou uma gigantesca

penetração de mercado, os telefones celulares e smartphones agora abrigam uma série de di-

ferentes funcionalidades que vão muito além da comunicação via voz entre duas pessoas. O

crescente poder de processamento e capacidade de memória permitiu que os dispositivos mó-

veis abrigassem aplicações de grande porte antes restritas a computadores pessoais. Muitos

dos dispositivos móveis atuais são dotados de sistemas operacionais completos, entre os quais

destacam-se o SymbianOS e o Android, da Google.

De modo semelhante, a área de Visão Computacional também beneficiou-se dos avan-

ços tecnológicos nas áreas de eletrônica e computação. Foi só a partir do final da década de 70

que os primeiros estudos visando entender e descrever elementos de imagens se tornou possível.

Atualmente, os estudos nessa área culminaram no desenvolvimento de inúmeros aplicativos uti-

lizados no âmbito comercial em áreas como medicina, turismo e segurança. Uma das principais

vertentes de estudo em Visão Computacional está relacionada à extração de pontos ou regiões

de interesse capazes de descrever univocamente os elementos ou objetos de uma imagem.

No presente trabalho propõe-se o desenvolvimento de um sistema de detecção de pon-

tos de interesse (local features) de imagens utilizando o algoritmo SIFT (1, 2). Apesar de

computacionalmente custoso, o SIFT é extremamente robusto, pois cria um descritor de pon-

tos de interesse invariante a diferentes alterações na imagem, como rotação, escala, pequenas

variações de luminosidade, transformações afins e oclusão parcial. Os pontos de interesse são

utilizados em etapas posteriores de aplicações de visão computacional e processamento digital

de imagens como reconhecimento de objetos, planejamento de robôs, rastreamento em vídeos

e modelagem tridimensional. O sistema foi inicialmente implementado no ambiente Desktop

e, posteriormente, convertido para o sistema Android, com as devidas modificações realizadas.

Além disso, procurou-se realizar diferentes testes para analisar a eficiência e viabilidade do

Page 16: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

14

sistema no ambiente móvel.

1.2 Objetivo, justificativa e motivação

A primeira parte do trabalho consistiu na implementação do SIFT no ambiente Desktop

e proveu um arcabouço para a realização de testes, calibragem de parâmetros e análise de de-

sempenho. Com o prosseguimento do projeto, realizou-se a conversão para o ambiente Android

realizando diferentes modificações devido às restrições de processamento e memória inerentes

ao ambiente móvel. Além disso, como o sistema foi implementado no ambiente Android, foi

realizado um estudo sobre a redução do gargalo de transmissão de dados sobre uma rede de

baixa largura de banda. Por ter sido implementado no próprio dispositivo, o sistema reduziu a

carga de transferência que o dispositivo faria com um servidor. Como não é necessário realizar

a transmissão completa da imagem, apenas de seus elementos, houve ganhos significativos de

desempenho. Isso ocorreu porque, em média, uma imagem com compressão PNG é quatro a

seis vezes maior que o conjunto de pontos de interesse e seus descritores.

Figura 1.1: Visão geral da Arquitetura.

A motivação inicial para o desenvolvimento desse trabalho origina-se da criação de um

sistema de reconhecimento de entidades para uma aplicação de turismo semelhante ao proposto

por Fritz et. Al (3). Tal aplicação seria utilizada em celulares e permitiria que os usuários

recuperassem informações sobre entidades turísticas artificiais como construções, esculturas e

pinturas ou naturais como montanhas, rios e cachoeiras. A figura 1.1 fornece uma visão geral

para a arquitetura dessa aplicação. As etapas de extração de pontos de interesse se restringem

ao celular enquanto que o casamento de pontos é realizado no servidor que se comunica com

um banco de dados visual.

É importante ressaltar que, diferentemente da Fritz et. Al, a presente abordagem realiza

a deteccção dos pontos de interesse no dispositivo móvel. Com isso, além da redução do gargalo

Page 17: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

15

da transmissão de rede, adiciona-se um certo grau de paralelismo por dividir o processo de

reconhecimento de objetos entre o cliente e o servidor. Outra vantagem é facilitar o reuso de

componentes através da modularidade: o sistema poderia se transformar em um arcabouço para

ser incorporado a qualquer aplicação de visão computacional que opere em um servidor.

Page 18: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

16

2 REFERENCIAL TEÓRICO

2.1 Android

Android é um sistema operacional desenvolvido pela Google voltado para dispositivos

móveis. Por usar uma versão modificada do kernel do Linux, é um sistema que apresenta bas-

tante estabilidade e segurança. As aplicações são desenvolvidas na linguagem Java e há muitos

textos que discutem o desenvolvimento para o ambiente android, tais como em (5) e também a

documentação no sítio oficial em (6). Atualmente (2010), o Android é um dos sistemas opera-

cionais para smartphones que apresenta maior taxa de crescimento e muitos analistas afirmam

que ele atingirá o topo do mercado até 2014 (10).

O Android é um dos sistemas operacionais para dispositivos móveis como maior su-

porte para desenvolvedores: a Google disponibiliza um SDK completo para o sistema. São

disponibilizadas bibliotecas, depuradores e emuladores que podem ser facilmente integrados a

diversas IDEs, tais como o Eclipse.

2.2 Visão Computacional e Deteccção de Pontos de Interesse

A Visão Computacional, como um ramo da Ciência da Computação, procura estudar a

ciência e as técnicas de extração de informação de imagens. Por utilizar algoritmos complexos,

que demandam grande quantidade de memória e processamento, a visão computacional é uma

área relativamente recente já que foi só a partir do final da década de 70 que emergiram seus pri-

meiros estudos. Atualmente, o desenvolvimento da area culminou no desenvolvimento técnicas

que encontraram aplicações comerciais em áreas como medicina e astronomia. Apesar disso, a

maioria das aplicações são específicas para determinados tipos de problema e ainda não há uma

padronização ou uma maneira correta ou matematicamente ótima de se resolver um problema.

Uma das principais técnicas utilizadas em Visão Computacional é a extração de Pontos

de Interesse (local features) de imagens. Pontos de interesses são pontos ou regiões que apre-

sentem informação relevante para etapas subsequentes do processamento da imagem. Eles são

Page 19: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

17

utilizados em aplicações como deteccção e reconhecimento de objetos, mapeamento de rotas

de robôs, criação automática de panoramas e rastreamento de objetos.

Há, na literatura, diversas metodologias e abordagens para a extração de Pontos de In-

teresse de imagens. Um dos primeiros textos foi proposto por Moravec (1981) e baseava-se em

técnicas de detecção de bordas. Uma melhoria para a técnica de Moravec foi proposta por Har-

ris (1988), que aumentava sua robustez ao captar padrões de variações mais sutis de frequência.

A técnica de Harris se mostrou eficaz para aplicações de rastreamento de movimentos. Um

novo aprimoramento, que aumenta a aplicabilidade dessa técnica foi proposto por Zhang et al.

(1995) através do uso de uma janela de correlação sobre as proximidades de uma borda.

Embora as técnicas anteriores sejam eficazes para a extração de Pontos de Interesse

de imagens, elas ainda não eram aplicadas sobre o problema de reconhecimento de objetos.

Contudo, isso se tornou possível com o trabalho de Schmid e Mor (1997) cuja proposta era

estender o algoritmo de Harris usando um descritor invariante em rotação sobre os elementos

encontrados. Tal metodologia permitiu que duas imagens fossem casadas mesmo com variações

rotacionais ou oclusão parcial, em que não há casamento completo dos Pontos de Interesse.

O SIFT, técnica utilizada nesse trabalho, foi proposto por Lowe em (1) e aprimorado

pelo mesmo em (2). Diferentemente das técnicas anteriores, a técnica de Lowe garante que

os elementos encontrados apresentem invariância sobre escala. Além disso, foi proposto um

novo descritor local que garante maior distintição e menor sensibilidade a transformações afins.

Em (2), Lowe introduz novas técnicas incluindo aprimoramentos para aumentar a invariância e

robustez dos pontos. A invariância sobre escala que faz uso da teoria de Scale-Space é discutida

por Lindenberg em (4). Por fim, há ainda uma discussão sobre o funcionamento do sistema

visual de primatas e sua semelhança com algumas das técnicas do SIFT em (7).

A utilização de um sistema de deteccção de objetos e recuperação de informação em

um ambiente móvel para aplicações voltadas para o turismo foi proposto pela primeira vez por

Fritz et al. em (3). A técnica proposta discutiu uma modificação do algoritmo SIFT, o i-SIFT

(), que faz uma alteração dos descritores dos pontos de interesse levando-se em conta as infor-

mações relevantes para o reconhecimento de objetos. O i-SIFT mostrou-se mais eficaz para o

reconhecimento de objetos do que o SIFT por apresentar um desempenho e correção superio-

res. Diferentemente de Fritz et al., a técnica proposta para o presente trabalho não se restringe

a elementos urbanos e pode ser utilizada para elementos turísticos de qualquer domínio. Mais

importante ainda, a técnica presente propõe o desenvolvimento do SIFT no próprio ambiente

de telefonia móvel, trazendo grandes desafios mas incorporando vantangens como um menor

gargalo na rede e distribuição de carga de trabalho entre cliente e servidor. Além disso, é um

Page 20: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

18

trabalho inovador pois não há ainda, na literatura, um estudo sobre os benefícios de se usar um

sistema de detecção de objetos que incorpore a extração de pontos de interesse no ambiente

móvel.

Page 21: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

19

3 METODOLOGIA

O desenvolvimento do trabalho foi dividido em duas etapas: implementação do SIFT

em um ambiente Desktop e adaptação da aplicação para um ambiente Android. Na primeira

parte deste trabalho foi realizada a implementação e estudo do SIFT no ambiente Desktop. Em

seguida, o sistema foi implementado no ambiente Android.

Com a implementação do protótipo do SIFT no ambiente Desktop, procurou-se realizar

testes para validar o funcionamento do algoritmo e analisou-se a viabilidade de adaptação para

o ambiente Android. Esse capítulo fica, então, dividido da seguinte maneira: na seção 3.1 será

discutido o tipo de pesquisa realizado, na seção 3.2 será feita uma descrição do SIFT, já a seção

3.3 apresenta uma descrição do processo de adaptação do SIFT para o Android e, finalmente, a

seção 3.4 mostra um cronograma das atividades realizadas.

3.1 Tipo de Pesquisa

No presente trabalho procurou-se entender os aspectos teóricos que permeiam cada

uma das etapas do SIFT de forma que a adaptação para o ambiente Android seja feita da melhor

maneira possível. Dessa forma, além de um estudo do SIFT, investigou-se algumas das técnicas

concorrentes (Apêndice B). Além disso, devido à sua forte natureza matemática, investigou-se a

relação entre deteccção de pontos de interesse e os ramos matemáticos da geometria diferencial,

análise de sinais e equações diferenciais. A descrição detalhada sobre essas investigações será

feita na próximo seção.

3.2 Visão Geral do SIFT

SIFT ou Sift-Invariant Feature Transform é um algoritmo de deteccção de pontos de

interesse de imagens proposto por Lowe (1). Os pontos encontrados pelo SIFT possuem descri-

tores robustos o que permite que se encontre e descreva características de elementos locais das

imagens. Dessa forma, o SIFT é amplamente utilizado em problemas como reconhecimento

Page 22: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

20

de objetos em que se faz necessário casar pontos de imagens cujos objetos estão sujeitos a

vários tipos de transformação como mudanças de escala, rotações, variações de iluminação e

transformações afins (Apêndice C). A técnica desenvolvida por Lowe garante invariância total

a alterações de escala e rotação e parcial a alterações de iluminação e transformações afins.

Figura 3.1: Etapas do SIFT.

A abordagem desenvolvida por Lowe e aplicada a esse trabalho utiliza uma metodolo-

gia em cascata que garante eficiência por manter as operações mais custosas nas últimas etapas.

Isso é, há uma filtragem de elementos, que só serão processados pelas últimas etapas se forem

escolhidos e mantidos como candidatos nas primeiras etapas. A figura 3.1 mostra um diagrama

com as principais etapas do SIFT:

1. Deteccção de Extremos: A primeira etapa realiza uma busca por alterações significati-

vas entre todas as escalas e pontos de uma imagem que vão se constituir em extremos

locais. As escalas são implementadas através da função scale-space. Os extremos locais

encontrados serão candidatos a pontos de interesses filtrados nas próximas etapas.

2. Localização de Pontos de Interesse: A segunda etapa é responsável pela filtragem dos

candidatos encontrados na primeira etapa. Para tanto, são utilizadas ferramentas mate-

máticas para assinalar uma posição bem definida para o ponto e filtrar os que apresentem

baixa estabilidade.

3. Definição de Orientação: A terceira etapa define a orientação dominante da região que

circunda o ponto de interesse. Todas as operações subsequentes são realizadas relativas à

orientação assinalada e à escala do ponto.

4. Definição de Descritores: A quarta e última etapa cria um descritor com invariância par-

cial a transformações afins e mudanças de iluminação. O descritor é o principal elemento

utilizado para as etapas subsequentes de visão computacional.

Page 23: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

21

3.2.1 Deteccção de Extremos

Como explicado anteriormente, a primeira etapa é responsável pela procura por can-

didatos a Pontos de Interesse, os quais não prosseguiração para processamento subsequente até

que sejam selecionados na segunda etapa. A deteccção de extremos é responsável por encontrar

alterações significativas no valor de um pixel nos pontos em todas as escalas e posições da ima-

gem. Alterações significativas entre duas escalas constituem-se em regiões de interesse, pois

caracterizam grande perda de informação à medida que imagem altera sua escala.

A função scale-space (Apêndice C) é utilizada para alterar a escala, isso é, as informa-

ções contidas na imagem à medida que a mesma se distancia do foco da câmera ou vice-versa.

Estudos (4) comprovaram que a melhor função para representar alterações na escala é a convo-

lução da imagem I(x,y) com a função gaussiana G(x,y,σ):

R(x,y) = I(x,y)∗G(x,y,σ)

onde * representa a operação de convolução e G(x,y) é a função gaussiana em duas

dimensões:

G(x,y,σ) =1

2πσ2 e−(x2+y2)/2σ2

As alterações ao longo das escalas separadas por um fator k podem ser obtidas utilizando-

se a função de diferença de gaussianas (DoG:

D(x,y,kσ) = G(x,y,kσ)−G(x,y,σ)

Para a presente implementação utilizou-se um valor de k = 21/s onde s representa a

granularidade de escala ou, equivalentemente, o número de amostras entre os valores de escala

2x e 2x+1 para qualquer x. Seu valor foi definido como k = 3.

A função scale-space e a diferença de gaussianas podem ser eficientemente implemen-

tadas utilizando-se uma abordagem pirâmidal, que caracteriza-se por computar as imagens em

diferentes escalas e, quando a imagem atingir um certo valor de escala, (i.e 2x), realizar seu

reescalonamento (i.e duas vezes menor em ambas as direções). Essa operação gera uma nova

“oitava” para a imagem, na qual se aplica novamente o filtro gaussiano e o processo se repete

até que seu tamanho se torne unitário. É importante ressaltar que o reescalonamento é justi-

ficável pela perda expressiva de informações sofrida pela imagem, que se torna, efetivamente,

Page 24: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

22

duas vezes menor. Além disso, há grandes benefícios em termos de desempenho. A figura 3.2

demonstra esse procedimento.

Figura 3.2: Implementação do Scale-Space Utilizando Abordagem Piramidal.

De modo a se encontrar alterações significativas entre duas escalas, procura-se por

extremos locais da função de diferença de gaussianas, ou seja, um pixel é um extremo local

se sua intensidade é menor (mínimo local) ou maior (máximo local) que a de todos os seus

vizinhos. Os pontos encontrados dessa forma são candidatos a pontos de interesse e prosseguem

para as etapas subsequentes do algoritmo. A escala em que o ponto foi encontrado é assinalada

ao mesmo e é utilizada nas próximas etapas. Esse processo Esse processo pode ser visualizado

na figura 3.3.

Figura 3.3: Deteccção de Extremos da Função Diferença de Gaussianas

3.2.2 Localização de Pontos de Interesse

A detecção de extremos gera inúmeros candidatos a pontos de interesse e muitos deles

não apresentam estabilidade ou agregam informação suficiente para prosseguiram pelas próxi-

mas etapas. A presente etapa busca definir uma localização precisa para os pontos de interesse

utilizando uma aproximação matemática através de uma expansão de Taylor. Essa aproxima-

ção é utilizada para eliminar candidatos com baixo contraste ou mal-posicionados ao longo de

bordas.

Page 25: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

23

Definição de uma Posição Precisa para os Candidatos

A função scale-space e a diferença de gaussiana caracterizam-se por possuir um do-

mínio discreto. Pode-se, contudo, definir uma posição precisa no domínio contínuo para o

candidato em relação à tupla (x,y,σ), onde x e y são coordenadas da imagem σ é a escala.

Para tanto, aproxima-se a função diferença de gaussianas D(x,y,σ) utilizando-se a expansão

multidimensional da série de Taylor de segunda ordem deslocada para a origem:

D(−→x ) = D+δDδ−→x−→x +

12−→x +

δ 2Dδ−→x 2−→x (3.1)

Derivando-se a equação acima, igualando-a a zero e isolando o termo −→x correspon-

dente à tupla (x,y,σ), obtém-se a localização de um novo extremo x:

x =− δ 2Dδ−→x 2

−1δDδ−→x

(3.2)

O valor de x na equação 3.2 representa o novo extremo local da diferença de gaussianas.

Portanto, constitui-se em uma posição melhor definida para o candidato a ponto de interesse.

A equação 3.2 pode ser eficientemente implementada computando-se a matriz hessiana e o

vetor derivada e resolvendo o sistema linear resultante (Apêndice B). Se qualquer um dos

valores das componentes (x,y ou σ) de x for maior que 0.5 em qualquer direção, então o ponto

é melhor localizado nesse vizinho e seus valores são alterados. O processo pode se repetir

indefinidamente, mas definiu-se como 5 no presente trabalho.

Descartando Pontos com Baixo Contraste

A função diferença de gaussianas no novo extremo local, D(x) pode ser utilizada,

também, para descartar pontos com baixo contraste. Para tanto, substituindo-se a equação 3.2

em 3.1, obtém-se:

D(x) = D+12

δDδ x

x (3.3)

Pontos com valores de | D(x) | menores que um valor pré-determinado são descarta-

dos por terem um baixo contraste. Vale ressaltar que a intensidade dos pixels são valores no

intervalo [0,1]. A figura 3.4 (1) e (2) mostra uma comparação entre a imagem com candidatos

a pontos de interesse resultante da deteccção de extremos e a mesma imagem com a restrição

de contraste igual a 0.03.

Page 26: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

24

(a) Pontos encontrados pela de-

teccção de extremos.

(b) Pontos eliminados utilizando

o limiar mínimo de contraste.

(c) Eliminação de candidatos

mal-posicionados ao longo de

bordas.

Figura 3.4: Pontos de interesse nas diferentes etapas do SIFT.

Descartando Pontos Mal-Posicionados nas Bordas

A função DoG, por sua natureza laplaciana, resulta em muitos candidatos em regiões

de bordas. Uma boa parte deles estão mal-posicionados, isso é, são sensíveis a pequenas quan-

tidades de ruído. Tais pontos podem ser detectados e eliminados avaliando-se as curvaturas

principais da região do ponto de interesse. Pontos mal-posicionados terão uma grande curva-

tura principal (Apêndice B) ao longo de uma borda mas uma pequena na direção perpendicular.

De acordo com a técnica de Harris and Stephens (1988), os auto-valores da matriz hessiana

(Apêndice B) da região do ponto possuem valores proporcionais às curvaturas principais. Dessa

forma, pode-se calcular os auto-valores com o traço e determinante da matriz hessiana:

H =

(Dxx Dxy

Dxy Dyy

)(3.4)

Tr(H) = Dxx +Dyy = α +β (3.5)

Det(H) = DxxDyy− (Dxy)2 = αβ (3.6)

Onde α e β correspondem às curvaturas principais de maior e menor valor respectiva-

mente e a razão entre elas é r = α/β . Dessa forma:

Tr(H)2

Det(H)=

(α +β )2

αβ=

(rβ +β )2

rβ 2 =(r +1)2

r(3.7)

A equação 3.7 não depende de auto-valores individuais, somente da razão entre eles.

Pode-se utilizá-la para definir um limiar para o valor da razão utilizando a seguinte equação:

Page 27: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

25

Tr(H)2

Det(H)<

(r +1)2

r(3.8)

No presente trabalho, utilizou-se o valor r = 10 para o limiar de contraste. A figura 3.4

(3) mostra o resultado dessa etapa.

3.2.3 Definição de Orientação

De modo a garantir invariância a rotações, deve ser definida a orientação dominante

da região que circunda o ponto de interesse. A orientação dominante será utilizada na etapa

de definição de descritores e todos os cálculos serão relativos à orientação encontrada. Primei-

ramente, são calculados os gradientes e orientações na região ao redor do ponto utilizando a

imagem com escala do ponto de interesse σ . O tamanho da região também será definido de

acordo com esse valor. A magnitude m(x,y) e a orientação o(x,y) do ponto de interesse pode

ser obtida com os valores da intensidade de pixels adjacentes:

m(x,y) =√

(I (x+1,y)− I (x−1,y))2 +(I (x,y+1)− I (x,y−1))2 (3.9)

o(x,y) = tan−1(

I (x,y+1)− I (x,y−1)I (x+1,y)− I (x−1,y)

)(3.10)

A partir dos valores dos gradientes e suas orientação, é construído um histograma de

orientações da região ao redor do ponto. O histograma utilizado para o presente trabalho foi

composto por 36 entradas, cada uma correspondendo a 10o de orientações. Além disso, os

valores dos gradientes são pesados de acordo com uma janela gaussiana de sigma igual ao valor

da escala do ponto. Isso é utilizado para dar mais ênfase aos gradientes mais próximos ao centro

do ponto. As figuras 4.3 e 3.6 mostram respectivamente o cálculo de gradientes e o histograma

de orientações.

Page 28: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

26

(a) Imagem original da re-

gião ao redor do ponto de in-

teresse.

(b) Intensidade dos gradien-

tes.

(c) Orientação dos gradien-

tes.

Figura 3.5: Cálculo de Gradientes e Orientações na Região do Ponto de Interesse.

O valor mais alto do histograma de orientações corresponde à orientação dominante

do ponto de interesse e é assinalada a este. Os valores que sejam ligeiramente menores a esse

valor podem ser utilizados para a criação de duplicatas do ponto de interesse com novas orien-

tações. Para o presente trabalho, criou-se novos pontos de interesse para todas as orientações

que tenham uma entrada no histograma com pelo menos 80% da orientação dominante. Essa

abordagem permite que não se descarte pontos com múltiplas orientações dominantes, mas os

divida em novos pontos.

Figura 3.6: Histograma de Orientação.

3.2.4 Definição de Descritores

As etapas anteriores angariaram informação suficiente para invariância a alterações de

escala e rotação. A última etapa é responsável por utilizar a informação obtida e criar um vetor

descritor com invariância a transformações afins e mudanças de iluminação.

Page 29: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

27

Invariância a Transformações Afins

Para se obter invariância a transformações afins, buscou-se inspiração no funciona-

mento da visão biológica. A retina dos primatas possui um mecanismo em que os receptores

luminosos permitem que o gradiente de cada ponto de uma imagem se desloque ligeiramente

para qualquer direção. Um modelo que faz uso desse mecanismo foi adaptado para a geração

do descritor. Primeramente, são computados os gradientes em uma região próxima do ponto de

interesse. Em seguida são criados vários histogramas para cada região que circunda o ponto,

procedimento ilustrado na figura 3.7.

(a) Imagem da Região que cir-

cunda um ponto de Interesse.

(b) Descritor com 16 histogra-

mas com 8 orientações cada.

Figura 3.7: Exemplo de Cálculo de um Descritor

Para o presente trabalho, o tamanho do descritor foi definido como 128: serão 16

regiões ao redor do ponto de interesse com histogramas de orientação com 8 valores cada. O

tamanho da região e a rotação da janela da região são definidos com base, respectivamente, da

escala e orientação do ponto, calculados nas etapas anteriores. Além disso, deve-se garantir

a redução do efeito de variações abruptas de perspectiva, em que um valor de gradiente passa

de uma orientação para outra ou de um histograma para outro. Para tanto, pode ser utilizado

algum método de suavização para distribuir o valor de uma entrada de um histograma para as

orientações e histogramas vizinhos.

Invariância a Mudanças de Iluminação

Finalmente, deve-se modificar o descritor gerado e torná-lo parcialmente invariante a

alterações de iluminação. Para eliminar efeitos de alteração de contraste, em que a intensidade

dos pixels é multiplicada por algum valor, o vetor descritor é normalizado e seu módulo se torna

unitário. Não é preciso se preocupar com os efeitos de alteração de brilho, em que soma-se um

valor constante às intensidades dos pixels, já que todos os cálculos foram feitos com gradientes,

que já incorporam a normalização requisitada. Essa técnica elimina variações lineares de ilu-

Page 30: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

28

minação mas não é capaz de detectar variações de outras naturezas. Entretanto, tais variações

são incomuns e pouco alteram os gradientes da imagem.

3.3 SIFT no Android

A segunda parte do trabalho consistiu em “portar” o sistema de deteccção de pontos

de interesse implementado no ambiente Desktop para o ambiente Android. Apesar do sistema

ter sido implementado em Java e o Android também utilizar essa linguagem, a adaptação do

sistema não foi uma tarefa trivial. Os desafios dessa adaptação serão descritos na próxima

subseção, enquanto que uma descrição completa das modificações realizadas serão discutidas

na seção 3.3.2.

3.3.1 Desafios

O ambiente de telefonia móvel apresenta, por si só, grandes desafios para aplicações

que lidam com elevada demanda de processamento e memória. Um sistema de detecção de

pontos de interesse utilizando o algoritmo SIFT encaixa-se nessa categoria. A grande utilização

de memória nas etapas de Scale-Space, em que se fazem necessárias várias cópias da imagem

original na memória, e o processamento necessário para obtê-las são os principais gargalos do

algoritmo. Essa limitações, aliadas à baixa quantidade de memória e limitado poder de proces-

samento, reduzem consideravelmente o desempenho e a precisão de sistemas dessa natureza em

smartphones.

As versões atuais do Android incluem ainda uma limitação sobre a utilização de me-

mória que a restringe a um valor máximo de 16Mb por aplicativo. Como o sistema faz uso de

diversas imagens simultâneamente na memória (oriundas da pirâmide gaussiana e diferença de

gaussianas), esse limite é facilmente ultrapassado mesmo com imagens de tamanhos relativa-

mente pequenos. Aliado a isso, tem-se o desempenho limitado dos processadores embutidos

dos dispositivos móveis, que restringem a velocidade de diversas etapas do algoritmo. Várias

dessas etapas beneficiam-se, no ambiente Desktop, de processadores vetoriais de placas de ví-

deo dedicadas, algo que não é comumente encontrado em smartphones.

3.3.2 Modificações Realizadas

De forma a garantir o funcionamento do sistema no ambiente Android, diferentes mo-

dificações tiverem que ser efetivadas: adaptação de bibliotecas, redução da granularidade dos

Page 31: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

29

pixels, adaptações nas etapas de pré-processamento,

Adaptação de Bibliotecas

A primeira modificação realizada foi a adaptação das bibliotecas que fazem parte do

sistema para o ambiente Android. O SIFT faz uso de bibliotecas de imagens, matrizes e sis-

temas lineares. Essas modificações foram meramente adaptativas e não tiveram impacto no

desempenho do sistema.

Redução da Granularidade dos Pixels

Essa modificação visou diminuir a quantidade de memória gasta pelo sistema. As

versões originais do SIFT utilizam pixels do tipo Double, como uma granularidade de 64 bits.

Essa granularidade permite uma maior precisão, o que garante resultados melhores e pontos de

interesse de maior qualidade. Com a redução do seu tipo para Short, a granularidade caiu para

16 bits e o gasto de memória reduziu em quatro vezes. Os impactos dessa modificação serão

discutidos no próximo capítulo.

Adaptações nas Etapas de Pré-processamento

A principal adaptação nas etapas de pré-processamento foi evitar que se dobre a ima-

gem antes de se aplicar o SIFT sobre ela. O SIFT original proposto por Lowe dobrava a imagem

tanto em largura quanto em comprimento utilizando um algoritmo de interpolação bilinear. Essa

modificação trazia ganhos na quantidade de pontos de interesse e na repetibilidade do casamento

de objetos (2). A implementação proposta eliminou essa modificação, o que garantiu uma nova

redução de quatro vezes no gasto de memória mas originou uma nova perda na qualidade da

solução.

Implementação de Uma Interface com Tela de Toque

Finalmente, foi implementada uma interface com tela de toque que permite que o usuá-

rio do sistema possa selecionar uma imagem e seccionar uma região para realizar a detecção de

pontos de interesse. Essa pré-seleção permite uma redução ainda maior de memória e proces-

samento, já que o usuário qual o posicionamento, na imagem, dos objetos que deseja detectar.

Page 32: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

30

3.4 Cronograma de Atividades

O objetivo do projeto orientado I foi o desenvolvimento de um programa que imple-

menta o algoritmo SIFT no ambiente Desktop. O prosseguimento desse trabalho focou na

adaptação do aplicativo para o ambiente Android. Essa segunda parte envolveu ainda a reali-

zação de testes para analisar a viabilidade do sistema nesse ambiente. As atividades realizadas

podem ser visualizadas na tabela 3.1.

Atividades POC I DescriçãoLeitura de Artigos relacionados ao SIFT

Revisão da Literatura Estudo do arcabouço teórico matemáticoEstudo de Algoritmos ConcorrentesEstudo do Ambiente Android

Implementação Codificação em Linguagem JAVA para DesktopTestes e Calibragem Testes sobre o programa desenvolvido

Calibragem dos parâmetros para melhor eficiência e corre-ção

Avaliação Avaliação sobre desempenho e eficácia do algoritmoPropostas para adaptação do SIFT para o ambiente Android.

Atividades POC II DescriçãoImplementação Implementação das modificações propostas do SIFT no am-

biente Desktop.Testes e Calibragem Testes para avaliar os ganhos de desempenho a partir das

modificações realizadas.Análise de viabilidade da realização das adaptações propos-tas.

Implementação Implementação das modificações propostas no ambienteAndroid.Criação da interface de utilização do sistema.

Testes e Calibragem Testes sobre o desempenho do sistema no ambiente An-droid.

Avaliação Avaliação sobre o resultado final do projeto: desempenho,gasto de memória e interface.

Tabela 3.1: Atividades realizadas

Page 33: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

31

4 RESULTADOS E DISCUSSÃO

O presente capítulo tem como objetivo apresentar e discutir acerca dos resultados dos

sistemas desenvolvidos. Serão descritas as interfaces dos sistemas, bem como analisados o

desempenho dos mesmos em relação a diferentes métricas, tais como utilização de memória

e tempo de processamento. Este capítulo fica dividido então, da seguinda maneira: na seção

4.1 serão descritos os aplicativos desenvolvidos, na seção 4.2 serão discutidas análises sobre

o SIFT no ambiente Desktop (SIFT-Desktop) e, finalmente, nas seções 4.3 e 4.4, tratarão das

modificações e análise de desempenho sobre o SIFT no Android (SIFT-Android).

4.1 Aplicativos Desenvolvidos

Na primeira etapa deste trabalho, foram desenvolvidos aplicativos para ambiente Desk-

top, enquanto que na segunda parte, foi desenvolvido um aplicativo para o ambiente Android.

Em ambos os casos, os aplicativos desenvolvidos recebem como entrada uma imagem e retor-

nam os pontos de interesse encontrados no formato padrão definido por Lowe.

4.1.1 Desktop

De modo a validar os estudos realizados sobre o SIFT e estudar a viabilidade da incor-

poração do algoritmo no restrito ambiente móvel, desenvolveu-se duas aplicações Desktop:

1. A primeira aplicação realiza a leitura de uma imagem e imprime na tela a imagem com

os pontos de interesse assinalados. Os pontos de interesse também são impressos em

um arquivo de saída e dados relativos ao algoritmo são impressos na tela, bem como as

imagens obtidas pelas funções scale-space e Dog. A tela do aplicativo 1 encontra-se na

figura 4.1(a).

2. A segunda aplicação realiza a leitura de duas imagens e imprime na tela casamentos

encontrados entre os pontos de interesse. O casamento é implementado através de uma

Page 34: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

32

simples métrica de distância euclidiana com um limiar mínimo. A tela do aplicativo 2

encontra-se na figura 4.1(b).

(a) Tela do Aplicativo 1. (b) Tela do Aplicativo 2.

Figura 4.1: Aplicativos Implementados

4.1.2 Android

O objetivo final deste projeto foi o desenvolvido de um aplicativo de cálculo de pontos

de interesse para o sistema Android. O aplicativo desenvolvido permite que o usuário selecione

uma imagem e a seccione para selecionar uma região onde o processamento será efetuado. A

secção da imagem faz-se através da tela de toque do smartphone e o sistema efetua o cálculo

dos pontos assim que o usuário pressionar o botão central do dispositivo. Neste momento,

aparecerá um diálogo de carregamento que finalizará assim que os pontos forem encontrados,

os quais aparecerão destacados na imagem. Essas etapas podem ser visualizadas nas figura 4.2.

(a) Tela do Aplicativo (1). (b) Tela do Aplicativo (2). (c) Tela do Aplicativo (3).

Figura 4.2: Aplicativo SIFT-Android

Page 35: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

33

4.2 Experimentos sobre o SIFT-Desktop

Foram realizados testes sobre diferentes imagens visando medir a correção e robustez

do algoritmo. As telas contendo quatro destes resultados podem ser visualizadas na figura 4.3.

(a) Teste 1: Pintura da Mona Lisa (b) Teste 2: Nota de 1 Real

(c) Teste 3: Museu da Inconfidência (d) Teste 4: Igreja Nossa Senhora do Carmo

em Ouro Preto

Figura 4.3: Resultado dos Testes de Correção e Robustez

Os testes 1,3 e 4 procuraram simular a utilização de uma aplicação real voltada para o

turismo. O teste 2 foi utilizado para avaliar a robustez em variações expressivas de perspectiva:

• Teste 1: Comparou duas imagem da pintura de Mona Lisa. Uma das imagens é uma di-

gitalização da Mona Lisa real, do museu do Louvre, já a segunda representa uma réplica.

A segunda imagem apresenta-se ligeiramente desfocada e com uma pequena variação de

perspectiva. Apesar disso, todos os casamentos entre as duas imagens ocorreram correta-

mente.

• Teste 2: Fez a comparação da digitalização da nota de um Real brasileira e uma foto con-

tendo duas notas de um Real. A segunda foto apresenta uma nota com grande oclusão e

Page 36: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

34

ambas com uma variação expressiva de perspectiva. Vários casamentos foram realizados

corretamente, como, por exemplo, o algarismo 1 e a efígie da república. Apesar disso,

alguns casamentos errôneos notáveis são o algarismo 1 pequeno da imagem digitalizada

com o algarismo 1 grande da foto. Isso ocorreu devido a variações significativas de pers-

pectiva, que fez com que os pontos de interesse do algarismo pequeno perdessem grande

quantidades de informações.

• Teste 3: Comparou duas fotografias do Museu da Inconfidência em Ouro Preto. As ima-

gens apresentam variação significativa de perspectiva e iluminação. A grande maioria dos

casamentos ocorreu corretamente. Alguns pontos, contudo, foram casados em posições

erradas e repetidas da imagem. Isso foi muito comum com as janelas, pelo grande número

e semelhança.

• Teste 4: Comparou duas fotografias da Igreja Nossa Senhora do Carmo em Ouro Preto.

As imagens apresentam variação expressiva de iluminação, perspectiva e escala. Apesar

disso, praticamente todos os casamentos foram realizados corretamente. Os casamentos

realizados de forma errada foram aqueles que compararam torres alternadas da igreja.

De modo geral, o aplicativo implementado apresentou bons resultados em termos de

correção e robustez. O casamento dos pontos de interesse ocorreu mesmo em variações signi-

ficativas de iluminação, escala e perspectiva. Apesar disso, como comprovado pelo teste 2, o

SIFT apresenta-se bastante sensível a fortes variações de perspectiva.

4.3 Experimentos sobre as Modificações Propostas

Os resultados obtidos com as modificações propostas na seção 3.2.2 serão avalia-

dos nesta seção: a redução da granularidade dos pixels e as adaptações nas etapas de pré-

processamento. Para a realização desses testes, utilizou-se uma base com dezenas de imagens

de fotos tiradas de elementos turísticos (construções, estátuas, pinturas, etc). As diferentes ima-

gens representam a utilização do aplicativo para o turismo e espera-se que ela forneça uma apro-

ximação para a complexidade do programa em um cenário real. Essas imagens foram utilizadas

para se testar o SIFT implementado no desktop (SIFT-Desktop) contrastando-o com o SIFT que

incorpora as modificações propostas e implementado no ambiente Android (SIFT-Android).

Na figura 4.4 é mostrado o gráfico do tempo de execução para diferentes tamanhos

de imagem. Como esperado, trata-se de gráficos lineares, já que a complexidade de ambas

as versões do SIFT é aproximadamente linear para o tamanho da imagem. Como os pontos

Page 37: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

35

permanecem bem próximos à curva, a soma dos quadrados residuais também possui um valor

baixo. A complexidade linear se deve ao fato de que o fator determinante para o tempo de

execução do algoritmo é a etapa de Scale-Space e DoG e, como ambas são etapas de aplicação

de filtros, a complexidade depende apenas do número de pixels da imagem. Já a variância que

pode ser vista em algumas imagens pode ser explicada pelo fato de que parte do tempo de

execução depende do número de pontos de interesse, isso é, depende de processamento sobre

cada ponto. O número de pontos está relacionado ao domínio da imagem, ou seja, depende do

conteúdo da imagem. Por exemplo, se ela apresentar muitas regiões homogêneas, então tenderá

a ter menos pontos de interesse do que se apresentar muitos detalhes.

Figura 4.4: Gráfico de tempo de execução (em segundos) por tamanho de imagem (megapixels)

A diferença significativa no tempo de execução entre ambas as versões se deve às

modificações realizadas. O SIFT-Android apresenta-se pelo menos quatro vezes mais rápido

que o SIFT original. Essa diminuição o tempo de execução deve-se, em grande parte, a não

dobrar a imagem na etapa de pré-processamento. Como a imagem torna-se efetivamente quatro

vezes menor, o tempo de execução também se reduz em pelo menos quatro vezes. Algumas

imagens apresentaram uma redução ainda maior como efeito colateral do menor número de

pontos de interesse, cujo tempo de processamento representa uma parte da complexidade total

do algoritmo.

Para se testar o uso máximo de memória, utilizou-se uma função que calcula o número

de megabytes utilizado baseado no número de imagens necessário nas etapas de Scale-Space e

Page 38: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

36

DoG. Os resultados desse teste encontram-se presentes na figura 4.5.

Figura 4.5: Gráfico de uso máximo de memória (em megabytes por tamanho de imagem (me-

gapixels)

A partir de uma análise do gráfico, percebe-se que houve uma redução significativa

da utilização máxima de memória: o SIFT-Desktop gasta 16 vezes mais memória que o SIFT-

Android e essa diferença deve-se às duas modificações realizadas. A primeira modificação foi

a redução da granularidade dos pixels e ela foi responsável por reduzir o gasto de memória em

quatro vezes, já que passou-se os tipos de Double (8 bytes) para Short (2 bytes). A segunda

modificação foi não dobrar a imagem na etapa de pré-processamento e foi responsável por uma

nova redução de quatro vezes no gasto de memória. Assim, houve uma redução efetiva de

dezesseis vezes no gasto de memória.

Os testes revelaram ainda que há um limite máximo de 1 megapixel nas dimensões de

imagem que podem ser utilizadas no aplicativo. Esse limite garante que o valor máximo de 16

megabytes definido pelo Android não seja atingido pelo aplicativo.

4.4 Experimentos sobre o SIFT-Android

A partir das modificações realizadas, pôde-se transpor o sistema para o ambiente An-

droid. De forma a se testar o desempenho da versão final do aplicativo, realizou-se dois testes:

o tempo de execução estimado para o cálculo dos pontos de interesse e a economia de memória

obtida. Ambos serão comentadas nas próximas seções.

Page 39: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

37

4.4.1 Tempo de Execução

A primeira análise focou no tempo de execução do aplicativo para diferentes tamanhos

de imagem. Os valores dos tempos de execução foram estimados com base nos tempos obti-

dos na versão modificada e os testes ocorreram no ambiente Desktop devido às limitações de

memória do ambiente Android. Os resultados encontram-se na figura 4.6.

Figura 4.6: Gráfico de tempo de execução (em segundos) por tamanho de imagem (megapixels)

Como já era esperado, o tempo de execução permaneceu linear no ambiente Android.

A mudança de ambiente não provocou alterações significativas nesse quesito, ou seja, a com-

plexidade não se altera com a mudança do Desktop para o ambiente Android. Contudo, o tempo

de execução aumentou significativamente no ambiente Android. A maioria das imagens demo-

rou mais de 1 minuto para finalizar a execução. Essa demora tornou o sistema impraticável

no ambiente Android para imagens grandes. De fato, o sistema rodou razoavelmente bem para

imagens de até 1 megapixel, nas quais o tempo de execução permaneceu em torno de 1 minuto

e meio. Mesmo assim, o tempo de execução é elevado para uma aplicação em que se espera

respostas imediatas ou, pelo menos, rápidas.

Page 40: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

38

4.4.2 Economia de Memória

Como foi discutido na introdução, uma das principais motivações para a implementa-

ção do SIFT no ambiente móvel era diminuir a carga de transferência na rede. O objetivo desse

teste era calcular a razão entre o tamanho dos pontos de interesse codificados (ta) e o tamanho

da imagem em formato PNG (to) para diferentes tamanhos de imagem. O formato de imagem

escolhido foi o PNG por ser um formato de compressão sem perdas e que, consequentemente,

não cria distorções na imagem original. Dessa forma, obteria-se o ganho real de redução na

carga de rede. Os resultados desse teste encontram-se na figura 4.7.

Figura 4.7: Gráfico da economia de memória:tota

por pixels.

Os resultados mostram que há uma grande diferença no tamanho dos pontos de inte-

resse e no tamanho da imagem em formato PNG. Os ganhos variaram entre 3 a 16 vezes e essa

variação deve-se aos diferentes domínios de imagem. Cada imagem produz uma quantidade de

pontos de interesse que depende muito do quão detalhada ela é. Já o formato da curva de regres-

são, que possui natureza logarítimica, deve-se ao fato de que os ganhos de memória evoluem de

forma decrescente quando a imagem aumenta de tamanho. Isso se deve ao fato de que o número

de pontos de interesse não aumenta de forma linear quando o tamanho da imagem cresce, esse

aumento apresenta uma complexidade ainda maior. Uma hipótese para esse fenômeno é que

imagens maiores apresentam mais detalhes em regiões homogêneas e, em imagens pequenas,

pontos de interesse não seriam detectados nessas regiões.

Page 41: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

39

5 CONCLUSÕES E TRABALHOS FUTUROS

5.1 Conclusões

A deteccção de pontos de interesse constitui-se em uma importante vertente de estudo

em Visão Computacional. Todo ano são desenvolvidas novas técnicas ou são aprimoradas téc-

nicas já existentes. A técnica do algoritmo SIFT tem sido amplamente estudada, aprimorada e

aplicada em diferentes problemas. É notável, por exemplo, a utilização do SIFT em problemas

de reconhecimento de objetos e construção automática de panoramas.

No presente trabalho fez-se uma revisão da Literatura relacionada ao SIFT e sua aplica-

ção em um programa voltado para o turismo. Na primeira parte do projeto foram desenvolvidas

duas aplicações Desktop: a primera realiza a deteccção de pontos de interesse e os exporta para

um arquivo e a segunda casa os pontos encontrados em duas imagens. Com o prosseguimento

do projeto, realizou-se uma série de análises para testar as modificações necessárias para a trans-

posição do sistema implementado para o ambiente de telefonia móvel do Android. Terminada a

análise, foi implementado um aplicativo Android que permite que o usuário leia uma imagem,

selecione uma região utilizando a tela de toque do aparelho e, finalmente, efetue a deteccção

dos pontos de interesse na região selecionada.

De modo a validar a aplicação implementada em termos de desempenho, eficiência,

correção e robustez, foram feitos testes para analisar o comportamento do SIFT em diferentes

cenários. Os resultados mostraram que o SIFT apresenta bons resultados em termos de quali-

dade dos pontos de interesse mesmo com variações significativas de escala, iluminação e pers-

pectiva. Além disso, a partir de uma análise do tempo de execução do programa, comprovou-se

que é possível utilizar o sistema no ambiente de telefonia móvel, mesmo com os recursos limi-

tados desse ambiente.

A principal dificuldade desse projeto foi lidar com os limites impostos pelo ambi-

ente Android. O limite de 16Mb de memória por aplicativo reduz enormemente a robustez do

sistema, que se vê incapaz de lidar com imagens maiores que 1 Megapixel. O poder de pro-

cessamento foi outro fator que limitou a eficiência do algoritmo. O tempo de execução para

Page 42: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

40

a deteccção dos pontos de interesse se mostrou parcialmente inviável: mesmo em imagens

pequenas, o tempo de execução não foi inferior a 40 segundos. Como o usuário do sistema ge-

ralmente requer resultados imediatos, esse foi um fator que tornou o uso do sistema proibitivo

para o Android.

De maneira geral, o projeto apresentou dois resultados principais. Primeiramente,

mostrou-se a viabilidade do SIFT no Android, ainda que com restrições nos tamanhos da ima-

gem e no tempo de execução. Em segundo lugar, mostrou-se que, em um sistema de reconheci-

mento de objetos, a utilização do SIFT no Android traria grandes benefícios em termos de carga

de transferência na rede.

5.2 Trabalhos Futuros

Futuramente, espera-se que a aplicação seja incorporada a um sistema com banco

de dados visual para aplicações de reconhecimento de objetos voltadas para o turismo. O

NPDI(Núcleo de Processamento Digital de Imagens da UFMG) possui um servidor com um

desses bancos de dados. Esse servidor também é dotado de um sistema com algoritmos para a

realização do casamento dos pontos de interesse de maneira eficiente.

Com a evolução dos dispositivos móveis e o desenvolvimento de novas versões do

Android, espera-se reduzir as modificações realizadas de modo a atingir o potencial completo

do SIFT. Limitações como a restrição de 16Mb de memória devem ser removidas em versões

futuras do Android e, dessa forma, imagens maiores que 1 megapixel poderão ser utilizadas. A

tendência para o futuro é que aplicativos de Visão Computacional ganhem cada vez mais espaço

no ambiente de telefonia móvel. Além do turismo, o SIFT pode ser aplicado em diversos outros

contextos que envolvam deteccção e reconhecimento de objetos.

Page 43: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

41

Referências Bibliográficas

1 LOWE D. (1999). "Object recognition from local scale-invariant features". Proceedings ofthe International Conference on Computer Vision. Disponível em http://doi.ieeecs.org/

10.1109/ICCV.1999.790410

2 LOWE D., DAVAID G. (2004). “Distinctive Image Features from Scale-InvariantKeypoint”. IJCV 2004, v60, n2, pp 91-110. Disponível em http://www.cs.ubc.ca/~lowe/

papers/ijcv04.pdf, acesso em 21/05/10.

3 FRITZ G., SEIFERT C., PALETTA L. (2006). “A Mobile Vision System for UrbanDetection with Informative Local Descriptors”. IEEE International Conference on ComputerVision, 2006.

4 LINDEBERG T. (2008) "Scale-space". Encyclopedia of Computer Scienceand Engineering (Benjamin Wah, ed), John Wiley and Sons IV: 2495–2504.doi:10.1002/9780470050118.ecse609. Disponível em http://www.nada.kth.se/

~tony/abstracts/Lin08-EncCompSci.html, acesso em 21/05/10.

5 ED R., BURNETTE C. (November 10, 2009). Hello, Android: Introducing Google’sMobile Development Platform

6 Android Documentation. Disponível em http://developer.android.com/reference/

packages.html

7 SERRE T., KOUH M., CADIEU C., KNOBLICH U., KREIMAN G., POGGIOT., “A Theory of Object Recognition: Computations and Circuits in the FeedforwardPath of the Ventral Stream in Primate Visual Cortex”, Computer Science and ArtificialIntelligence Laboratory Technical Report. Disponível em http://web.mit.edu/serre/www/

publications/serre_etal-AIM-2005-036.pdf, acesso em 21/05/10.

8 MARR D.; HILDRETH D. (29 February 1980). "Theory of Edge Detection". Proceedingsof the Royal Society of London. Series B, Biological Sciences 207 (1167). Disponível emhttp://www.jstor.org/pss/35407, acesso em 21/0510.

9 BAY H„ ESS A., TYTELAARS T., VAN GOOL L.. "SURF: Speeded Up Robust Features",Computer Vision and Image Understanding (CVIU), Vol. 110, No. 3, pp. 346–359, 2008

10 “Gartner Says Android to Become No. 2 Worldwide Mobile Operating Systemin 2010 and Challenge Symbian for No. 1 Position by 2014”. Disponível em http:

//www.gartner.com/it/page.jsp?id=1434613

Page 44: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

42

APÊNDICE A -- Técnicas Concorrentes

A.1 GLOH

GLOH ou Gradient Location and Orientation Histogram é uma variação do SIFT que

utiliza uma região maior para a geração de histogramas. Outra alteração é a redução do descritor

para 64 posições, menor que o de 128 posições do SIFT padrão.

Em termos de desempenho, SIFT e GLOH apresentam-se semelhantes, levando apro-

ximadamente o mesmo tempo para para encontrar os pontos de uma mesma imagem. O mesmo

vale para a qualidade dos pontos de interesse: tanto o SIFT quanto o GLOH exibem as maiores

taxas de acerto de casamento até uma transformação afim de 50o. Além disso, ambos apresen-

tam resultados ruins quando há quantidade significativa de ruído, mas ainda assim são melhores

que outros descritores baseados em bordas.

A.2 SURF

SURF ou Speeded Up Robust Features é uma técnica de detecção e descrição de pontos

de interesse parcialmente inspirada no SIFT (9). Diferentemente do SIFT que utiliza a função

DoG, o SURF utiliza o operador Hessiano (Apendice B) para realizar a procura de pontos de

interesse. Além disso, o SURF implementa eficiente os procedimentos de convolução utilizando

as técnicas de imagens integrais, baseada na transformada de haar-wavelet.

O SURF apresenta um desempenho bastante superior ao SIFT, especialmente para

imagens grandes. Isso ocorre porque o SURF, como já mencionado, emprega técnicas efici-

entes para realizar a custosa operação de convolução. Em termos de qualidade dos pontos de

interesse, o SURF apresenta um resultado semelhante ao SIFT, com grande sensibilidade para

transformações afins significativas ou ruído elevado. No presente trabalho optou-se por utilizar

o SIFT devido à sua implementação mais simples e desemepenho equivalente para imagens de

pequeno porte, mais comuns no ambiente dos celulares e smartphones.

Page 45: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

43

APÊNDICE B -- Ferramentas e Termos Matemáticos

B.1 Matriz Hessiana

Uma matriz hessiana é uma matriz quadrada de derivadas parciais de segunda ordem

de uma função:

H( f ) =

∂ 2 f∂x2

1

∂ 2 f∂x1 ∂x2

· · · ∂ 2 f∂x1 ∂xn

∂ 2 f∂x2 ∂x1

∂ 2 f∂x2

2· · · ∂ 2 f

∂x2 ∂xn

...... . . . ...

∂ 2 f∂xn ∂x1

∂ 2 f∂xn ∂x2

· · · ∂ 2 f∂x2

n

Para o presente trabalho, utilizou uma matriz hessiana de terceira ordem, obtida através

da derivada de segunda ordem da função DoG:

δ 2Dδ−→x 2 =

Dxx Dxy Dxe

Dxy Dyy Dye

Dxe Dye Dee

B.2 Transformação Afim

Uma transformação afim entre dois espaços vetorias consiste em uma transformação

linear de rotação (Ax) seguida de uma translação (+b).

x 7→ Ax+b

Page 46: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

44

A figura B.1 mostra uma transformação afim sobre um plano em um ambiente tridi-

mensional.

Figura B.1: Transformação Afim

B.3 Aproximação de Taylor da Função de Diferença de Gaus-sianas

Uma série de Taylor é uma aproximação de uma função através de somas infinitas:

f (a)+f ′(a)1!

(x−a)+f ′′(a)

2!(x−a)2 +

f (3)(a)3!

(x−a)3 + · · ·

Se a série for centrada em zero, então tem-se uma série de MacLaurin, um caso espe-

cífico da série de Taylor:

f (0)+ f ′(0)x+f ′′(0)

2!x2 +

f (3)(0)3!

x3 + · · ·

A série de Taylor centrada em zero (MacLaurin) para a função DoG, é dada a seguir:

D(−→x ) = D+δDδ−→x−→x +

12−→x +

δ 2Dδ−→x 2−→x

Devido à natureza vetorial da função DoG, os termos de derivada se desdobram em

vetores e matrizes:

Page 47: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

45

δ 2Dδ−→x 2 =

Dxx Dxy Dxe

Dxy Dyy Dye

Dxe Dye Dee

δDδ−→x

=

Dx

Dy

De

B.4 Curvaturas Principais

Cada ponto P de uma superfície diferenciável em um espaço Euclidiano tridimensional

possui um vetor unitário normal ao plano. Um plano normal em P que contém a normal também

conterá uma unica direção tangente à superfície em cortará o plano em uma curvatura. Essa

curvatura terá valores diferentes para cada plano normal em P. As curvaturas principais de P

serão os maiores e menores valores dessa curvatura. Por valor de uma curvatura se quer dizer o

quanto a curvatura se curva para dentro.

Figura B.2: Curvaturas Principais

Page 48: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

46

APÊNDICE C -- Scale-Space

Scale-Space é uma teoria desenvolvida pelas áreas de Visão Computacional, Proces-

samento Digital de Imagens e Processamento de Sinais. É utilizada para prover um arcabouço

teórico para a representação de estruturas em diferentes escalas de um sinal, uma imagem por

exemplo. Uma função Scale-Space é capaz de representar uma estrutura através de diferen-

tes escalas utilizando um único parâmetro t. A principal função utilizada para representar o

Scale-Space é a função Gaussiana unidimensional sendo implementada através de uma opera-

ção de convolução entre o sinal de entrada e a função gaussiana. Por exemplo, em um sinal

bidimensional:

R(x,y) = I(x,y)∗G(x,y, t)

onde t representa o parâmetro de convolução.

Figura C.1: Exemplo da Aplicação da Função Scale-Space.

C.1 Por que utilizar a função gaussiana?

A função Scale-Space pode ser, de fato, implementada com outros filtros como, por

exemplo, com o filtro da média ou mediana. Contudo, a função gaussiana é a que melhor

representa a noção de escala, já que possui, entre outras propriedades: manutenção de extremos

locais, invariância rotacional e estrutura de semi-grupos. De modo equivalente, a família de

funções Scale-Space pode ser obtida através da solução da equação diferencial de difusão:

δ2R =12O2L

Page 49: monografia_poc_2_duilio_campos_sasdelli_sift_no_android

47

A função gaussiana é uma solução dessa equação para uma condição inicial de R(x,y,0)=

I(x,y). Pode-se pensar intuitivamente na noção de variação de escala a partir da difusão da in-

tensidade dos pixels de uma imagem assim como ocorre com a distribuição de temperatura em

uma superfície. Com o passar do tempo a temperatura se distribui ao longo da superfície de

acordo com a equação diferencial de difusão do calor. De modo semelhante, o parâmetro re-

lativo à temperatura é o σ da função gaussiana, a intensidade dos pixels é distribuída por seus

vizinhos e a intensidade se estabiliza, constintuindo-se uma variação de escala.