当前位置: 首页 > news >正文

点云处理指南介绍

目录

一、点云处理介绍:

二、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)。

  1. 点云:点云是指目标表面特性的海量点集合。包含了xyz坐标信息和反射强度、颜色、法向量等信息(从激光雷达或深度相机中获得该数据)
  2. Mesh:由三角面片和正方形面片组成(由点云或其他计算机建模软件生成)
  3. 体素:由三维栅格将物体用0和1表征(对点云进行体素化操作得到)
  4. 多角度的RGB图像或者RGB-D图像(标定后的多相机拍摄得到)

当前处理三维数据的主要软件有以下几种:

  1. Point Cloud Library(PCL):最早的开源点云处理框架,从ROS中分离出来后经过短暂的快速发展后如今出现了停滞,PCL以C++的模板编成实现,其中数学运算基于Eigen,大量使用SSE向量扩展与OpenMP并行化实现加速并使用VTK作为其可视化工具;支持Windows, macOS, Linux, Android,但在Python语言中没有对应的官方库
  2. Open3D:现代3D数据处理框架(包含对点云、mesh、RGB-D图片的处理),由Intel主导;后端基于C++11优化且以OpenMP并行,支持ubuntu、macOS、Windows, Open3D是在一个全新的基础上开发的并使用OPENGL提供可视化界面,并尽可能使用最少的依赖项;Open3D同时提供了Python接口和C++包,其中Python接口基于pybind11实现。使用PCL和Open3D实现相同功能时C++代码量相较于PCL少一半,python版代码是PCL C++的5分之一
  3. MeshLab:一个提供GUI界面的三维数据处理应用,在Windows和Linux和mac OS中都可以使用
  4. libigl:基于C++提供了离散微分几何处理与基于图片的模型重建

        本博客将会重Open3D开始进行介绍,然后再到PCL模板库的使用,最后完成一个基于RGB-D的三维重建代码解析。

        点云的主要应用包括:点云的滤波、点云的3D特征提取、点云的关键点、点云的配准、点云的kd-tree和oc-tree、点云分割、点云表面重建、点云识别、点云的IO、点云的可视化操作

 


二、Open3D文章目录:

  1. Open3D几何部分(Geometry)

    1. 点云处理(点云IO/可视化/数据结构/下采样/凸包计算/裁减/法向量估计/聚类/隐藏点移除/平面分割/最小外接矩形/外点移除)

    2. 面片(mesh)处理(mesh可视化/IO/表面法向量估计/裁剪/滤波/采样/网格(曲面)细分/网格(曲面)简化/聚类)

    3. 点云的体素化/KDTree创建和搜索/Octree创建和搜索

    4. 点云的平移/表面重建/网格(曲面)变形/ISS关键点

    5. Ray Casting/距离查询

    6. Open3D中的RGB-D images(range images)使用

  2. Open3D点云处理(Pipelines)

    1. ICP(Iterative Closest Point)配准(粗配准/精配准/robust核函数/基于颜色的ICP)

    2. 点云的全局配准和基于位姿图优化的多点云配准

    3. RGB-D相机介绍RGB-D文件的点云融合

    4. RGB-D里程计(RGB-D Odometry)和RGB-D颜色优化和刚体优化

  3. Open3D点云处理进阶

    1. 理解ICP算法和API

    2. open3d中多尺度ICP在cpu和cuda上的实现

    3. 多种robust核函数在点到点和点到面ICP中的使用

  4. Open3D可视化

    1. Open3D可视化参数选择

    2. Open3D自定义可视化/交互式可视化/非阻塞可视化

    3. Open3D无头渲染/cpu渲染

    4. Open3D网页可视化实现

  5. Open3D核心数据操作

    1. Tensor创建/属性/异构计算/数据类型

    2. Numpy和Pytorch与Tensor的拷贝/移动/一元运算/二元运算/逻辑运算/归约/切片/索引/比较/Nonzero操作

    3. Open3D中的Hash map实现

  6. 常见三维数据集在Open3D中的接口

    1. 点云数据集

    2. 三角面片(TriangleMesh)数据集与PBR纹理

    3. 纹理材质贴图

    4. RGBD数据集

  7. Open3D中使用RealSense与Azure Kinect

下图是Open3D的所有模块说明例图


