SDK Augmented Reality con OpenCV

Sto sviluppando un SDK Augmented Reality su OpenCV. Ho avuto alcuni problemi a trovare tutorial sull’argomento, quali passi da seguire, possibili algoritmi, codifica rapida ed efficiente per prestazioni in tempo reale, ecc.

Finora ho raccolto le prossime informazioni e link utili.

Installazione di OpenCV

Scarica l’ ultima versione .

Puoi trovare guide di installazione qui (piattaforms: linux, mac, windows, java, android, iOS).

Documentazione online

Realtà aumentata

Per i principianti qui è un semplice codice di realtà aumentata in OpenCV. È un buon inizio

Per chiunque cerchi un SDK avanzato e ben progettato ho trovato alcuni passaggi generali che ogni realtà aumentata basata sul tracciamento dei marker dovrebbe avere, considerando le funzioni OpenCV.

  1. Programma principale: crea tutte le classi, l’inizializzazione, cattura i fotogrammi dal video.

  2. Classe AR_Engine: controlla le parti di un’applicazione di realtà aumentata. Ci dovrebbero essere 2 stati principali:

    • rilevamento : prova a rilevare il marcatore nella scena
    • tracking : una volta rilevato, utilizza tecniche di calcolo più basse per il traking del marker nei frame successivi.

Inoltre ci dovrebbero essere alcuni algoritmi per trovare la posizione e l’orientamento della telecamera in ogni fotogramma. Ciò si ottiene rilevando la trasformazione dell’omografia tra il marker rilevato nella scena e un’immagine 2D dell’indicatore che abbiamo elaborato offline. La spiegazione di questo metodo qui (pagina 18). I passi principali per le stime di posa sono:

  1. Carica i parametri intrinseci della videocamera . In precedenza estratto offline tramite la calibrazione. parametri intrinseci

  2. Carica il pattern (marker) per tracciare: è un’immagine del marker planare che stiamo per tracciare. È necessario estrarre feature e generare descrittori ( punti chiave ) per questo modello, quindi in seguito possiamo confrontarci con le caratteristiche della scena. Algoritmi per questo compito:

    • VAGLIARE
    • VELOCE
    • SURF
  3. Per ogni aggiornamento di frame, eseguire un algoritmo di rilevamento per estrarre feature dalla scena e generare descrittori. Ancora una volta abbiamo diverse opzioni.

    • VAGLIARE
    • VELOCE
    • SURF
    • FREAK : un nuovo metodo (2012) in cui è indicato il più veloce.
    • ORB
  4. Trova le corrispondenze tra i pattern e i descrittori di scena.

    • Matcher FLANN
  5. Trova la matrice di omografia da quelle partite. RANSAC può essere usato prima per trovare inlier / valori anomali nel set di partite.

  6. Estrai Camera Pose dall’omografia.

    • Esempio di codice su Pose da Homography .
    • Esempio di codice su Homography from Pose .

Esempi completi:

  • aruco
  • Padroneggiare campioni OpenCV

Poiché le applicazioni AR spesso funzionano su dispositivi mobili, puoi prendere in considerazione anche altre caratteristiche rivelatore / descrittore:

  • FREAK
  • ORB

Generalmente, se puoi scegliere i marcatori per il primo rilevamento di un bersaglio quadrato utilizzando un rilevatore di bordi e poi uno o Hough o semplicemente contorni, quindi identificare il marcatore particolare dal progetto interno. Piuttosto che usare un match match generico.

Dai un’occhiata ad Aruco per codice di esempio ben scritto.