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

Documents pareils