经典icp 及其一些变种
2018-02-23 15:58
141 查看
1 经典ICP
ICP的目的很简单,就是求解两堆点云之间的变换关系。怎么做呢?思路很自然,既然不知道R和t(针对刚体运动),那我们就假设为未知量呗,然后通过某些方法求解。下面我们来看看具体怎么求的~没办法,要把问题描述清楚,数学是少不了的了。假设有两堆点云,分别记为两个集合X=x1,x2,...,xm和Y=y1,y2,...,ym(m并不总是等于n)。然后呢,我们不失一般性的,假设两个点云之间的变换为R(旋转变换)和t(平移变换),这两个就是我们要求的东西啦~那我们将求解这个问题描述成最小化均方误差:e(X,Y)=∑i=1m(Rxi+t−yi)2
经典的ICP方法对上面的优化问题的处理思路如下:
(1)初始化R 和 t
确定初始的R 和 t 的方法很多,如果什么方法都不知道,那随便赋一个R 和 t ,然后就迭代的算呀。随便给一个值从原理上来说也可以得到最终的一个结果呀,但是准不准就不知道了。相信有基本的优化概念的人都知道,初始值的选取很重要,如果初始值选的不好很容易收敛到一个局部最优解,然后局部最优解好不好那就另说了。ICP发展了这么多年了,当然有很多的方法来估计初始的R和t了,像PCL给的SampleConsensusInitalAlignment函数以及TransformationEstimationSVD函数都可以得到较好的初始估计。
(2)迭代
得到初始的估计后,接下来的步骤就顺理成章了:对于X中的每一个点用当前的R 和 t在Y中找最近的点(比如用欧式距离),然后这两个点就成了一对了~就这样,对所有的点都这么做一次,然后我们就得到了所有的匹配对了~然后呢,用每一对的坐标列一个方程,就得到一系列的方程。然后就求解最优的R和t最小化上面的误差。如此循环往复。
2 ICP变种
除了经典的ICP方法外,还有一些变种,如point-to-point的,point-to-plane的以及plane-to-plane的,那么这三种方法到底是啥呢?其实很简单,就是上面的误差函数的定义不一样而已。在上面讲经典ICP的时候,求和的每一项不就是X中的每一个点到Y中的每一个点的距离吗?那就是point-to-point了,那么将求和的每一项变成X中的每一个点到Y中的平面的距离,那就是point-to-plane了呀~类似的,如果把求和的每一项变成X中的平面到Y中的平面的距离,那就是plane-to-plane了。我们说了这么久的平面,那么平面到时是怎么定义的呢?
point-to-plane的误差函数定义为:Mopt=argminR,t∑i((R⋅xi+t−yi)⋅ni)
相关文章推荐
- 图论小结(一)包括一些最短路,最小生成树,差分约束,欧拉回路,的经典题和变种题。强连通,双连通,割点割桥的应用。二分匹配,KM,支配集,独立集,还有2-SAT。
- 经典面试题总结 —— Binary Search 及其变种
- LBP特征及其一些变种
- 聚类经典方法K-means及其变种
- 经典面试题总结 —— Binary Search 及其变种
- 一些非常经典的awk小技巧
- 二分查找及其变种总结
- 面试题09_斐波那契数列及其变种详解——剑指offer系列
- 【转载】一些经典的计算机书籍
- 收集的一些经典搞笑的话(转载)
- C/C++运行中的一些问题及其解决
- 剑指offer面试题9-青蛙跳台阶及其变种问题
- Linux一些经典书籍
- SQL的一些经典用语句[转]
- 一些经典排序算法的实现(C/C++实现)
- 程序猿的一些幽默趣闻 个个经典
- shadow map的一些变种
- VC++常用数据类型及其操作详解(非常经典,共同分享)
- 一些经典的计算机书籍
- Content Value和Cursor的一些认识及其方法的使用