INF 2064 – Visão Computacional e Realidade Aumentada

Trabalhos Desenvolvidos em 2008.2

Aluno: Gustavo Costa G. Moreira   <gmoreira@inf.puc-rio.br>

Matrícula: 0821404 

Trabalho 1: Scale-Invariant Feature Transform - SIFT

1. Introdução

Neste trabalho são apresentados os fundamentos do algoritmo SIFT e a sua utilização para o reconhecimento de objetos.

2. SIFT

2.1 Características

A detecção e descrição das características locais de uma imagem pode ajudar no reconhecimento de objetos. As características SIFT são locais e baseadas na aparência do objeto em pontos de interesse numa determinada posição, e são invariantes a escala e rotação. Elas também são robustas quanto a mudanças na iluminação, ruído, e alterações no ponto de vista. Além destas propriedades, tais características SIFT são altamente distintivas, relativamente fáceis de se extrair, permitem a correta identificação do objeto com baixa probabilidade de erro e são fáceis de se comparar contra uma base de dados de características locais. A descrição de um objeto por um conjunto de características SIFT também é robusto quanto a oclusão parcial, já que 3 características SIFT são suficientes para calcular a localização e a posição de um objeto.

2.2 O Algoritmo

O SIFT é um método robusto para extrair e descrever pontos-chaves de uma imagem. O algoritmo é composto por 4 etapas:

1 - Detecção de extremos no espaço de escala: Nessa etapa, é feita a busca em todas as escalas e localizacções de imagens com diferença de filtros gaussianos (DOG, do inglês "difference of gaussian"), visando identificar pontos de interesse invariáveis à escala e rotação.

2. Localização de pontos-chaves: Para cada localização em que foi detectado um extremo, um modelo detalhado é ajustado para determinar a localização exata e a escala. Pontos-chaves são selecionados baseando-se em medidas de estabilidade. Nessa etapa são definidos os melhores pontos para o sistema de mapeamento, por meio de medidas de gradiente.

3. Definição de orientação: A orientação é definida para cada ponto chave por meio dos gradientes locais da imagem. Toda operação, a partir de então, será feita com relação a dados da imagem transformados em relação à orientação e escala de cada ponto-chave. Desta maneira, obtém-se invariância a estas transformações.

4. Descritor dos pontos-chaves: O gradiente local de cada ponto-chave é medido, utilizando-se a vizinhança do ponto. Estas medidas são transformadas para uma representação que permite tolerância a níveis significativos de distorção e mudança de iluminação.



3. Detecção de Objetos


4. O Programa

O programa desenvolvido foi implementado utilizando a biblioteca IUP para a interface gráfica, a biblioteca OpenCV para os algoritmos de manipulação de imagens e a biblioteca de funções do algoritmo SIFT desenvolvidas por Rob Hess.

Ao executar o programa, a tela principal é exibida ao usuário (imagem abaixo).



Nesta tela o usuário deve informar a imagem que se deseja encontrar os pontos-chaves através do algoritmo SIFT. Além da imagem, o usuário pode modificar alguns parâmetros usados pelo algoritmo, tais como o número de intervalos amostrados, a quantidade de suavização gaussiana, entre outros. Uma vez selecionada a imagem desejada, ao clicar no botão "Start SIFT" os pontos-chaves encontrados são desenhados e exibidos ao usuário numa nova janela.

5. Pré-Requisitos para Compilar o Programa

Ao descompactar o ZIP do trabalho, o arquivo do projeto encontra-se dentro da pasta T1.

6. Referências

[1] David Lowe, Distinctive Image Features from Scale-Invariant Keypoints , 2004.

[2] Rob Hess, SIFT image feature detector Library, 2007

[3] Intel Corp., OpenCV library, 2006

[4] Tecgraf, IUP library, 2008


7. Código Fonte e Executável

Clique aqui para baixar o código fonte.

Clique aqui para baixar apenas o executável.

Voltar