1 Introduction
En préparation d'un futur article sur le poids des statues en pierre, nous revenons aujourd'hui sur l'utilisation de la photogrammétrie pour créer des maillages. En effet une fois le maillage d'une statue créé, il est possible d'obtenir rapidement son volume avec Meshlab. Nous allons montrer ci-dessous comment obtenir cette valeur, en partant de photos. Nous profiterons de cet exemple pour donner quelques illustrations de l'effet des paramètres des filtres qui permettent l'obtention du maillage. Notre objectif n'est pas de détailler le fonctionnement des algorithmes en jeu, mais simplement de partager quelques observations simples sur un exemple, pour aider au choix de ces paramètres pour les personnes qui ne sont pas familières avec ces algorithmes. La statue prise considérée ici est l'Ecoute de Henri de Miller (1986), située au Jardin des Halles à Paris. Cette statue serait en grès de Bourgogne, et pèserait entre 50 et 70 tonnes selon les sources (insecula.com, paris.fr). Nous utilisons dans la suite VisualSFM pour la création du nuage de point et Meshlab pour la création du maillage et le calcul du volume (voir notre article d'introduction à la photogrammétrie avec ces logiciels).2 Préparation des photos
Les photos utilisées dans cet exemple sont issues du projet IS-3D du CMP. Les photos d'origine mesurent 2816x2112 pixels de côtés. Nous avons redimensionné ces photos et travaillé à partir de photos mesurant 800x600 et 1600x1200 pixels, afin d'accélérer les temps de calcul.3 Nuage de points
La procédure pour la création du nuage de point à partir de VisualSFM est la suivante :- Ouverture des photos 800x600 et recherche des feature matches avec SfM / Pairwise Matching / Compute Missing Match
- Enregistrement des couples de photos trouvées (SfM / Pairwise Matching / Export Feature Matches) pour accélérer la recherche des couples de photos pour le cas avec photos 1600x1200 traité ensuite. Le fichier obtenu est un fichier texte.
- Modifier ce fichier texte pour ne conserver à chaque ligne que les couples de photos (noms avec chemins d'accès, séparés par un espace). Nous nous servirons de ce fichier un peu plus tard.
- VisualSFM : SfM / Reconstruct 3D
- VisualSFM : SfM / Run CMVS/PMVS
- Relancer visualSFM, en ouvrant cette fois-ci les photos 1600x1200, et appliquer SfM / Pairwise Matching / Compute Specified Match en choisissant le fichier texte contenant les couples de photos.
- VisualSFM : SfM / Reconstruct 3D
- VisualSFM : SfM / Run CMVS/PMVS
4 Création du maillage
Dans la suite, nous réalisons toujours la suite d'opérations suivante sur le nuage de points obtenus avec les photos 1600x1200 :- Meshlab : Sampling / Poisson-disk Sampling Base mesh subsampling pour obtenir un sous-échantillonage de $X$ points.
- Meshlab : Point Set / Compute Normals for Point Set, en laissant la case Flip normals w.r.t. viewpoint décochée
- Meshlab : Filters /Remeshing, simplification and reconstruction / Surface Reconstruction : Poisson avec Octree Depth égal à $OD$, Solver Divide égal à 6, et Samples per node égal à $SN$
- cela améliore la précision du maillage dans les zones où il existe suffisamment de points pour définir des détails. Le nez et les yeux par exemple sont mieux définis.
- cela dégrade le rendu des zones pour lesquelles il n'y a pas de points dans le nuage de points (appui sur le sol et sommet de la tête de la statue, partie cachée par la main : zones qui ne sont pas ou mal visibles sur les photos).
5 Calcul du volume
Le modèle suivant a été obtenu à partir d'un sous-échantillonage de $X$=30000 points et $SN$=5 . Le maillage a été raffiné avant le transfert des propriétés de couleur du nuage de point de départ sur le maillage pour obtenir une texture la plus proche possible de la réalité (mais sans aucun intérêt pour le calcul qui va suivre). Les zones blanches correspondent à des zones où nous n'avons pas de point de départ, et où l'algorithme de reconstruction de poisson a "inventé" une surface, qui semble proche de la surface réelle. Après avoir orienté1 correctement la tête pour que l'axe z corresponde à la verticale, et que l'axe x soit placé dans l'axe du plus grand côté, nous avons mis à l'échelle le modèle de manière à ce que la tête face 3m00 de haut2. Pour cette mise à l'échelle, la statue fait 4m87 de long et 3m30 de large, pour un volume de 22,2m3. Pour trouver ces informations, il suffit d'appliquer le filtre de meshlab Quality mesures and computations / Compute geometric mesures au maillage. Si on avait simplement appliqué la formule du volume d'un ellipsoïde - $\frac{4}{3}\pi{}abc$ - on aurait trouvé beaucoup plus rapidement l'approximation suivante : 25m3. Le grès que l'on peut trouver en Bourgogne pèse entre 2049kg/m3 (grès de Senargent) et 2704 kg/m3 (grès de Treigny), et on peut donc estimer le poids de la tête seule de la statue (sans la main) entre 45 et 60 tonnes. Il est à noter que ce calcul ne prend pas en compte la structure en béton armé interne qui uni les différents blocs, cependant le poids volumique du béton armé étant de 2500 kg/m3 les résultats obtenus seraient proches.6 Conclusion
La statue que nous avons pris pour exemple ici a une géométrie relativement régulière, ce qui simplifie grandement l'obtention d'un maillage acceptable pour le calcul du volume. Pour des situations plus complexes, l'utilisation basique de VisualSFM que nous proposons peu ne pas suffire. Il existe d'autres logiciels de photogrammétrie pour obtenir des nuages de points, et en particulier un logiciel français, MicMac (version pour windows). Ce dernier permettrait probablement d'obtenir des nuages de points plus denses, cependant son utilisation est beaucoup plus complexe que celle que nous faisons ici avec visualSFM. Nous reviendrons plus longuement sur le sujet du calcul du poids des statues dans un prochain article.Article mis en ligne le : 15/02/2013.