VT2019 Photogrammetrie

La photogrammétrie numérique est la technique d’accumulation et de calcul à partir de plusieurs données afin de reconstruire une scène en 3D de la manière la plus précise possible. En d'autres termes, la photogrammétrie c'est le fait de se déplacer autour d’un sujet (par exemple une montagne) en recueillant des données pour pouvoir le reconstruire numériquement en trois dimensions.

=Abstract=

''Digital photogrammetry is the technique of accumulating and calculating from several data in order to reconstruct a 3D scene as accurately as possible. In other words, photogrammetry is the act of moving around a subject (e.g. a mountain) by collecting data to be able to digitally reconstruct it in three dimensions.''

''It can be used in multiple domains such as topography, cartography and archaeology. This wiki presents the step-by-step approach to 3D modeling using a point cloud, as well as some examples of physical and digital tools and methods used.''

Keywords: 3D Modeling, Digital Photogrammetry, Point Cloud, Odometry, Filtering, Segmentation, Reconstruction

=Domaines d’application=

La photogrammétrie peut être utilisée dans de multiples domaines, étant très importante principalement pour faciliter l'exploration et la reconnaissance d'objets dans lesquels l'homme a des difficultés d'accès, comme les très grandes ou très petites surfaces.

Voici quelques exemples de domaines d'application :
 * Topographie
 * Cartographie
 * Système d'information géographique (SIG)
 * Architecture
 * Investigations de police
 * Géologie
 * Archéologie

Un exemple d'application dans le domaine de l'archéologie est la mission ScanPyramids, citée plus en détail à la fin de ce wiki.

=PointCloud=

Un point cloud, en français nuage de points, est un ensemble de points dans le même système de coordonnées. Autrement dit, c'est une image classique excepté que les pixels, ici "points", ont des coordonnées XYZ.

Nous utilisons le nuage de points en photogrammétrie numérique pour représenter les données de l'objet ou de la scène.

Outils physiques
Pour obtenir le nuage de points, on utilise des outils physiques qui permettent de capturer des informations "3D".

Caméra binoculaire
La caméra binoculaire est une caméra qui utilise deux objectifs différents pour, en plus de l'image, obtenir la profondeur de l'image.

Plus précisément, elle utilise des calculs mathématiques en comparant l'image des deux capteurs pour obtenir le nuage de points.

Les avantages :
 * Elle est petite, cela permet un transport et un positionnement faciles n'importe où.
 * Elle n'est pas chère.

L'inconvénient :
 * Elle est moins précise que d'autres équipements.

Dans la figure 3, on peut voir un exemple d'application avec des caméras binoculaires. On a les images des deux capteurs en haut à gauche, en faisant une analyse et des calculs, la caméra peut nous sortir une “depth map”, carte de profondeur, (en bas à gauche). En accumulant les images sur la depth map, on obtient un nuage de points.



Caméra infrarouge
La caméra infrarouge a un capteur RGB pour capturer l’image et en émetteur/récepteur infrarouge pour mesurer la distance. Elle utilise l'accumulation des deux pour obtenir le nuage de points.

L'avantage :
 * Elle est très précise.

L'inconvénient :
 * Elle est plus chère.

Dans la figure 5, on peut voir un exemple d'application avec des caméras infrarouges, où on a une photo de la scène originale à gauche et deux vues de l'image “brute” sortie de la caméra Astra.



Drone
Le drone est un petit aéronef avec pilotage automatique ou télécommandé qui a une caméra attachée à lui.

Les avantages :
 * Il est très précis.
 * Il permet de couvrir un large terrain.

Les inconvénients :
 * Il est très cher.
 * Il a une technologie qui est parfois difficile à comprendre, ce qui nécessiterait une formation préalable ou l'intervention d'un utilisateur expérimenté.

Odométrie
Odométrie est la technique permettant de calculer la position d’un objet en mesurant tous les déplacements d’un point A au point B.

Elle est utilisée dans la robotique, permet aussi de mesurer la position d’une caméra en analysant les images.

Il existe des outils numériques qui peuvent vous aider à calculer l'odométrie entre les points. Un exemple est le logiciel ORB-SLAM2.

