TD « Reconstruction

publicité
Travaux Dirigés M2 MVA
TD « Reconstruction »
Logiciels MeshLab et Scilab
Cours de J.E. Deschaud – 13 Février 2017
Objectifs du TD :
1/ Faire de la reconstruction 3d sous MeshLab
2/ Implémenter une méthode de reconstruction 2d sous Scilab (ou Matlab, python…)
1/ Reconstruction 3d sous Meshlab
Importer le nuage de points « bunny.asc »
Calcul de normales d’un nuage de points :
Filters->Point Set->Compute normal for point sets
Tester les méthodes de reconstruction suivantes :
- BPA
- RIMLS
- Voronoi Filtering (pas besoin de normales)
- Poisson
Faire les mêmes tests sur les nuages « dragon.asc » et « Lans_le_Villard_Church.asc »
1.1 Prendre des screenshots des 4 reconstructions pour chacun des nuages (attention, il est
possible que certaines méthodes ne fonctionnent pas directement pour certains nuages de
points. Cela est généralement dû à la taille du nuage. Dans ce cas, vous pouvez souséchantillonner ou tester sur une sous partie du nuage)
1.2 Pour chacun des nuages de points, quelle est la « meilleure » méthode de reconstruction ?
1
2/ Reconstruction 2d sous Scilab (ou sous Matlab, python…)
Nous allons tester une méthode de reconstruction de courbe et la représenter sous forme
discrète à l’aide d’une grille en 2D.
Le fichier « circle.xyz » correspond à un nuage de points d’un cercle de 103 points avec les
normales dans un espace 2D :
Le fichier se décompose ainsi :
x1 y1 nx1 ny1
x2 y2 nx2 ny2
…
où (xi,yi) sont les coordonnées des points du cercle et (nxi,nyi) représentent les coordonnées
du vecteur normal.
L’objectif est de faire une reconstruction de courbe de Hoppe, c’est-à-dire calculer la
fonction f(x,y) telle que :
f(x,y) = |<(nxi,nyi),(x,y)-(pxi,pyi)>| où (pxi,pyi) est le point le plus proche du point (x,y) et
(nxi,nyi) représente sa normale
Pour ouvrir un fichier dans Scilab :
nuage = read('circle.xyz',-1,4);
On définit ainsi un espace discret dans R2 pour calculer cette fonction f(x,y) :
x=[-1.2:0.01:1.2];
y=[-1.2:0.01:1.2];
On initialise la fonction distance f(x,y) :
f=zeros(size(x,2),size(y,2));
Puis on calcule la distance de chaque point de R2 au nuage de points (ici un cercle) :
Et afficher le résultat avec la fonction :
grayplot(x,y,f)
Pour obtenir le résultat, il faut calculer pour chaque point de l’espace le point le plus proche
du nuage de point puis faire le calcul de la fonction de distance à la courbe.
Vous avez le fichier « hoppe2d.sce » comme début de script pour ceux qui utilisent Scilab.
Pour les utilisateurs de Matlab ou de Python, vous pouvez vous en inspirer pour votre script
2.1 Faire un screenshot de l’image résultat qui représente une discrétisation de la
représentation implicite de la courbe.
2.2 BONUS : Tester la méthode IMLS (la formule n’est pas dans le cours) et comparer la
reconstruction avec Hoppe
Envoyez votre compte-rendu à [email protected] avec comme
sujet du mail « CR TP Reconstruction MVA ‘Votre Nom’ »
2
Téléchargement