web-dev-qa-db-fra.com

Kit de développement de réalité augmentée avec OpenCV

Je développe un SDK de réalité augmentée sur OpenCV. J'ai eu quelques problèmes pour trouver des tutoriels sur le sujet, les étapes à suivre, les algorithmes possibles, un codage rapide et efficace pour des performances en temps réel, etc.

Jusqu'à présent, j'ai rassemblé les informations suivantes et des liens utiles.

Installation d'OpenCV

Télécharger dernière version .

Vous pouvez trouver des guides d'installation ici (plates-formes: Linux, Mac, Windows, Java, Android, iOS).

En ligne documentation .

Réalité augmentée

Pour les débutants ici est un simple code de réalité augmentée dans OpenCV. C'est un bon début.

Pour ceux qui recherchent un SDK de pointe bien conçu, j'ai trouvé quelques étapes générales que toute réalité augmentée basée sur le suivi des marqueurs devrait avoir, en considérant les fonctions OpenCV.

  1. Programme principal: crée toutes les classes, initialisation, capture images de la vidéo.

  2. Classe AR_Engine: Contrôle les parties d'une application de réalité augmentée. Il devrait y avoir 2 états principaux:

    • detection : tente de détecter le marqueur dans la scène
    • tracking : une fois détecté, utilise des techniques de calcul moins sophistiquées pour traquer le marqueur dans les images à venir.

Il devrait également y avoir des algorithmes pour trouver la position et l’orientation de la caméra dans chaque image. Ceci est réalisé en détectant la transformation d'homographie entre le marqueur détecté dans la scène et une image 2D du marqueur que nous avons traité hors ligne. L'explication de cette méthode ici (page 18). Les principales étapes pour les estimations de pose sont les suivantes:

  1. Charger les paramètres intrinsèques de la caméra . Auparavant extrait hors ligne via l'étalonnage. intrinsic parameters

  2. Charge le motif (marqueur) à suivre: il s'agit d'une image du marqueur planaire que nous allons suivre. Il est nécessaire d'extraire des caractéristiques et de générer des descripteurs ( points clés ) pour ce modèle afin que nous puissions ultérieurement les comparer aux caractéristiques de la scène. Algorithmes pour cette tâche:

  3. Pour chaque mise à jour de trame, exécutez un algorithme de détection pour extraire les caractéristiques de la scène et générez des descripteurs. Encore une fois, nous avons plusieurs options.

    • TAMISER
    • VITE
    • SURF
    • PHÉNOMÈNE : Une nouvelle méthode (2012) supposé être la plus rapide.
    • ORBE
  4. Find fait correspondre entre le modèle et les descripteurs de scène.

  5. Trouver Homographie matrice de ces correspondances. RANSAC peut être utilisé avant pour trouver des inliers/outliers dans l’ensemble des matchs.

  6. Extrait Pose de la caméra de l'homographie.

Exemples complets:

92
Jav_Rock

Étant donné que les applications AR fonctionnent souvent sur des appareils mobiles, vous pouvez également envisager d'autres fonctionnalités de détecteur/descripteur:

19
Muffo

En règle générale, si vous pouvez choisir les marqueurs, vous devez d'abord détecter une cible carrée à l'aide d'un détecteur de contour, puis utiliser le contour de Hough ou simplement des contours, puis identifier le marqueur particulier à partir de la conception interne. Plutôt que d'utiliser un correcteur de points général.

Jetez un oeil à Aruco pour un exemple de code bien écrit.

13
Martin Beckett