ICP 算法

ICP 算法是一种点云到点云的配准方法。

在SLAM中通过空间点云的配准(可以通过相机或者3D激光雷达获取点云数据),可以估计相机运动(机器人运动,旋转矩阵R与平移向量t),累积配准,并不断回环检测,可以保证机器人定位的精度。

想象三维空间中两组点云PL(参考点) 以及 PR(目标点):

1. 在PL和PR中寻找最近点(对于稀疏点云的微小运动,寻找欧拉空间最近点;对于密集点云或者较大运动,可能需要寻找描述子之间距离的最近点),这一步,不一定需要配准所有的点;

2. 通过初始配准的两个点集,计算各自点集重心的三维坐标 L0 与 R0, 通过这两个点的三维运动计算出相机运动初值;

  // 或者寻找R,t,使得目标点集和参考点集之间距离的最小二乘最小;

3. 由于初值匹配比较粗糙,通过初值变换获取的 PR‘ 与真实的 PR点集之间存在误差。迭代的目的就是减小这个最小二乘的误差,直到小于阈值或者达到一定迭代次数。

其目的是通过测量数据,获取机器人三维位姿变换的准确值。其中数学核心是奇异值分解,在常见的PCL库中有实现。并且ICP有不同的具体实现方法,例如利用kd树实现subset与subset之间的配准,提高效率。

时间: 2024-11-07 02:44:58

ICP 算法的相关文章

ICP算法(Iterative Closest Point迭代最近点算法)

标签: 图像匹配ICP算法机器视觉 2015-12-01 21:09 2217人阅读 评论(0) 收藏 举报 分类: Computer Vision(27) 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在做点云匹配,需要用c++实现ICP算法,下面是简单理解,期待高手指正. ICP算法能够使不同的坐标下的点云数据合并到同一个坐标系统中,首先是找到一个可用的变换,配准操作实际是要找到从坐标系1到坐标系2的一个刚性变换. ICP算法本质上是基于最小二乘法的最优配准方法.该算法重复进行选

ICP算法使用遇到的问题

这几天在学习数据关联的方法,本来想使用ICP算法进行距离测距数据的配准,但是用的过程中出现问题,配的不准,而且偏差更大了. 红色的和黄色的2维激光点进行ICP配准,但将变换矩阵和黄色进行乘之后偏差更大了.怀疑是因为两个点集只有部分数据重合,而ICP算法最好是点能一一对应. 之后使用PCL进行点集匹配测试,出现同样的问题. 于是我自己构造了一个数据,将A点集进行一个刚体变换,之后用ICP配准,再进行对比,发现算法可以配准的很好,应该是部分点集重合造成的.

困境:经典ICP算法的一些问题

因为学校项目的原因,可能要实现一个三维场景重建的功能,然后从经典的ICP算法开始,啃了很多文档,对其原理也是一知半解. 迭代最近点算法综述 大致参考了这份文档之后,照着流程用MATLAB实现了一个简单的ICP算法,首先是发现这份文档中一个明显的错误, 公式6 求两个点集的协方差,其中(Pi-p)和(Qi-p')分别求两个点集的各点与重心的差,都是(3*1)向量,这是不能相乘的,根据后文推断,此物的结果应为(3*3)矩阵,所以我大(zuo)胆(si)的改为(Pi-p)' * (Qi-p'),做一次

ICP算法及其变种

Iterative Closest Point (ICP) [1][2][3] is an algorithm employed to minimize the difference between two clouds of points. 分类法(1) •全局匹配算法 Globe •局部匹配算法Local 分类法(2) •基于点的匹配 •基于特征的匹配 •点特征 •VPF •FHPF •… •基于线特征 •"Algorithms for Matching 3D Line Sets."

ICP算法(迭代最近点)

参考博客:http://www.cnblogs.com/21207-iHome/p/6034462.html 最近在做点云匹配,需要用c++实现ICP算法,下面是简单理解,期待高手指正. ICP算法能够使不同的坐标下的点云数据合并到同一个坐标系统中,首先是找到一个可用的变换,配准操作实际是要找到从坐标系1到坐标系2的一个刚性变换. ICP算法本质上是基于最小二乘法的最优配准方法.该算法重复进行选择对应关系点对, 计算最优刚体变换,直到满足正确配准的收敛精度要求. ICP 算法的目的是要找到待配准

PCL学习笔记二:Registration (ICP算法)

原文:http://blog.csdn.net/u010696366/article/details/8941938 PCL Registration API Registration:不断调整,把不同角度的3D点数据整合到一个完整的模型中.它的目的在于在一个全局坐标系下找到不同视角的定位与定向(两个视角交叉部分重叠完好为最优).这就是KinectFusion论文中所提到的ICP( Iterative Closest Point )算法.给定输入数据集,首先做一个估计,然后通过旋转和平移变换一个

NDT(Normal Distribution Transform) 算法(与ICP对比)和一些常见配准算法

原文地址:http://ghx0x0.github.io/2014/12/30/NDT-match/ By GH 发表于 12月 30 2014 目前三维配准中用的较多的是ICP迭代算法,需要提供一个较好的初值,同时由于算法本身缺陷,最终迭代结果可能会陷入局部最优.本文介绍的是另一种比较好的配准算法,NDT配准.这个配准算法耗时稳定,跟初值相关不大,初值误差大时,也能很好的纠正过来. 绪论: 采样: 3d点云数据在离相机近处点云密度大,远处密度小,所以在下采样时采用统一的采样方法还是会保留密度不

机器视觉之 ICP算法和RANSAC算法

临时研究了下机器视觉两个基本算法的算法原理 ,可能有理解错误的地方,希望发现了告诉我一下 主要是了解思想,就不写具体的计算公式之类的了 (一) ICP算法(Iterative Closest Point迭代最近点) ICP(Iterative Closest Point迭代最近点)算法是一种点集对点集配准方法,如下图1 如下图,假设PR(红色块)和RB(蓝色块)是两个点集,该算法就是计算怎么把PB平移旋转,使PB和PR尽量重叠,建立模型的 (图1) ICP是改进自对应点集配准算法的 对应点集配准

ICP(IterativeClosestPoint)

含义: IterativeClosestPointNonLinear is an ICP variant that uses Levenberg-Marquardt optimization backend. The resultant transformation is optimized as a quaternion. The algorithm has several termination criteria:(终止条件) Number of iterations has reached