SDK de réalité augmentée avec OpenCV [fermé]

94

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 les liens utiles.

Installation d'OpenCV

Téléchargez la dernière version .

Vous pouvez trouver des guides d'installation ici (plates-formes: linux, mac, windows, java, android, iOS).

Documentation en ligne .

Réalité augmentée

Pour les débutants, voici un simple code de réalité augmentée dans 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 des marqueurs devrait avoir, compte tenu des fonctions OpenCV.

  1. Programme principal: crée toutes les classes, initialisation, capture des images à partir 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 : tente de détecter le marqueur dans la scène
    • tracking : une fois qu'il est détecté, utilise des techniques de calcul inférieures 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 des estimations de pose sont:

  1. Charger les paramètres intrinsèques de la caméra . Précédemment extrait hors ligne par étalonnage. paramètres intrinsèques

  2. Chargez le motif (marqueur) à suivre: c'est une image du marqueur plan 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 comparer avec les caractéristiques de la scène. Algorithmes pour cette tâche:

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

    • TAMISER
    • VITE
    • LE SURF
    • FREAK : Une nouvelle méthode (2012) censée être la plus rapide.
    • ORBE
  4. Trouvez des correspondances entre le motif et les descripteurs de scène.

  5. Trouvez la matrice d' homographie à partir de ces correspondances. RANSAC peut être utilisé avant pour rechercher des inliers / outliers dans l'ensemble de correspondances.

  6. Extraire la pose de la caméra de l'homographie.

Exemples complets:

Jav_Rock
la source
1
Malheureusement, ce n'est "pas constructif", recherchez-vous des suggestions.
bfavaretto
3
Concernant la tâche d'installation, maintenant OpenCV a migré vers GIT, donc pour télécharger le code cource il est nécessaire de faire un "git clone git: //code.opencv.org/opencv.git".
Carlos Cachalote
12
47 Votes à la hausse encore fermés en raison de règles stupides.
SvaLopLop

Réponses:

19

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

Muffo
la source
3
Merci! Il existe également une version "rapide" de FAST qui fonctionne en temps réel dans les mobiles, elle est pyramidale et les descripteurs SIFT sont réduits
Jav_Rock
2
J'ai obtenu des résultats presque parfaits en utilisant ORB
dynamique du
En fait, en lisant sur ORB, il est dit que c'est un FAST dans les pyramides
Jav_Rock
3
Freak est le dernier algorithme à traiter le descripteur sur AR. Plus rapide que FAST.
aller le
13

En règle générale, si vous pouvez choisir les marqueurs, vous détectez d'abord une cible carrée à l'aide d'un détecteur de bord, puis Hough ou simplement des contours - identifiez ensuite le marqueur particulier à partir de la conception interne. Plutôt que d'utiliser un point matcher général.

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

Martin Beckett
la source
4
Oui, l'approche fiduciale est la plus simple, mais elle n'est pas tout à fait à jour. Je pense que maintenant il faut pointer vers les marqueurs texturés. Merci. L'exemple est cependant très intéressant car bien expliqué.
Jav_Rock
1
Si vous voulez connaître la pose, vous devez faire correspondre la position 3D des éléments marqueurs aux coordonnées d'image correspondantes. Les cibles de forme régulière facilitent les choses, mais elles n'ont pas besoin d'être planes
Martin Beckett
Mais s'ils ne sont pas plans, vous avez besoin du modèle 3D ou d'un modèle CAO, sinon l'homographie de 2d à 3D n'est plus une méthode valide, n'est-ce pas? Je veux dire la transformation linéaire directe utilisée dans findhomography
Jav_Rock
Oui, si vous avez un marqueur 3D, vous devez connaître la forme réelle du mot 3D (à partir de CAD, ou en la mesurant) mais cela donne une meilleure solution
Martin Beckett