三、PCL文章目录:

  1. PCL数据结构和使用示例

    1. PCL编译、安装、使用

    2. 点云在PCL中的数据结构

    3. 自定义类型和PCL类

    4. 点云的读取/写入与拼接

  2. PCL中3D关键点与特征处理

    1. 点云表面法向量估计

    2. PFH(Point Feature Histograms)与FPFH(Fast Point Feature Histograms)描述子

    3. VFH(Viewpoint Feature Histogram)描述子、range image的NARF关键点

    4. 基于描述子计算eccentricity 和 moment of inertia

    5. PCL中RoPs和GASD特征的使用

  3. PCL中的滤波操作

    1. PassThrough(直通)滤波器与VoxelGrid滤波器

    2. 参数化模型投影点云

    3. PCL中的点云索引

    4. 使用StatisticalOutlierRemoval滤波器移除离群点、用ConditionalRemoval或RadiusOutlinerRemoval移除离群点

    5. 点云的双边滤波(bilateral filter)

  4. PCL中的KdTree与Octree

    1. 使用KdTree进行搜索

    2. 使用Octree对点云进行压缩

    3. 使用Octree进行点云空间划分和搜索

    4. 使用Octree对无序点云进行Spatial change detection

  5. PCL中的Range Images

    1. 从点云中创建Range Image

    2. 提取Range Image的边界

  6. PCL中的识别(Recongnition)

    1. 基于对应组(Correspondence)的3D目标识别

    2. Implict Shape Model

    3. 三维物体识别的假设验证

  7. PCL中的配准

    1. PCL中的配准API

    2. PCL中使用ICP(Iterative closest point)

    3. 使用ICP增量配准点云

    4. 交互式ICP示例

    5. NDT(Normal Distributions Transform)配准

  8. 采样一致性介绍(Sample Consensus)

  9. PCL中的点云分割

    1. 平面模型分割(Plane model segmentation)

    2. 圆柱体分割(Cylinder model segmentation)

    3. 欧式聚类提取(Euclidean Cluster Extration)

    4. 区域增长分割(Region Growing Segmentation)

    5. 最小剪切分割(Min-Cut Based Segmentation)

    6. 条件欧式聚类(Conditional Euclidean Clustering)

    7. 基于法线差异的分割(Difference of Normals Based Segmentation)

    8. 点云聚类成supevoxel

    9. 渐进形态学滤波器(Progressive Morphological Filter)分割地面点云

    10. 基于模型的离群值去除(ModelOutlierRemoval)

  10. PCL中的表面重建

    1. 基于多项式重建的表面平滑与法线估计

    2. 点云平面模型凹凸多边形构建

    3. 无序点云的快速三角化

    4. 无序点云的修剪B样条表面重建

  11. PCL中的可视化

    1. PCL中可视化工具的使用

    2. PCL可视化range image

    3. PCLPlotter的使用

    4. PCL在Qt中的应用

  12. PCL应用篇

    1. 物体模板对齐到点云

    2. 使用VFH描述子完成聚类识别和6DOF位姿估计

    3. 使用RGB-D相机进行行人检测与行人姿态估计

    4. 移动设备的点云传输与可视化

    5. Nidia GPU与PCL

    6. kinectfusion三维重建介绍(Kinfu)

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.

模块间的依赖关系图:

 


 

四、RGB-D三维重建

  1. 三维离线重建与实时重建实现

    1. 使用Open3D基于Robust Reconstruction of Indoor Scenes, CVPR, 2015实现室内离线重建

    2. Open3D RGB-D实时重建


        所有示例与代码均基于Ubuntu实现,在windows的同学也建议转到基于linux的操作系统下来;很多工程文件代码也都是在linux下配置更加方便。

        后续文章将会按照上面顺序进行更新!!!

相关文章:

  • 抓包对抗原理与案例
  • Android中级——滑动分析
  • 阅读腾讯云SDK文档心得
  • 2023年PMP 具体的考试时间是什么时候?
  • 3-3-多线程-TheadLocal内存泄漏
  • 基于SIFT的图像Matlab拼接教程
  • 孙子兵法总结
  • Axios用法总结(附有封装好的axios请求)
  • java 设计原则
  • SpringMVC之bean加载控制
  • 【HBase高级】5. HBase数据结构(上)跳表、二叉搜索树、红黑树、B、B+树
  • 你知道那些数字消失了吗?_?
  • C++——继承
  • VisualStudio—Remote Debug
  • python进阶——人工智能实时目标跟踪
  • VUE3.0学习
  • 血氧仪/额温枪/电子体温计等 LED数显/数码管显示驱动控制电路(IC/芯片)-VK1S68C资料 SSO24小体积封装,FAE技术支持
  • 信息系统项目管理师背记精要
  • 【C语言练习】字符串旋转你会嘛?
  • 进阶6 连接查询
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