pcl中ndt运行速度慢的坑

点云处理库pcl中有个配准算法ndt (NormalDistributionsTransform),在某些版本的pcl中运行很慢,除了通过pclomp并行计算提速,还可能是调试模式的坑。

版本pcl-1.12 (2019)

一、编译模式

        如果按照官网操作编译,这个版本编译完后,处理约5万点云的点云配准需要1分钟。

(这里不提硬件平台,也不提为什么不降采样,就当我们需要处理这个规模。初值距离真值大概0.8米远,旋转3度,大概9~10次迭代,大家可参照此对比时间)

        于是寻找了下文 (二)中的ndt_omp 通过并行计算加速,同样规模的处理耗时3~4秒,貌似可用哈。而并行计算占用很多cpu资源使得对实用性产生怀疑,但ndt论文中的几个例子(相似数量级别的规模)速度快于icp等配准算法。使用matlab自带的ndt算法,大概耗时0.4秒,pcl-1.12这是怎么了?

        其实是此版本pcl的一个坑,原代码留了不少调试功能,在 CMakeLists.txt 中加入:

SET(CMAKE_BUILD_TYPE "Release")

        删除build文件夹后重新编译,此时原版pcl的ndt算法耗时0.5秒,使用omp_ndt并行计算耗时0.06s,达到可实时运行的水平。

二、并行计算参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值