Scale-Invariant Feature Transform



Documentos relacionados
Processamento de Imagens COS756 / COC603

FILTRAGEM ESPACIAL. Filtros Digitais no domínio do espaço

Que imagens têm ou não têm simetria?

Trabalho 2 Fundamentos de computação Gráfica

Reconhecimento de marcas de carros utilizando Inteligência Artificial. André Bonna Claudio Marcelo Basckeira Felipe Villela Lourenço Richard Keller

Aritmética Binária e. Bernardo Nunes Gonçalves

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental

Filtragem Espacial. (Processamento Digital de Imagens) 1 / 41

Universidade Federal do Rio de Janeiro - IM/DCC & NCE

PARA A CONSTRUÇÃO DOS GRÁFICOS

Aula 02 Excel Operações Básicas

Álgebra Linear I Solução da 5ª Lista de Exercícios

Morfologia Matemática Binária

Transformada de Hough. Cleber Pivetta Gustavo Mantovani Felipe Zottis

RECONHECIMENTO DE PLACAS DE AUTOMÓVEIS ATRAVÉS DE CÂMERAS IP

COMPUTAÇÃO GRÁFICA. Rasterização e Preenchimento de Regiões. MARCO ANTONIO GARCIA DE CARVALHO Fevereiro de Computação Gráfica

6. Geometria, Primitivas e Transformações 3D

casa. Será uma casa simples, situada em terreno plano, com sala, dois quartos, cozinha, banheiro e área de serviço.

Hoje estou elétrico!

5 Transformações Lineares e Matrizes

Operações Algébricas e Lógicas. Guillermo Cámara-Chávez

Resolução de sistemas lineares

Operações Pontuais. Guillermo Cámara-Chávez

4 Avaliação Experimental

Organização e Arquitetura de Computadores I

Notas de Cálculo Numérico

Processamento de histogramas

Formatos de Imagem PNG. Universidade Federal de Minas Gerais. Bruno Xavier da Silva. Guilherme de Castro Leite. Leonel Fonseca Ivo

IBM1018 Física Básica II FFCLRP USP Prof. Antônio Roque Aula 6. O trabalho feito pela força para deslocar o corpo de a para b é dado por: = =

Algoritmos. Objetivo principal: explicar que a mesma ação pode ser realizada de várias maneiras, e que às vezes umas são melhores que outras.

Exercícios Teóricos Resolvidos

Árvores Binárias Balanceadas

Programação em papel quadriculado

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

CorelDRAW UM PROGRAMA DE DESIGN

Reconhecimento de Padrões

Aula 4 Estatística Conceitos básicos

Instituto Politécnico de Beja. Escola Superior de Tecnologia e Gestão

Lista 1 para a P2. Operações com subespaços

Levantamento topográfico

Tratamento fotográfico básico

QUESTÃO 1 ALTERNATIVA B

Vetores Lidando com grandezas vetoriais

Utilização do SOLVER do EXCEL

FUNÇÃO COMO CONJUNTO R 1. (*)= ou, seja, * possui duas imagens. b) não é uma função de A em B, pois não satisfaz a segunda condição da

Método dos mínimos quadrados - ajuste linear

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

Objetivos. Apresentar as superfícies regradas e superfícies de revolução. Analisar as propriedades que caracterizam as superfícies regradas e

Dadas a base e a altura de um triangulo, determinar sua área.

4 Segmentação Algoritmo proposto

SEQÜÊNCIA DE PULSO. Spin-eco (SE); Inversion-recovery (IR); Gradiente-eco (GRE); Imagens eco - planares (EPI).

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

SEGEMENTAÇÃO DE IMAGENS. Nielsen Castelo Damasceno

Tutorial de Matlab Francesco Franco

Algoritmos de pesquisa. Tabelas de dispersão/hash

Disciplina: Programas de Edição de Textos Professora: Érica Barcelos

Solução da prova da 1 a fase OBMEP 2015 Nível 1. QUESTÃO 1 ALTERNATIVA E Como 2 x 100,00 126,80 = 200,00 126,80 = 73,20, o troco foi de R$ 73,20.

Processamento de Imagens COS756 / COC603

Modelagem no Domínio do Tempo. Carlos Alexandre Mello. Carlos Alexandre Mello 1

5 Equacionando os problemas

Grupo C Vetores e Matrizes

Álgebra. SeM MiSTéRio

Processamento de Imagens Digitais

3 Classificação Resumo do algoritmo proposto

Feature-Driven Development

GRÁFICOS Exemplos de jogos 2D (com simulação do 3D)

3 Dicas MATADORAS Para Escrever s Que VENDEM Imóveis

4 Sistemas de Equações Lineares

Algoritmos de Busca em Tabelas

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística

Árvores Binárias de Busca

Noções Básicas de Excel página 1 de 19

Os caracteres de escrita

