二视图从运动到结构----对极几何和基础矩阵

本文主要介绍对极几何和基础矩阵。

----------------------------------------------------

对极几何的出现时为了解决什么问题?

-----------------------------------------------------

从一张2D的图像估计3D模型有时十分困难(现在有基于深度学习的深度图估计,不清楚是否可以对这种场景3D还原)

这个时候,双/多 摄像头就可以帮助解决3D恢复的问题

立体视觉几何中有以下问题:

1.已知一幅图像中一点,如何寻找另一幅图像中这个点的对应点(根据是否知道相机的相对位置,此问题求解方式不同)

2.已知两幅图像中两点是对应关系,如何求解两相机的相对位置和姿态

3.已知多幅图像中同一3D点的对应点,如何求解该3D点的3D坐标

对极几何/基础矩阵 的出现可以解决问题2。

----------------------------------------------------

对极几何是什么?

-----------------------------------------------------

1.基本概念

立体成像的基本几何就是对极几何。下图是最经典的对极几何示意图。

O1和O2为两个相机(也有可能是一个相机在不同时刻的位置)的主点,P为空间中一个物点,两个相对的白色平面是像面(严格按照光路应该是在O1 O2点的后方,与P点相反方向,CV中默认采用这种往前画的方式节省空间)。p1和p2是P点在像面上的对应点,e1 e2为像面和O1 O2的交点。O1O2为基线,也被称作相机的移动方向。

在对极几何中,e1和e2被称作极点,PO1O2平面为极面,p1e1为极线,同理p2e2也为极线。这是对极几何中重要的三个概念。

 

2. 极点性质

下面介绍极点的性质:

=像平面和的基线O1O2交点

=O2在相机1上的像点为e1

=基线的平行线在各自像面上的消失点

 

重点阐述一下第3个性质, 

 A. 如图,两个相机相对放置(会聚视角), 相机1面向右边,相机2面向左边,可知极点位于1的右边,2的左边。图中花瓶上标示的横线即为平行于基线的线条。

为什么平行于基线的线条消失点为极点?可以看上图,平行于基线的线条所在极面与像面必交于极点(基线必与像面交于极点),故而这些线条在像面上一定会交于极点。

B. 当两个像面平行时,根据极点的定义,则极点位于无穷远处,极线与基线平行, 如下图所示

 

这个时候,与基线平行的线条的在像面是一系列平行线,消失点在无穷远,和极点重合

C. 当两个相机是前后放置且主点连线和像面垂直时(forward translation)

 

极点在各自像平面上的位置相同,且平行基线的线条在像面上的位置如上图右边所示。同样消失点为极点。

 

3.对极约束

p点在像面2上的对应点一定在极线l'上

 

--------------------------------------

基础矩阵是什么

--------------------------------------

如果已知基础矩阵F,以及一个3D点在一个像面上的像素坐标p,则可以求得在另一个像面上的像素坐标p'。这个是基础矩阵的作用,可以表征两个相机的相对位置及相机内参数。

下面具体介绍基础矩阵与像素坐标p和p'的关系。重点来了~

 

以O1为原点,光轴方向为z轴,另外两个方向为x, y轴可以得到一个坐标系,在这个坐标系下,可以对P, p1(即图中所标p), p2(即图中所标p')得到三维坐标,同理,对O2也可以得到一个三维坐标,这两个坐标之间的转换矩阵为[R T],即通过旋转R和平移T可以将O1坐标系下的点P1(x1, y1, z1), 转换成O2坐标系下的P2(x2, y2, z2)。

则可知,P2 = R(P1-T)     (1)

采用简单的立体几何知识,可以知道

(2)

其中,p, p'分别为P点的像点在两个坐标系下分别得到的坐标(非二维像素坐标)。Rp'为极面上一矢量,T为极面上一矢量,则两矢量一叉乘为极面的法向量, 这个法向量与极面上一矢量p一定是垂直的,所以上式一定成立。(这里采用转置是因为p会表示为列向量的形式,此处需要为行向量)

采用一个常用的叉乘转矩阵的方法,

 (3)

将我们的叉乘采用上面的转换,会变成

(4)

红框中所标即为本征矩阵E, 他描述了三维像点p和p'之间的关系

(5)

 

有了本征矩阵,我们的基础矩阵也就容易推导了

注意到将p和p'换成P1和P2式(4)也是成立的,且有

q1 = K1P1    (6)

q2 = K2P2    (7)

上式中, K1K2为相机的校准矩阵, 描述相机的内参数 q1q2为相机的像素坐标

代入式(4)中,得

(8)

上式中p->q1, p'->q2

这样我们就得到了两个相机上的像素坐标和基础矩阵F之间的关系了

(9)

 

-------------------------------------

基础矩阵的性质

-------------------------------------

 F有什么样的性质呢?简单说来, 3x3的矩阵,理论上9个自由度,但是需要符合以下两个约束

a)如果F为基础矩阵,那么kF也为基础矩阵

b)秩为2

所以减去两个自由度,F有7个自由度

 

第二条约束是怎么来的?

我们知道,矩阵的秩有这么一个性质,矩阵相乘的秩不大于各矩阵的秩

那么,可以知道F其实是以下这些矩阵相乘的结果

其中,Tx的具体形式在式(3)中有表述

可以知道,第三列A2可以用第一列A0和第二列A1线性表示

A2 = -Ty*A1/Tz-Tx*A0/Tz

所以Tx秩为2

那么F秩为2也得证了

 

一般采用七点算法或八点算法对F进行求解,得知F后就可以对任意像面1上点找像面2上对应点了。

 

Reference:

1. Computer vision algo and application

2. learning openCV

3. multiple view geometry in computer vision

4. CV slides of Li Feifei

 

posted @ 2017-09-11 22:11  sunny,lee  阅读(8456)  评论(5编辑  收藏  举报