Descritores de recursos invariáveis ​​de escala e rotação


16

Você pode listar alguns descritores de recursos invariáveis ​​em escala e rotação para uso na detecção de recursos.

O aplicativo é para a detecção de carros e seres humanos em vídeo capturado por um UAV, usando um classificador de várias classes.

Até agora eu estive olhando para SIFT e MSER (que é invariante afim). Eu também olhei para LESH, LESH é baseado no modelo de energia local, mas é calculado de uma maneira que não é rotacionalmente invariante, eu tenho tentado pensar em uma maneira de fazer uso da energia local, para construir uma rotação invariante descritor de recursos, li aqui Quais são algumas alternativas gratuitas ao SIFT / SURF que podem ser usadas em aplicativos comerciais? , que "se você atribuir orientação ao ponto de interesse e girar o patch da imagem adequadamente, obtém invariância rotacional gratuitamente", mas não sabe se isso é um alívio ou como eu poderia aplicar isso ao meu problema, qualquer ajuda seria apreciado, obrigado


Use ORB (Oriented FAST e Rotated BRIEF) da biblioteca OpenCV.
Harsh Wardhan

Respostas:


9

Quanto às alternativas ao SIFT / SURF, a pergunta que você vinculou fornece respostas muito boas.

Havia mais duas perguntas que eu poderia ler:

  • "como eu construí um descritor de recurso útil (por exemplo, invariante de rotação)"?
  • "em relação à afirmação da pergunta vinculada, como ele realiza invariância rotacional livre?"

Criando descritores de recursos

Este é um tópico de pesquisa válido. Bons descritores de recursos não são algo que qualquer pessoa possa criar em uma tarde. As pessoas publicam artigos quando modelam com êxito descritores de recursos com propriedades desejáveis. Esse é um motivo pelo qual atualmente apenas um punhado de descritores de última geração é usado, e é também isso que eu aconselho a fazer: encontre um descritor de recurso adequado às suas necessidades .

Alcançando invariância rotacional "de graça"

Você pode determinar o gradiente dominante ou a orientação em um patch de imagem (sua área de recursos). Em seguida, gire o patch da imagem para que o gradiente esteja sempre olhando na mesma direção, por exemplo, (para cima). Por exemplo, se você tivesse uma e uma imagem, os gradientes dominantes apontariam para a esquerda ( ) e para a direita ( ), respectivamente, e quando você os gira nessa quantidade, obtém as mesmas imagens.0 0|black->gray->white||white->gray->black|-9090

Dessa forma, você sempre calcula o descritor em um patch de imagem com a mesma orientação dominante (o patch girado) e, assim, obtém invariância rotacional.


4

Outra maneira de obter invariância rotacional gratuitamente é escolher objetos que são invariáveis ​​rotacionalmente. Por exemplo, um círculo ou um anel é invariável às rotações.

Extrator de recursos : Execute a detecção de borda. Para cada vizinhança de NxNpixels, calcule a direção da aresta e o histograma de magnitude 2D. Encontre todos os pontos que possuem alta magnitude total e alta propagação angular . Remova todos os pontos que não possuem simetria radial.

Descritor de recursos : encontre o centro de cada objeto circular. Como o objeto é circular, não possui ângulo de gradiente dominante. Todos os ângulos são iguais. Assim, um perfil radial (soma do valor de pixel em coordenadas polares) é um descritor invariante em ângulo.


A propósito, essa é uma das razões pelas quais os fiduciais são fabricados em círculos nas placas de circuito elétrico:

insira a descrição da imagem aqui


estamos falando de descritores de ponto-chave (recurso) . Se estivéssemos falando sobre recursos (pontos de interesse) , a detecção de amostras circulares pode ser útil - elas são invariavelmente rotacionais em combinação com todos os descritores. Mas um descritor calculada a um remendo circular não é - um círculo com diâmetro branco horizontal de cor preta, e com uma vertical produziria muito diferentes descritores se rotativamente método invariante não é usado
penelopes

@penelope, por que não? Considere o seguinte descritor - uma miniatura do patch e compare-o com outros descritores com correlação cruzada normalizada. Você não pode confundi-lo com outros objetos dessa maneira.
Andrey Rubshtein

Desculpe, não entendo o que você quer dizer com "uma miniatura do patch", você pode explicar? E o descritor: correlação corss normalizada de seu patch é o que o torna invariante em rotação, não o fato de seu patch ser um anel ou círculo.
Penelope #

@penelope, acho que agora não estava suficientemente claro. Vou tentar expandi-lo amanhã. Obrigado por seus comentários.
precisa saber é o seguinte

Olhando para a frente :)
penelope

1

Prefiro olhar para o KAZE / AKAZE, que tem um desempenho igualmente bom com uma aceleração significativa. Os casos de deformação também são tolerados. O OpenCV obteve recentemente uma implementação através do GSoC 2014. Você pode encontrá-lo aqui .


1

Se você remapear um patch local em torno de um ponto de recurso para coordenadas log-polares (com a origem no ponto de interesse), as alterações de escala corresponderão a uma translação ao longo do eixo radial-logarítmico, enquanto as rotações corresponderão às traduções (com contorno) ao longo do eixo angular. Se você calcular a transformada de Fourier bidimensional, as translações nas direções radial e angular tornam-se mudanças de fase no domínio da frequência. Se você calcular o valor absoluto da transformação de Fourier, a fase desaparecerá completamente e as alterações e rotações da escala do patch de imagem original se tornarão imperceptíveis. Portanto, o valor absoluto da transformação Fourier 2D da imagem nas coordenadas logarítmicas seria o seu descritor de recursos.

Bem, pelo menos em teoria. Na prática, você precisa limitar a extensão radial do seu patch. Isso significa que você precisa cortar grande parte de seus dados antes de calcular a transformada de Fourier (que na verdade é uma série de Fourier); portanto, uma tradução ao longo da direção radial do log nas coordenadas polares do log não corresponde exatamente a apenas uma mudança de fase no domínio da frequência, para que o método não seja perfeitamente invariável em escala. Suspeito que se você usar alguma função da janela - sem descontinuidades - na coordenada raio-log e multiplicá-la com a intensidade da cor, esse problema será atenuado.

No entanto, o descritor de recursos ainda deve ser perfeitamente invariável à rotação.

Referência: invariância da balança sem seleção de balança


0

Você também pode verificar o FAST e o BRISK .


Tanto quanto eu procurei, o FAST é apenas um detector usado com muitas combinações diferentes de descritores. E, FAST e BRISK já são mencionados na pergunta que o próprio OP vinculou, então suponho que ele já tenha informações sobre a existência desses métodos.
Penelope #
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.