Gerenciando Sua Reputação Online Parte 1

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 13

Canguru Matemático sem Fronteiras 2014

&XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Linguagem algorítmica: Portugol

RESOLUÇÃO DAS QUESTÕES DE RACIOCÍNIO LÓGICO-MATEMÁTICO

4Distribuição de. freqüência

Estabilidade. Carlos Alexandre Mello. Carlos Alexandre Mello 1

O método multicritérios de apoio à decisão

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Dicas para a 6 a Lista de Álgebra 1 (Conteúdo: Homomorfismos de Grupos e Teorema do Isomorfismo para grupos) Professor: Igor Lima.

Sumário. Prefácio... xi. Prólogo A Física tira você do sério? Lei da Ação e Reação... 13

Os valores máximo e mínimo, portanto, são obtidos a partir da aplicação do desvio padrão sobre o valor médio obtido.

Prof. Paulo Henrique Raciocínio Lógico

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

LOTOFACIL MAIS FÁCIL

Transformações 3D. Soraia Raupp Musse

)LJXUD8PGRVSDUHV'SDUDFRQYROXomRTXHWHPRPHVPRHIHLWRGR NHUQHOGD)LJXUD

CAIU NO CBMCE! (velocidade inicial decomposta) Vamos fazer as devidas observações acerca desse movimento:

Transcrição:

Scale-Invariant Feature Transform Renato Madureira de Farias renatomdf@gmail.com Prof. Ricardo Marroquim Relatório para Introdução ao Processamento de Imagens (COS756) Universidade Federal do Rio de Janeiro, Brasil, 2012 1. Resumo O objetivo deste trabalho foi implementar o algoritmo conhecido como Scale-Invariant Feature Transform, ou SIFT [1][2]. Este algoritmo busca identificar os pontos chave de uma imagem e descrevê-los através de uma estrutura, chamada de feature vector, que seja invariante a translação, rotação, e (parcialmente) iluminação. Posteriormente, os feature vectors de duas imagens podem ser comparados afim de encontrar correspondências. 2. Algoritmo O algoritmo consiste numa série de passos: 1) Gerar espaço de escalas; 2) Calcular Difference of Gaussians (DoGs); 3) Encontrar pontos extremos (máximos e mínimos); 4) Identificar orientação principal dos extremos; e 5) Criar descritores. Todos os passos são detalhados abaixo. A entrada do algoritmo é uma imagem em tons de cinza na qual deve ser aplicado um filtro Gaussiano inicial. Usamos σ = 1.0 para este borramento inicial. 2.1. Gerar espaço de escalas. O primeiro passo é gerar o espaço de escalas da imagem. O espaço de escalas consiste num certo número de oitavas, sendo que cada oitava contém um certo número de escalas. As imagens dentro de uma oitava sofrem borramentos (através do filtro Gaussiano) progressivamente maiores. As imagens de cada oitava têm metade do tamanho das imagens da oitava anterior, sendo que a primeira oitava começa com o dobro do tamanho da imagem original. Então, a segunda oitava possui o tamanho da imagem original, a terceira oitava possui metade do tamanho da imagem original, etc. Neste trabalho, usamos 4 oitavas com 5 escalas cada, conforme a sugestão do autor do

algoritmo [1]. O σ inicial de uma oitava é 1.6, e a cada escala o multiplicamos 2. Note que a primeira escala de cada oitava (a partir da segunda) é na verdade a terceira escala da oitava anterior (com metade do tamanho). Isso é porque o autor sugere que o borramento da escala de uma oitava deve ser o dobro da escala equivalente da oitava anterior. 2.2. Calcular Difference of Gaussians (DoGs). O segundo passo consiste em subtrair os pares de escalas adjacentes de cada uma das oitavas. As imagens resultantes, representando a diferença entre uma aplicação do filtro Gaussiano e o próximo, são chamadas de Difference of Gaussians. Obviamente, cada oitava possui um número de DoGs igual ao número de escalas menos 1. Figura 1: Espaço de escalas e Difference of Gaussians. Fonte: [1]. 2.3. Encontrar pontos extremos (máximos e mínimos). No terceiro passo, procuramos nas DoGs do passo anterior pontos que descrevem bem a imagem. Consideramos que, para um ponto descrever bem a imagem, ele precisa ter sobrevivido nas várias escalas, e ser o máximo ou mínimo dentre seus 26 vizinhos (8 vizinhos da mesma escala, 9 vizinhos da escala de cima, e 9 vizinhos da escala de baixo). Os pontos encontrados neste passo são guardados, junto com informação sobre em qual oitava, escala, e posição foram encontrados. Note que extremos não podem ser encontrados no primeiro e último DoGs, já que 3 escalas são necessárias para a busca.

