Surfel
- 又称: surface element
- 类别: Sensing › 3D maps & reconstruction
- 标签: mapping, slam, 3d-reconstruction, lidar, 3d-perception
表面元素:一个带有位置、法向和半径的小型有向圆盘,通常还带有颜色、置信度和时间戳,用于构建稠密 3D 地图。
定义
面元(surfel,surface element 的缩写)是近似一小块表面的小平面圆盘。每个面元至少存储一个 3D 位置、一个法向量和一个半径,建图系统通常还会加入颜色、置信度或稳定性值,以及它被创建和最后一次更新的时间等字段。面元由 Pfister 及其同事于 2000 年作为计算机图形学中的渲染基元提出,后来被用于基于深度相机和激光雷达的稠密 3D 重建与 SLAM。
面元地图介于原始点云与网格或体积地图之间。与普通的点不同,面元带有朝向和范围,因此可以被渲染成看起来封闭的表面,并能用点到面距离与新的测量进行比较。与体素网格上的截断有符号距离场不同,它们不需要固定的体积,也不需要固定的分辨率,而且可以单独移动。最后这一性质对 SLAM 很重要:当回环修正轨迹时,ElasticFusion 等系统会用一个变形图使面元地图变形,而不是重建一个体积。
在典型的面元 SLAM 流程中,当前地图会从估计的传感器位姿进行渲染(通常在 GPU 上),生成一幅由位置和法向构成的模型图像。新的一帧与这一渲染结果对齐,从而为 ICP 式配准提供快速的投影式数据关联。与已有面元匹配的测量会通过加权平均更新该面元并提高其置信度;未匹配的测量会创建新的面元,而很少被确认的面元会被移除。SuMa 和 SuMa++ 把这一方案应用于旋转式激光雷达,使用距离图像进行渲染,SuMa++ 还为每个面元加入语义标签,以滤除运动物体。
为何重要
面元提供了一种稠密、可编辑的表面地图,支持快速配准,并且在回环之后无需重建即可修正。它们是稠密 RGB-D SLAM 和激光雷达 SLAM 中的常见选择,类似的有向圆盘也出现在较新的神经场景表示和基于高斯的场景表示中。
主要应用
- 稠密 RGB-D SLAM 与室内 3D 重建
- 用于户外驾驶和建图的激光雷达 SLAM
- 带有逐面元类别标签的语义建图
- 扫描场景的基于点的渲染
- 回环后的地图变形
实际应用
一个团队用安装在汽车上的旋转式激光雷达对一个城市街区进行建图,使用的是基于面元的 SLAM 系统。对于每一次新扫描,系统在预测位姿处把当前的面元地图渲染成距离图像,用点到面 ICP 把扫描与之对齐,然后把匹配的点融合到已有面元中,同时为未匹配的区域添加新的面元。工程师调节决定何时信任一个面元的稳定性阈值,以及移除不再被观测到的面元的规则,因为否则已经驶离的停放车辆会一直留在地图中。来自分割网络的语义标签被附加到每个面元上,以便把位于运动车辆上的点排除在配准之外。
常见误解
- 面元只是一个点 — 它还有法向和半径,使它成为一个小型有向圆盘,而不是一个没有范围的采样点
- 面元地图就是网格 — 面元之间互不相连,相邻面元之间没有显式的拓扑关系
- 面元需要固定的体素网格 — 它们存在于连续空间中,这是它们相对于体积地图的优势之一
- 每个观测到的点都会成为永久的面元 — 融合会合并重复的观测,并移除未被确认的面元
谁需要了解
- SLAM 与 3D 建图工程师
- 激光雷达与 RGB-D 感知开发人员
- 计算机图形学与渲染工程师
- 自动驾驶建图团队
相关技术
- ElasticFusion
- SuMa
- TSDF 融合(TSDF Fusion)
- 基于点的渲染(Point-Based Rendering)
- 2D 高斯泼溅(2D Gaussian Splatting)
相关术语
相关项目
- LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
- oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
- 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
- DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required