Você está na página 1de 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 / 1o semestre
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
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
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
“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
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
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
Apêndice C -- Scale-Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

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

vi
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
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

to
Figura 4.7 Gráfico da economia de memória: por pixels. . . . . . . . . . . . . . . . . . . . . . . . . . 38
ta

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
Lista de Tabelas

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

ix
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
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 presente
trabalho 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 é um
algoritmo computacionalmente custoso. Os pontos de interesse são utilizados em uma ampla
gama de aplicações de visão computacional e processamento digital de imagens, notadamente
detecçã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 pelos
dados relativos aos pontos de interesse dessas imagens.

Palavras-chave: SIFT, Android, Pontos de Interesse

xi
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 the
implementation 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 processing
applications, most notably object detection and recognition. As object recognition and other
SIFT-related applications may require an high bandwidth network connection for picture trans-
mission, we intend to eliminate this undesirable bottleneck by transmitting merely the features
detected by the SIFT algorithm.

Keywords: SIFT, Android, Interest Points

xii
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
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
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.
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 aŕea 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
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
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.
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
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.
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:

1 −(x2 +y2 )/2σ 2


G(x, y, σ ) = e
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,
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.
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 → 1→ δ 2D →
D(→

x ) = D+ →


x + −
x + →
− 2

x (3.1)
δx 2 δx

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 xb:

−1
δ 2D δD
xb = − → (3.2)
δ−x2 δ→

x

O valor de xb 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 xb 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

x) pode ser utilizada,


A função diferença de gaussianas no novo extremo local, D(b
também, para descartar pontos com baixo contraste. Para tanto, substituindo-se a equação 3.2
em 3.1, obtém-se:

1 δD
x) = D +
D(b xb (3.3)
2 δ xb

Pontos com valores de | D(b


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

(a) Pontos encontrados pela de- (b) Pontos eliminados utilizando (c) Eliminação de candidatos
teccção de extremos. o limiar mínimo de contraste. 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:

!
Dxx Dxy
H= (3.4)
Dxy Dyy

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

Det(H) = Dxx Dyy − (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 (α + β )2 (rβ + β )2 (r + 1)2


= = = (3.7)
Det(H) αβ rβ 2 r

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:
25

Tr(H)2 (r + 1)2
< (3.8)
Det(H) r

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:

q
m (x, y) = (I (x + 1, y) − I (x − 1, y))2 + (I (x, y + 1) − I (x, y − 1))2 (3.9)

 
−1 I (x, y + 1) − I (x, y − 1)
o (x, y) = tan (3.10)
I (x + 1, y) − I (x − 1, y)

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

(a) Imagem original da re- (b) Intensidade dos gradien- (c) Orientação dos gradien-
gião ao redor do ponto de in- tes. tes.
teresse.

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.
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- (b) Descritor com 16 histogra-


cunda um ponto de Interesse. 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-
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
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.
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ção


Leitura de Artigos relacionados ao SIFT
Revisão da Literatura Estudo do arcabouço teórico matemático
Estudo de Algoritmos Concorrentes
Estudo do Ambiente Android
Implementação Codificação em Linguagem JAVA para Desktop
Testes 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 algoritmo
Propostas para adaptação do SIFT para o ambiente Android.
Atividades POC II Descrição
Implementaçã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 ambiente
Android.
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
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
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


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

to
Figura 4.7: Gráfico da economia de memória: por pixels.
ta

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

Referências Bibliográficas

1 LOWE D. (1999). "Object recognition from local scale-invariant features". Proceedings of


the 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-Invariant
Keypoint”. 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 Urban
Detection with Informative Local Descriptors”. IEEE International Conference on Computer
Vision, 2006.

4 LINDEBERG T. (2008) "Scale-space". Encyclopedia of Computer Science


and 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’s
Mobile 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., POGGIO
T., “A Theory of Object Recognition: Computations and Circuits in the Feedforward
Path of the Ventral Stream in Primate Visual Cortex”, Computer Science and Artificial
Intelligence 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". Proceedings
of the Royal Society of London. Series B, Biological Sciences 207 (1167). Disponível em
http://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 System


in 2010 and Challenge Symbian for No. 1 Position by 2014”. Disponível em http:
//www.gartner.com/it/page.jsp?id=1434613
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.
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:

∂2 f ∂2 f ∂2 f
 
∂ x12 ∂ x1 ∂ x2 ··· ∂ x1 ∂ xn 

 
 
 2
∂2 f 2 
 ∂ f ··· ∂ f 
 ∂ x2 ∂ x1
 ∂ x22 ∂ x2 ∂ xn 

H( f ) = 



 . .. ... .. 
 .. . . 
 
 
 
 2 
∂ f ∂2 f ∂ f2
∂ xn ∂ x1 ∂ xn ∂ x2 ··· ∂ xn2

Para o presente trabalho, utilizou uma matriz hessiana de terceira ordem, obtida através
da derivada de segunda ordem da função DoG:

 
Dxx Dxy Dxe
δ 2D  
=  Dxy Dyy Dye 
δ→
−x2  
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
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 0 (a) f 00 (a) 2 f (3) (a)


f (a) + (x − a) + (x − a) + (x − a)3 + · · ·
1! 2! 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 00 (0) 2 f (3) (0) 3


f (0) + f 0 (0)x + x + x +···
2! 3!

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

δD → 1→ δ 2D →
D(→

x ) = D+ → −
x + −
x + −
x
δ−
x 2 δ→
−x2

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


vetores e matrizes:
45

 
Dxx Dxy Dxe
δ 2D  

− 2
= Dxy Dyy Dye 
δx  
Dxe Dye Dee
 
Dx
δD  

− = D y

δx  
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


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:

1
δ2 R = O2 L
2
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.

Você também pode gostar