Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR



Documents pareils
LIDAR LAUSANNE Nouvelles données altimétriques sur l agglomération lausannoise par technologie laser aéroporté et ses produits dérivés

données en connaissance et en actions?

Extraction d informations stratégiques par Analyse en Composantes Principales

Franck VAUTIER, Jean-Pierre TOUMAZET, Erwan ROUSSEL, Marlène FAURE, Mohamed ABADI, Marta FLOREZ, Bertrand DOUSTEYSSIER

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Analyse Sémantique de Nuages de Points 3D et d Images dans les Milieux Urbains

Territoire3D. Descriptif de contenu. Institut Géographique National. Date du Document : Mars 2011

Introduction au Data-Mining

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Transmission d informations sur le réseau électrique

Extraction et reconstruction de bâtiments en 3D à partir de relevés lidar aéroportés

Introduction au maillage pour le calcul scientifique

Les algorithmes de base du graphisme

modélisation solide et dessin technique

L utilisation du lidar terrestre en foresterie. Richard Fournier Département de géomatique appliquée

ANALYSE CATIA V5. 14/02/2011 Daniel Geffroy IUT GMP Le Mans

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Exemple d application en CFD : Coefficient de traînée d un cylindre

Cours d algorithmique pour la classe de 2nde

COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL

MIS 102 Initiation à l Informatique

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

INTRODUCTION AUX TECHNOLOGIES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Principes généraux de la modélisation de la dispersion atmosphérique

Cours IV Mise en orbite

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

L apprentissage automatique

Application 1- VBA : Test de comportements d'investissements

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Algorithmique et Programmation, IMA

NOTE SUR LA MODELISATION DU RISQUE D INFLATION

Introduction au Data-Mining

Cours Informatique Master STEP

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Opérations de base sur ImageJ

Optimisation, traitement d image et éclipse de Soleil

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Sillage Météo. Notion de sillage

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

2.4 Représentation graphique, tableau de Karnaugh

PROJET DE DIPLÔME HACKING & DESIGN

Quelques éléments de compilation en C et makefiles

Compte-rendu Réunion générale. Grenoble, le 29 juin 2011 URBASIS

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Le calcul formel dans l enseignement des mathématiques

Algorithme. Table des matières

Définition de la dyspraxie

Big Data et Graphes : Quelques pistes de recherche

Projet SINF2275 «Data mining and decision making» Projet classification et credit scoring

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

RÉALISATION D UN SITE DE RENCONTRE

Nom : Groupe : Date : 1. Quels sont les deux types de dessins les plus utilisés en technologie?

Formula Negator, Outil de négation de formule.

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Travaux pratiques avec RapidMiner

Chapitre 7. Statistique des échantillons gaussiens. 7.1 Projection de vecteurs gaussiens

Contributions à l expérimentation sur les systèmes distribués de grande taille

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Formats 3D Critères d utilisation dans les échanges Frédéric CHAMBOLLE PSA Peugeot Citroën Direction des Systèmes d Information

swisstlm 3D Version 1.3 Publication 2015 Généralités sur swisstlm 3D

Introduction. e-communication et e-réputation

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TPs Architecture des ordinateurs DUT Informatique - M4104c SUJETS. R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr


HP Designjet 3D Guide d utilisation

chapitre 4 Nombres de Catalan

Big Data et Graphes : Quelques pistes de recherche

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Christophe CANDILLIER Cours de DataMining mars 2004 Page 1

Traitement bas-niveau

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Rappels sur les suites - Algorithme

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

INTRODUCTION AU DATA MINING

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Installation de SQL Server Reporting Services avec l intégration dans un site Windows SharePoint Services V3

Représentation d un entier en base b

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

TUTORIAL 1 ETUDE D UN MODELE SIMPLIFIE DE PORTIQUE PLAN ARTICULE

Priorités de calcul :

Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

Vu le dahir du 7 kaada 1371 (30 Juillet 1952) relatif à l urbanisme et, notamment, son article 18 ;

