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