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.
Programa principal: cria todas as classes, inicialização, captura de quadros do vídeo.
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:
Carregue os parâmetros intrínsecos da câmera . Anteriormente extraído offline por meio de calibração.
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:
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.
Encontre correspondências entre o padrão e os descritores de cena.
Encontre a matriz de homografia dessas correspondências. RANSAC pode ser usado antes para localizar inliers / outliers no conjunto de correspondências.
Extraia a pose da câmera da homografia.
- Amostra de código em Pose from Homography .
- Amostra de código em Homografia de Pose .