点云数据及获取
定义
点云(point cloud): 三维点的数据集合属性
点云组织形式:
- organized: the point cloud is laid out as a 2D array of points that resemblesan image like structure
也就是说,像平常的照片一样,有行列顺序的点云,叫结构点云。
- unorganized: the point cloud is a list of points.
点云获取方式
- 激光扫描仪(Laser Scanner/ LiDAR Light Detection And Ranging)
-
深度相机(depth camera)
-
双目相机(Stereo Camera)
-
光学相机多视角重建
激光扫描
激光发射出去再返回来,transmitter和receiver,根据往返时间计算range
Range . travel time x speed of light/2
Record (azimuth, zenith, range, intensity)
深度相机
通过近红外激光器把具有结构特征的光线投影到物体上,通过红外摄像头采集得到深度信息。
特点:
-
成本低,计算量小
-
主动光源,夜晚也可用
-
观测该范围和距离有限
应用:
双目相机
使用两个相机从不同位置获取物体的两幅图像,通过计算对应点的位置偏差,使用三角原理(Triangulation)计算点的三维坐标。
特点:
-室内室外都适用
SFM运动结构恢复(Structure frommotion)
给出多幅图像及其图像特征点的对应集合,估计3D点的位置和摄像机姿态(运动)
特点:
- 成本低
- 使用高精度相机和更稳定的平台(有GPS/IMU)可以进行高精度测量
- 计算量大
点云数据处理
点云滤波(filtering)
检测和移除点云中的噪声或不感兴趣的点
分类:
- 基于统计信息(stat iscal-based)
- 基于领域(neighbor-based)
- 基于投影(projection-based)
- 基于信号处理(singal processing based)
- 基于偏微分方程(PDEs-based)
- 其他方法: voxel grid fitlering, quadtree-based, etc.
常用方法:
- 基于体素(voxeI grid)
- 移动平均最小二乘(Moving Least Squares)
点云匹配(point cloud registration):
估计两帧或者多帧点云之间的rigid body transformation信息,将所有帧的点云配准在同一个坐标系。
分类:
- 初/粗匹配:适用于初始位姿差别大的两帧点云
- 精匹配:优化两帧点云之间的变换
- 全局匹配:通常指优化序列点云匹配的误差,
- 如激光SLAM,两帧之间匹配,全局匹配
常用方法:
- 基于Iterative Closest Point (ICP)的方法
- 基于特征的匹配方法
- 深度学习匹配方法
点云分割(segmentation)
根据空间、集合等特征将点划分为不同的集合。
常用方法:
- 基于边缘的方法:变成图像,使用边缘信息(较早期)
- 基于区域生长
- 几何模型拟合:拟合平面,球形,圆柱等
点云目标检测 (object detection)
从点云中检测某类物体
方法:
点云分类 (classification)/语义分割(Semantic Segmentation)
为每个点云分配一个语义标签。
方法:
模型重建 (model reconstruction):
- 从点云中获取更精简更紧凑的模型,如获取mesh 模型。
- 常见的 3D shape representation: 深度图,点云,体素,网格(mesh)
常用方法:
- Delaunay Mesh Generation
- Finite Element Mesh Generation
- Marching cubes
常用软件及开源库
CloudCompare(软件)
- 点云处理软件
- 开源,且支持多平台(Windows,Mac,Linux)
- 支持常见的点云数据格式,简单的点云编辑
- 支持用户自己添加插件和增加新功能 (如 Ransac,PoissonMesh Reconstruction, Classification with CANUPO)
- 适合于点云可视化,简单编辑或者处理
PCL (Point cloud library)(开源库)
- Filter
- Segmentation
- Registration
- Keypoints
- Recognition
特点:
- 支持多平台(Win,Linux,Mac)
- 功能齐全,可扩展性好
- 广泛用于机器人,很多开源算法和系统(ROS)
Open3D(开源库)
- Surface alignment
- 3D machine learning support with PyTorch and TensorFlow
- GPU acceleration for core 3D operation
特点:
- 支持多平台
- python集成成熟,可和 Pytorch,Tensorflow 集成