93 votes

SDK de réalité augmentée avec OpenCV

Je développe un SDK de réalité augmentée sur OpenCV. J'ai eu du mal à trouver des tutoriels sur le sujet, les étapes à suivre, les algorithmes possibles, le codage rapide et efficace pour les 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 du logiciel .

Vous pouvez trouver des guides d'installation aquí (plates-formes : linux, mac, Windows, java, Android, iOS).

En ligne documentation .

Réalité augmentée

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

Pour tous 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 de marqueurs devrait avoir, en tenant compte des fonctions OpenCV.

  1. Programme principal : crée toutes les classes, initialisation, capture des 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 :

    • détection : essaie de détecter le marqueur dans la scène
    • suivi de Une fois qu'il est détecté, il utilise des techniques de calcul inférieures pour tracer le marqueur dans les images suivantes.

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 homographique entre le marqueur détecté dans la scène, et une image 2D du marqueur que nous avons traitée hors ligne. L'explication de cette méthode aquí (page 18). Les principales étapes de l'estimation de la pose sont les suivantes :

  1. Charger les paramètres intrinsèques de la caméra . Préalablement extraites hors ligne par calibrage. intrinsic parameters

  2. Charger le motif (marqueur) à suivre : C'est une image du marqueur planaire que l'on va suivre. Il est nécessaire d'extraire des caractéristiques et de générer des descripteurs ( points clés ) pour ce motif afin de pouvoir le comparer ultérieurement avec les 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 extraction de caractéristiques de la scène et générer des descripteurs. Là encore, nous avons plusieurs options.

    • SIFT
    • FAST
    • SURF
    • FREAK : Une nouvelle méthode (2012) censée être la plus rapide.
    • ORB
  4. Trouvez correspond à entre le motif et les descripteurs de la scène.

  5. Trouvez Homographie matrice de ces matches. RANSAC peut être utilisé auparavant pour trouver les valeurs aberrantes/aberrantes dans l'ensemble des correspondances.

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

Exemples complets :

19voto

Muffo Points 598

Étant donné que les applications de réalité augmentée sont souvent exécutées sur des appareils mobiles, vous pouvez également envisager d'autres détecteurs/descripteurs de caractéristiques :

13voto

Martin Beckett Points 60406

En général, si vous pouvez choisir les marqueurs, vous commencez par détecter une cible carrée à l'aide d'un détecteur de bords, puis de Hough ou simplement de contours, puis vous identifiez le marqueur particulier à partir du dessin interne. Plutôt que d'utiliser un comparateur de points général.

Jetez un coup d'œil à Aruco pour un code d'exemple bien écrit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X