Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome Mémoire Kévin Rousseau Maîtrise en génie électrique - avec mémoire Maître ès sciences (M. Sc.) Québec, Canada © Kévin Rousseau, 2021
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d’un véhicule semi-autonome Mémoire Kevin Rousseau Maîtrise en génie électrique Sous la direction de : Denis Laurendeau, directeur de recherche Sylvie Daniel, codirectrice de recherche
Résumé Dans ce mémoire nous présentons une méthode pour référencer deux nuages de points denses. Cette méthode commence par l'analyse d'un nuage de points de grand volume, composé d’environ 2 millions de points recueillis par un LiDAR (Light Detection And Ranging) monté sur une voiture, afin de le segmenter en surfaces représentatives pertinentes en termes de géométrie et de localisation. Ensuite, nous présentons la construction de descripteurs pour chacun des segments trouvés afin d’obtenir des caractéristiques significatives des segments. Ces descripteurs sont le FPFH (Fast Point Feature Histograms) et l’histogramme des orientations de surface. Pour finir, les descripteurs recueillis sur deux nuages de points différents du même environnement extérieur sont comparés pour repérer les segments similaires et ainsi permettre la localisation du véhicule par rapport à l'environnement extérieur. iii
Abstract In this work we present a method to reference two dense point clouds. We begin by analyzing a point cloud of a large number of points, approximately 2 million points collected by a LiDAR mounted on a car, in order to segment this point cloud into surfaces that feature representative regions of the point cloud that are interesting in terms of geometry. Then the construction of descriptors for each segment found is made to identify significant features. These descriptors are the FPFH (Fast Point Feature Histograms) and the surface orientation histogram. Finally, the descriptors collected on two different point clouds of the same outdoor environment are compared to identify similar segments and thus to allow the location of the vehicle in relation to the outdoor environment. iv
Table des matières Résumé .............................................................................................................................................................. iii Abstract............................................................................................................................................................... iv Table des matières ..............................................................................................................................................v Liste des figures, tableaux, illustrations .............................................................................................................. vi Liste des abréviations, sigles et acronymes...................................................................................................... viii Introduction ......................................................................................................................................................... 1 Chapitre 1 : Revue de la littérature ..................................................................................................................... 4 Chapitre 2 : Segmentation du nuage de points ................................................................................................... 7 2.1 Champ de vecteurs .................................................................................................................................. 7 2.2 Variation de surface.................................................................................................................................. 9 2.3 Données récoltées sur les scènes urbaines d'intérêt ............................................................................. 10 2.4 Analyse et filtrage du champ de vecteurs ............................................................................................... 13 Chapitre 3 : Descripteurs des régions segmentées .......................................................................................... 18 3.1 Premier descripteur: Histogramme des normales .................................................................................. 18 3.2 Deuxième descripteur : Fast Point Feature Histograms ......................................................................... 20 Chapitre 4 : Résultats et discussion.................................................................................................................. 24 Conclusion ........................................................................................................................................................ 34 Bibliographie ..................................................................................................................................................... 36 v
Liste des figures, tableaux, illustrations Figure 1 : Cette figure est tirée de l’ouvrage de Tubic [1]. 8 Figure 2 : Représentation d’un voxel en 2D et de la normale 3 avec le plan tangent approximé de la surface qui le traverse. 9 Figure 3: Nuage de points d’une rue résidentielle. 12 Figure 4: Nuage de points de façades de grands bâtiments. 12 Figure 5 : Schéma de l’algorithme de segmentation d’un champ de voxels. 14 Figure 6 : Image d’un icosaèdre, de sa subdivision et de sa projection sur une sphère selon Wikipedia [8]. 19 Figure 7 : Représentation des paramètres , ϕ et . 21 Figure 8 : Image tirée de Rusu et al. [2] figure 5. correspond à et correspond à . 22 Figure 9 : Résultats de l’algorithme de segmentation sur les données du nuage de points de la figure 3. 25 Figure 10 : Agrandissement du point de vue de la rue de la figure.9. 25 Figure 11 :Superposition de segments trouvés sur des nuages de points différents acquis sur le site montré à la figure 3. 27 Figure 12 : Rapprochement de segments trouvés sur des nuages de points différents acquis sur le site montré à la figure 3. 28 Figure 13: Superposition de segments trouvés sur des nuages de points différents acquis sur le site montré à la figure 4. 28 Figure 14: Représentation de quelques histogrammes des orientations en graphique de la section 3.1. 29 Figure 15: Nuage de points du segment de rue non résidentielle produit par le LiDAR mobile à l’aller. 31 Figure 16: Nuage de points du segment de rue non résidentielle produit par le LiDAR mobile au retour du véhicule. 31 vi
Figure 17: Résultats de l’algorithme de segmentation sur les données du nuage de points de la figure 15 et figure 16. 32 vii
Liste des abréviations, sigles et acronymes FPFH Fast Point Feature Histogram SPF Simplified Point Feature Matrice de covariance Point dans un voxel Centroïde des points dans le voxel Valeur propre Vecteur propre σ Variation de surface Voxel de la liste Voxel voisin Point observé Point voisin viii
Introduction Dans ce mémoire, nous proposons de construire la représentation implicite d’un segment de rue sur lequel un nuage de points a été acquis, afin d’en extraire des surfaces pertinentes. Celles-ci seront utilisées pour construire des descripteurs lors d’une première acquisition de référence et pourraient être reconnues dans une nouvelle acquisition des lieux permettant alors de se localiser sur ce segment de rue. Ce travail est réalisé dans le contexte du projet BRiTE (Bus Rapide Transit systEm) pour le pilotage semi-automatique de véhicules de transport collectif. Plus spécifiquement, il vise à donner une alternative au système de positionnement GNSS (Global Navigation Satellite System), dans des endroits où cette technologie présente certaines limites comme dans les canyons urbains des grandes villes ou le signal satellitaire est bloqué ou dévié par la présence de hauts édifices en utilisant des éléments géométriques qui entourent le véhicule. Bien que cette localisation soit moins précise que la localisation par GNSS, il n’est pas toujours possible d’avoir un bon signal GNSS partout dans les grands centres. Ces pertes ou déviation de signal GNSS sont provoquées par la présence de très grands immeubles, des ponts, des viaducs et des arbres. La localisation au moyen de nuages de points LiDAR peut alors prendre le relais. Ce travail de recherche vise à extraire des informations caractéristiques importantes du nuage de points de la scène afin d’en faire la reconnaissance tout en gardant un temps de calcul le plus proche du temps réel pour que le système soit utilisé lors du pilotage d’un véhicule de transport collectif. Le nuage de points est acquis avec un LiDAR (Light Detection And Ranging) monté sur une voiture avec un système de navigation composé d’un récepteur GNSS qui fournit la position et d’une unité de mesure inertielle (Inertial Measurment Unit - IMU) qui fournit l’orientation du véhicule et celui du scanneur LiDAR suite à un calibrage rigoureux des bras de leviers (leverarms) et des angles de visée (boresight angles) du scanneur LiDAR par rapport au système de navigation. Nous utilisons les travaux réalisés par Dragan Tubic [1] sur la représentation de surface avec des voxels en 3D appelée champ 1
vectoriel pour construire la représentation implicite du nuage de points. Cette représentation implicite du nuage de points nous permet de traiter un très grand nombre de points sans exiger une quantité de mémoire trop grande pour l’application. Puisque nous faisons une collecte de plusieurs millions de points, cette représentation permet de filtrer les données pour réduire le bruit et offre la possibilité d’avoir accès facilement aux propriétés relatives aux surfaces telles que la normale. Nous utiliserons également les travaux de Rusu [2] sur les « Fast Point Feature Histograms » (FPFH) pour la mise en registre 3D afin de décrire les segments identifiés dans notre nuage de points. Nous utilisons les descripteurs pour construire une banque de données qui servira à l’identification et à la localisation des véhicules à partir d’un nouveau scan d’une rue. Ce type de descripteur, selon Rusu [2], peut être calculé en temps réel et offre une caractéristique qui décrit la géométrie locale autour d’un point en 3D. Ainsi, il nous sera possible de localiser les segments acquis par un LiDAR monté sur un véhicule en mouvement dans une ville. Le mémoire est structuré de la manière suivante. Le chapitre 1 présente une revue des différents travaux proposés dans la littérature en lien avec cette recherche. Le chapitre 2 aborde la segmentation des nuages de points, notamment du champ vectoriel qui est la représentation implicite sur laquelle reposent nos travaux. Par la suite, le chapitre 3 décrit la méthode mise en œuvre pour élaborer les deux descripteurs utilisés pour la reconnaissance, soit un histogramme d’orientation des normales et le descripteur FPFH. La particularité de notre approche par rapport aux autres exploitant des descripteurs est qu’elle se base sur le calcul du champ vectoriel au lieu d’un traitement sur tous les points du nuage de points. Finalement, le chapitre 4 propose une présentation et une discussion des résultats obtenus, une conclusion de ce projet de recherche et des recommandations de travaux futurs viendront conclure ce mémoire. La principale contribution de ce projet de recherche est d’adapter un descripteur local, qui a prouvé son efficacité dans la classification d’objets avec un SVM (Support Vector Machine) pour caractériser des objets invariants d’une route 2
pour en faire la reconnaissance. Nous voulons aussi conserver un temps de calcul faible et une consommation de mémoire basse afin d’incorporer l’algorithme à un véhicule pour le rendre semi-autonome. 3
Chapitre 1 : Revue de la littérature Au cours des dernières années, nous remarquons un intérêt grandissant dans le domaine de la collecte d’informations 3D, de la compréhension et de la reconnaissance d’objets 3D. Ces informations proviennent d’images prises par des caméras ou encore des nuages des points acquis par des scanneurs LiDAR, lesquelles sont ensuite traitées par un ordinateur. Il est donc possible d’analyser notre environnement au moyen de logiciels spécialisés permettant de traiter cette grande quantité d’informations et de rendre autonome ou semi-autonome les plateformes qui transportent ces capteurs. Par exemple, le développement d’un véhicule sans conducteur n’est maintenant plus une idée farfelue. L’utilisation d’un système de télémétrie mobile composé d’un système de navigation GNSS/IMU, de scanneurs LiDAR et de caméras installés sur un véhicule permet la détection et la géolocalisation des objets se trouvant sur la route de manière à cartographier l’environnement qui entoure le véhicule. Les présentes recherches sur la localisation à partir de nuages de points se tournent souvent vers l'intelligence artificielle pour identifier des surfaces ou des objets dans ces nuages de points. L'intelligence artificielle exploite des images ou des nuages de points et des réseaux de neurones profonds pour lesquels des étiquettes sont disponibles pour chacun des points pour apprendre à identifier les objets de la scène. Ainsi, les réseaux construisent des marqueurs pour reconnaître des lieux. D’autres approches utilisent une représentation des lieux au moyen de systèmes comme ORB-SLAM [3] qui exploite des images de la scène recueillies par une caméra afin de construire une carte des lieux. Dans ce travail, nous proposons une approche qui permettra à un véhicule de se localiser de manière similaire à ORB-SLAM ou à un réseau de neurones profond en utilisant les données acquises par un scanneur LiDAR. Lehtomäki et al. [11] présente une comparaison de trois techniques de représentation de caractéristiques appliquées sur des nuages de points segmentés pour la classification d’objets dans un environnement rural. Ces techniques sont le descripteur spin images [12] [13] [16], le PFH [12] [14] (Point Feature Histogram 4
aussi appelés histogramme de descripteurs locaux) et le descripteur global [13],[17]. Ces trois types de descripteurs sont utilisés pour entraîner un module d'intelligence artificielle (IA) afin de reconnaître et de classer différents objets présents dans le voisinage de la route tels que les arbres, les lampadaires, les feux de signalisation, les voitures et autres catégories d’objets. Ce travail de calcul des descripteurs utilise d'abord une structure volumétrique composée de voxels afin de pouvoir filtrer le nuage de points. Grâce au filtrage, il est possible de retirer les zones qui ont une densité de points trop faible soit de 50 points au moins dans un rayon de 2 m et ainsi que des points situés à plus de 20 m de la trajectoire du véhicule. Par la suite, les valeurs propres de la matrice de covariance des points dans les voxels sont calculées afin de déterminer si la structure de la répartition des points dans les voxels est plane, linéaire ou volumétrique. Cela permet également d’estimer la normale à la surface dans chaque voxel afin de retirer les points des surfaces tels que les bâtiments et la route. Pour trouver ces segments, la normale à la surface des voxels est comparée à celle de la surface locale avec un seuil de 5° et l’on vérifie si le centre de masse des points dans le voxel est assez proche (5 cm) de la surface locale. Puis, les segments trouvés qui ont une normale près de la verticale sont considérés comme des segments de route et ceux avec une normale près de l’horizontale sont considérés comme des façades d'édifices. Une approche supplémentaire basée sur les points restants du nuage de points a été utilisée sur les façades de bâtiments afin de conserver les surfaces qui ne sont pas occultées par des objets de la scène. À l’aide des informations contenues dans les voxels, les trois types de descripteurs sont construits afin d’entraîner un classificateur de type SVM (Support Vector Machine) [15]. Les résultats obtenus par le classificateur SVM pour l’identification des différents objets montrent que le descripteur local (i.e. PFH) obtient le meilleur résultat avec 84.5% lorsqu’il est employé seul comparativement aux spin images avec 77.6% et 78.3% pour le descripteur global. La combinaison du descripteur global et du descripteur local fournit le meilleur résultat de classement avec 87.9%. 5
L’article de Han et al. [18], présente trois grandes catégories de descripteurs 3D. La première catégorie porte sur les descripteurs locaux. Ces descripteurs ont été développés pour extraire des informations locales sur la géométrie et les caractéristiques des points. Ils sont utilisés le plus souvent dans les applications de reconnaissance et de catégorisation d’objets. Dans cette catégorie de descripteurs, ceux qui obtiennent les plus hauts taux de reconnaissance sont : le PFHColor (Point Feature Histogram Color), le PFH (Point Feature Histogram), le FPFH (Fast Point Feature Histogram) et le SHOT (Signature of Histogram of Orientation). La deuxième catégorie porte sur les descripteurs globaux. Ces descripteurs encodent les informations géométriques de tout le nuage de points. Ils sont souvent utilisés pour la reconnaissance d’objets 3D, la catégorisation géométrique et la récupération de formes. Les descripteurs globaux qui ont le meilleur taux de reconnaissance sont: le ESF (Ensemble of Shape Functions), le VFH (Viewpoint Feature Histogram), et le OUR-CVFH (Oriented, Unique and Repeatable Clustered Viewpoint Feature Histogram). La troisième catégorie présentée dans l’article concerne les descripteurs hybrides. Ils résultent de la composition d’un descripteur local et d’un descripteur global afin de combiner les avantages des deux catégories. Un exemple de ce dernier est la combinaison de FPFH et de VFH. Après l’étude de tous ces articles, la version modifiée du PFH, le FPFH, semble être le descripteur qui présente le meilleur potentiel de succès pour notre projet. Il a un bon taux de reconnaissance, un peu plus faible que le PFH, mais avec un temps de calcul inférieur avec une complexité linéaire. Ces informations nous permettent de formuler l’hypothèse suivante : il est possible d’appliquer le descripteur hybride FPFH pour effectuer la reconnaissance complète d’un segment de rue à partir d’un nuage de points acquis par le scanneur LiDAR mobile. Les prochains chapitres se consacrent à la vérification de cette hypothèse. 6
Chapitre 2 : Segmentation du nuage de points 2.1 Champ de vecteurs Pour débuter, nous présentons une brève description d’un champ de vecteur, appelé également champ vectoriel, proposé dans la thèse de Tubic [1]. Ce champ vectoriel sera utilisé pour traiter le nuage de points, soit entre 1 et 4 millions de points, récoltés par le scanneur LiDAR afin d’obtenir les informations nécessaires pour la fabrication de descripteurs. De plus, cette technique nous permet de construire une représentation implicite des surfaces pour générer une visualisation de la scène. Les représentations explicites donnent directement une triangulation des surfaces de la scène. La triangulation de Delaunay [6] seule ou combinée au diagramme de Voronoï traite un nuage de points afin d'obtenir un maillage composé de triangles. Une autre technique est la reconstruction de surface de Poisson [7] qui tente de représenter la surface à partir de fonctions de base en considérant tous les points (et la normale à la surface de ces points) à la fois. Une représentation dite implicite est une représentation des surfaces qui ne donne pas directement une triangulation c’est-à-dire un maillage (mesh en anglais). L’utilisation d’une autre technique telle que marching cubes [4] doit être exploitée afin d’extraire une triangulation à partir de la représentation implicite. Parmi les techniques produisant une représentation implicite, nous pouvons citer le champ de distances [5] et le champ de vecteurs [1]. Dans ce travail, nous exploitons le champ de vecteurs pour représenter les surfaces en plus d’obtenir les informations importantes pour construire nos descripteurs. Ce choix est basé sur les informations que le champ de vecteurs contient, notamment la normale à la surface. De plus, le champ de vecteurs peut être construit et mis à jour en temps réel. Nous pourrions également obtenir un maillage à partir du champ de vecteurs. Cependant, cette technique n’est pas exposée dans ce mémoire parce qu’elle est utile seulement pour la visualisation des résultats et non pour le traitement des données. 7
a) b) c) Figure 1 : Cette figure est tirée de la thèse de Tubic [1]. a) L’ensemble des points de l’espace 3D (les sphères vertes) est contenu dans une région définie par la boîte bleue. b) La boîte bleue est divisée en plus petites régions de tailles égales appelées voxels. Chaque voxel a son centre représenté par une sphère rouge. c) Les centres des voxels forment une grille. Tous les centres ont la même distance avec leurs voisins les plus proches. Comme le montre la figure 1b), le champ de vecteurs est une structure volumétrique de boîtes de mêmes dimensions appelées voxels. Chaque voxel contient des informations telles que le centre du cube en coordonnées spatiales, le nombre de points qu’il contient, la matrice de covariance des points et le vecteur normal qui pointe vers la surface qui passe dans ce voxel. Les informations importantes dont nous avons besoin sont dans la matrice de covariance de chacun des voxels. Cette matrice est calculée avec l’équation (1) (1) où N est le nombre de points dans un voxel, est un point dans le voxel et est le centroïde des points dans le voxel. Nous devrons aussi calculer les valeurs propres 1 > 2 > 3 et les vecteurs propres de pour nos futurs calculs sur la planarité des points sur la surface dans un voxel et déterminer l’orientation de la 8
normale à la surface. Dans chacun des voxels, l’hypothèse est que la surface est approximée par un plan. Comme illustré à la figure 2, le vecteur 3 , le vecteur propre de correspondant à 3 est la normale à la surface du plan tangent contenu dans le voxel. Figure 2 : Représentation d’un voxel en 2D et de la normale 3 avec le plan tangent approximé de la surface qui le traverse. 2.2 Variation de surface L’équation (1) permet d’ajouter facilement des points dans chacun des voxels et de mettre à jour dynamiquement la matrice de covariance sans garder en mémoire les points utilisés, ce qui représente une économie de mémoire importante. Pour chaque voxel, nous conservons en mémoire la matrice de covariance, ses valeurs propres et la distance « d » (voir figure 2) qui représente la distance entre le plan tangent et le centre du voxel. Les vecteurs propres nous permettent aussi de mesurer la variation de surface à l'intérieur du voxel. Cette quantité, exprimée dans l’équation (2), est obtenue en prenant la plus petite valeur propre divisée par la somme des trois valeurs propres. (2) 9
Dans l'équation (2) de la variation de surface , ( = 1,2,3) sont les valeurs propres de la matrice de covariance du voxel. La valeur de la variation de surface est bornée entre 0 et 0,33. Une valeur proche de 0,33 signifie que les points à l'intérieur du voxel sont distribués de façon aléatoire. Une valeur qui est proche de 0 signifie que les points reposent sur un plan dans le voxel. Ainsi, chaque voxel conserve les informations du plan qui passe à travers le voxel. Il est alors facile de discriminer les voxels peu intéressants. Ce qui permet de réduire encore plus la quantité d’informations à traiter dans les phases suivantes. Les voxels peu intéressants sont par exemple ceux qui contiennent peu de points ou ceux dans lesquels les points sont dispersés aléatoirement (c.-à-d. → 0.33). 2.3 Données récoltées sur les scènes urbaines d'intérêt Avec la construction du champ vectoriel à partir du nuage de points, nous obtenons un espace composé de cubes contenant de l’information sur les surfaces qui passent dans chacun d’eux et provenant du nuage de points. Les informations récoltées dans le nuage de points sont les positions XYZ des points. Les données à notre disposition contiennent aussi les informations sur l’intensité de chacun des points, mais nous n’utilisons pas cette information dans ce travail puisque les descripteurs utilisés dans le chapitre 3 ne sont pas sensible à l’intensité. La figure 3 et la figure 4 montrent des nuages de points que nous avons utilisés dans nos travaux. Nous remercions l’équipe du professeur Christian Larouche du Laboratoire de métrologie du Département des sciences géomatiques de l’Université Laval pour avoir procédé à l’acquisition des données utilisées dans ce mémoire au moyen du système LiDAR mobile. Du levé de plusieurs kilomètres réalisé sur le boulevard René-Lévesque entre l’Université Laval et la Colline parlementaire, nous avons retenu des segments de 100 mètres de long contenant entre 1 et 3 millions de points (figure 3 et figure 4). Les nuages de points recueillis par ce système LiDAR mobile monté et rigoureusement calibré sur une voiture sont géoréférencés. Les objets apparaissant sur les nuages de points conservent leur proportion et leur orientation, comme nous pouvons l’observer sur les figures 3 et 4. Des jeux de données de la même scène ont été acquis dans des conditions 10
différentes telles que l’heure de la journée, la position et la direction de la voiture sur la route. Ces acquisitions supplémentaires seront utiles pour la validation et la localisation des descripteurs trouvés par notre algorithme sur le premier jeu de données. La figure 3 représente une rue dans un quartier résidentiel. La figure 4 représente une rue avec des façades de grands bâtiments. Les tests de notre algorithme sont effectués en majorité sur les points de la figure 3. Nous avons choisi ce jeu de données car il représente un environnement qui est plus complexe que celui de la figure 4 où les bâtiments sont de grande taille. Il est plus facile de détecter une grande surface qui a peu d’occlusions causées par l’environnement comme les arbres ou les véhicules qui circulent dans la rue. Les maisons montrent des petites façades et des toits qui ont des formes plus complexes mais qui sont importants pour la localisation et la reconnaissance d’un lieu car ces composantes géométriques contiennent de l’information pertinente pour la localisation. Compte tenu des objectifs de cette recherche, il est nécessaire que la résolution et la densité de points du nuage soient suffisantes pour recueillir assez d’information sur l'environnement. Les paramètres du champ vectoriel comme, notamment, la taille des voxels doivent être déterminés de manière à mettre en évidence les éléments importants (segments) de la scène de sorte à en extraire des descripteurs stables et discriminants. Le nuage de points contient aussi une section où aucune structure géométrique pertinente (maison, édifice, etc.) n’est présente. Cette section sera utilisée pour vérifier que l’approche proposée est en mesure de bien rejeter les zones contenant peu d’information utile pour la localisation en ne produisant pas de descripteurs dans celles-ci. 11
Figure 3 : Nuage de points d’une rue résidentielle. Figure 4 : Nuage de points de façades de grands bâtiments. 12
2.4 Analyse et filtrage du champ de vecteurs La première étape de l’approche de segmentation consiste à calculer le champ vectoriel et les valeurs de variation de surface associées dans chaque voxel du champ. Ensuite, les voxels sont filtrés afin d’éliminer ceux qui ne contiennent pas d’information assez riche pour la détermination de segments et de descripteurs aux étapes de traitement suivantes. Les premiers voxels éliminés sont ceux qui ont une grande variation de surface soit une valeur supérieure à 0,15 (voir section 2.2). L'étape suivante consiste à segmenter les voxels du champ vectoriel résultant du filtrage afin de repérer les sections du nuage de points invariantes dans le temps et assez grandes pour que les occlusions aient le moins d’impact possible. En disposant de tels segments, il sera possible de construire une bonne représentation des objets importants de la scène et, par conséquent, de construire des descripteurs qui seront adaptés à la localisation dans l’environnement représenté par le nuage de points. La figure 5 présente le schéma de l’algorithme de segmentation du champ vectoriel dans l’espace 3D. Le processus fonctionne de manière similaire à un algorithme de croissance de régions. 13
Non Figure 5 : Schéma de l’algorithme de segmentation d’un champ de voxels. Dans ce qui suit, les explications proposées décrivent les étapes d’une itération du processus. Pour commencer, tous les voxels du champ de vecteurs reçoivent l’indice « non classé ». Ensuite, un voxel est choisi et nous vérifions que ce dernier est un voxel non classé. Le choix du voxel est fait par un balayage des coordonnées des centres des voxels. Chaque voxel sera parcouru et analysé. Le voxel doit être significatif pour être retenu pour les calculs suivants. À cet effet, il est vérifié que le nombre de points qu’il contient est plus grand qu’un certain seuil. Ce seuil varie entre 50 et 100 points par voxel tout dépendant de la densité de points du nuage de points LiDAR. Il faut un minimum de 50 points dans un voxel afin que la matrice de covariance soit calculée à partir d’un nombre suffisant de points pour que la surface la traversant soit bien représentée (par un plan par exemple). Ce seuil permet de minimiser le bruit d’acquisition sur les points 14
générés par le scanneur. Ainsi, les voxels retenus auront suffisamment de points et un bruit minimum pour que la surface soit représentative. Si la densité de points le permet, le seuil peut être augmenté jusqu’à 100 points par voxel. Un voxel qui ne contient pas assez de points signifie que les informations de ce dernier pourraient être affectées par un objet temporaire dans la scène comme, par exemple, une voiture qui passe dans le champ de vue du scanneur LiDAR ou une section de la scène qui est éloignée du LiDAR ou partiellement dissimulée derrière un objet de la scène. Cette vérification du nombre de points dans les voxels vise à ne traiter que les voxels pertinents, c’est-à-dire ceux contenant un nombre de points suffisant. Par la suite, nous vérifions si le voxel appartient à un segment. Chaque voxel est étiqueté par l’indice du segment auquel il appartient. Si le voxel détient l’indice non classé, soit dans notre cas 0, l’algorithme peut continuer la segmentation. Les voxels qui ont déjà été affectés à un segment ne sont pas repris dans l’algorithme. L’analyse se poursuit donc avec les voxels qui n’ont été affectés à aucun des segments. Ces voxels seront ajoutés à une liste « L ». Cette liste contient les voxels du segment à traiter. Chaque fois qu’un voxel de cette liste est traité, il faut le retirer de la liste pour éviter la répétition. Pour le traitement d’un voxel de la liste, une recherche de ses voisins géométriques les plus proches est effectuée. Pour la rapidité du calcul, les 26 plus proches voisins sont utilisés, soit un cube de 3 voxels d'arête avec comme centre. Ce voisinage contient tous les voxels qui touchent au voxel central par les faces, les arêtes et les coins. Si les 6 plus proches voisins avaient été choisis, soit ceux qui touchent aux faces de , des trous auraient pu être présents dans les segments comme nous l’avons observé dans nos expériences. Une recherche des 124 plus proches voisins est aussi une possibilité mais elle est beaucoup plus coûteuse en temps de calcul. Dans le cas présent, traiter les 26 plus proches voisins est un bon compromis entre le temps de calcul et l’efficacité de la segmentation. Chaque voisin du voxel en cours de traitement est soumis à une série de tests pour savoir s'il appartient au même segment. Trois tests sont appliqués aux 15
voxels voisins trouvés vn . Le premier test consiste à vérifier si vn possède déjà un index de segment. Si c’est le cas, il est rejeté et il n’est pas ajouté dans la liste «L». Deuxièmement, la variation de surface, obtenue avec l'équation (2), du voxel vn et celle du voxel vl sont comparées. La comparaison de la variation de surface nous indique si la surface approximée dans un voxel se poursuit dans le voxel voisin et vérifie l'hypothèse de planarité (c.-à-d. σ≃0). Si les variations de surfaces sont semblables, nous pouvons faire l'hypothèse que la surface dans le voxel vn est en continuité avec celle du voxel vl . Si la différence est plus grande qu’un certain seuil, nous pouvons émettre l’hypothèse que la surface a changé. Elle pourrait avoir changé d'orientation ou encore être passée d’une surface lisse à une surface non plane ou encore être à une distance différente. Cette comparaison est faite à l'aide de la distance « L2 » entre les deux valeurs de variation de surface de vn et vl . Dans notre cas, la quantité doit être inférieure à 0.001. Notons que σ est une quantité adimensionnelle car elle résulte des rapports entre une valeur propre et une somme de leurs valeurs propres. Cette valeur de 0.001 a été déterminée à la suite de tests et cette valeur a donné les meilleurs résultats. Le seuil est assez faible pour que la surface conserve une similarité et permettre quelques variations pour obtenir une surface complète. Avec une valeur de 0.01, la majorité des surfaces sont connectées ensemble. Avec une valeur de 0.001, les surfaces sont constituées de plusieurs segments. Cette distance nous permet d’avoir une uniformité de la variation de surface entre les membres d’un même segment. Le troisième test à effectuer est une vérification de l’angle entre les normales des voxels vn et vl . Il est requis que les membres d’un même segment aient une orientation de normales similaire pour obtenir un segment avec une faible courbure. Si l’angle entre les normales est plus petit qu’un seuil prédéfini, il indiquera que les plans dans les voxels ont une certaine continuité entre eux. Ce test permet également de trouver des changements d’orientation dans les plans comme, par exemple, le changement entre le mur d’une maison et son toit ou la route et le rebord du trottoir. Dans ce travail une valeur maximale de 10° entre les angles des normales a été utilisée. Bien que l’article de Lehtomäki et al. [11] utilise une valeur de 5° comme critère sur la normale à la surface, les expériences ont 16
montré qu’une valeur de 10° généralise bien les variations qu’une façade de maison peut prendre. Si vn répond aux trois critères ci-dessus, il est ajouté à la liste des voxels du segment et l’index de ce dernier lui est assigné. Une fois que tous les voxels de la liste ont été traités, le processus recommence pour tous les autres voxels du champ de voxels. 17
Chapitre 3 : Descripteurs des régions segmentées À l’issue de l’application de l’approche de segmentation proposée au chapitre précédent, nous disposons d'un ensemble de régions connectées approximativement planes. La prochaine étape consiste à calculer des descripteurs pour caractériser les segments. Puisque l’objectif est de trouver la localisation des points dans un environnement où le signal GNSS a été perdu par exemple, le choix des informations pertinentes pour les segments s’est focalisé principalement vers l'orientation des normales et les relations entre ces normales dans ces zones problématiques pour le positionnement par satellites. En revanche la taille des segments (par exemple la hauteur et la largeur) ne contient pas d’information stable, car il est possible qu’un obstacle couvre une partie du segment ce qui affecterait ses propriétés dimensionnelles et mènerait à des descripteurs peu robustes. Les prochaines sections discutent des descripteurs utilisés, soit le premier qui exploite l’orientation des normales aux segments et le second qui exploite les relations entre les normales de voxels voisins. 3.1 Premier descripteur: Histogramme des normales Pour construire le premier descripteur basé sur l’orientation des normales, nous voulons être en mesure de classer les normales dans un histogramme composé d'alvéoles correspondant à une zone angulaire sur la surface d’une sphère. Avec un tel histogramme, nous pouvons classer les normales de chacun des voxels d’un segment en fonction de leur orientation dans l’espace. Pour obtenir un tel histogramme, nous choisissons d’approximer la sphère par un icosaèdre tel qu’illustré à la figure 6. 18
a) b) c) Figure 6 : Image d’un icosaèdre, de sa subdivision et de sa projection sur une sphère selon Wikipédia [8]. Comme le montre la figure 6, un icosaèdre, polyèdre constitué de vingt triangles équilatéraux, est une bonne approximation d’une sphère. Pour la construction de l’icosaèdre, nous nous sommes inspirés de l’algorithme de OpenGL [9] sur les écosphères. La première étape est de construire les 12 sommets et de les positionner dans l’espace. La seconde étape est de construire les 20 triangles principaux et de les subdiviser au besoin en triangles plus petits (figure 6a et 6b). La dernière étape de l’algorithme est de projeter les points sur ces petits triangles sur une sphère de rayon unitaire (figure 6c). Toutefois, les triangles subséquents projetés sur la sphère ne sont pas parfaitement équilatéraux mais leur aire est très voisine de celle d’un triangle équilatéral. La différence avec un triangle équilatéral est minime et n’affecte pas les résultats. Nous utiliserons ces triangles pour définir les alvéoles angulaires de l’histogramme des normales. Nous utilisons un icosaèdre avec une seule subdivision, ce qui nous donne un total de 80 alvéoles pour l’histogramme. Avec ce nombre d’alvéoles, nous obtenons une zone d’environ 12° d’ouverture pour chaque triangle. Pour remplir l’histogramme, nous utilisons l’orientation de la normale de chaque voxel d’un segment. La normale qui possède une orientation à l'intérieur de l’ouverture d’une alvéole augmentera le compte de celle-ci dans l'histogramme. Nous avons choisi cette subdivision en partant du principe que ce descripteur doit discriminer les différents 19
segments sur l’ensemble de l’orientation des normales. Une subdivision trop fine donne beaucoup de zones et réduit considérablement l’angle d'ouverture des triangles et réduit le nombre de normales qui tombent dans la même alvéole. Un icosaèdre avec deux subdivisions donne un total de 320 alvéoles avec une zone d’environ 6° d'ouverture pour chaque triangle. Puisque les segments sont des groupes de voxels qui ont des orientations voisines, une représentation trop fine des zones rend difficile l’estimation de l'orientation dominante du segment. Une fois notre histogramme rempli, nous le normalisons à 1 et nous remplissons les alvéoles autour des alvéoles qui possèdent des données. Ce procédé s’apparente à l'application d’un filtre gaussien à l’histogramme. Nous utilisons cette technique pour tenir compte du caractère discret de l’histogramme et de la manière arbitraire de définir ses alvéoles. Plus précisément, nous remplissons les alvéoles voisines des sommets du triangle par une valeur de 1% que nous enlevons de l'alvéole centrale. Ceci permet une reconnaissance plus flexible des segments avec une orientation similaire. Cet histogramme des normales servira à confirmer ou infirmer, grâce au comportement des normales d’un segment, le descripteur de la section 3.2 puisque ce dernier est dans un référencement local plutôt que global c’est-à-dire qu’il ne tient pas compte de son orientation dans l’espace. 3.2 Deuxième descripteur : Fast Point Feature Histograms Le second descripteur est le FPFH (Fast Point Feature Histograms) [2] qui provient de plusieurs optimisations du PFH (Point Feature Histograms) [10]. Les avantages de ce descripteur sont qu’il est local et que sa construction se base sur les informations géométriques comme la normale et la courbure. Les descripteurs locaux sont généralement exploités pour la reconnaissance d’objets et la mise en registre. Bien que les descripteurs locaux soient lourds en temps de calcul, le FPFH est une adaptation efficace sur le plan computationnel. Nous nous sommes inspirés des travaux publiés dans l’article de Rusu [2] pour construire et adapter le FPFH à nos besoins et au cadre de développement exploitant le champ vectoriel. Ainsi le FPFH n’est pas calculé au niveau des points, mais plutôt au niveau des voxels, ce qui représente une 20
économie additionnelle en temps de calcul. Rusu et al. [2] suggère de construire un histogramme pour chacun des paramètres , ϕ et évalué avec les équations (3) et illustrés dans la figure7 (3) Figure 7 : Représentation des paramètres , ϕ et . Où est le point observé et représente les points voisins dans une sphère de rayon r autour de . Les points observés sont le centre des voxels des segments où nous avons ajouté leur normale pour obtenir le point le plus proche sur le plan tangent à la surface (voir figure 2) et les voisins sont ces mêmes points des autres voxels du même segment. Pour chaque point dans un segment, nous calculons la valeur des trois paramètres de l’équation (3) pour chacun des voisins représentés à la figure 8. 21
Figure 8 : Image tirée de Rusu et al. [2] figure 5. correspond à et correspond à . Le rayon r utilisé est de la même taille que l’arête du voxel. Ce qui donne les caractéristiques simplifiées des points ou « Simplified Point Feature » SPF(p). Ensuite, pour chacun des voisins, nous déterminons un nouveau voisinage et nous calculons la SPF de chaque point de ce dernier. Nous utilisons le SPF des points voisins avec un poids basé sur la distance avec le point d’origine pour construire le FPFH(p). L’équation (4) est utilisée dans ce cas : (4) Les FPFH sont constitués de trois histogrammes avec le même nombre d’intervalles. Puisque les trois paramètres sont des angles bornés, il est facile de faire en sorte d’exprimer leur résultat entre 0 et 1. Lors de nos expériences, nous avons utilisé 10 bandes pour chacun des histogrammes. Une fois que le FPFH de chacun des points (c.-à-d. la position du centre du voxel projeté sur la surface avec l’aide du vecteur normal) est calculé, nous faisons la moyenne des FPFH pour obtenir le FPFH du segment (équation 5). Les histogrammes de ce FPFH du segment sont normalisés à 1 pour permettre la comparaison et avoir un descripteur pour le segment. Nous répétons le processus pour chaque segment. 22
(5) Le travail de recherche présenté dans ce mémoire est grandement inspiré des techniques utilisées dans l’article de Lehtomäki et al. [11] pour faire la segmentation des façades et de la route à partir du nuage de points. L’utilisation des informations contenues dans un voxel nous servira à faire une croissance de régions avec des critères exploitant la linéarité de la surface et la normale à la surface. Cependant, notre critère de linéarité et celui sur l’angle de la normale à la surface sont basés sur ceux d’un voxel avec ses voisins et non sur la surface locale du nuage de points et la verticalité de ce dernier. Ces modifications nous permettent d’obtenir des surfaces planes sans qu’elles soient pour autant orientées vers l’horizontale ou la verticale ce qui correspondrait, pour l’orientation verticale, à décrire des portions de la route. Comme l’orientation de la normal de la route est passablement la même (soit verticale) sur tout le parcours de la voiture, elle ne peut pas vraiment servir à la localisation d’un véhicule. De plus, nous ne pouvons pas utiliser la technique supplémentaire pour les façades puisque nous ne gardons pas les points du nuage. Avec ces modifications, nous pouvons donc extraire les toits des maisons ou encore garder des segments ondulés comme les fenêtres des surfaces. 23
Chapitre 4 : Résultats et discussion La figure 9 montre une segmentation des voxels où les différents segments apparaissent avec une couleur différente. Cette segmentation d’environ 2 millions de points contenus dans un parallélépipède de 150 m de large, 150 m de long et 25 m de haut a été effectuée en 3 secondes avec un CPU de 3.2 GHz et une mémoire de 32 GB de RAM. Puisqu’il est impossible de traiter dans un court laps de temps tous les points acquis par le scanneur LiDAR mobile lors d’un trajet, la longueur de 150 m a été choisie pour simuler la mémoire temporaire du véhicule afin d’avoir assez d’informations sur le trajet parcouru pour faire nos analyses. Pour la segmentation, une valeur de 50 mm a été utilisée pour la taille des voxels du champ vectoriel. Cette taille est choisie en fonction des détails de segmentation tels que la distinction des trottoirs et des détails distinctifs sur les bâtiments comme les fenêtres, portes et lucarnes comme nous pouvons le constater sur la figure 9 et la figure 10. Chaque point de même couleur appartient à un même segment. Nous pouvons voir que les surfaces comme les toitures des maisons et leurs façades sont identifiées avec la même couleur. Ces surfaces sont importantes pour faire l’identification des zones pertinentes pour la localisation car leurs caractéristiques devraient être les mêmes lors d’un nouveau passage avec le LiDAR et devraient permettre de construire des descripteurs stables qui ne devraient pas changer significativement avec le temps. De plus, nous pouvons aussi constater que les objets tels que les arbres, les sections où la densité de points est faible et les voitures sur la rue ne sont pas des segments identifiés par notre approche, ce qui est souhaitable, car ces segments ne sont pas stables et sont susceptibles de changer lors de passages successifs du LiDAR. Les voitures dans la rue sont de mauvais segments, car elles ne représentent pas des propriétés géométriques stables de l’environnement. Le LiDAR capture également des points sur les véhicules en circulation qui causent des occlusions. Ces occlusions apparaissent comme des ombres sur la figure 3 et la figure 4 alors que ce que nous cherchons, ce sont des segments qui restent invariants dans le temps avec des caractéristiques distinctives. Ces segments importants seront utilisés pour la construction de descripteurs. 24
Figure 9 : Résultats de l’algorithme de segmentation sur les données du nuage de points de la figure 3. Les couleurs identifient les régions segmentées dans le nuage de points. Voir la figure 10 pour une visualisation des détails. Figure 10 : Agrandissement du point de vue de la rue de la figure 9. 25
Pour la reconnaissance du lieu, nous utilisons le nuage de points acquis lors d’un premier passage avec notre LiDAR mobile et nous appliquons l’analyse des segments décrite dans le chapitre 3 pour calculer les descripteurs FPFH et l’histogramme des normales. La figure 9 comporte environ 160 segments qui sont représentés par des couleurs différentes. Par la suite, nous utilisons un autre nuage de points du même environnement, acquis lors d’un passage différent du LiDAR mobile à un autre moment pour en faire la comparaison avec les nouveaux segments trouvés. Les segments de couleur des deux nuages de points présentés à la figure 11 et à la figure 13 sont le résultat de la superposition des voxels des segments associés par l'évaluation des descripteurs du chapitre précédent. Évaluer les descripteurs du nuage de points de la figure 11 et de la figure 13 prend environ 23 secondes avec la même machine utilisée pour la segmentation (voir section 2.1 sur la segmentation du nuage de points). Nous avons cherché les paires des descripteurs les plus proches en utilisant la distance de Kullback-Leibler (voir équation 6) entre les descripteurs des deux passages en faisant toutes les comparaisons possibles. (6) Où P(i) sont les probabilités d’un jeu de données de référence et Q(i) sont les probabilités d’un nouveau jeu de données. La distance de Kullback-Leibler est la mesure de l’information perdue lorsque Q est utilisé pour approximer P. Cette distance peut avoir une valeur minimale de 0. Plus la valeur est petite, plus la ressemblance statistique des histogrammes est grande. Nous avons affecté la même couleur aux segments qui se ressemblent et qui devraient correspondre au même endroit dans l’environnement. Chaque segment de la base de données de segments a une couleur unique. Les segments de la nouvelle acquisition prennent la couleur du segment de la base de données qui possède les descripteurs qui lui ressemblent le plus. Nous avons fixé une valeur minimale à la distance de Kullback-Leibler soit une valeur de 1 et moins. Puisque cette valeur représente le 26
Vous pouvez aussi lire