Atelier de Formation - Traitement d images 3D avec des logiciels libres Traitement de maillages surfaciques avec MESHLAB Jean Dumoncel AMIS - UMR 5288 9 novembre 2015
MESHLAB Logiciel open source multiplateformes. http://meshlab.sourceforge.net. Forum de discussion : http: //sourceforge.net/p/meshlab/discussion/. Traitement des maillages surfaciques. Entrée / sortie : PLY, STL, OFF, OBJ, 3DS, etc... Possibilité de générer des pdf 3D (en combinant avec Latex).
MESHLAB Un maillage surfacique est composé de structures polygonales (représentation discrète d un objet).
MESHLAB Exemple d entête d un fichier.ply ply format binary_little_endian 1.0 comment VCGLIB generated element vertex 4992 property float x property float y property float z element face 10000 property list uchar int vertex_indices end_header
MESHLAB Visualisation Edition Colorisation Correction des données Remaillage Alignement de données Outil de mesure
MESHLAB Outil de modélisation géométrique et de visualisation. Utilisé dans les domaines : de l informatique de l archéologie de l héritage culturel de la biologie / l anthropologie....
MESHLAB Chaine de traitement des données Acquisition surfacique (scanner laser, photogrammétrie, ) Mise en forme Exploitation Acquisition volumique (tomographie, ) Segmentation, reconstruction de surfaces
MESHLAB Quelques commandes utiles (os X) Cmd + clic gauche : déplacer la surface dans le plan de vue Cmd + clic gauche sur une surface : sélectionner la surface Cmd + Shift + clic gauche : modifier l orientation de la lumière Shift + molette : modifier le FOV et de passer en projection orthographique. Alt + entrée : mettre en plein écran Application des filtres : une fenêtre s ouvre pour modifier les paramètres et l application du filtre s effectue en cliquant sur Apply.
MESHLAB Quelques commandes utiles (Windows) Ctrl + clic gauche : déplacer la surface dans le plan de vue Alt + clic droit sur une surface : sélectionner la surface Ctrl + Shift + clic gauche : modifier l orientation de la lumière Shift + molette : modifier le champ de vision et de passer en projection orthographique. Alt + entrée : mettre en plein écran Application des filtres : une fenêtre s ouvre pour modifier les paramètres et l application du filtre s effectue en cliquant sur Apply.
ALIGNEMENT DE DONNÉES L outil d alignement combine deux méthodes : un outil d alignement manuel (avec des landmarks). un outil d alignement automatique (avec la méthode Iterative Closest Point ).
ALIGNEMENT DE DONNÉES Ouvrir tous les fichiers du dossier Sculpture360Unstitched.
ALIGNEMENT DE DONNÉES Application de filtres pour nettoyer les données à l aide d un script. Menu Cleaning and repairing Merge Close Vertices Remove Duplicated Vertex Remove Isolated Pieces Remove Unreferenced Vertex
ALIGNEMENT DE DONNÉES Utilisation de script pour appliquer une série de filtres. Pour enregistrer une série de commande : Effectuer les commandes sur un exemple (choisir les paramètres adaptés). Aller dans Filter => Show current filter script. Sauvegarder le script Save Script. Pour appliquer le script, sélectionner la surface et cliquer sur ApplyScript dans la boîte de dialogue.
ALIGNEMENT DE DONNÉES Appliquer le script à toutes les surfaces. Puis cliquer sur le bouton Align
ALIGNEMENT DE DONNÉES Sélectionner le maillage de référence et cliquer sur Glue Here Mesh. Sélectionner le maillage à aligner et cliquer sur Point Based Glueing.
ALIGNEMENT DE DONNÉES Positionner au moins 4 points sur chacune des deux surfaces (l ordre des points doit être le même sur les 2 surfaces).
ALIGNEMENT DE DONNÉES Cliquer sur OK, puis, pour faire un ajustement automatique, cliquer sur Process. Fusionner les surfaces alignées avec : un clic droit sur une des surface dans la fenêtre listant les surfaces puis sélectionner Flatten Visible Layer. Reconstruire une surface en utilisant Filters => Remeshing, Simplification and Reconstruction => Surface Reconstruction : Poisson. Augmenter la valeur de Poisson Octree Depth pour augmenter la résolution.
ALIGNEMENT DE DONNÉES Pour transférer la couleur sur la surface reconstruite : Filter => Sampling => Vertex Attribute Transfert. Source Mesh est la surface contenant les informations de couleur, et Target Mesh est la surface à coloriser.
CARTE DE DISTANCES ENTRE DEUX OBJETS Ouvrir deux surfaces. Aligner les deux surfaces en utilisant l outil d alignement. Dans l option Param ICP Default, modifier la valeur de Sample Number pour modifier le nombre de points pris en compte.
CARTE DE DISTANCES ENTRE DEUX OBJETS Pour valider l alignement, faire Freeze current matrix. Puis, faire Filters => Sampling => Hausdorff distance. Pour afficher la carte de distances : Filters => Color, Creation and Processing => Colorize by vertex quality. Pour éditer la carte de couleurs utilisées : Edit => Quality Mapper.
REMAILLAGE Soit en reconstruisant un maillage depuis le nuage de point : Ball pivoting, Poisson, VCG. Soit en réduisant le nombre de faces dans le maillages : Quadric edge collapse decimation ou Uniform Mesh Resampling par exemple.
REMAILLAGE Sélectionner le maillage à réduire. Aller dans Remeshing, Simplification and Reconstruction puis utiliser Quadric edge collapse decimation. Le choix du nombre de faces se fait dans le champs Target number of faces. 300 000 faces 100 000 faces 10 000 faces 1 000 faces
AUTOMATISATION Lancement de meshlab en ligne de commande : Pour utiliser la commande meshlabserver : Ajouter le chemin de la commande de meshlabserver aux variables d environnement (dépend du système d exploitation utilisé). Ou copier le chemin du fichier à chaque utilisation : /chemin/vers/meshlabserver.
AUTOMATISATION Lancement de meshlab en ligne de commande : /Applications/meshlab.app/Contents/MacOS/meshlabserver i /chemin/vers/le/fichier/entree.ply -o /chemin/vers/le/fichier/sortie.ply -s /chemin/vers/le/fichier/script.mlx -om vc vn entree.ply est la surface à traiter sortie.ply est le nom d enregistrement (peut être le même que entree.ply, dans ce cas le fichier sera écrasé) script.mlx est le nom du script à appliquer -om vc permet de préciser les données supplémentaires à sauvegarder (couleur des sommets, des faces, normales, etc... )
AUTOMATISATION Lancement de meshlab en ligne de commande : $ /Applications/meshlab.app/Contents/MacOS/meshlabserver Usage: meshlabserver arg1 arg2... where args can be: i [filename...] mesh(s) that has to be loaded o [filename...] mesh(s) where to write the result(s) s filename script to be applied d filename dump on a text file a list of all the filtering fucntion l filename the log of the filters is ouput on a file om options data to save in the output files: vc > vertex colors, vf > vertex flags, vq > vertex quality, vn > vertex normals, vt > vertex texture coords, fc > face colors, ff > face flags, fq > face quality, fn > face normals, wc > wedge colors, wn > wedge normals, wt > wedge texture coords Example: 'meshlabserver i input.obj o output.ply s meshclean.mlx om vc fq wn'
AUTOMATISATION Lancement de meshlab en ligne de commande : Exemple : meshlabserver i /Users/jean/Desktop/test/Donnees_meshlab/ Inner_Ear_01.ply o /Users/jean/Desktop/test/ Inner_Ear_01_cleaned.ply s /Users/jean/Desktop/test/ Nettoyage01.mlx
AUTOMATISATION Il est possible d utiliser un langage de programmation pour traiter plusieurs surfaces : perl, R, MATLAB,... Exemple avec R (https ://www.r-project.org), pour appliquer un filtre à tous les fichiers d un même répertoire et enregistrer le résultat : inputfolder = /Users/jean/Desktop/test/Donnees_meshlab/ outputfolder = /Users/jean/Desktop/test/ scriptfile = /Users/jean/Desktop/test/Nettoyage01.mlx meshlabservercommand = /Applications/meshlab.app/Contents/MacOS/ meshlabserver listeply = list.files(path = inputfolder, pattern = (.ply )) for (i in 1:length(listeply)){ inputfile = file.path(inputfolder, listeply[i]) outputfile = file.path(outputfolder, sprintf( %s_cleaned.ply, substr(listeply[i], 1, nchar(listeply[i]) 4))) system(sprintf( %s i %s o %s s %s, meshlabservercommand, inputfile, outputfile, scriptfile),ignore.stdout=t,ignore. stderr=t) }
LISSAGE Sélectionner le maillage à lisser. Dans Filters => Smoothing Fairing and Deformation, utiliser Laplacian Smooth. Choisir le nombre d itérations.
OPÉRATION SUR LES NORMALES Dans le menu Filters => Normals, Curvature and Orientation ) : Re-orient all faces coherentely : orienter les normales dans la même direction. Invert faces orientation : inverser les directions de toutes les normales.
OUTIL DE TRANSFORMATIONS MANUELLES Dans Filters => Normals, Curvature and Orientation => Transform : Move, Translate, Center : permet par exemple de centrer la surface sur le point (0,0,0). Attention : en choisissant l option Freeze Matrix, la transformation est appliquée. Dans Filters => Normals, Curvature and Orientation => Transform : Align to principal axis.
OUTILS D ÉDITION DE MAILAGE connectées. Sélection de sommets, de faces ou de zones Suppression de sommets et de faces.
D AUTRES FONCTIONNALITÉS : Affichage des courbures d un objet. Correction de maillages (fermeture de trous, etc...). Colorisation manuelle de maillage et colorisation par région. Mesure linéaire, d aire et de volume....
AUTRES LOGICIELS DE TRAITEMENT DE MAILLAGES Logiciels libres : CloudCompare http://www.danielgm.net/cc/ Paraview http://www.paraview.org Blender https://www.blender.org Logiciels propriétaires : Avizo Rhinoceros Rapidform
RÉFÉRENCES http://www.cyi.ac.cy/system/files/meshlab% 20Documentation1.pdf https://www.fuel-3d.com/fr/blog/2013/08/21/ stitching-how-to-combine-multiple-scans/ http://www.andrewhazelden.com/blog/2012/04/ automate-your-meshlab-workflow-with-mlx-filter-s http: //www.cc.gatech.edu/projects/large_models/ http://meshlabstuff.blogspot.fr/2010/01/ measuring-difference-between-two-meshes. html