7.3.1 对极约束
在7.1章节中,我们得到了帧间图像之间匹配关键点的结果。迎面而来的问题就是如何在已知匹配特征点的情形下估计出相机运动。7.3讲了单目相机中,如何解决这个问题的方法:2D-2D对极几何。7.3.1引出概念,对极约束。
所谓对极几何约束,即是:在特征匹配的前提下,两匹配点的射线必然产生且只会产生一个交点。正因这样的约束关系,当我们已知两点像素坐标时,必然能推导出相机运动。
推导过程
7.3.2 本质矩阵
什么是本质矩阵?数学符号是E,就是上面的E=t^R。
这里我们已知P1,P2的前提下怎么推导得出E?
对于本质矩阵 E ,其奇异值必定是 [σ,σ,0] ,故只需要六个点(方程)就能解除E矩阵(这是解线性方程组的概念)。
由于对极约束是等式为零的约束(看上面最后一个式子),所以对 E 乘以任意非零常数后, 对极约束依然满足。我们把这件事情称为 E 在不同尺度下是等价的。但由于尺度等价性,故 E 实际上有五个自由度。E 具有五个自由度的事实,表明我们最少可以用五对点来求解 E。但是, E 的内在性质是一种非线性性质,在求解线性方程时会带来麻烦,因此,也可以只考虑它的尺度等价性,使用八对点来估计 E——这就是经典的 八点法(Eight-point-algorithm) 9-1=8。由E的特征值特性 :Σ=diag(σ,σ,0):E=UΣV(这是依据奇异值的线性变化)。
其中Rz(PI/2)表示沿 Z 轴旋转 90 度得到的旋转矩阵。同时,由于 -E 和 E 等价,所以对任意一个 t取负号,也会得到同样的结果。在上种组合下就存在四种解。因而有如下假设:
求解过程:先知E->sigma->U,V->t,R。如通过八点法求解、如通过像素点来求解F,间接得到E。
红点,即P的在相机上的投影点。投影点不变的情况下,相机的运动和旋转有如上四种方式(0点表示相机原点,蓝色横线是像素平面也代表了相机朝向)。不过幸运的是,只有第一种解中, P 在两个相机中都具有正的深度。
7.3.3 单应矩阵
若场景中的特征点都落在同一平面上(比如墙,地面等),则可以通过单应性来进行运动估计。这种情况在无人机携带的俯视相机,或扫地机携带的顶视相机中比较常见。
单应矩阵通常描述处于共同平面上的一些点,在两张图像之间的变换关系。考虑在图像 I1 和 I2 有一对匹配好的特征点 p1 和 p2。这些特征点落在某平面上。
则由7.3.1中的方程可得:
于是,我们得到了一个直接描述图像坐标 p1 和 p2 之间的变换,把中间这部分记为H,于是
同理求解E本质矩阵的方法,我们有:
这样一组匹配点对就可以构造出两项约束(事实上有三个约束,但是因为线性相关,只取前两个),于是自由度为 8 的单应矩阵可以通过 4 对匹配特征点算出(注意:这些特征点不能有三点共线的情况),即求解以下的线性方程组(当 h9 = 0 时,右侧为零):
在求解出单应矩阵H以后,同E的求法,单应矩阵的分解同样会返回四组旋转矩阵与平移向量,并且同时可以计算出它们分别对应的场景点所在平面的法向量。如果已知成像的地图点的深度全为正值(即在相机前方),则又可以排除两组解。最后仅剩两组解,这时需要通过更多的先验信息进行判断。通常我们可以通过假设已知场景平面的法向量来解决,如场景平面与相机平面平行,那么法向量 n 的理论值为 1T。
当特征点共面,或者相机发生纯旋转的时候,基础矩阵的自由度下降,这就出现了所谓的退化(degenerate)。现实中的数据总包含一些噪声,这时候如果我们继续使用八点法求解基础矩阵,基础矩阵多余出来的自由度将会主要由噪声决定。为了能够避免退化现象造成的影响,通常我们会同时估计基础矩阵 F 和单应矩阵H,选择重投影误差比较小的那个作为最终的运动估计矩阵。
7.5 三角测量
由本质矩阵的求解过程可知,我们需要的相机坐标系点实际上是三维的齐次坐标,而并非笛卡尔坐标,所以我们需要深度信息。单目相机缺少的深度信息,有什么来补足?三角测量
有一些整理
在我的gitee中有一些知识点的整理(在知识整理文件夹下),例如需要一些在文章中出现过的公式的mathtype形式,如有需要:
git clone https://gitee.com/vigigo/slambook2.git