Iterative Closest Point (ICP) [1][2][3] is an algorithm employed to minimize the difference between two clouds of points.

点云匹配分类法(1)

•全局匹配算法 Globe
•局部匹配算法Local

Salvi, J. (2007). "A review of recent range image registration methods with accuracy evaluation." Image and Vision Computing 25(5): 578-596.
Mellado, N. and D. Aiger (2014). "SUPER 4PCS Fast Global Point cloud Registration via Smart Indexing."

点云匹配分类法(2)

•基于点的匹配
•基于特征的匹配
•点特征
•VPF
•FHPF
•…
•基于线特征
•"Algorithms for Matching 3D Line Sets."
•"Line segment-based approach for accuracy assessment of MLS point clouds in urban areas.“
•Poreba, M. and F. Goulette (2015). "A robust linear feature-based procedure for automated registration of point clouds." Sensors (Basel) 15(1): 1435-1457.

Coarse to fine registration粗-精过程

粗配的目的:提供刚体变换初始估计

Salvi, J., et al. (2007).

改进ICP算法

Besl, P. J. and N. D. Mckay (1992). "A Method for Registration of 3-D Shapes." IEEE Transactions on Pattern Analysis and Machine Intelligence 14(2): 239-256.
Siegwart, R., et al. (2015). "A Review of Point Cloud Registration Algorithms for Mobile Robotics." Foundations and Trends in Robotics.

•加快搜索效率
•K-D树
•Voronoi图
•不同的距离量测方式
•点到点
•点到线 PLICP
•Censi, A. (2008). "An ICP variant using a point-to-line metric." IEEE International Conference on Robotics & Automation. IEEE,: 19-25.
•CSM(Canonical Scan Matcher)源码     http://censi.mit.edu/software/csm/
•点到面
•Low, K.-L. (2004).   
•面到面 GICP

ICP算法求解

•Closed Form
•SVD
•Unit Quaternions单位四元数
•The ICP error function minimization via orthonormal matrices
•Dual Quaternions
•数值解法
•LM算法 (Levenberg-Marquardt algorithm)
•Jerbić, B., et al. (2015). "Robot Assisted 3D Point Cloud Object Registration." Procedia Engineering 100: 847-852.
•点到面 线性最小二乘法
•Low, K.-L. (2004). "Linear Least-Squares Optimization for Point-to-Plane ICP Surface Registration."

问题

•观测误差
•部分重叠
•离群点Outlier、噪声(经常是错误点或者异常点)
•不满足一一对应的条件

解决方法

•剔除 Rejection
•PCL类库中采用
•权重方法
•稳健方法

Bergström, P. and O. Edlund (2014). "Robust registration of point sets using iteratively reweighted least squares."
H. Pottmann, S. Leopoldseder, and M. Hofer. Simultaneous registration of multiple views of a 3D object. ISPRS Archives 34/3A (2002), 265-270.
Andreas Nüchter(2008).3D Robotic Mapping-The Simultaneous Localization and Mapping Problem with Six Degrees of Freedom


标准ICP

标准ICP算法是最早提出的基于点-点距离的算法,另外一种是基于点-面的算法,由chen提出,好多文献所说的恶Chen's Method。

标准的ICP算法需要粗配,满足距离足够近这一条件之后才能进行精确配准。

IDC

The idc algorithm does a point-to-point correspondence for calculating the scan alignment. The correspondence problem is solved by two heuristics: the closest point rule and the matching range rule. Furthermore, a formula is provided for calculating an error covariance matrix of the scan matching

Trimmed ICP 

在每次迭代的过程中,根据距离残差排序,按照重叠率计算保留的点数。根据保留的点进行计算变换。该方法可以很好的处理部分重叠问题。CC中采用该方法实现,作者的原文还提到了一种自适应计算重叠率的方法。推荐!

稳健ICP

由于Outliner的存在,即观测误差和离群点存在,以及部分重叠问题,粗配之后的数据再进行精配的过程中仍然存在不稳健的问题(Robust问题),因此提出了稳健ICP方法。如SICP,IRLSICP

MBICP

GICP 泛化的ICP,或者叫Plane to Plane ICP

EM-ICP

NICP

GO-ICP

...

一般的ICP算法(上述的)是局部优化算法,还存在全局优化的问题,即不需要单独粗配,直接一步到位。很多的ICP算法都是稳健的方法,但是并不是全局的优化方法。全局的方法有Super4PCS、三点Ransac等。

http://www.mathworks.com/matlabcentral/fileexchange/12627-iterative-closest-point-method

http://www.mathworks.com/matlabcentral/fileexchange/27804-iterative-closest-point

http://projects.asl.ethz.ch/datasets/doku.php?id=laserregistration:laserregistration

