点云库PCL:NDT配准时出现容器出限的问题及解决

前言

  在PCL库中,精配准除了我们最常用的ICP算法以及相关的变形算法,如GICP算法外,另外还包含了NDT算法(正态分布变换),它不需要提供较好的初值,且速度比ICP算法更为快速。

  当然,也会有着一定的缺陷:收敛域差、代价函数不连续等,NDT原理以及步骤等具体可查看 https://www.cnblogs.com/li-yao7758258/p/10705228.html,个人觉得,这篇文章写得比较详细具体。

版本

   PCL1.8.0

问题

  PCL在使用NDT(Normal Distribution Transform)对两个点云进行配准时会出现容器出限的错误。

解决方法

  在设置参数时,将体素分辨率调大,从而能使每个体素中能有六个以上的点。

原因解析

  从原理角度分析:体素分辨率太小,使得对目标点云分割时每个体素中达不到计算协方差矩阵的点数。

  从代码角度分析:在ndt.h中有着一个变量为target_cells_,它的类型为VoxelGridCovariance,此类的作用为体素划分,且计算每个体素内点的协方差以及形心。

  当我们分辨率设置过小时,每个体素内的点云数均无法达到设置的min_points_per_voxel_,从而使target_cells_为空,无法对其初始化,导致target_cells_中的维度变量Dim_为0。以至于在kdtree_flann.hpp中,vector容量初始化为0,在后来的将点云转换到vector时,vector出限。    

  

原文地址:https://www.cnblogs.com/pw123/p/11329041.html

时间: 2024-10-20 01:54:56

点云库PCL:NDT配准时出现容器出限的问题及解决的相关文章

python3.5.4安装时老是弹出api-ms-win-crt-runtime-|1-1-0.dll错误的解决方法

本来python安装的方法简单,只要安装前勾选添加到环境变量,然后继续安装就能成功,但是有些电脑安装总是会出这样或那样的问题. 我的电脑win7 64位的系统,之前系统是32位的,后面重装了一次系统,一开始的时候安装了一个32位的python3.5.4,安装完后提示api-ms-win-crt-process-l1-1-0.dll错误,于是在网 上下载了一个并注册,然鹅并没有解决问题. 因为我公司的电脑也是64位的,用的也是这个安装包,一下就安装好了,有点想不通,于是在python官网上下载了一

新时代的“网盘模型”——够快云库

2013年12月18日,对于够快网络科技有限公司来说,是一个意义非凡的日子.这一天,是够快正式发布其颠覆性产品--"够快云库"的日子.够快云库不同于其他云库,它具有非常明显的两大优势: 1)够快云库采用一种叫"索引同步"的技术,可以让每个独立的云库,实现同步结构和文件的基本属性,而不用像Dropbox一样同步文件本身.够快云库的这种同步方式操作非常迅速,且不占用本地空间,真正做到本地硬盘"零"占用. 2)够快云库的智能算法也帮助用户缓存了一些常用

点云NDT配准方法介绍

三维配准中经常被提及的配准算法是ICP迭代的方法,这种方法一般般需要提供一个较好的初值,也就是需要粗配准,同时由于算法本身缺陷,最终迭代结果可能会陷入局部最优,导致配准失败,往往达不到我们想要的效果.本文介绍的是另一种比较好的配准算法,NDT配准.所谓NDT就是正态分布变换,作用与ICP一样用来估计两个点云之间的刚体变换.用标准最优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.这个配准算法耗时稳定,跟初值相关不大,初值误差大时,也能很好

《VS2010(X64)&PCL点云库学习》Part 2 A simple test of PCL in MFC

<VS2010(X64)&PCL点云库学习>Part 2 A simple test of PCL in MFC                                                                             本文主要介绍如何将PCL的控制台程序移植到MFC中,基本内容还是按照上一篇PCL配置博文来继续讲解的. 1.新建MFC程序 2.应用程序类型对话框中,勾选基于对话框,一直下一步,或者直接点击完成. 3.配置环境:主要包括添加

《PCL点云库学习&amp;VS2010(X64)》Part 8 PCL1.72(VTK6.2.0)可视化例程

Part 8 PCL1.72(VTK6.2.0)可视化例程                                                                                                PCL1.72 VTK6.20 控制台程序 加入.props属性表文件 1.Cloud_Viewer Cloud_Viewer.cpp代码: #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRendering

Windows下安装PCL点云库

原文链接:http://blog.csdn.net/u012337034/article/details/38270109 简介: 在Windows下安装PCL点云库的方法大概有两种:其一,all-in-one-installer,这个只有两个版本1.5.1和1.6.0,而且顾名思义,安装方法极其简单,这里就不多做介绍了:其二,build PCL out of source,这里我们可以使用PCL的各种版本,而且随着PCL的更新,我们也可以不断的update.接下来我将会详细介绍如何独立安装PC

互联网的创举之云库与微信相结合

近日,够快网络科技又有大动作--将微信企业号与云库相结合,很好得利用的微信的PAAS平台来推广够快云库这一新推出的功能. 够快管理层对微信企业号一直不温不火的原因做了深入了解,他们认为之前国内的SAAS服务没有太火的原因,除了市场需要培养以外,很重要的一个原因是缺少一个具有公信力的PAAS平台.做为企业,最不愿意的就是在不同的应用之间来回切换帐号.现在,微信企业号解决了这个问题,对我们国家大力推进SAAS服务来说将是非常有意义的.云库与微信结合,具有两大好处: 1)学习成本大幅下降.因为做为商务

ios ASIHttpRequest库进行DELETE操作时delete带有参数表单的使用方法

1,普通的DELETE只需加上下述一句code: [request setRequestMethod:@"DELETE"]; 2,附带有参数表单的情况(一次删除请求): ASIFormDataRequest *request; NSURL *baseURL = [NSURL URLWithString:@"http://www.baidu.com/xx/"]; request = [ASIFormDataRequest requestWithURL:baseURL]

Xcode5.1 64位添加第三方库真机测试时出现 Apple Mach -O Linker Error

今天添加微信分享的时候添加微信的静态文件和我以前添加的Core-Plot第三方库发生了冲突, 出现一大堆的 "Apple  Mach  -O Linker Error" , 错误分析: 这次出现错误的原因是 Architectures不统一造成的,微信的APi要求用32位编译,而第三方库是包含了64位. 解决方法: 解决的原理很简单 ,就是把Architectures 统一,把项目的Architectures和所引用的第三反库的(如果还有pod进来的pod内的targets的内容也要修