3D点云处理:学习总结(更新整理中)

文章目录

  • 开发工具
  • 个人看法


微信:dhlddx
B站演示视频

前置说明:仅是个人在使用pcl开发过程中的总结(点云处理顺序或比较实用的功能),不喜勿喷;


开发工具

  • 开发IDE:Qt Creator(Windows)
  • 开发语言:C++
  • 第三方库:PCL\Opencv等;

有关PCL和Opencv的配置可参考其他博主,这里不在叙述;


个人看法

      如果有小伙伴使用过Opencv开发2D视觉算法的经验,应该了解Opencv提供的接口并不能完全实现我们工业视觉中遇见的场景,大部分可能是作为辅助;同样,PCL作为3D视觉的第三方库,在开发有关3D视觉的算法时也只是辅助,在工业3D视觉中大的开发内容,PCL内部的一些接口仅是辅助作用。


  1. 如果刚接触PCL,那么您可能需要了解一下在PCL中如何表示一个三维数据点,以及如何加载和保存点云
    • 3D点云处理:PCL常用数据类型及IO说明
  2. 当加载了点云后,我们可能很好奇点云是什么状态,这时候,您可以通过下面的方法查看我们加载的点云:
    • 3D点云处理:显示点云
      • 显示不同的颜色;
      • 显示点云的法向量;
      • 显示点云的位姿等;
  3. 到此时,我们已经完成了最基本的点云加载和显示,这时候,我们可以像处理2D图像一样,通过pcl对点云进行一些简单的滤波操作(滤除噪声);如:直通滤波、高斯滤波、双边滤波、快速双边滤波、统计滤波、条件滤波、半径滤波、中值滤波等;
    • 3D点云处理:直通滤波器&高斯滤波器
    • 3D点云处理:双边滤波器&快速双边滤波器(附源码)
    • 3D点云处理:统计滤波器&条件滤波器(附源码)
    • 3D点云处理:半径滤波器&中值滤波器

      项目中实际使用(至少对我来说)最多的还是“统计滤波器”;以及“法向滤波器”:3D点云处理:基于点云法向的点云滤波
      另外“条件滤波器”可以演化为3D ROI(如2D ROI)提取感兴趣的点云(提速);

  1. 由于三维数据相对二维数据的数据量大,处理起来比较耗时,因此,需要适时的对点云进行一些预处理降低点云数量,如上述的滤波,以及此处的预处理:降采样(体素滤波器、均匀降采样等) + 感兴趣区域(上述的“条件滤波器”

    • 3D点云处理:基于八叉树的点云降采样
    • 3D点云处理:体素滤波&均匀采样
      • 上述PCL提供的方法中,存在的弊端是:降采样后的点与实际的点不在重合,因此,对其进行了优化,保证降采样后的点与原始点保持重合;如下:
    • 3D点云处理:体素滤波器&均匀采样优化

     

你可能感兴趣的:(3D视觉,学习,3d,c++)