2010-02-10 3 views
9

Pour mon travail, j'ai utilisé une version Java d'ARToolkit (NyARTookit). Jusqu'à présent, il s'est avéré assez bon pour nos besoins, mais mon patron commence à vouloir que le framework soit porté sur d'autres plateformes telles que le web (Flash, etc.) et les mobiles. Bien que je suppose que je pourrais utiliser d'autres ports, je suis de plus en plus agacé de ne pas savoir comment le kit fonctionne et au-delà, à cause de certaines limitations. Plus tard, je devrai également étendre les capacités du kit pour ajouter des trucs comme l'interaction (boutons virtuels sur les cartes, etc.), ce qui d'après ce que j'ai vu dans NyARToolkit n'est pas supporté. Donc, fondamentalement, je dois remplacer ARToolkit par un détecteur de marque personnalisé (et dans le cas de NyARToolkit, essayer de se débarrasser de JMF et utiliser une meilleure solution via JNI). Cependant je ne sais pas comment fonctionnent ces détecteurs. Je connais les graphismes 3D et j'ai construit un joli cadre autour de celui-ci, mais j'ai besoin de savoir comment construire la technologie sous-jacente :-).Comment fonctionne un algorithme de réalité augmentée basé sur un marqueur (comme celui d'ARToolkit)?

Est-ce que quelqu'un connaît des sources sur la façon de mettre en œuvre une application de réalité augmentée à base de marqueur à partir de zéro? Lors de la recherche dans google je trouve seulement des "applications" de AR, pas les algorithmes sous-jacents: - /.

+0

Rechercher "vision par ordinateur". Fondamentalement, c'est juste beaucoup d'algèbre linéaire. –

Répondre

10

«De rien» est un terme relatif. Vraiment le faire à partir de zéro, sans utiliser de code de vision préexistant, serait très douloureux et vous ne feriez pas un meilleur travail que l'ensemble de la communauté de vision par ordinateur. Toutefois, si vous voulez faire de l'AR avec un code de vision existant, c'est plus raisonnable. Les sous-tâches essentielles sont:

  1. Trouvez les marqueurs dans votre image ou vidéo.
  2. Assurez-vous qu'ils sont ceux que vous voulez.
  3. Déterminez comment ils sont orientés par rapport à la caméra.

La première tâche est la localisation par points-clés. Les techniques pour cela comprennent la détection de points-clés SIFT, le détecteur de coin Harris et d'autres. Certains d'entre eux ont des implémentations open source - je pense que OpenCV a le détecteur d'angle Harris dans la fonction GoodFeaturesToTrack.

La deuxième tâche consiste à créer des descripteurs de région. Les techniques pour cela incluent des descripteurs SIFT, des descripteurs HOG, et beaucoup d'autres. Il devrait y avoir une implémentation open-source de l'un d'entre eux quelque part.

La troisième tâche est également effectuée par les localisateurs de point-clé. Idéalement, vous voulez une transformation affine, car cela vous dira comment le marqueur est assis dans 3-espace. Le détecteur affine Harris devrait fonctionner pour cela. Pour plus de détails, cliquez ici: http://en.wikipedia.org/wiki/Harris_affine_region_detector

+1

Merci pour les références. Je ne cherche pas à faire un meilleur travail que toute la communauté de vision par ordinateur, je cherche juste à implémenter le sous-ensemble requis pour la tâche particulière de trouver les marqueurs :-). Cependant, ce que je dois savoir, c'est comment chaque partie fonctionne, de l'étape d'avoir un bitmap avec le cadre à la construction de la matrice de transformation utilisée pour placer des objets 3D. Dans le détail :-) En gros: 1. Obtenir l'image de la caméra 2. Convertir en RVB ou un autre format traitable 3. ??? N. Utilisez la matrice de transformation. Je dois savoir exactement les étapes 3..N-1 :-) –

+0

Je suggère d'acheter le livre O'Reilly OpenCV. – forefinger

+0

est-ce qu'il explique les algorithmes ou seulement l'API? –

Questions connexes