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
Respostas:
Quanto às alternativas ao SIFT / SURF, a pergunta que você vinculou fornece respostas muito boas.
Havia mais duas perguntas que eu poderia ler:
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 - 90 90
|black->gray->white|
|white->gray->black|
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.
fonte
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
NxN
pixels, 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:
fonte
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 .
fonte
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
fonte
Você também pode verificar o FAST e o BRISK .
fonte