视觉SLAM笔记(34) 三角测量


1. 对极几何约束局限性

之前 视觉SLAM笔记(33) 对极约束求解相机运动 ,使用对极几何约束估计了相机运动
也讨论这种方法的局限性

在得到运动之后,下一步需要用相机的运动估计特征点的空间位置
在单目 SLAM 中,仅通过单张图像无法获得像素的深度信息
需要通过三角测量(Triangulation)(或三角化) 的方法来估计地图点的深度


2. 三角测量

三角测量是指 通过在两处观察同一个点的夹角,确定该点的距离
三角测量最早由高斯提出并应用于测量学中,它在天文学、地理学的测量中都有应用
例如,可以通过不同季节观察到星星的角度,估计它离我们的距离
在 SLAM 中,主要用三角化来估计像素点的距离
在这里插入图片描述
考虑图像 I I 1 I I 2 ,以左图为参考,右图的变换矩阵为 T
相机光心为 O O 1 O O 2
I I 1 中有特征点 p p 1,对应 I I 2 中有特征点 p p 2
理论上直线 O O 1 p p 1 O O 2 p p 2 在场景中会相交于一点 P P
该点即是两个特征点所对应的地图点在三维场景中的位置


3. 最小二乘去求解

然而,由于噪声的影响,这两条直线往往无法相交
因此,又可以通过最小二乘去求解
按照对极几何中的定义,设 x x 1 x x 2 为两个特征点的归一化坐标,那么它们满足:

s1x1 = s2Rx2 + t: (7.24)
现在已经知道了 R, t,想要求解的是两个特征点的深度 s s 1, s s 2
当然这两个深度是可以分开求的,比方说先来看 s s 2
如果要算 s s 2,那么先对上式两侧左乘一个 x x ^1 ,得:

在这里插入图片描述
该式左侧为零,右侧可看成 s s 2 的一个方程,可以根据它直接求得 s s 2
有了 s s 2 s s 1 也非常容易求出
于是,就得到了两个帧下的点的深度,确定了它们的空间坐标
当然,由于噪声的存在,估得的 R,t,不一定精确使等式为零
所以更常见的做法求最小二乘解而不是零解


4. 三角测量的矛盾

三角测量是由平移得到的,有平移才会有对极几何中的三角形,才谈的上三角测量
因此,纯旋转是无法使用三角测量的,因为对极约束将永远满足

在平移存在的情况下,还要关心三角测量的不确定性,这会引出一个三角测量的矛盾
在这里插入图片描述

当平移 t 很小时,像素上的不确定性将导致较大的深度不确定性
也就是说,如果特征点运动一个像素 δ x δx ,使得视线角变化了一个角度 δ θ δθ
那么测量到深度值将有 δ d δd 的变化

当平移 t 较大时, δ d δd 将明显变小
这说明平移较大时,在同样的相机分辨率下,三角化测量将更精确
对该过程的定量分析可以使用正弦定理得到,但这里先考虑定性分析
因此,要增加三角化的精度,其一是提高特征点的提取精度,也就是提高图像分辨率

但这会导致图像变大,提高计算成本
另一方式是使平移量增大
但是,平移量增大,会导致图像的外观发生明显的变化
比如箱子原先被挡住的侧面显示出来了,比如反射光发生变化了,等等
外观变化会使得特征提取与匹配变得困难

总而言之三角化的矛盾:

  • 增大平移,会导致匹配失效
  • 平移太小,则三角化精度不够

如果假设特征点服从高斯分布,并且对它不断地进行观测
在信息正确的情况下,就能够期望它的方差会不断减小乃至收敛
这就得到了一个滤波器,称为深度滤波器(Depth Filter)
不过,由于它的原理较复杂,就后续再深入了解


参考:

《视觉SLAM十四讲》


相关推荐:

视觉SLAM笔记(33) 对极约束求解相机运动
视觉SLAM笔记(32) 2D-2D: 对极几何
视觉SLAM笔记(31) 特征提取和匹配
视觉SLAM笔记(30) 特征点法
视觉SLAM笔记(29) g2o


发布了217 篇原创文章 · 获赞 290 · 访问量 288万+

猜你喜欢

转载自blog.csdn.net/qq_32618327/article/details/102533172