一、本文贡献
不管是增量式SfM(incremental-based SfM)还是全局式SfM(global-based SfM),在具有挑战性的环境中对于提取特征产生的异常值较为敏感,基于marker的SfM有助于获得比较鲁棒的位姿估计,但是这种方法也会存在marker位姿的二义性问题,因为对于marker的位姿估计(IPPE算法)会返回两个旋转,当两种结果的重投影误差非常接近时,就会产生二义性问题。
本文就提出了一个有效的基于marker的全局式SfM方法,通过检查多个视图之间的旋转一致性解决了marker位姿的二义性问题。
(1)提出了一个评分函数来确定由marker计算的相对的相机位姿是否产生二义性,并将该评分作为权值来构造两个互补的图来区分二义性;
(2)提出了一种基于旋转一致性的图滤波方法来去除异常值并加入更多的视图;
(3)提出了一种有效的基于marker的全局式SfM方法。首先利用所提出的图滤波方法来估计相机的位姿,然后利用滤波后的图来指导特征匹配,以提高特征匹配的精度和三维重建的质量。
二、整体框架
输入无序的图像序列,首先对每一张图像进行特征提取,检测marker。
计算marker到相机的位姿,并计算重投影误差。建立两个互补图,来区分二义性问题。使用图滤波算法对两个互补图进行滤波,合并所有的子图生成滤波图。估计相机的位姿。对marker角点进行三角化,并进行BA优化相机位姿和三维角点。
使用滤波图指导特征匹配和三角化,使用全局BA和确定的相机位姿优化三维特征点。
三、关键方法
1.创建加权互补图
结点存储场景中的视图。边代表匹配的图像对。
两个加权互补图:主图Gm和候选图Gc
评分函数:对每一组marker和视图进行评分,并根据评分分配具有权重值的视图对。每个视图对的分数决定了它被放置在哪个图上。分数较低的视图对被暂时添加到Gc中。相同的视图可能会存储在两个图中,但可以连接到不同的视图。
使用两个重投影误差结果的比值作为是否存在二义性的一个标准,但不是唯一标准。也需要考虑两个结果之间的差异。差异越大,将获得更高的分数。较小的误差如果大于1,将会被自动过滤掉,以确保结果的准确性。
评分函数如下:
有了权重之后,就能判断视图对应该被放在哪个图里。
主图中的视图对之间的相对旋转:
候选图中的旋转集合(需要被进一步检查):
2.图滤波算法
在创建图的时候,有一些正确的边可能被加入到了候选图中,而错误的边可能加入到了主图中。所以需要通过图滤波方法找到主图中错误的边,和候选图中正确的边。
算法思路:
(1)根据旋转一致性,过滤掉主图中错误的边,将候选图中正确的边加到主图中。
(2)将主图分成几个连通子图。
(3)检查将要连接两个子图的边的旋转一致性。
(4)使用通过旋转一致性检查的边合并所有子图对。
旋转一致性:
两个视图之间的相对旋转可以通过视图与相机之间的相对位姿计算,也可以通过两个视图之间的其他视图与两个视图的相对旋转计算得到。假设t是i和j之间的一个视图:
通过计算两个旋转之间的角度来判断它们的区别:
理想情况下,两个旋转之间的角度应该为0。但是由于存在噪声,所以当角度小于某一个特定值,就认为视图通过了旋转一致性检查。
使用广度优先搜索去检查视图之间是否存在其他路径。
初始边滤波:
主图中的所有边都分配一个权值,权值高的边错误更小。主图中权值前40%的边直接通过旋转一致性检查,剩下的要被检查。没有通过旋转一致性检查的边暂时放到候选图中。同理,候选图中拥有正确答案的边被移动到主图中。
子图合并:
经过滤波的主图可能是一个有许多没有连接的边的非连通图,可以分成好几个连通子图。
这些边被存储在候选图中用来连接子图。
如图(a),l1和r1两个视图间不可能找到至少两个边,去做旋转一致性检查,所以使用特征匹配去做判断。
如图(b)和(c),红线是要做旋转一致性检查的。
然而,当所有的候选旋转都计算完,可能还是有一些子图不满足条件,这样所有的子图就变被合并为多个连通图,而不是完整的一个。这时候就采用含有最多边的图作为滤波图。
加入新的视图:
当滤波图创建完之后,如果说视图不包含在滤波图中,但是和滤波图中某个视图有至少一个共同的marker,那么此视图就可以重新被检查是否可以加入到滤波图中。通过计算视图之间的基础矩阵,使用八点法计算相对旋转。然后计算所有候选旋转,判断候选旋转和相对旋转之间的角度是否小于设定值,如果满足条件,视图和连接边就可以加入到主图中。由于使用特征点比使用marker耗费更多时间,如果有太多视图需要被重新注册的话,耗费的时间会过多。
3.位姿估计
位姿估计的处理方法类似于全局式SfM。
创建滤波图的最大生成树去估计所有视图的旋转平均:
平移平均的计算依赖于视图之间的相对平移和由旋转平均估计得到的绝对旋转。
相对平移的计算:
平移平均的计算:
4.三维重建
相机位姿和marker角点被用来做全局BA优化所有的位姿。
滤波图指导特征匹配。
使用固定的相机位姿,利用BA优化所有三维点。