1. Structure d'un programme FORTRAN 95

Chauffer l eau avec le soleil Est-ce possible? Première étape :

ARCHEOVISION. Centre de Ressources Numériques 3D. UMR 5607 du CNRS. R. Vergnieux IR-CNRS

Cours 1 : Qu est-ce que la programmation?

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Comparer des surfaces suivant leur aire en utilisant leurs propriétés géométriques Découverte et manipulation

Objectifs. Clustering. Principe. Applications. Applications. Cartes de crédits. Remarques. Biologie, Génomique

I. Cas de l équiprobabilité

Introduire un nouveau type de maille ou un nouvel élément de référence

Analyse de la vidéo. Chapitre La modélisation pour le suivi d objet. 10 mars Chapitre La modélisation d objet 1 / 57

Chaînes de Markov au lycée

Transcription:

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR Mickaël Bergem 25 juin 2014 Maillages et applications 1

Table des matières Introduction 3 1 La modélisation numérique de milieux urbains 4 2 L algorithme de reconstruction 6 2.1 La méthode............................ 6 2.2 Acquisition du nuage de points................. 6 2.3 Échantillonnage.......................... 6 2.4 Matrice d élévation........................ 7 2.5 Conversion en Polyhedron_3D.................. 8 2.6 Simplification du maillage.................... 9 3 Implémentation et résultats 10 3.1 Gestion du projet......................... 10 3.2 Fonctionnement.......................... 10 3.3 Résultats.............................. 10 3.4 Performances........................... 12 2

Introduction Dans le cadre du cours de Maillages et Applications de l École des Ponts ParisTech, j ai choisi le projet modélisation de bâtiments en 3D sous forme d un maillage dense à partir d un nuage de points Lidar. J ai du développer un algorithme qui, à partir d un nuage de points Lidar, produit un maillage dense de l environnement urbain duquel le nuage est issu. Contrairement aux autres groupes, j ai travaillé seul (nous étions un nombre impair) sur ce projet orienté recherche, et j ai bénéficié des conseils de Florent Lafarge pour me guider sur la méthode à adopter. J ai utilisé les fonctions de traitements des maillages de la librairie CGAL, et développé un algorithme en C++. 3

1 La modélisation numérique de milieux urbains La modélisation numérique de milieux urbains correspond à la génération d une représentation virtuelle d un bâtiment ou d une ville entière, représentation qui peut intégrer de nombreux aspects comme la géométrie (forme des bâtiments), la sémantique (différencier un arbre d un trottoir et d un toit), l utilisation de textures pour améliorer le réalisme visuel du modèle. Figure 1 Exemple de LIDAR aéroporté Ce domaine a été appréhendé d un grand nombre d approches, d une part par les différents aspects évoqués ci-dessus, eux-mêmes déclinés sur un certains nombre de critères : quelle précision pour la reconstruction géométrique (à la rue près, au banc près, au buisson près?), quelle distinction sémantique (combien de classes différentes?), quelles hypothèses sont faites (les murs sont forcément verticaux, un arbre ne peut pas dépasser 10m de hauteur)? D autre part, les méthodes peuvent être automatisées ou comporter une partie de travail manuel, par exemple dans le choix de paramètres, ou dans la détection des erreurs. Certains travaux, comme ceux de Poullis & You [1], montrent la possibilité de reconstruire des villes entières à partir de nuages de points acquis par LIDAR aéroporté (Figure 2).

Figure 2 Reconstruction 3D de la ville de Baltimore

