SDK de Realidade Aumentada com OpenCV [fechado]


94

Estou desenvolvendo um SDK de Realidade Aumentada em OpenCV. Tive alguns problemas para encontrar tutoriais sobre o tema, quais etapas seguir, possíveis algoritmos, codificação rápida e eficiente para desempenho em tempo real etc.

Até agora, reuni as próximas informações e links úteis.

Instalação OpenCV

Baixe a versão de lançamento mais recente .

Você pode encontrar guias de instalação aqui (plataformas: linux, mac, windows, java, android, iOS).

Documentação online .

Realidade aumentada

Para iniciantes, aqui está um código de realidade aumentada simples em OpenCV. É um bom começo.

Para quem está procurando por um SDK de última geração e bem projetado, encontrei algumas etapas gerais que toda realidade aumentada com base no rastreamento de marcadores deve ter, considerando as funções do OpenCV.

  1. Programa principal: cria todas as classes, inicialização, captura de quadros do vídeo.

  2. Classe AR_Engine: controla as partes de um aplicativo de realidade aumentada. Deve haver 2 estados principais:

    • detecção : tenta detectar o marcador na cena
    • rastreamento : uma vez detectado, usa técnicas computacionais inferiores para traçar o marcador nos próximos quadros.

Além disso, deve haver alguns algoritmos para encontrar a posição e orientação da câmera em cada quadro. Isso é obtido detectando a transformação de homografia entre o marcador detectado na cena e uma imagem 2D do marcador que processamos offline. A explicação desse método aqui (página 18). As principais etapas para as estimativas de pose são:

  1. Carregue os parâmetros intrínsecos da câmera . Anteriormente extraído offline por meio de calibração. parâmetros intrínsecos

  2. Carregue o padrão (marcador) para rastrear: É uma imagem do marcador planar que vamos rastrear. É necessário extrair características e gerar descritores ( pontos-chave ) para este padrão para posteriormente podermos comparar com características da cena. Algoritmos para esta tarefa:

  3. Para cada atualização de quadro, execute um algoritmo de detecção para extrair recursos da cena e gerar descritores. Novamente, temos várias opções.

    • SIFT
    • VELOZES
    • SURF
    • FREAK : Um novo método (2012) supostamente o mais rápido.
    • ESFERA
  4. Encontre correspondências entre o padrão e os descritores de cena.

  5. Encontre a matriz de homografia dessas correspondências. RANSAC pode ser usado antes para localizar inliers / outliers no conjunto de correspondências.

  6. Extraia a pose da câmera da homografia.

Exemplos completos:


1
Infelizmente, isso "não é construtivo", você está procurando sugestões.
— bfavaretto

3
Em relação à tarefa de instalação, agora o OpenCV migrou para o GIT, portanto, para baixar o código cource é necessário fazer um "git clone git: //code.opencv.org/opencv.git".
— Carlos Cachalote

12
47 votos positivos ainda fechados devido a regras bobas.
— SvaLopLop

Respostas:


19

Como os aplicativos de RA costumam ser executados em dispositivos móveis, você também pode considerar outros recursos de detector / descritor:


3
Obrigado! Há também uma versão "rápida" do FAST que roda em tempo real em celulares, é piramidal e os descritores SIFT são reduzidos
— Jav_Rock

2
Obtive resultados quase perfeitos usando o ORB
— dinâmico

Na verdade, lendo sobre ORB, ele diz que é um RÁPIDO nas pirâmides
— Jav_Rock

3
Freak é o último algoritmo a processar o descritor no AR. Mais rápido do que RÁPIDO.
— goe

13

Geralmente, se você pode escolher os marcadores, primeiro detecta um alvo quadrado usando um detector de borda e, em seguida, Hough ou simplesmente contornos - então identifica o marcador específico a partir do design interno. Em vez de usar um combinador de pontos geral.

Dê uma olhada no Aruco para um código de exemplo bem escrito.


4
Sim, a abordagem fiducial é a mais simples, mas não está totalmente atualizada. Acho que agora se deve apontar para marcadores texturizados. Obrigado. O exemplo é muito interessante, pois é bem explicado.
— Jav_Rock

1
Se quiser saber a pose, você precisa combinar a posição 3D dos recursos do marcador com as coordenadas da imagem correspondentes. Alvos de formato regular tornam isso mais fácil, mas eles não precisam ser planos
— Martin Beckett

Mas se eles não são planos, você precisa do modelo 3d ou de um modelo CAD, caso contrário, a homografia de 2d para 3d não é mais um método válido, não é? Quero dizer, a Transformada Linear Direta usada em findhomography
— Jav_Rock

Sim, se você tiver um marcador 3D, você precisa saber a forma 3D da palavra real (de cad ou medi-la), mas dá uma solução melhor
— Martin Beckett
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.