création d`images avec réalité augmentée
Transcription
création d`images avec réalité augmentée
LAURENT Anthony Info2 Compte Rendus PT4 2015/2016 création d’images avec réalité augmentée Implémentation d'une scène avec réalité augmentée sur une photo 22 Février 2016 - 30 Mars 2016 Tuteur : Pierre-Frederic VILLARD 1/9 Sommaire 2/9 I. Introduction Qu'est-ce que la réalité augmentée ? La réalité augmentée est un traitement de l'image consistent à rajouter des objet 3D dans une photo 2D tout en gardant sont aspect le plus réel possible. C'est donc un mécanisme qui consiste à rajouter des images dans une photo général tout en gardant l'aspect général de la photo. Par exemple : Pas de rajouts d'un avion dans un appartement,… Pour donner un aspect réel, nous devons aussi traiter les ombres ainsi que la lumières de la pièces présente dans la photo. Qu'est-ce que la bibliothèque PoLAR ? La bibliothèque PoLAR est une librairie permettant de gérer la réalité augmenter sur une photo écrit en langage C++. C'est une librairie qui aide la création d'applications pour la réalité augmentée, elle peux aussi servir à la visualisation des images ainsi qu'à l'imagerie médicale. Quel est l'objectif du projet ? L'objectif du projet est d'ajouter des objet 3D avec leurs ombres ainsi que des objet dynamique dans une photo prise par nous même. Pour cela, nous avons plusieurs tâches à réussir qui sont les suivantes : T1 : Compiler la bibliothèque PoLAR (après Qt5.4 et OpenScengraph 3.2) T2 : Charger une photo (ex : Extérieur de l’IUT) T3 : Mettre un objet 3D sur la photo avec la bonne matrice de protection (ex : une voiture) T4 : Mettre un objet fantôme pour avoir de l’ombrage (ex : le sol) T5 : Mettre un objet fantôme pour avoir de l’occlusion partielle (ex : un mur devant la voiture) T6 : Ajouter des comportements dynamiques continus (ex : une balle qui rebondit de gauche à droite) T7 : Ajouter des comportements événementiels (ex : un avion qui passe lorsque une touche est appuyée) T8 : Faire un gif animé montrant les différentes étapes de création de la scène 3/9 II. Installation de PoLAR Pour l'installation de la librairie nous avons suivis les instruction indiqué dans le Manuel de PolAR, j'ai choisit de travailler avec la version 15.10 de Ubuntu. Pour cela, nous avons du installer plusieurs librairie à l'aide de la commande apt-get install qui sont les suivante : Pour OpenGL : freeglut3, freeglut3-dev Pour OpenSceneGraph : openscenegraph, libopenscenegraph-dev Suplémentaire : libgstreamer0.10-0, libgstreamer0.10-dev, gstreamer-tools Pour l'installation de Qt, nous avons du passer par l'installation en ligne car la bibliothèque polat ne détecter par Qt avec l'installation en ligne de commande. Suite à l'installation de ces librairie, nous avons placer le contenue de l'archive PoLAR dans un dossier et avons taper la ligne de commande suivante : make CmakeList.txt Ce qui as pour but de compiler la librairie PoLAR. J'ai d’abord rencontré un problème du à l'installation du Qt en ligne de commande. Le second problème est la libraire jogl que je doit Export dans le CLASSPATH à chaque ouverture du Terminal. Suite à cela, la compilation de PoLAR est terminer nous pouvons essayer les exemples fournis avec elle. 4/9 III. Calcul de la Matrice de projection Pour nous aider à calculer la matrice de projection, nous prenons une librairie Jama, capable de gérer les matrice. Pour calculer la matrice de projection, il nous faut préalablement, les dimensions de notre objet rectangulaire comme sur la photo suivante. Ensuite, nous pourrons calculer la position de c'est point à l'aide de l'objet calib crée dans le dossier Examples de Polar à l'aide de la commande ./calib image.jpg Sur cette photo nous pouvons voir le schéma dessiner par nos points qui est un rectangle. Pour le crée, il suffit d'appuyer sur la touche 'p' une fois calib lancer et d'utiliser la molette pour placer les point et le clic gauche pour les déplacer. Une fois c'est donné préalablement réunit, il nous suffit de faire les différent calcule nécessaires pour la matrice de projection final. 5/9 Nous commençons par calculer la distance focal à l'aide des formule suivante : Ligne de fuite l1, l2, l3 et l4. Produit vectorielle avec les interaction V et W suivante : Distance focal : Nous obtiendrons donc la matrice intrinsèque à l'aide de la formule suivante : Suite aux donnés que nous venons d'acquérir, nous devons maintenant utiliser pour calculer les points. Ensuite, nous devons calculer les coordonnées mesuré sur l'image recentré sur Qi' : 6/9 Nous obtenons la matrice d'homographie suivante : Ensuite pour calculer la matrice de projection, il nous suffit de résoudre les équations suivante : Pour vérifier notre matrice, nous pouvons utiliser l'application svisu3 de Examples. Pour cela, utiliser la commande make svisu3 dans le dossier Examples et ensuite dans le dossier bin, taper la commande suivante : ./svisu3 image.jpg matrice.txt objet.obj IV. Placement d'un objet. Pour placer un objet, nous plaçons un fichier prog.cpp dans le dossier Examples et rajoutons la ligne correspondante dans le fichier CMakeList.txt. Pour réaliser le placement de l'objet nous pouvons nous référencer à la documentation Polar. Nous devons télécharger un objet 3d, que nous devons spécifier dans le code. Nous devons posséder une image où nous pouvons facilement calculer la matrice de projection et remplacer les ligne correspondante par le nom de notre fichier. Et Enfin nous devons aussi possède une image format JPG. Vous pouvez voir le code sur la photo suivante : 7/9 8/9 Nous pouvons voir le résultat sur la photo suivante : 9/9