目录
一、点云处理介绍:
二、Open3D文章目录:
Open3D几何部分(Geometry)
点云处理(点云IO/可视化/数据结构/下采样/凸包计算/裁减/法向量估计/聚类/隐藏点移除/平面分割/最小外接矩形/外点移除)
面片(mesh)处理(mesh可视化/IO/表面法向量估计/裁剪/滤波/采样/网格(曲面)细分/网格(曲面)简化/聚类)
点云的体素化/KDTree创建和搜索/Octree创建和搜索
点云的平移/表面重建/网格(曲面)变形/ISS关键点
Ray Casting/距离查询
Open3D中的RGB-D images(range images)使用
Open3D点云处理(Pipelines)
ICP(Iterative Closest Point)配准(粗配准/精配准/robust核函数/基于颜色的ICP)
点云的全局配准和基于位姿图优化的多点云配准
RGB-D相机介绍RGB-D文件的点云融合
RGB-D里程计(RGB-D Odometry)和RGB-D颜色优化和刚体优化
Open3D点云处理进阶
理解ICP算法和API
open3d中多尺度ICP在cpu和cuda上的实现
多种robust核函数在点到点和点到面ICP中的使用
Open3D可视化
Open3D可视化参数选择
Open3D自定义可视化/交互式可视化/非阻塞可视化
Open3D无头渲染/cpu渲染
Open3D网页可视化实现
Open3D核心数据操作
Tensor创建/属性/异构计算/数据类型
Numpy和Pytorch与Tensor的拷贝/移动/一元运算/二元运算/逻辑运算/归约/切片/索引/比较/Nonzero操作
Open3D中的Hash map实现
常见三维数据集在Open3D中的接口
点云数据集
三角面片(TriangleMesh)数据集与PBR纹理
纹理材质贴图
RGBD数据集
Open3D中使用RealSense与Azure Kinect
三、PCL文章目录:
PCL数据结构和使用示例
PCL编译、安装、使用
点云在PCL中的数据结构
自定义类型和PCL类
点云的读取/写入与拼接
PCL中3D关键点与特征处理
点云表面法向量估计
PFH(Point Feature Histograms)与FPFH(Fast Point Feature Histograms)描述子
VFH(Viewpoint Feature Histogram)描述子、range image的NARF关键点
基于描述子计算eccentricity 和 moment of inertia
PCL中RoPs和GASD特征的使用
PCL中的滤波操作
PassThrough(直通)滤波器与VoxelGrid滤波器
参数化模型投影点云
PCL中的点云索引
使用StatisticalOutlierRemoval滤波器移除离群点、用ConditionalRemoval或RadiusOutlinerRemoval移除离群点
点云的双边滤波(bilateral filter)
PCL中的KdTree与Octree
使用KdTree进行搜索
使用Octree对点云进行压缩
使用Octree进行点云空间划分和搜索
使用Octree对无序点云进行Spatial change detection
PCL中的Range Images
从点云中创建Range Image
提取Range Image的边界
PCL中的识别(Recongnition)
基于对应组(Correspondence)的3D目标识别
Implict Shape Model
三维物体识别的假设验证
PCL中的配准
PCL中的配准API
PCL中使用ICP(Iterative closest point)
使用ICP增量配准点云
交互式ICP示例
NDT(Normal Distributions Transform)配准
采样一致性介绍(Sample Consensus)
PCL中的点云分割
平面模型分割(Plane model segmentation)
圆柱体分割(Cylinder model segmentation)
欧式聚类提取(Euclidean Cluster Extration)
区域增长分割(Region Growing Segmentation)
最小剪切分割(Min-Cut Based Segmentation)
条件欧式聚类(Conditional Euclidean Clustering)
基于法线差异的分割(Difference of Normals Based Segmentation)
点云聚类成supevoxel
渐进形态学滤波器(Progressive Morphological Filter)分割地面点云
基于模型的离群值去除(ModelOutlierRemoval)
PCL中的表面重建
基于多项式重建的表面平滑与法线估计
点云平面模型凹凸多边形构建
无序点云的快速三角化
无序点云的修剪B样条表面重建
PCL中的可视化
PCL中可视化工具的使用
PCL可视化range image
PCLPlotter的使用
PCL在Qt中的应用
PCL应用篇
物体模板对齐到点云
使用VFH描述子完成聚类识别和6DOF位姿估计
使用RGB-D相机进行行人检测与行人姿态估计
移动设备的点云传输与可视化
Nidia GPU与PCL
kinectfusion三维重建介绍(Kinfu)
四、RGB-D三维重建
三维离线重建与实时重建实现
使用Open3D基于Robust Reconstruction of Indoor Scenes, CVPR, 2015实现室内离线重建
Open3D RGB-D实时重建
后续文章将会按照上面顺序进行更新!!!
随着机器人在人们生活中普及以及越来越廉价的3D感知设备的到来,我们急需满足对日益增长的3维数据处理需求。例如,当机器人需要与物理世界互动时,他们需要感知周围的环境,就需要处理三维的数据。三维的数据的集中表示形式包括了点云(Point Cloud)、面片(mesh)、体素(Volumetric)、多试图深度图(Multi-view RGB-D images)。
当前处理三维数据的主要软件有以下几种:
本博客将会重Open3D开始进行介绍,然后再到PCL模板库的使用,最后完成一个基于RGB-D的三维重建代码解析。
点云的主要应用包括:点云的滤波、点云的3D特征提取、点云的关键点、点云的配准、点云的kd-tree和oc-tree、点云分割、点云表面重建、点云识别、点云的IO、点云的可视化操作
下图是Open3D的所有模块说明例图
PCL中的代码库描述:
libpcl filters: implements data filters such as downsampling, outlier removal, indices extraction, projections,etc; libpcl features: implements many 3D features such as surface normals and curvatures, boundary point estimation,moment invariants, principal curvatures, PFH and FPFH descriptors, spin images, integral images, NARF descriptors, RIFT, RSD, VFH, SIFT on intensity data,etc; libpcl io: implements I/O operations such as writing to/reading from PCD (Point Cloud Data) files; libpcl segmentation: implements cluster extraction,model fitting via sample consensus methods for a variety of parametric models (planes, cylinders, spheres, lines, etc), polygonal prism extraction, etc libpcl surface: implements surface reconstruction techniques, meshing, convex hulls, Moving Least Squares,etc; libpcl registration: implements point cloud registration methods such as ICP, etc; libpcl keypoints: implements different keypoint extraction methods, that can be used as a preprocessing step to decide where to extract feature descriptors; libpcl range image: implements support for range images created from point cloud datasets.
模块间的依赖关系图:
所有示例与代码均基于Ubuntu实现,在windows的同学也建议转到基于linux的操作系统下来;很多工程文件代码也都是在linux下配置更加方便。