VSLAM基础(三)————对极几何中的F、E、H矩阵

在上一篇中,讲到了可以通过相机矩阵P(P=K[R|t])将三维点的世界坐标投影到图像像素坐标。而一般vslam问题中P矩阵并不是已知的(R,t未知),于是我们需要通过其他方法求得R,t,这就需要用到对极几何中的知识。

一、对极几何

那么什么是对极几何?

对极几何(Epipolar Geometry)描述的是两幅视图之间的内在射影关系,与外部场景无关,只依赖于摄像机内参数和这两幅视图之间的的相对姿态。

VSLAM基础(三)————对极几何中的F、E、H矩阵

本质上两幅图之间的对极几何是图像平面与以基线为轴的平面束的交的几何,这种几何被广泛同于双目成像原理中 
如图所示,摄像机由相机中心C,C’以及各自的成像平面表示,对于任意一个空间中的点X,在两个像平面上的点分别为x,x’,第一幅图像上的点x反向投影成空间三维的一条射线,它由摄像机中心和x确定,这条射线向第二个图像平面上投影得到一条直线l’,显然x的投影x’必然在l’上

对极几何主要涉及以下几个元素:

  • 基线(Baseline),两个相机中心的连线CC′称为基线
  • 对极点 epipolar ,e,e′是对极点,是基线和两个成像平面的交点,也就是两个相机在另一个成像平面的像点;e是右边的相机中心C′在左边相机的像点,同样e′是左边相机中心C在右边相机的像点。
  • 对极平面 epipolar plane,任何过基线的平面都被才称为对极平面,两个相机的中心C和C′,三维点X,以及其在两个相机的像点x,x′,这5点必定在同一个对极平面上。当三维点X变化时,对极平面绕着基线旋转,形成对极平面束。
  • 对极线 epipolar line ,对极平面和成像平面的交线,所有的对极线相交于极点。

对极约束:如下图 p点在像面2上的对应点一定在极线l'上(很明显对极约束表示的是一个点到线的约束!!!)。

VSLAM基础(三)————对极几何中的F、E、H矩阵

二、基础矩阵F

给定一对图像(同一场景不同视角得到的图像),对于第一幅图像上的任一像点x,在第二幅图像中都有一条与之对应的对极线l′,该对极线是像点x与过第一个相机中心C射线在第二幅图像上的投影,并且第二幅图像中与x相匹配的像点x′必定在该对极线上。因此,存在一个像点x到另一个图像上对极线l′的映射:x→l′
基础矩阵F表示的就是这种从点到直线的映射。

F矩阵的推导可参考《计算机视觉中的多视图几何》与《视觉SLAM十四讲》,可得到下式

VSLAM基础(三)————对极几何中的F、E、H矩阵

其中q1、q2为两相片上的像素坐标(齐次坐标)。

F矩阵的性质:

  1. 3*3且*度为7的矩阵
  2. kF也为基础矩阵,即相差一个尺度*度
  3. F矩阵的秩为2

 

于是VSLAM中相机的相对位姿可以通过特征点匹配估计出来:

  • 提取两幅图像的特征点,并进行匹配
  • 利用匹配得像点计算两视图的基础矩阵F
  • 基础矩阵F中分解得到相机的旋转矩阵R和平移向量t

三、本质矩阵E

VSLAM基础(三)————对极几何中的F、E、H矩阵,则可令VSLAM基础(三)————对极几何中的F、E、H矩阵,于是有VSLAM基础(三)————对极几何中的F、E、H矩阵

其中x1,x2为两个像素点的归一化平面坐标

在这里E矩阵就被称为本质矩阵,E矩阵同样表示的是对极约束的关系,只不过它不再涉及相机内参,只由两视图之间的姿态关系决定!!!

E矩阵的性质:

  1. 3*3且*度为5的矩阵
  2. 因为只包含R,t共有6个*度,又因为尺度等价去掉一个*度
  3. 本质矩阵E的奇异值必定为VSLAM基础(三)————对极几何中的F、E、H矩阵的形式

四、单应矩阵H

通过E、F矩阵我们就可以在vslam中利用两视图中的匹配点求解出相对姿态了,不过这个方法存在一个问题——当两个视图的相机中心相同时,也就是R,t中的t为0,这时对极几何的基础也就不成立了,可知E、F均为0无法求解。这时我们可以使用H矩阵恢复R,t。

单应(Homography)是射影几何中的概念,又称为射影变换。它把一个射影平面上的点(三维齐次矢量)映射到另一个射影平面上,并且把直线映射为直线,具有保线性质。总的来说,单应是关于三维齐次矢量的一种线性变换,可以用一个3×3的非奇异矩阵H表示x1=Hx2

而在vslam中一般为同一相机在不同的位姿得到同一平面的图像有以下公式(推导同参见上述的两本书)

 

VSLAM基础(三)————对极几何中的F、E、H矩阵

此时x1=Hx2,其中x1,x2为图像坐标,N为平面的单位法向量,d为深度

H矩阵为3*3且*度为8的矩阵,单应矩阵描述的是两个像素坐标间的关系,相比于E,F更加直接!!!

  • 使用场景
    • 基础矩阵F表示的是两视图的对极约束,和三维场景的结构无关,只依赖于相机的内参数以及外参数,需要两个相机的位置有旋转和平移
    • 单应矩阵对场景的三维结构有了更多的要求,需要场景中的点在同一个平面上; 或者是,对相机的位姿有了要求,两个相机之间只有旋转而无平移
  • 约束关系
    • 基础矩阵表示的像点和另一幅图像上的对极线的映射关系,使用基础矩阵无法得到像点对应点在另一幅图像上的确切位置。
    • 单应矩阵则是点和点的映射,使用单应矩阵可以找到像点在另一幅图像上对应点的确切位置。
  • 使用单应矩阵而不是基础矩阵
    • 相机只有旋转而无平移的时候,两视图的对极约束不成立,基础矩阵F为零矩阵,这时候需要使用单应矩阵H
    • 场景中的点都在同一个平面上,可以使用单应矩阵计算像点的匹配点。
    • 相机的平移距离相对于场景的深度较小的时候,也可以使用单应矩阵H。