模块划分 点云基本处理模块 (1)一般尺寸的KD树(与PCL一样都用了第三方依赖项nanoflann) (2)基于原始点云的曲面法向量和曲率的估计 (3)基于常用的尺寸网格的点云重采样算法 (4)主成分分析 (5)三维点云基本的IO操作(其中依赖了第三方库tinyply和Eigen库) (6)rgbd图像对和点云之间的转换程序 点云凹凸以及空间检测模块 (1)使用了第三方库Qhull实现从常见维度点云凸多面体检测 (2)实现多个图多面体的并集检测运算 点云分类模块 (1)依赖第三方库nanoflann实现多维度的基于距离度量的K-mean聚类算法 (2)基于第三方库Spectra的各种拉普拉斯类型的频谱聚类 (3)支持自定义的基于内核的mean-shift聚类算法 (4)支持任意点之间基于联通性的点云分割算法 点云配准模块 支持任意对应搜索方式的ICP点云配准 (1)点对点的度量方式(通用维度)点对平面的度量(二维或者三维)或者其他任意组合下的刚性或者仿射对齐算法 (2)在点到点和点到平面度量的任意组合下,通过稳定的正则化,局部刚体或者仿射变换,实现二维或者三维点集的非刚性对齐,并支持稠密和稀疏的点云变换的算法。 点云模型估计模块 ransac估计器模板及其在一般维度上的实例: (1)稳健超平面估计 (2)给定噪声对应的刚性点云配准 点云可视化模块模块 主要是依赖了第三方库Pangolin 安装与实例 安装Eigen以及 Pangolin 安装Eigen3 sudo apt-get install libeigen3-dev 安装Pangolin sudo apt-get install libglew-dev libpython2.7-dev libboost-dev libboost-thread-dev libboost-filesystem-dev -y git clone https://github.com/stevenlovegrove/Pangolin cd Pangolin mdkir build cd build cmake .. make sudo make install 安装完成后下载源码并编译 (已经fork到我们的github组群中) git clone https://github.com/dianyunPCL/cilantro.git 编译 mkdir build cd build cmake .. make 从cmake中我们可以看出来代码是比较精简的,一般性的第三方库都已经在include中,并且直接将其编译为.so文件,而我们在安装成eigen和pangolin 之后,将会编译example中的代码。所以如果想修改其中的代码,相比较PCL的库简单很多。 此时我们找一个example运行一下。这里以可视化的函数为例 ./visualizer test.ply 以上就是文章的全部内容了,群主总结一下,该库相比较PCL功能少了很多,但是基本的点云处理涵盖了,并且支持处理的点云的类型主要是PLY格式,可以配合着PCL使用,当然其中还有很多的example,群主也没有细读代码,希望有兴趣的小伙伴可以尝试着自己运行,并且能够深入理解其中的代码,能够从这一套代码中独立出一个算法来,并且有所改进,这应该是是很多小伙伴想做的事情。这也是为了解答前几天在微信群里提问如何改进点云算法的问题吧,期待小伙伴们能够积极主动的邮件与我交流,相互学习。 |
|