专栏名称: 泡泡机器人SLAM
SLAM的最新资讯,干货内容。
目录
相关文章推荐
商学院  ·  新刊热卖 | ... ·  昨天  
商学院  ·  新刊热卖 | ... ·  昨天  
51好读  ›  专栏  ›  泡泡机器人SLAM

【泡泡机器人翻译专栏】视觉里程计——第二部分:匹配、鲁棒、优化和应用(下)

泡泡机器人SLAM  · 公众号  · 机器人  · 2017-03-30 06:33

正文

【泡泡机器人翻译专栏】视觉里程计——第二部分:匹配、鲁棒、优化和应用(上)中,我们翻译了 特征选择和特征匹配 ,本节 翻译 离群点移除 误差传播 相机位姿优化 等余下内容。


2 离群点移除

匹配好的点云通常会被离群点污染,也就是错误的数据关联。离群点出现的可能原因是图像噪声,遮挡,特征检测子或描述子的数学模型没有处理到的视角和光照变化。比如,大部分特征匹配技术都假定线性光照变化,纯相机旋转和缩放,或仿射形变。然而,这些只是数学模型,估计了现实中复杂的多的状况(图像饱和,透视形变,运动模糊)。如果需要相机运动准确地估计,那么移除离群点就非常重要。在大部分视觉里程计中移除离群点最需要谨慎处理。图 6 显示了移除离群点前后的视觉里程计结果。

6 :之前估计的视觉里程计轨迹与移除离群点之后的对比。

2.1 RANSAC

RANSAC (RANdom SampleConsensus 随机采样一致算法)

离群点去除算法有效地使用了运动模型的几何约束。鲁棒估计方法,比如 M 估计,数据删除,外部匹配、离群点去除,都可以使用,只有在离群点相对较少的情况下才有效。在离群点出现时,模型估计的标准方法是 RANSAC

RANSAC 的核心思想是随机提取数据点计算模型的假设前提,再在其他数据点中验证这个假设。如果其他数据都一致验证这个假设,它就是一种有效方案。对于视觉里程计中的两视图运动估计,估计的模型是两个相机位置间的相对运动(旋转和平移)和用于候选特征匹配的数据点。通过计算点到极线的距离可以找到满足前提条件的内点。点到对极线的距离通常通过一阶估计计算 --- 称为 Sampson 距离 --- 这样效率更高。另外一种点到对极线的距离计算方法是论文 36 提出的直接误差测量。直接误差测量图像特征和对极平面的夹角。作者声称直接误差对全景相机和广角相机非常有效,对一般的相机也同样有效。

RANSAC 的框架如算法 1 所示。

算法 1 视觉里程计,从 2D 2D 的对应。

1初始化: A 是一组 N 个特征的对应关系

2重复以下步骤:

2.1) A 中随机选取一组点 s

2.2) 给这些点适配一个模型

2.3) 计算所有其他点到这个模型的距离

2.4) 构建内点集合(比如,计算到模型距离 的点的数量)

2.5) 存储内点

2.6) 迭代直到达到最大的迭代次数

3选择数量最多的一组内点作为方案

4用所有内点估计模型。


通过计算等式 1 得出子集数量 N (迭代次数)以确保可以找到一个正确的方案:

其中, s 是模型中数据点的数量, e 是离群点占数据点的百分比, p 是要求的成功的概率。考虑到鲁棒性,在很多实际操作中, N 通常乘以 10 RANSAC 更高级的执行方法是在迭代的过程中,对离群点分数比值进行估算。

如上所示, RANSAC 是一种概率方法,不同的方法有不同的解决方案、具有不确定性;然而,当迭代的数量增加时,方案会趋向稳定。


2.2最小模型参数法

7. RANSAC 的迭代次数与离群点分数比值的对比

如图 7 所示, N 是数据点数量 s 次方指数,用于估计模型。因此,使用模型的最小参数法非常有必要。在第一部分中,曾经讲到过对未标定的相机使用 8 点法解决方案。尽管也可以用于标定过的相机,但当场景点共面时, 8 点算法会失效。不过,当相机标定过后, 6 自由度运动模型可以从最少 5 点对应关系中得到,解决这一问题的方案是 1913 年论文 37 提出的。几种最小 5 点解决方案后来也有很多人提出,但最有效的是论文 39 的方案,论文 41 提出过,后来论文 42 修正过。在这之前, 6 点, 7 点, 8 点解决方案都广泛应用。但 5 点法更有优势,应用于平面场景中。(可以看到, 8 点和 7 点法用于未标定过的、透视模型相机。全景相机也可以使用这两种方法,相机需要标定。另外,未标定的全景相机 n 点法也有很多研究,其中 n 由镜头类型或鱼眼镜头决定。论文 48 中,对标定过的全景相机, 6 自由度运动模型可以从 2 对正对图像点中恢复。正对的图像点是它们的射线对齐但朝不同的视角方向。这也表明正对的图像点可以独立地估计出平移和旋转变换。)

