一个精简的开源点云库

Cilantro是一个精简高效的点云数据处理库,编程是C++,依赖项较少,但是相比较于PCL来说,代码更有可读性,PCL中大量的使用C++高级特性,阅读起来比较难并且不易重构拆解代码,而cilantro重点放在了3D案例上,尽量减少了样板代码的数量,包含了对点云常见的操作,是一个比较简单易懂的API,所以该库可以被广泛的模块化,并且支持多维度数据进行操作,同时保证对算法模块的模块化和可扩展性。作者是一位在Magic leap公司工作的计算机视觉工程师,是马里兰大学伯克利分校的计算机科学博士,是感知机器人小组的成员。

模块划分

一个精简的开源点云库_第1张图片

点云基本处理模块

(1)一般尺寸的KD树(与PCL一样都用了第三方依赖项nanoflann)

(2)基于原始点云的曲面法向量和曲率的估计

(3)基于常用的尺寸网格的点云重采样算法

(4)主成分分析

(5)三维点云基本的IO操作(其中依赖了第三方库tinyply和Eigen库)

(6)rgbd图像对和点云之间的转换程序

点云凹凸以及空间检测模块

(1)使用了第三方库Qhull实现从常见维度点云凸多面体检测

(2)实现多个图多面体的并集检测运算

一个精简的开源点云库_第2张图片

点云分类模块

(1)依赖第三方库nanoflann实现多维度的基于距离度量的K-mean聚类算法

(2)基于第三方库Spectra的各种拉普拉斯类型的频谱聚类

(3)支持自定义的基于内核的mean-shift聚类算法

(4)支持任意点之间基于联通性的点云分割算法

一个精简的开源点云库_第3张图片

点云配准模块

支持任意对应搜索方式的ICP点云配准

(1)点对点的度量方式(通用维度)点对平面的度量(二维或者三维)或者其他任意组合下的刚性或者仿射对齐算法

(2)在点到点和点到平面度量的任意组合下,通过稳定的正则化,局部刚体或者仿射变换,实现二维或者三维点集的非刚性对齐,并支持稠密和稀疏的点云变换的算法。

一个精简的开源点云库_第4张图片

点云模型估计模块

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的库简单很多。

一个精简的开源点云库_第5张图片

此时我们找一个example运行一下。这里以可视化的函数为例

./visualizer  test.ply

一个精简的开源点云库_第6张图片

资源

三维点云论文及相关应用分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

3D目标检测:MV3D-Net

三维点云分割综述(上)

3D-MiniNet: 从点云中学习2D表示以实现快速有效的3D LIDAR语义分割(2020)

win下使用QT添加VTK插件实现点云可视化GUI

JSNet:3D点云的联合实例和语义分割

大场景三维点云的语义分割综述

PCL中outofcore模块---基于核外八叉树的大规模点云的显示

基于局部凹凸性进行目标分割

基于三维卷积神经网络的点云标记

点云的超体素(SuperVoxel)

基于超点图的大规模点云分割

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

【开源方案共享】ORB-SLAM3开源啦!

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM

易扩展的SLAM框架-OpenVSLAM

高翔:非结构化道路激光SLAM中的挑战

SLAM综述之Lidar SLAM

基于鱼眼相机的SLAM方法介绍

往期线上分享录播汇总

第一期B站录播之三维模型检索技术

第二期B站录播之深度学习在3D场景中的应用

第三期B站录播之CMake进阶学习

第四期B站录播之点云物体及六自由度姿态估计

第五期B站录播之点云深度学习语义分割拓展

第六期B站录播之Pointnetlk解读

[线上分享录播]点云配准概述及其在激光SLAM中的应用

[线上分享录播]cloudcompare插件开发

[线上分享录播]基于点云数据的 Mesh重建与处理

[线上分享录播]机器人力反馈遥操作技术及机器人视觉分享

[线上分享录播]地面点云配准与机载点云航带平差

点云PCL更多活动请查看:点云PCL活动之应届生校招群

扫描下方微信视频号二维码可查看最新研究成果及相关开源方案的演示:

如果你对本文感兴趣,请点击“原文阅读”获取知识星球二维码,务必按照“姓名+学校/公司+研究方向”备注加入免费知识星球,免费下载pdf文档,和更多热爱分享的小伙伴一起交流吧!

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入免费星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享及合作方式:群主微信“920177957”(需要按要求备注) 联系邮箱:[email protected],欢迎企业来联系公众号展开合作。

点一下“在看”你会更好看耶

你可能感兴趣的:(人工智能,计算机视觉,编程语言,深度学习,github)