Algoritmo de rastreamento de objetos alternativos para surf e peneirar para realidade aumentada

StackOverflow https://stackoverflow.com/questions/1318691

Pergunta

Depois de perguntar aqui E experimentando o surf e o SIFT, nenhum deles costuma ser eficiente o suficiente para gerar pontos de interesse com rapidez suficiente para rastrear um fluxo da câmera.

O Surf, por exemplo, leva cerca de 3 segundos para gerar pontos de interesse para uma imagem, é muito lento para rastrear um vídeo proveniente de uma webcam, e será ainda pior ao usá -lo em um telefone celular.

Eu só preciso de um algoritmo que rastreia uma determinada área, sua escala, inclinação, etc. e posso construir sobre isso.

Obrigado

Foi útil?

Solução

Eu suspeito que seu uso de surf pode precisar de alguma alteração?

Aqui está um link Para um artigo do MIT sobre o uso do Surf para aplicativos de realidade aumentada em dispositivos móveis.

Excerto:

Nesta seção, apresentamos nossa implementação do algoritmo de surf e sua adaptação ao telefone celular. Em seguida, discutimos o impacto que a precisão tem na velocidade da pesquisa do vizinho mais próxima e mostramos que podemos alcançar uma ordem de magnitude, com impacto mínimo na precisão da correspondência. Por fim, discutimos os detalhes da implementação do telefone do pipeline de correspondência de imagens. Estudamos o desempenho, o uso da memória e o consumo de largura de banda no telefone.

Você também pode querer analisar os algoritmos do OpenCV porque eles são testados e testados.

Dependendo do restrições do seu aplicativo, você poderá reduzir a genérica desses algoritmos para procurar POIs e marcadores conhecidos dentro da imagem.

Parte de rastreamento Um PoI está estimando seu vetor de um ponto na imagem 2D para outra e, opcionalmente, confirmando que ele ainda existe lá (através das características do pixel). A mesma abordagem pode ser usada para rastrear (não re-varre a imagem inteira) para as mudanças de perspectiva e rotação do grupo/objeto POI e POI.

Existem toneladas de artigos on -line para rastrear objetos em uma projeção 2D (até uma inclinação do servidor em muitos casos).

Boa sorte!

Outras dicas

Você deve tentar o detector rápido

http://svr-www.eng.cam.ac.uk/~er258/work/fast.html

Estamos usando o surf para um projeto e encontramos OpenSurf Para superar a implementação de surf da OpenCV em velocidade e desempenho bruto. Ainda não testamos repetibilidade e precisão, mas é muito mais rápido.


ATUALIZAÇÃO: Eu só queria salientar que você não precisa executar uma etapa de correspondência de surf em cada quadro, você pode simplesmente fazê -lo todos os outros quadros e interpolar a posição do objeto no quadro em que você não executa o surf.

Você pode usar um algoritmo mais simples se fizer restrições mais rigorosas na área que gostaria de ser rastreada. Como você certamente sabe, o Artoolkit é muito rápido, mas apenas rastreia marcadores em preto e branco com uma moldura muito distinta.

Se você deseja um rastreador de propósito geral (um pouco), convém verificar o PTAM. O site (http://www.robots.ox.ac.uk/~gk/ptam/) está atualmente inativo, mas aqui está um vídeo elegante trabalhando em um iPhone (http://www.youtube.com/watch?v=pbi5hwitbx4)

Como outros mencionaram, três segundos parecem extraordinariamente longos. Ao testar a implementação do surf no Mahotas Biblioteca, achei que levava em média 0,36 segundos, mesmo com algumas imagens bastante grandes (por exemplo, 1024x768). E isso é com uma mistura de Python e C, então eu imagino que outras implementações puras-C seriam ainda mais rápidas.

Encontrei esta boa comparação de cada algoritmos de detecção de recursos em http://computer-vision-talks.com/2011/01/comparison-of-the-opencvs-feature-detection-algorithms-2/

Dar uma olhada. Pode ser útil!

De acordo com essa comparação, e como Mirror2Image também sugeriu, Fast é a melhor escolha. Mas depende do que você realmente deseja alcançar.

Uma opção que usei em sistemas incorporados restritos é usar um detector de ponto de interesse mais simples: Fast ou Shi-Tomasi, por exemplo. Eu usei Shi-Tomasi, pois estava atingindo um FPGA e podia executá-lo facilmente à taxa de pixels, sem necessidade de buffer significativo.

Em seguida, use o Surf para gerar os descritores para o patch de imagem em torno dos recursos identificados e use -os para fins de correspondência e rastreamento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top