Main Idea
本文提出了一种不依靠descriptor计算出两个点云的相对,的方法。输入两片点云,分别从两片点云中随机抽取点数都为的两片小点云。运用纯数学的方法估计出correspondences,算出,。然后用ICP去refine这个,。经过多次随机抽取生成多个,,借鉴RANSAC,利用inlier ratio计算出终止条件,最终得出能够使最多的点匹配的那个,(全局重投影误差最小)
可能问题
- 根据本文原理,这个方法虽然时间上复杂度不会太高,但是对于real data中,overlap率比较小的场景可能不会太好。
- 由于使用重投影误差衡量R,t好坏,对于有大量地板墙壁等平面的场景,很容易产生很多错误的correspondences。地板墙壁产生的R,t可能会被地板墙壁这种大量的弱特征“赞同”,而淹没像椅子桌子这种少量强特征提出的“异议”。不过这也是很多registration method 的问题,包括哪些learning的方案。
具体方法
输入两片点云,记录它们的correspondences,事先不知道。除了个3D坐标外没有任何其他信息。那么就先生成条线段,用这些线段描述点云结构。因为“点云中的线段经过,刚体变换之后长度依然不变”,取中的一条线段,中一条线段,如果那么两条线段长度若相差很多,那么它们包含的4个点就肯定没有两对correspondences,最多一对。由于噪声,就算有两对匹配点构成的两条线段的长度也不会完全为0,那么我们就用计分机制,希望这个长度差越小越好,长度差越大,得分越低,长度差大于一定threshold就直接计0分。用作为记录score的矩阵。即:其中为
然后用最优化的思想,希望找到一个使得这些correspondences得到的score越多越好。把 展开成向量,
令把上述问题等价转换为:
其中(7b),(7c),(7d),(5e)可以保证(5b),但是由于Y的rank1约束,这个问题是非凸的,我们把(7b)稍微放松一些,得到:
只要求Y半正定,不要求rank1,那么这样的话,就不能保证是二元的了,甚至,但是希望Y和原来的解越接近越好,所以多加几个约束
约束(9)是保证同一个点不能和多个点匹配
约束(10)是保证线段不匹配的那么它们包含的4个点就肯定没有两对correspondences(要么ab不配,要么cd不配)
PS:这个线段是有向的,就是说,和是分开算的。,考察和这两对是不是correspondences,而,是考察和。因为中的每一个点都是和中独立的一行。
(9),(10)这两个约束是线性的((9)也是线性?),所以原问题还是一个凸优化。最终的问题是:
整个问题求解后得到最优解,前面说了,用了semidefinite relaxation后,优化问题的解已经不能保证是0-1矩阵了,但是我们需要一个permutation matrix,也就是,所以再次构建一个优化问题(下图),找到与最接近的,这里的是两个矩阵的inner product。一些简单的数学可以证明,该问题的最优解矩阵的每一行,就是把的每一行最大值赋值1,其他为0,得到的0-1矩阵。然后以中的值为score,选出最大的m个保留为1,其他1都置0。因为为节约时间,只保留m个correspondences,又希望最大化
整个算法流程如下:
上图中的T是终止准则,这里是模仿RANSAC的思想,假设inlier ratio是,经过Alg.2的第4步,只有m个correspondences保留,是T次都没有成功选到m个correspondences的概率。
Result
这是synthetic data上的,点云S和D虽然角度不同,但是overlap率是非常高的。这里的“overlap实验”是固定点云S,然后减少D的点数做的。但是实际上,D中有的点,S中也基本都有。
real data 实验用的是Redroom,可以看到,数据集本身的overlap率还是挺高的。所以实际上文中缺乏“真正意义上的low overlap”的实验。