2 L algorithme de reconstruction 2.1 La méthode Pour rappel, l objectif de l algorithme est de produire un maillage dense à partir d un nuage de points LIDAR, fourni au format PLY. Le fonctionnement de l algorithme peut se décomposer en quatre phases distinctes : 1. Le chargement du nuage de point LIDAR en mémoire 2. L échantillonage dans le plan (X,Y) des points 3. La conversion en matrice d élévation 4. La simplification du maillage 2.2 Acquisition du nuage de points Le nuage de points est fourni dans un fichier PLY au format ASCII (il existe une version binaire, plus légère mais plus difficilement lisible), qui contient une série de lignes d en-têtes, puis le nuage à raison d un point par ligne, dont les trois coordonnes sont séparées par un espace. Ne trouvant pas de module existant pour charger ce nuage de point en mémoire (voire directement dans CGAL), j ai choisi d écrire mon propre module de lecture de fichier PLY. Celui-ci renvoie donc pour un chemin vers un fichier PLY, un Vector <Point> nuage ainsi que d autres informations relatives au nuage (taille, nombre de points). Figure 3 Le nuage de points ouvert avec Meshlab 2.3 Échantillonnage À partir du nuage de point fourni précédemment, nous allons chercher à calculer la matrice d élévation, qui en chaque couple de coordonnées (X,Y) associe l altitude mesurée. Cette matrice serait échantillonnée sur une grille

discrète de taille N*N. Les coordonnées seront donc à valeur dans 0,N-1. Le nuage initial étant à coordonnées réelles, il faut dans un premier temps aligner tous les points sur la grille (sur les noeuds de la grille, cf figure 2.3) Figure 4 Alignement des points dans le plan (X,Y), sur la grille Chaque point est donc translaté dans le plan (X,Y) vers le noeud le plus proche, tout en conservant sa coordonnée Z. On se retrouve à la fin de l échantillonage avec un nuage de point (toujours un Vector <Point> nuage non structuré) mais dont les points sont à coordonnées X et Y discrètes. 2.4 Matrice d élévation On va maintenant parcourir chaque point du nuage, et l ajouter sur une matrice grille, qui est donc de type Vector <Point> nuage : nous obtenons un ensemble structuré qui à chaque noeud de la matrice associe le(s) point(s) associé(s). Nous parcourons alors cette première matrice grille pour générer la matrice d élévation (qui à un noeud associe une unique élévation). L algorithme

suivant est utilisé : Data: Matrice grille Result: Matrice d élévation foreach noeud in matrice_grille do if nombre de points présents sur ce noeud > 0 then matrice_elevation[noeud]=moyenne_z(matrice_grille[noeud]); else if nombre de points présents sur les 4 noeuds voisins > 0 then matrice_elevation[noeud]=moyenne_z(matrice_grille[noeud]); else matrice_elevation[noeud]=altitude_minimale; end end end Algorithm 1: Calcul de la matrice d élévation à partir de la grille Figure 5 La matrice d élévation Nous obtenons donc une carte d élévation (discrète), ce qui est cohérent avec la notion de vue du ciel où tout le plan (X,Y) est visible et associé à une seule coordonnée Z. La figure 5 montre un exemple de carte d élévation. 2.5 Conversion en Polyhedron_3D Puisque nous allons par la suite utiliser des fonctions de CGAL, il faut convertir cette carte d élévation en Polyhedron_3D, qui est une structure

CGAL pour décrire des polyèdres tridimensionnels (comme son nom l indique). Pour réussir cette conversion, j ai du utiliser un incremental builder, et l adapter (non sans mal) à mes besoins pour qu il puisse lire la structure de données de la matrice d élévation. Le code est relativement complexe lorsque l on n a pas l habitude d utiliser CGAL, mais l explication du code en lui-même est hors-sujet dans ce rapport. 2.6 Simplification du maillage C est avec la fonction edge_collapse de CGAL que j ai pu réduire le nombre de triangles dans le maillage, en préservant la forme générale du maillage. Pour décrire rapidement le fonctionnement de cette fonction, elle remplace un edge par un vertex, en supprimant et recréant les edges adéquats, et diminuant ainsi le nombre d arêtes et de triangles. Cette fonction prend en paramètre un prédicat d arrêt (qui décidera lorsqu il faudra arrêter la simplification) et il faut donc décider d un nombre d arêtes minimum à conserver.

