![]() |
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.