ORB-SLAM2
ORB-SLAM2 est un logiciel open source (GPLv3 license) proposé par R. Mur-Artal et J. D. Tardos en 2017 sur l'article ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras [1]. Ce logiciel a pour but de faire de la localisation and mapping system (SLAM).

Il utilise des caméras binoculaires et les “points of interest”, points d'intérêt, pour traquer les mouvements de la caméra.

Dans la figure 7, on peut voir un exemple d'utilisation du logiciel ORB-SLAM2. En bas à droite on a l'image de la caméra (stéréo) avec tous les points of interest en vert, et sur la grande fenêtre on a le résultat de l'algorithme, on peut voir tous les points of interest calculés et chaque position clé de la caméra, ainsi que leurs liaisons.



=Accumulation & Traitement= Le processus d'accumulation et traitement vise à transformer un nuage de points en un modèle 3D, ce qui se fait en cinq étapes principales.

Démarrage
Pour commencer le processus d'accumulation et traitement est indispensable une réflexion sur les méthodes et algorithmes qui seront utilisés afin de pouvoir capter les données nécessaires.

Habituellement, en tant que données d'entrée, il y a l'ensemble de points qui ont été obtenus avec les caméras et le logiciel de positionnement. Ces points peuvent être orientés, c'est-à-dire chaque point va avoir un vecteur normal, ou non.

Filtrage
Le nuage de points acquis a inévitablement de bruit visuelle et contient des valeursoutliner dues aux limitations ou conditions des capteurs, à l'éclairage de la scène, etc. Par conséquent, il est nécessaire d'effectuer des opérations de filtrage sur le nuage de points pour obtenir des données plus précises afin de pouvoir effectuer les traitements suivants.

Pour cette opération de filtrage, différents filtres peuvent être utilisés et existent plusieurs façons de diviser ces filtres. Dans ce wiki on va regarder les détails de trois types de filtrage basées sur la division présentée sur l'article A review of algorithms for filtering the 3D point cloud [2].


 * Filtrage statistique
 * Le filtrage statique est le type de filtre qui examine la nature du point pour déterminer s'il est pertinent ou non. Il s'agit de filtres tels que le filtre passe-haut, le filtre passe-bas, le filtre basé sur la transformé de Fourier, etc.


 * Filtrage basé sur le voisinage
 * Les techniques de filtrage basées sur le voisinage déterminent la pertinence d'un point en utilisant des mesures de similarité entre un point et son voisinage. Parmi ces filtres, on trouve KNN, K-Means, Locality Sensitive Hash, etc.


 * Filtrage basé sur les PDEs
 * Les techniques basées sur les PDEs (Partial Differential Equations) pour filtrer le nuage de points peuvent être considérées comme une extension des mailles triangulaires. Ces méthodes utilisent des équations aux dérivées partielles, y compris le deuxième ordre, le quatrième ordre et la dérivée partielle complexe. Ainsi, dans cette méthode, le voisinage influence aussi la pertinence du point.

Segmentation
La segmentation c’est un groupement qui est utilisé pour décomposer le nuage de points en parties constitutives, qui peuvent être traitées indépendamment. Chaque partie normalement correspondent à des structures ou des objets spécifiques dans une scène. Pour faire cette segmentation on peut utiliser plusieurs approches, voici quelques exemples :


 * La segmentation par lisières
 * Cette segmentation s'est basé sur les lisières, l'algorithme déduit les arêtes de l’image à travers la position des points.


 * La segmentation par croissance des régions
 * Sur la croissance des régions le but c'est de voir la similarité entre les pixels. Chaque objet sera une région avec des pixels voisins similaires.


 * La segmentation par ajustement des modèles
 * L'ajustement des modèles compare le nuage de points avec les modèles préexistants (comme les formes géométriques) et le découpage de chaque objet est défini pour la similarité avec ce modèle.


 * La segmentation par clustering
 * Cette segmentation utilise des algorithmes mathématiques pour déterminer chaque cluster qui sera l'objet. Une méthode de segmentation par clustering assez courante est basée sur la distance euclidienne entre les points.

Reconstruction de surface
La reconstruction de surface est le processus par lequel un objet 3D est déduit, ou "reconstruit", à partir du nuage de points qui échantillonnent la forme. Donc, une maille est créée sur cet ensemble des points. Cette maille peut être polygonale, triangulaire, entre autres.

