Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...

La page est créée Gilles Olivier
 
CONTINUER À LIRE
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...
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 ...
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
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...
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
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...
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
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...
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
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...
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
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...
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
Segmentation et construction de descripteurs appliqués à des nuages de points à grande échelle pour la géolocalisation d'un véhicule semi-autonome ...
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