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.
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 .
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.
Programme principal: crée toutes les classes, initialisation, capture images de la vidéo.
Classe AR_Engine: Contrôle les parties d'une application de réalité augmentée. Il devrait y avoir 2 états principaux:
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:
Charger les paramètres intrinsèques de la caméra . Auparavant extrait hors ligne via l'étalonnage.
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:
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.
Find fait correspondre entre le modèle et les descripteurs de scène.
Trouver Homographie matrice de ces correspondances. RANSAC peut être utilisé avant pour trouver des inliers/outliers dans l’ensemble des matchs.
Extrait Pose de la caméra de l'homographie.
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.