• Aucun résultat trouvé

Le type de maillage créé 1 Le choix de la méthode

II De l’échantillonnage à la texturation/colorisation

II.3.1 Le type de maillage créé 1 Le choix de la méthode

En premier lieu, face à la diversité des méthodes de maillage offertes (outils de Cloud Compare et Meshlab), il a été choisi de déterminer la méthode qui permettrait d’obtenir un maillage sans défauts, proche de la réalité, et ne nécessitant pas une phase post modélisation de simplification ou de nettoyage. En effet, il est souhaitable d’optimiser le temps de création du modèle final sans alourdir le processus de création avec cette phase, potentiellement évitable avec un jeu de données bien défini d’entrée.

Différentes méthodes d’échantillonnages ont été testées. Les méthodes « Marching Cube » et « Voronoi filtering » proposent des résultats plutôt corrects mais une grosse phase de comblement de trous s’avère nécessaire. Alpha Shape/Complex et l’algorithme de Poisson offrent tous deux des résultats convaincants, dénués d’artefacts avec chacun leurs spécificités. Alpha Shape/Complex créé un maillage si abrupt, qu’une phase de lissage semble ne pas pouvoir être évitée. La reconstruction de surface par Poisson, quant à elle,

40

donne un résultat bien lissé et adapté pour du maillage 3D. Cependant, l’algorithme cherche à clore les surfaces créées, ce qui construit des surfaces fausses. Cloud Compare propose également cet outil, mais avec une fonctionnalité supplémentaire très intéressante : celle de calculer la densité du nombre de points pour chaque face créée. Cela permet d’effacer très facilement les endroits où l’algorithme a clos la surface alors qu’il n’y avait pas de points. De plus, utiliser Cloud Compare présente également l’avantage d’interpoler la couleur des points et de l’appliquer sur chaque face.

Cette méthode permet alors la création d’un maillage lisse, respectant les formes du nuage de points et n’ayant pour paramètre que le niveau d’octree. Les outils de Meshlab (cf. annexe no5) ne se sont pas avérés plus convaincants que la méthode de reconstruction de surface de Poisson disponible sur Cloud Compare. Ils auraient nécessité une phase de nettoyage plutôt chronophage à la suite de la création de la surface. La détermination des normales ne doit toutefois pas être entachée d’erreurs, sous peine de créer un résultat complétement faux. II.3.1.2 Le calcul des normales

Avant de pouvoir créer une surface, il est obligatoire de calculer les normales du nuage de points. Leur calcul se fait de manière performante sur Meshlab mais il faut être attentif aux résultats proposés par Cloud Compare car il est souvent nécessaire d’en réorienter certaines. En effet, il existe plusieurs techniques pour les déterminer et en fonction de l’échantillonnage du nuage, il faut parfois jongler entre les méthodes « triangulation » et « quadric », et jouer sur les valeurs de « cell size » pour obtenir un résultat satisfaisant. Enfin, l’outil « orient normals with minimum spanning tree », utilisant la méthode des k-plus-proches-voisins, permet de réorienter les normales mal orientées. L’orientation des normales n’est pas le seul paramètre déterminant pour obtenir un bon maillage puisqu’il faut également que les normales ne subissent pas trop les effets de la rugosité lorsque le nuage est très dense. Le voisinage choisi est donc très important pour avoir des résultats convaincants. Une étude comparative sur 3D Reshaper28, menée durant le premier mois, a permis d’obtenir une analyse intéressante. Les normales ont été estimées sur un échantillon, de pas d’échantillonnage 2 mm, avec des voisinages variant entre 1, 3 et 6 cm. Pour un même niveau d’octree, les deux maillages indiquent que plus les normales sont estimées localement, plus le maillage est finement défini et cela améliore l’impression de relief. Il faut donc jouer avec les paramètres en fonction de la densité.

41

Figure 12 : Maillages d’un nuage de points après estimation des normales à 6 cm (à gauche) et 1 cm (à droite)

II.3.1.3 Le choix du niveau d’octree

Lors du lancement du plugin de maillage par algorithme de Poisson sur Cloud Compare, un niveau d’octree est demandé à l’utilisateur, niveau déterminant la taille des cellules cubiques. Une étude a alors été menée pour déterminer le niveau d’octree le plus adapté. Deux nuages de points ont servi de référence pour cette étude, les deux nuages réguliers sous- échantillonnés à des pas d’échantillonnage de 1 cm et 15 cm.

Niveau

d’octree Largeur des cellules

Nuage 1 cm Nuage 15 cm

Nombre de

points Poids du fichier Nombre de points Poids du fichier

7 10.9 cm 40 175 1 614 ko 20 917 1 571 ko 8 5.4 cm 167 010 6 911 ko 42 473 1 586 ko 9 2.7 cm 668 908 29 622 ko 45 573 1 586 ko 10 1.4 cm 2 208 849 131 580 ko 45 703 1 586 ko 11 0.7 cm 2 904 986 444 646 ko 45 721 1 586 ko 12 0.3 cm 2 905 034 450 720 ko 45 721 1 586 ko

Tableau 5 : Résultats du nombre de points pris en compte pour mailler et du poids des fichiers de maillage créés