Figura 2: Um extremo precisa ser maior (ou menor) do que seus 26 vizinhos. Fonte: [1]. 2.4. Identificar orientação principal dos extremos. No quarto passo, encontramos a orientação principal dos pontos do passo anterior. Fazemos isso construindo um histograma dos gradientes e suas magnitudes em torno do ponto, usando as imagens do espaço de escalas. O tamanho da janela em torno do ponto que consideramos para construir o histograma é igual ao tamanho do kernel do filtro Gaussiano com o σ (multiplicado por 1.5) usado nesta escala. As orientações são divididas em 36 caixas, cada uma representando uma faixa de 10o (a primeira contém a soma das magnitudes das orientações de 0o-9o, a segunda de 10o-19o, e assim por diante). Uma vez feito isso, procuramos no histograma a caixa com maior magnitude. Usando esta magnitude e as magnitudes das caixas adjacentes como se fossem 3 pontos no plano XY, encaixamos uma parábola invertida neles de forma a encontrar o melhor valor desta orientação. Esta orientação gera um ponto chave da imagem que será usada no último passo. Note que este processo se repete para magnitudes que tenham pelo menos 80% do valor da maior magnitude. Em outras palavras, um ponto extremo gera no mínimo um ponto chave, mas pode gerar mais se possui mais do que uma orientação dominante. 2.5. Criar descritores. O quinto e último passo consiste em criar os descritores da imagem para cada ponto chave do último passo. Um descritor guarda a posição de um ponto na imagem original, e um feature vector que descreve sua vizinhança. Usamos uma janela 16x16 em torno do ponto, dividida em quatro janelas 4x4.

Para cada janela 4x4, criamos um histograma, como no passo anterior, porém com 8 caixas em vez de 36, e usamos um filtro Guassiano com σ igual a metade da dimensão da janela (nesse caso, 8) para pesar as magnitudes. O resultado é um vetor que guarda todos os 16 histogramas, cada um com 8 caixas, para um total de 128 posições. Este vetor é o feature vector. Figura 3: Exemplo visual da construção da janela, considerada aqui como sendo 8x8 dividida em 4 janelas 4x4, em vez de 16x16 dividida em 16 janelas 4x4. Fonte: [1]. Note que a orientação principal deve ser subtraída de cada orientação da janela, para que as orientações do histograma fiquem relativas à orientação principal. Pelo mesmo motivo, as coordenadas dos pontos da janela precisam ser rotacionadas em torno do ponto chave usando uma matriz de rotação com a orientação principal. Essas duas ações visam obter invariância à rotação. Uma vez que temos o feature vector calculado, normalizamos seus valores, depois reduzimos a 0.2 qualquer valor acima de 0.2, e normalizamos o vetor de novo. Isso visa obter invariância à iluminação na imagem. 3. Comparação Uma vez que se tenha os feature vectors de duas imagens, uma comparação entre elas pode ser feita. O método de comparação que usamos é bastante simples, e consiste em simplesmente calcular a distância Euclideana entre os vetores, em 128D. Comparamos todos os feature vectors de uma imagem com todos da outra imagem; uma correspondência existe quando um ponto da primeira imagem encontra outro da segunda imagem como vizinho mais próximo, e vice versa. Para verificar as correspondências visualmente, usamos o algoritmo clássico de Bresenham para desenhar uma linha entre os dois pontos, lembrando que temos a posição dos pontos guardados no descritor que também possui o feature vector.

4. Resultados Figura 4: A segunda imagem sofreu um pequeno crop em relação à primeira. Figura 5: A segunda imagem sofreu uma redução de tamanho em relação à primeira. Figura 6: As duas imagens sofreram crops em lugares diferentes.

Figura 7: A segunda imagem foi invertida na vertical. 5. Conclusão A implementação resultante apresentou resultados razoáveis, como se pode ver na seção anterior. A invariância a translação foi facilmente alcançada. Já a invariância a rotação foi parcialmente alcançada, e foi a parte mais demorada da implementação. O algoritmo ainda apresenta um número significativo de erros ao comparar os feature vectors de duas imagens idênticas, sendo uma delas invertida na vertical. A invariância a iluminação não foi testada com o conjunto de imagens teste usado neste trabalho. 6. Trabalhos Futuros A invariância a rotação ainda é uma área do trabalho que pode ser melhorada. O método de comparação também não é muito esperto, podendo render falsos positivos pelo simples fato de que pontos chave acabam encontrando um vizinho mais próximo na maior parte do tempo, mesmo que não sejam tão próximos. Talvez um limiar possa ser desenvolvido para rejeitar certas correspondências, como as de pontos que só existem numa imagem.

7. Referências [1] Lowe, David G. 2004. Distinctive Image Features from Scale-Invariant Keypoints. [2] Lowe, David G. 1999. Object Recognition from Local Scale-Invariant Features. [3] Sinha, Utkarsh. www.aishack.in. O site tem uma série de tutorials sobre o SIFT que ajudaram muito a compreensão do algoritmo.