Il existe de nombreuses techniques pour convertir un nuage de points en surface 3D. Certaines approches, telles que la triangulation de Delaunay, revêtent les sommets du nuage d'une maille triangulaire, alors que d'autres approches convertissent les points en champ volumétrique à l'aide d'un algorithme infographique [3].

Ajustement d’un modèle
Souvent, pour terminer le processus de modélisation 3D, il est nécessaire d'appliquer un modèle à cette image, c'est-à-dire une sorte de texture ou d'image, qui complétera chaque partie de la surface. La qualité du résultat de l'ajustement basé sur le modèle dépend de deux facteurs : l'approximation géométrique et la qualité de la maille obtenue dans la reconstruction.

Pour obtenir le meilleur ajustement possible de ce modèle, on peut également utiliser plusieurs algorithmes, qui peuvent être divisés en deux grands groupes.


 * L'ajustement par template rigide
 * Pour l'ajustement par template rigide la position à laquelle le modèle sera placé est estimé et il est placé tel qu'il est à cet endroit.


 * L'ajustement non-rigide
 * Pour l'ajustement non-rigide, également appelé ajustement paramétrique, la position à laquelle le modèle sera placé est estimé et avant de l'appliquer les autres modèles qui sont déjà dans l'image sont déformés pour l'assortir et enfin le modèle est appliqué. Ce processus de déformation est appelé transformation homographique.

= ScanPyramids = La mission ScanPyramids (2015), conçue et coordonnée par la Faculté des Ingénieurs de l'Université du Caire et l'Institut français HIP (Héritage, Innovation, Préservation), visait à sonder, sans faire un seul trou, le cœur des plus grandes pyramides d'Egypte [4].

Deux missions de thermographie infrarouge ont été effectuées pour établir une carte thermique des monuments et révéler les vides sous la surface visible de la pyramide, puis deux missions de radiographie par muons ont été effectuées pour vérifier et visualiser avec précision la présence de structures inconnues dans les pyramides.

Parallèlement aux missions d'exploration, une campagne de photogrammétrie à l'aide de drones a été fait, ce qui a permis la reconstruction 3D précise du plateau de Gizeh et du site du Dahchour, ainsi que de tous les monuments qui y sont érigés. Ces modèles sont mis à la disposition du public sous forme de données ouvertes par l'Institut HIP.


 * Drones
 * Ils ont utiliser deux types de drones :


 * Type avion : il dispose d'une grande autonomie et il est rapide et précis (~5cm).
 * Type hélicoptère : il effectue un vol stationnaire, avec une grande précision (~1cm) et un scanner infrarouge.

=Démonstration= Voyez ici une démonstration d'un nuage de points publié par l'entreprise Sketchfab, dans lequel nous pouvons voir certains des différents types de données que nous pouvons obtenir avec un nuage de points. La démonstration est itérative et les données représentent le Natural History Museum de Londres : Démonstration

=Sources=
 * 1) Mur-Artal, Raul & D. Tardós, Juan. (2017). ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras
 * 2) Han, Xian-Feng & Jin, Jesse & Wang, Ming-Jie & Jiang, Wei & Gao, Lei & Xiao, Liping. (2017). A review of algorithms for filtering the 3D point cloud.
 * 3) Wikipédia : Point Cloud
 * 4) ScanPyramids Mission - Site Officiel
 * 5) PCL : Point Cloud Library - Site Officiel
 * 6) Wikipédia : Photogrammétrie
 * 7) Yeh, I-Cheng & Lin, Chao-Hung & Sorkine, Olga & Lee, Tong-Yee. Template-based 3D Model Fitting Using Dual-domain Relaxation
 * 8) Xie, Yuxing & Tian, Jiaojiao & Zhu, Xiao Xiang. (2019). A Review of Point Cloud Semantic Segmentation.

=Veille Technologique 2019=
 * Année : VT2019
 * Sujet : Photogrammétrie
 * Slides : [[Media:Photogrammétrie.pdf|Slides]]
 * Auteurs : Giulia BONASPETTI MARTINS,  Marceau DECAMPS