SLAM入门之视觉里程计(3):两视图对极约束 基础矩阵
在上篇相机模型中介绍了图像的成像过程,场景中的三维点通过“小孔”映射到二维的图像平面,可以使用下面公式描述:
通过小孔相机模型,可知假如从像点
设
很显然,一对匹配的像点之间存在这某种约束关系,这种约束被称为两视图的对极约束。
本文主要介绍了两视图的对极约束-基础矩阵,并用几何和代数两种形式推导基础矩阵的表达形式以及从基础矩阵可以分解出相机的位姿(旋转和平移)。
对极几何
对极几何描述的是两视图之间的内存射影关系,同一个三维点在两个不同的视角下的像点存在着约束关系,如下图三维点
对极几何主要涉及以下几个元素:
- 基线(Baseline),两个相机中心的连线
CC′ 称为基线 - 对极点 epipolar ,
e,e′ 是对极点,是基线和两个成像平面的交点,也就是两个相机在另一个成像平面的像点;e 是右边的相机中心C′ 在左边相机的像点,同样e′ 是左边相机中心C 在右边相机的像点。 - 对极平面 epipolar plane,任何过基线的平面都被才称为对极平面,两个相机的中心
C 和C′ ,三维点X ,以及其在两个相机的像点x,x′ ,这5点必定在同一个对极平面上。当三维点X 变化时,对极平面绕着基线旋转,形成对极平面束。 - 对极线 epipolar line ,对极平面和成像平面的交线,所有的对极线相交于极点。
从上面的几何元素可知,对极几何和相机的内参、外参没有关系,和场景的结构也没有关系,仅和场景的一对匹配的像点有关系。
基础矩阵F
给定一对图像(同一场景不同视角得到的图像),从上面的图可知,对于第一幅图像上的任一像点
基础矩阵
F的几何推导
该推导来自《计算机视觉中的多视图几何》。
要将一幅图像上的像点
-
点通过平面转移 如下图,平面
π 不通过两相机中心,过第一个相机的中心C 和像点x 的射线与π 相交于点X 。该点X 再投影到第二幅图像上得到像点x′ ,这个过程称为点通过平面的转移。
点X 位于像点x 和相机中心确定的射线上,其在另一幅图像上的像点x′ 必然位于该射线在另一幅图像的投影也就是对极线l′ 上。点x 和点x′ 都是三维点X 的像点,这样第一副图像上的像点集合xi 和第二幅图像上的像点集合x′i 是射影等价的,它们都射影等价于共面的三维点集合Xi 。因此,存在一个2D单应Hπ ,把每一个点x 映射到对应的点x′ 上。2D单应
Hπ 指的是将射影平面上的点集xi 映射到另一个射影平面的点集x′i 上的射影变换,在实际情况中xi 和x′i 通常是两幅图像上的像点,每幅图像都被视为一个射影平面。 -
构造对极线 给点点
x′ ,通过x′ 和对极点e′ 的对极线l′ 可以表示为:.l′=e′×x′=[e′]×⋅x′
又由于x′=Hπx (Hπ 是将x 变换为x′ 的单应),带入上式可得:l′=[e′]×Hπx
定义F=[e′]×Hπ
这样就得到了从点x 到对极线l′ 的变换l′=Fx
以上就是基础矩阵F 的推导过程。 基础矩阵
F 可以记为:F=[e′]×Hπ ,其中Hπ 是一幅图像上像点到另一幅图像上的2D单应,[e′]× 是对极点e′ 的反对称矩阵。由于[e′]× 秩为2,Hπ 的秩为3,基础矩阵F 的秩为2.-
对极约束
由于l′=Fx ,而像点x′ 在对极线l′ 上,故可得到(x′)Tl′=(x′)TFx=0
上式被称为对极约束,仅通过匹配的点对就可以求出两视图的基础矩阵F 。
向量的叉积,反对称矩阵
[e′]× 在射影几何中,一条直线有两点确定,如上面对极线有像点x′ 和对极点e′ 确定,并且可以表示为这两个点的叉积形式,有l′=e′×x′ 。
设有两个向量a→,b→ ,则这两个向量的叉积仍然是一个向量,并且垂直于a→,b→ 所在的平面。其坐标表示如下:a→×b→=⎡⎣⎢0z1−y1−z10x1y1−x10⎤⎦⎥⎡⎣⎢x2y2z2⎤⎦⎥=(a→×)⋅b→
其中a→× 称为向量a→ 的反对称矩阵a→×=⎡⎣⎢0z1−y1−z10x1y1−x10⎤⎦⎥
通过引入反对称矩阵,向量的叉积可以使用矩阵乘法的表示,形式非常简洁。
F的代数推导
该推导来自《视觉SLAM十四讲》
设以第一个相机作为坐标系三维空间的点
其中,
从
两边同时左乘
设
两边同时左乘向量
两边再同时左乘
由于
再将
上式是对极约束的另一种表示,该式子中仅包含像点,相机的旋转和平移,中间的矩阵就是基础矩阵
式子
E被称为本质矩阵,其和基础矩阵相差相机的内参
通过匹配的点对计算相机的位姿
通过上面的知道,对于匹配的像点
也就是说,仅通过匹配的点对(最少7对)可以计算出两视图的基础矩阵
相机的相对位姿可以通过特征点匹配估计出来:
- 提取两幅图像的特征点,并进行匹配
- 利用匹配得像点计算两视图的基础矩阵
F - 从基础矩阵
F 中分解得到相机的选择矩阵R 和平移向量t