3 Implémentation et résultats 3.1 Gestion du projet Pour travailler sur ce projet, j ai choisi de créer un dépôt sur le gestionnaire de code source GitHub, disponible à l adresse https://github.com/ MickaelBergem/LidarMaillage, publiquement. La gestion des tickets m a permis d ordonner et de prioriser les différentes tâches, et le versionnement du code m a permis de retrouver beaucoup plus rapidement les régressions. 3.2 Fonctionnement L algorithme se présente sous la forme d un petit exécutable en ligne de commande, programmé en C++, qui prend en paramètres : le chemin vers le fichier PLY à lire la taille de la grille (en nombre de noeuds sur un côté) le nombre limite d arêtes à conserver Il génère deux fichiers pre-export.off (avant simplification) et final-export.off (après simplification) qui peuvent être visualisés par Meshlab. Le lecteur est invité à lire le code source du programme (fonction main notamment) pour obtenir le détail de l implémentation, qui est relativement compréhensible grâce aux commentaires. 3.3 Résultats En faisant varier le nombre limite d arrêtes à laisser sur le maillage (et donc la simplification du maillage), on obtient le résultat suivant :

Figure 6 Différents seuils de réduction La question posée par la figure 6 est la suivante : comment déterminer le nombre d arêtes limite? Dans notre exemple, on peut s apercevoir (de manière empirique et visuelle) que la limite se situe entre 10000 et 1000 arrêtes, pour un modèle original à 86000 arêtes. Il faudrait alors introduire, avec plus de temps, un indicateur basé sur le rapport nombre de triangles / erreur de modélisation. On peut également obtenir des résultats similaires avec d autres nuages de points, comme le montrent les figures 7 8 et 9. Figure 7 Modèle B5 avec 4000 arêtes

Figure 8 Modèle B8 avec 4000 arêtes 3.4 Performances Figure 9 Modèle B9 avec 2000 arêtes Nous pouvons également constater sans surprise que : diminuer le nombre limite d arêtes demande plus de temps (il faut passer plus de temps à simplifier le maillage) utiliser une grille deux fois plus dense demande beaucoup plus de temps (il y a quatre fois plus de noeud, donc six fois plus d arêtes) le nombre initial de points dans le maillage n est pas très significatif par rapport aux autres facteurs

Points dans le nuage Taille de la grille Nombre cible d arêtes Temps 86021 170*170 10000 16s 86021 170*170 40000 7.9s 58499 120*120 10000 6.4s 58499 240*240 10000 38s 22300 149*149 10000 13s

Conclusion et perspectives Pour finir, j ai donc réalisé un programme simple et rapide, qui transforme des nuages non structurés stockés dans des fichiers PLY en des maillages denses au format OFF, en permettant de jouer sur la qualité du maillage et sa densité. La taille de la grille est à définir manuellement, bien qu une alerte s affiche en cas de sur-échantillonnage, de même que le nombre d arêtes limite. Le programme étant simple et sa taille étant limitée par le fait que j étais seul sur ce projet, on pourrait imaginer un grand nombre d améliorations : nettoyage automatique des outliers, par exemple en supprimant les points isolés (ceux dont les k plus proches voisins n appartiennent pas à une sphère de taille fixée), directement dans le nuage initial lisser les surfaces après maillage, pour éviter les effets escalier sur des façades censées être lisses ajouter une fonction de classification des objets : détection des plans, classification basée sur l altitude, groupements, angle entre les plans... ou encore une classification sémantique basée sur une grammaire de construction l ajout de textures à partir de photos aériennes ou au sol la superposition de plusieurs nuages pour permettre la reconstruction de villes entières Ce projet a été pour moi l occasion de découvrir les problématiques et les applications des méthodes de maillages de surfaces, et de prendre en main la librairie CGAL. Références [1] Charalambos Poullis, and Suya You, Automatic reconstruction of cities from remote sensor data. CVPR, 2009.