基本概念

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

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

  1. 点p1、p2与摄像机中心O1和O2是共面的,并且与空间点P也是共面的,这5个点共面于平面PO1O2!这是一个最本质的约束,即5个点决定了一个平面.
  2. 由该约束,可以推导出一个重要性质:由图像点p1和p2反投影的射线共面,并且,在平面epipolar plane上,在搜索点对应中,该性质非常重要

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

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

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

  1. 当两个像面平行时,根据极点的定义,则极点位于无穷远处,极线与基线平行, 如图所示, 这个时候,与基线平行的线条的在像面是一系列平行线,消失点在无穷远,和极点重合.

  1. 当两个相机是前后放置且主点连线和像面垂直时(forward translation),极点在各自像平面上的位置相同,且平行基线的线条在像面上的位置如上图所示。同样消失点为极点。

对极约束

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

本质矩阵(essential)和基础矩阵(fundamental)

理想模型

假设两个相机的内部参数一致,比如焦距、镜头等,为了数学描述的方便,需引入坐标,由于坐标是人为引入的,因此客观世界中的事物可以处于不同的坐标系中。假设两个相机的X轴方向一致,像平面重叠,坐标系以左相机为准,右相机相对于左相机是简单的平移,用坐标表示为(Tx,0,0)。如下所示:

在左右相机中像平面像点的坐标,如下所示:

\[ x_1 = f \frac{X}{Z}, \, y_1 = f \frac{X}{Z} \]
\[ x_2 = f \frac{X-T_x}{Z}, \, y_2 = f \frac{Y}{Z} \]
\[ d = x_1 - x_2 = f \frac{X}{Z} - (f \frac{X}{Z} - f \frac{T_x}{Z}) = f \frac{T_x}{Z} \]

综上可知,深度Z和视差d成反比,这也是为什么近的物体看起来比远的物体移动的快。

实际模型

更一般的立体成像关系是两个相机的坐标无任何约束关系,相机的内部参数可能不同,甚至是未知的。要刻画这种情

况下的两幅图像之间的对应关系,需要引入两个重要的概念:本征矩阵E和基本矩阵F。本征矩阵E包含物理空间中两个摄像机相关的旋转和平移信息,基础矩阵F除了包含E的信息外,还包含两个摄像机的内参数。本征矩阵E将左摄像机观测到的点的物理坐标与右摄像机观测到的相同点的位置关联起来。基础矩阵F则是将一台摄像机的像平面上的点在图像坐标(像素)上的坐标和另一台摄像机的像平面上的点关联起来。

已知:

  1. O1和O2 分别为两个摄像机坐标系原点。
  2. 空间中一点P,在左相机坐标系下为P1 = (x1, y1, z1),在右相机坐标系下为P2 = (x2, y2, z2),在左相机成像平面的图像齐次坐标为p1 = (u1, v1, 1), 在右相机成像平面的图像坐标系为p2 = (u2, v2, 1)。
  3. 左相机内参K1 =\(\begin{bmatrix} f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}\),右相机内参K2.
  4. 左相机坐标系到右相机坐标系的旋转矩阵和平移向量分别为R和t。

根据相机成像模型,得到:

\[ \begin{cases} z_1p = K_1P_1 \\ z_2p = K_2P_2 \end{cases} \]

由共面几何约束得到:

\[ \overrightarrow{O_2P} \cdot ( \overrightarrow{O_2O_1} \times \overrightarrow{O_1P} ) = 0 \]

将各点坐标系统一到右摄像机坐标系下,得到:

\[ \overrightarrow{O_2P} = P_2^T, \, \overrightarrow{O_2O_1} =t, \, \overrightarrow{O_1P} = P_2 - t = RP_1 +T -T = RP_1 \]

带入上式得:

\[ P_2^T \cdot ([t]_{\times} (RP_1)) = 0 \]

其中\([t]_{\times}\)为t的反对称矩阵,\([t]_{\times} = \begin{bmatrix} 0 & -t_3 & t_2 \\ t_3 & 0 & -t_1 \\ -t_2 & t_1 & 0 \end{bmatrix}\)

由于\(P_1 = z_1 K_1^{-1}p_1, \, P_2 = z_2 K_2^{-1}p_2\)

带入上式得到:

\[ z_2p_2^TK_2^{-T} \cdot [t]_{\times} R z_1K_1^{-1}p_1 = z_1z_2p_2^TK_2^{-T}[t]_{\times}RK_1^{-1}p_1 = 0 \]

所以

\[ p_2^TFp_1 = p_2^TK_2^{-T}EK_1^{-1}p_1 = p_2^TK_2^{-T}[t]_{\times}RK_1^{-1}p_1 = 0 \]

其中基础矩阵和本质矩阵分别为:

\[ F = K_2^{-T}[t]_{\times}RK_1^{-1} \]
\[ E = [t]_{\times}R \]

求解运动

单应矩阵(homography)