尽管 5 点算法是标定相机的最小解决方案,过去几十年中,仍然有很多尝试去减小运动估计参数所需的数量。论文 49 提出了 3 点法估计已知相机方向角的情况。这种情况可以用于带有重力传感器的相机(实际上,重力矢量可以固定两个相机航向角度。)后来,论文 50 改进了这个研究, 3 点法可以用于 4 点( 3+1 RANSAC 算法。 3+1 指的是增加了一个远场景点(理论上是无穷远场景点)用于确定两个航向角。采用这个 4 RANSAC ,他们成功演示了 6 自由度的视觉里程计。论文 51 提出了最小 2 点的 6 自由度视觉里程计,从带有 IMU 的相机中得到满旋转矩阵。

在平面运动场景下,运动模型复杂度可以减少到 3 自由度,可以用论文 52 所示的 2 点参数法。对于汽车来说。论文 9 53 表明,运动模型完全由平面和圆圈表示,因此运动模型的复杂度可以降低到 2 自由度,就可以用 1 点法解决。 1 点法估计运动模型是最少的参数法,使得 RANSAC 算法非常有效率。另外,如果用直方图,选出离群点可以在很少或单一迭代中完成。论文 54 对比了视觉里程计的 5 点, 2 点和 1 点算法做了性能评估。

这里总结一下,如果相机运动没有约束,用于估计运动模型的最少点数是 5 点,应该使用 5 RANSAC (或 6 点, 7 点或 8 点)。当然,使用 5 RANSAC 6 点, 7 点, 8 点的迭代次数更少。表 1 对比了 8 点, 7 点, 5 点, 4 点, 2 点, 1 点方法中, RANSAC 算法最少迭代次数,作为模型参数 s 的等式数量。这些值可以从等式 1 中获取,假定成功的概率 p=99% ,离群点百分比 e =50%

2.3 减少RANSAC迭代次数

1 中, p=99% e =50% 5 RANSAC 需要最少 145 次迭代。然而,现实中,事情并没有这么简单。有时,离群点数量低估了,需要增加迭代次数以找到更多的内点。有时,甚至需要几千次的迭代。因此,有必要考虑加快 RANSAC 的迭代速度。最大似然估计参数统计使得对应关系的测量更可靠,增强了对假设的估计。论文 56 有进步的参数统计基于相似度对对应关系进行排序,从排在前面的点开始生成运动模型。论文 57 中的优先权 RANSAC 使用运动估计的优先计分和固定的迭代次数。论文 58 中的不确定性 RANSAC 整合了特征的不确定行,减少了潜在离群点的数量,因此强制减少了迭代次数。论文 59 中的确定性 RANSAC 方法估计了匹配正确的概率。

上面提到的所有算法都是直接从点云生成运动假设模型。相反,其他算法从汽车运动模型分布采样确定假设。

在这些所有算法中,优先权 RANSAC 是应用最多的,因为迭代次数可以预先指定,在所有的优势中,实时运行优势是最重要的。


2.4 RANSAC用最小子集,真的好吗?

考虑到运动速度,使用最小点方法绝对优于其他方法。然而,当图像匹配有很多噪声时,即使是 5 RANSAC 也可能不是最好的选择。这种情况下,用多点法而不是最小点法可以获得更好的性能(在给定精度和内点数量的情况下)。这里解释一下,比如一个 5 RANSAC 的一个迭代步骤:首先,随机选 5 个点估计运动模型;其次,用所有其他点来检验这个假定模型。如果 5 个内点有很大的图像噪声,运动估计就不精确,当测试其他点时就表现出内点很少。相反,如果用 5 点法从更多点中做运动估计,噪声的影响就会被平均掉,估计出来的模型就更精确,当然就会识别出更多的内点。因此,当计算并不需要实时处理时,在有噪声特征的情况下,使用非最小集要由于最小集。


3 误差传播

在视觉里程计中,很多单个的变换 Tk,k-1 连接起来形成机器人 Ck 的当前位姿。每个变换 Tk,k-1 都有不确定性,相机位姿 Ck 的不确定性依赖于之前变换的不确定性。具体如图 8 所示。视觉里程计计算变换 Tk+1,k 的不确定状态依赖于相机几何和图像特征。论文 3 可以看到立体相机的情况。

8.  Ck 相机位姿的不确定性由 Ck-1 (黑色的实心椭圆)的不确定性和变换 Tk,k-1 (灰色虚线椭圆)的不确定性组成。


下面将讨论不确定传播。每个相机位姿







请到「今天看啥」查看全文