Range Image
- Aussi appelé: range view, spherical range image
- Catégorie: Sensing › Perception outputs
- Mots-clés: lidar, 3d-perception, semantic-segmentation, point-cloud, data-representation
Image 2D d'un balayage de distance 3D dans laquelle chaque pixel stocke la distance mesurée le long d'une direction de faisceau, ce qui donne au balayage une grille d'image propice à un traitement rapide.
Définition
Une image de distance (range image) stocke un balayage 3D sous forme de tableau 2D dans lequel chaque pixel correspond à une direction de visée et contient la distance mesurée le long de celle-ci. Pour un LiDAR multifaisceau rotatif, les lignes correspondent généralement aux faisceaux laser, c'est-à-dire aux angles d'élévation, et les colonnes aux angles d'azimut autour de la rotation, si bien que chaque point est placé par une projection sphérique de sa direction. Des canaux supplémentaires contiennent souvent les coordonnées x, y et z, l'intensité du retour et un masque de validité.
La disposition en image rend les relations de voisinage peu coûteuses. Des points proches dans l'image sont généralement proches dans l'espace, de sorte que les normales, les arêtes, la segmentation du sol et le regroupement peuvent être calculés par de simples opérations d'image au lieu de recherches de plus proches voisins en 3D. Elle permet aussi à des réseaux convolutifs 2D standard de traiter des données LiDAR : des réseaux comme SqueezeSeg et RangeNet++ étiquettent chaque pixel, puis les étiquettes sont reprojetées sur les points 3D. SuMa et SuMa++ utilisent les images de distance pour une autre raison : ils rendent la carte de surfels dans la même disposition d'image, de sorte que les nouveaux balayages peuvent être associés à la carte par position de pixel.
La projection a un coût. Lorsque plusieurs points tombent dans un même pixel, un seul est conservé, généralement le plus proche, si bien que certains points doivent ensuite être étiquetés à partir de leurs voisins. Les pixels sans retour, dus au ciel, au verre ou à des surfaces absorbantes, doivent être masqués. Aux bords des objets, les voisins d'un pixel peuvent se trouver sur des surfaces très éloignées en profondeur, ce qui fait déborder les étiquettes entre premier plan et arrière-plan ; RangeNet++ ajoute un nettoyage par k plus proches voisins en 3D pour réduire ce phénomène. Une image de distance diffère d'une image de profondeur (depth image) de caméra par la projection et par la valeur : une caméra de profondeur utilise une projection sténopé et stocke généralement la distance le long de l'axe optique, tandis qu'une image de distance LiDAR utilise des coordonnées angulaires et stocke la distance le long de chaque faisceau.
Pourquoi c'est important
Les images de distance transforment des nuages de points LiDAR clairsemés et non ordonnés en une grille dense que des algorithmes d'image rapides et des réseaux convolutifs peuvent traiter. De nombreuses chaînes temps réel de segmentation LiDAR, d'odométrie et de compression reposent sur elles.
Applications principales
- Segmentation sémantique de balayages LiDAR avec des réseaux 2D
- Association de données projective dans le SLAM LiDAR
- Suppression du sol et regroupement des obstacles
- Estimation des normales et des arêtes pour les caractéristiques de l'odométrie LiDAR
- Compression et stockage des données LiDAR
En pratique
Une équipe de conduite autonome doit étiqueter chaque point LiDAR comme route, voiture, piéton ou végétation en temps réel. Elle projette chaque balayage sur une image de distance avec une ligne par laser et un nombre fixe de colonnes, en stockant distance, x, y, z et intensité dans cinq canaux. Un réseau de segmentation 2D prédit une classe par pixel, les étiquettes sont reprojetées sur les points, et un vote des plus proches voisins en 3D corrige les points écartés par la projection ou mal étiquetés aux bords des objets. La même image de distance est réutilisée en aval pour la suppression du sol et pour le regroupement des obstacles par régions de pixels connexes.
Idées reçues
- Une image de distance est la même chose qu'une image de profondeur de caméra — la projection est angulaire et non sténopé, et les pixels stockent la distance le long du faisceau et non le long de l'axe optique
- La projection conserve tous les points — les points qui partagent un pixel sont écartés, si bien que les étiquettes doivent leur être propagées
- Des pixels voisins correspondent toujours à des surfaces voisines — aux discontinuités de profondeur, des pixels adjacents peuvent être très éloignés, ce qui fait déborder les étiquettes
- Les images de distance ne conviennent qu'aux LiDAR rotatifs — tout capteur doté d'une grille régulière de directions de faisceau, y compris certains LiDAR à semi-conducteurs (solid-state), peut être stocké ainsi
Qui devrait le savoir
- Ingénieurs en perception LiDAR
- Équipes de segmentation pour la conduite autonome
- Développeurs SLAM et odométrie
- Ingénieurs en apprentissage automatique travaillant avec des données 3D
Technologies associées
- RangeNet++
- SqueezeSeg
- Projection sphérique (Spherical Projection)
- Projection en vue de dessus (Bird's-Eye-View Projection)
- Semantic KITTI
Termes associés
Projets associés
- Open3D: Modern library for 3D point cloud processing, mesh operations, and 3D machine learning
- oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
- PCL: Industry-standard C++ library for point cloud processing in robotics perception
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
- OpenDroneMap: Open-source photogrammetry toolkit that turns drone images into maps and 3D models
- FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO