一个精简的开源点云库

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

模块划分

点云基本处理模块

(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,群主也没有细读代码,希望有兴趣的小伙伴可以尝试着自己运行,并且能够深入理解其中的代码,能够从这一套代码中独立出一个算法来,并且有所改进,这应该是是很多小伙伴想做的事情。这也是为了解答前几天在微信群里提问如何改进点云算法的问题吧,期待小伙伴们能够积极主动的邮件与我交流,相互学习。

(0)

相关推荐

  • opencv-开源计算机视觉python库

    OpenCV(开源计算机视觉库:opencv.org)是一个开放源代码库,其中包含数百种计算机视觉算法.该文档介绍了所谓的OpenCV 2.x API,与基于C的OpenCV 1.x API相比,它实 ...

  • 【PCL入门系列之一】点云库PCL简介

    本系列文章首先介绍什么是PCL以及PCL的功能.之后将讲解如何在Linux上安装PCL,为下一步测试.编程.开发做准备.后续的文章将对PCL官网上给出的教程进行解释.编译.调参等辅助学习,期间还会涉及 ...

  • Python图像处理入门

    图像处理,顾名思义,可以简单地定义为利用计算机算法(通过代码)对图像进行分析.操作的处理.它包括如下不同的几个方面:图像的存储.表示.信息提取.操作.增强.恢复和解释.本章将对图像处理技术的各个方面进 ...

  • 【PCL入门系列之二】PCL模块介绍(一)

    第一期内容中我们了解到,PCL官网上将PCL分为十四个功能模块(滤波器.特征.关键点.配准.Kd树.八叉树.分割.采样一致性.表面.范围图像.输入输出.可视化.常用.搜索),本期我们将粗略介绍部分模块 ...

  • 浙江宁波有一个古村依山傍水,云起时如人间仙境,秋天居然桃花开

    浙江省宁波市奉化区南部有一个乡村,因为有清溪.古寺.青山和桃花,被人们称为如陶渊明笔下的诗意田园,不仅被评为奉化市隆村村,还被评为宁波市文明村.我去这里游玩时正好赶上阴雨天,雨时下时住,连绵的山峦之间 ...

  • 一个动作敲开全身气血开关!气血足了,精神抖擞,人更健康

    一个动作敲开全身气血开关!气血足了,精神抖擞,人更健康

  • 中国象棋云库

    中国象棋云库是款在电脑端进行使用的象棋工具:它也就是大家经常说的pc端,让您可以轻松的查询到各种类型的历史走法,而且还可对象棋的规定进行查看,可以对先手进行设置,让您对残局的类型进行选择学习:不管是新 ...

  • 免费学习象棋神器象棋云库

    免费学习象棋神器象棋云库

  • 这个残局,飞哥和云库软件PK,一胜一和!

    这个残局,飞哥和云库软件PK,一胜一和!

  • 马双兵对马双士,百分之九十九的棋手杀不了云库软件!

    马双兵对马双士,百分之九十九的棋手杀不了云库软件!

  • 中国象棋云库查询

    中国象棋云库查询 国际象棋 English 输入FEN 复制FEN 设置URL 初始局面 空白局面 翻转棋盘  黑方走棋  红方走棋  棋规裁定  隐藏结果  自动走黑  自动走红 自动走棋策略  最 ...

  • 中国象棋云库查询(象棋云库查询开局在线)

    制作和使用and下载等等NO答非所问ING 一:制作 1,下载PGN棋谱,全部放在一个文件夹里面,命名为"棋谱目录". 2,将命名为"棋谱目录"的文件放到象棋奇 ...

  • 国际象棋云库说明

    国际象棋云库说明 简介 国际象棋云库(简称'云库')是一个基于分布式计算和存储的国际象棋数据库,包含开局库和残局库. 不同于传统的棋谱统计方式,云库使用软件对局面进行分析.拆解,克服了软件打分波动及由 ...