点云匹配和ICP算法概述的更多相关文章

  1. PCL点云库:ICP算法

    ICP(Iterative Closest Point迭代最近点)算法是一种点集对点集配准方法.在VTK.PCL.MRPT.MeshLab等C++库或软件中都有实现,可以参见维基百科中的ICP Alg ...

  2. 三维点集拟合:平面拟合、RANSAC、ICP算法

    ACM算法分类:http://www.kuqin.com/algorithm/20080229/4071.html 一: 拟合一个平面:使用SVD分解,代码里面去找吧 空间平面方程的一般表达式为: A ...

  3. [PCL]5 ICP算法进行点云匹配

    上一篇:http://www.cnblogs.com/yhlx125/p/4924283.html截图了一些ICP算法进行点云匹配的类图. 但是将对应点剔除这块和ICP算法的关系还是没有理解. RAN ...

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

    标签: 图像匹配ICP算法机器视觉 2015-12-01 21:09 2217人阅读 评论(0) 收藏 举报 分类: Computer Vision(27) 版权声明:本文为博主原创文章,未经博主允许 ...

  5. ICP 算法

    ICP 算法是一种点云到点云的配准方法. 在SLAM中通过空间点云的配准(可以通过相机或者3D激光雷达获取点云数据),可以估计相机运动(机器人运动,旋转矩阵R与平移向量t),累积配准,并不断回环检测, ...

  6. icp算法基本思想

    Icp基本思想参考资料:http://www.cnblogs.com/jian-li/articles/4945676.html ,包括点-点,点-面的各种icp变种 Icp算法就是两个点云X.Y之间 ...

  7. ICP算法(迭代最近点)

    参考博客:http://www.cnblogs.com/21207-iHome/p/6034462.html 最近在做点云匹配,需要用c++实现ICP算法,下面是简单理解,期待高手指正. ICP算法能 ...

  8. 【转】ICP算法(Iterative Closest Point迭代最近点算法)

    原文网址:https://www.cnblogs.com/sddai/p/6129437.html.转载主要方便随时可以查看,如有版权要求请及时联系. 最近在做点云匹配,需要用c++实现ICP算法,下 ...

  9. ICP算法使用遇到的问题

    这几天在学习数据关联的方法,本来想使用ICP算法进行距离测距数据的配准,但是用的过程中出现问题,配的不准,而且偏差更大了. 红色的和黄色的2维激光点进行ICP配准,但将变换矩阵和黄色进行乘之后偏差更大 ...

随机推荐

  1. lastLogon和lastLogonTimestamp的区别

    如何得到用户最近一次登陆域的时间?在Windows2003域中有2个属性:lastLogon和lastLogonTimestamp,那么这2个属性到底有什么作用呢? lastLogon属性实时更新用户 ...

  2. $_ 与 $PSItem

    PowerShell 3.0 中的$PSItem 此文章于2012年11月4日发表在PowershellPowershell小技巧并加以Powershell 3.0管道的标签 by Mooser Le ...

  3. java list<int>报错

    请问一下在java中的List<int> list=new List<int>();这条语句的两个int处会报错,请问为什么? 答: 两处错误:第一:List是接口,需要实现类 ...

  4. 【转载】在LoadRunner向远程Linux/Unix执行命令行并收集性能数据

    前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”,当然连接之后的故事由你主导. 今天要讲的,是一个非Java版本.是对“在LoadRunner中执行命令行程序之:pope ...

  5. P1032 字串变换

    最近在练习bfs,看到了02年提高组的这个题,顿时来了兴致,联想到前一阵子的八数码问题,具体就是使用一个字符串来存储状态,把他存储到一个图中,然后开始bfs,如果10步之内无法完成就剪枝,同时使用哈希 ...

  6. android studio无法关联源码

    1.查看源码的时候报这个, 说找不到API 23的源码 2.本地的SDK 3.google  stackoverflow 给出解决方案 http://stackoverflow.com/questio ...

  7. android ArrayAdapter 如何动态更改数据

    在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示,使用adpater与listview捆绑后,有时希望在程序使用过程中能动态的更改l ...

  8. svn截图

        一.合并一个范围的版本 此类型应用最为广泛,主要是把分支中的修改合并到主干上来.在主干上点击右键选择合并,然后选择合并类型:合并一个范围的版本.合并的源URL填写的是要合并的分支的URL,待合 ...

  9. 数据库留言板例题:session和cookie区别

    session和cookie区别: <?php session_start(); //session_start();必须写在所有的php代码前边 ?> <!DOCTYPE html ...

  10. 低功耗蓝牙4.0BLE编程-nrf51822开发(4)

    蓝牙是一种短距离的通讯方式,它设计的意图是取代电子便携设备之间的有线电缆连接.蓝牙的主要特性是健壮性.低功耗.成本低,它工作于免费的2.4无线传输频段. 蓝牙有两种技术系统:基本速率Basic Rat ...