En premier lieu, on observe qu’un niveau d’octree faible correspond à un nombre de points beaucoup moins important qu’un niveau élevé, particulièrement pour le nuage sous- échantillonné à 1 cm. De même, on remarque que la plupart des points de ce nuage ne sont pris en compte qu’à partir d’un niveau d’octree de 10. A l’inverse, un niveau d’octree de 8 représente approximativement le même nombre de points qu’un niveau d’octree de 12 pour le nuage sous-échantillonné à 15 cm. Cela s’explique par le fait que la densité du nuage soit directement liée à la taille des cellules d’octree. Le choix d’un niveau d’octree de 8 est donc largement suffisant pour les nuages de la même catégorie que celui sous-échantillonné à 15 cm par exemple. En outre, il est nécessaire de calculer la surface du nuage échantillonné à 1 cm avec un niveau d’octree de 12 pour prendre en compte tous les points. Dans la suite, il faut alors tenir compte du nombre de points des nuages et de leur densité pour choisir le niveau d’octree optimal à leur maillage. Il est à noter que réduire le niveau d’octree permet d’optimiser le temps de calcul. Par ailleurs, l’aspect du nuage échantillonné à 1 cm évolue de plus en plus finement avec le niveau d’octree, jusqu’à représenter les nervures de la roche et la rugosité de la porte à partir du niveau 10.

42

Figure 13 : Maillages du nuage de points de pas 1 cm avec des niveaux d’octree de 7 (à gauche) et 10 (à droite)

Plusieurs choses ont pu être déduites de cette étude. Tout d’abord, il y a une limite pour laquelle il ne sert plus à rien d’augmenter le niveau d’octree car il n’y a plus de gain en nombre de faces et cela augmente inutilement la durée et la mémoire nécessaire au traitement. Cette limite dépend de la densité du nuage de points et est située à un niveau de 10 pour les nuages étudiés. D’autre part, le niveau d’octree minimal ne doit, ici, pas être choisi en dessous de 8. Ce niveau correspond à la prise en compte de presque tous les points grâce à une taille de cellule d’octree de 5.4 cm et offre donc un résultat convaincant pour chaque nuage sans s’avérer trop simplifié. En effet, simplifier plus reviendrait à ne pas tenir compte de la qualité de l’échantillonnage effectué. Il a été choisi de mener une étude plus poussée pour chaque nuage de points. Pour cela, les niveaux d’octree 8 et 11 ont permis la création de deux maillages par nuage de points. Dans un premier temps, le niveau 8 a été choisi car il détermine le niveau le plus adéquat en termes d’esthétisme, de qualité du traitement et de poids de fichier. Dans un second temps, le niveau 11 représente pour chaque nuage la prise en compte sûre de tous les points. Les nuages sont désignés par le ou les pas d’échantillonnages choisis. Le format de maillage en sortie choisi est le .ply.

Nuage 1 (1 cm) 2 (2 – 4 cm) 3 (5 – 20 cm (1)) 4 (5 – 20 cm (2)) Octree 8 11 8 11 8 11 8 11 Nombre de faces 247 934 15 952 337 253 385 1 914 663 200 840 214 446 181 294 193 634 Poids du fichier 6.9 Mo 444.6 Mo 7.0 Mo 53.3 Mo 5.6 Mo 6.0 Mo 5.0 Mo 5.3 Mo Nuage 5 (10 – 30 cm) 7 (15 cm) 6 (10 – 40 cm) 8 (20 – 50 cm) Octree 8 11 8 11 8 11 8 11 Nombre de faces 59 770 56 626 56 852 56 866 53 480 52 192 14 294 14 318 Poids du fichier 1.7 Mo 1.6 Mo 1.6 Mo 1.6 Mo 1.5 Mo 1.5 Mo 0.4 Mo 0.4 Mo

Tableau 6 : Nombre de faces et poids de fichier des nuages de points en fonction du niveau d’octree choisi

On observe que pour un nombre de faces inférieur à 200 000, le niveau d’octree de 8 prend en compte tous les points pour créer le maillage. En effet, les nombres de faces sont équivalents pour les deux niveaux d’octree. Les légères différences de nombres de faces de ces nuages sont dues à la phase de nettoyage par « filter by value » appliquée séparément

43

sur ceux-ci. La réduction du poids de fichier est importante dans le cas des deux premiers nuages de points du fait de la forte réduction du nombre de faces. Il existe là aussi une corrélation entre poids et nombre d’entités du fichier, à l’image du nombre de points dans la partie échantillonnage (logique car le nombre de faces est déterminé par le nombre de points). Le calcul de ces nombres de faces et des poids de fichier permet de choisir un niveau d’octree de 8 comme référence pour toutes les analyses entre les différents maillages de moins de 250 000 faces Le niveau d’octree de 11 des nuages n°1 et n°2 est, lui, important pour les analyses car il conserve toutes leurs caractéristiques. Ce choix est fait pour ne pas réduire à néant le travail d’échantillonnage par une sélection d’octree trop faible qui agirait comme une seconde étape de sous-échantillonnage. De même, le nettoyage de certains maillages, comme le n°5, par utilisation de la densité comme « scalar field », se révèle plus simple avec un niveau d’octree de 11.