O sift é uma boa maneira de extrair recursos de uma imagem?


13

Estou tentando extrair recursos de uma imagem, mas não obtive os pontos que quero extrair e, portanto, minha imagem não coincide com o modelo.

Há algum ponto de verificação que eu precise passar antes de aplicar SIFT à minha imagem para obter bons resultados? Por exemplo, a imagem do modelo é;
insira a descrição da imagem aqui

imagem direcionada; insira a descrição da imagem aqui


1
Depende do tipo de imagem e para o qual você deseja usar os recursos. Mais informações, por favor.

Respostas:


14

O que você deve fazer ao associar um modelo a uma imagem usando peneirar é filtrar seu modelo e, em seguida, procurar os recursos de peneiração nesse arranjo em sua cena.

Regra geral: compare gostar de gostar.

Peneirar (modelo) contido em peneirar (imagem)

Você não pode ajustar o Sift para extrair os "recursos que deseja". O Sift * usa medidas invariantes para encontrar os recursos que considera mais salientes. (* Chris A)

Se você deseja encontrar recursos específicos do seu modelo, crie modelos menores desses recursos e procure-os.

Apenas uma sugestão. Não sei exatamente que tipo de modelo você está tentando ajustar para que tipo de cena ou imagem.


7
+1, eu concordo. Exceto por uma coisa. O SIFT não encontra os recursos mais invariáveis. Ele usa medidas invariantes para encontrar recursos que considera mais salientes.

7

Não tenho certeza se você deseja apenas combinar duas imagens (por exemplo, encontrar os pontos comuns) ou se deseja tentar algo como CBIR (recuperação de imagem baseada em conteúdo - pesquisando um banco de dados com uma imagem de modelo para encontrar tudo o que contém o objeto).

Atualmente, estou pesquisando o CBIR, por isso estou bastante atualizado com os métodos atuais. Aqui e aqui estão os links para minhas respostas a problemas semelhantes aos seus do stackoverflow, você deve dar uma olhada.

Agora, para falar um pouco sobre SIFT. Quando if foi introduzido pela primeira vez por Lowe, o termo SIFT se aplicava ao processo de detecção de recursos e aos descritores de recursos calculados nos pontos de interesse detectados. Até hoje, os descritores SIFT provaram ser incrivelmente impressionantes. Os descritores têm algumas propriedades interessantes que o @Totero já mencionou.

O método de detecção SIFT , por outro lado, que hoje em dia é cada vez mais chamado de DoG (Diferença de Gaussianos), não é mais o estado da arte. Ainda é amplamente utilizado, mas para o processo de detecção de recursos, hoje existem mais métodos, alguns dos quais são melhores ou complementam bem os tipos de pontos-chave invariantes que extrai o processo do DoG.

A maioria dos trabalhos atuais (veja os links nas perguntas sobre o fluxo de pilha) tem mais uma boa prática: eles combinam várias maneiras de detectar recursos e, em seguida, usam descritores SIFT (que ainda funcionam como descritores) para calcular as representações vetoriais invariantes. Atualmente, estou trabalhando com uma combinação de DoG (eles se concentram em partes de imagens semelhantes a cantos) e regiões MSER (eles se concentram em pontos distintos semelhantes a blob em várias escalas). Você pode tentar experimentar e lançar ainda mais tipos de detectores de recursos, se achar que essa combinação não é satisfatória em seu banco de dados de imagens específico.

Além disso, se você estiver interessado, aqui está um artigo que avalia as apresentações de diferentes combinações de detecção e descritor. Eu não o li desde que o DoG & MSER + SIFT funciona bem para mim, mas eu o procurei e o jornal é muito bom.

PS: use o google scholar se você não tiver acesso ao banco de dados IEEEXplore ao qual vinculei.


apenas um pequeno esclarecimento: O cão está para Diferença de Gaussian (diferença entre duas respostas filtro Gaussian)
Libor

2

Com base nas respostas anteriores:

(1) Você pode usar o SIFT (ou outra variante aprimorada deste descritor de patch local) com amostragem densa, em vez do detector embutido. Você pode escolher o tamanho do patch local e a densidade de amostragem para atender aos seus requisitos de desempenho e custo computacional.

(2) SIFT é um descritor invariante afim para ampla correspondência estéreo na linha de base. Isso significa que o SIFT funciona bem quando você tira uma imagem e induz uma transformação afim a ela, em que o 'modelo' deve estar presente na imagem de destino, embora com transformações.

Sugestões: (a) Crie um banco de dados de imagens de modelo (se possível) para aumentar suas chances de detectar a imagem.

(b) Você pode usar o modelo de BoW como linha de base se optar por adotar uma abordagem CBIR para sua tarefa.

(c) Corte a imagem do seu modelo apenas na parte relevante e use um SIFT altamente denso. http://www.vlfeat.org/overview/dsift.html

(4) Mais tarde, você pode tentar um descritor em escala múltipla, como PHOG (Pyramidal Histogram of Gradients), etc. que pode potencialmente melhorar os resultados. http://www.vlfeat.org/overview/dsift.html#tut.dsift.phow

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.