如图所示,对于世界点\(X\)在两个像平面上分别成像为\(X_L\)和\(X_R\),两个相机连线\(O_LO_R\)称之为基线,基线与两个像平面的交点\(e_L、e_R\)称之为基点;平面\(O_LXO_R\)称之为极平面,极平面与两个像平面的交线\(e_LX_L\)、\(e_RX_R\)称之为极线。
假如我们已知像点\(O_L\),相机坐标系\(O_L\)中点到相机坐标系\(O_R\)的外参矩阵\([R|t]\),世界点\(X\)的位置未知(其实是深度未知)。虽然世界点\(X\)的位置未知,但是我们知道\(X\)一定位于射线\(O_LX\)上,那么这些可能的\(X\)在像平面\(O_R\)上的投影也在一条射线上,这条射线就是极线\(\vec{e_RX_R}\)。知道这个约束可以缩小特征点匹配的范围,寻找\(X_L\)在右图中的同名点\(X_R\)无需在全图中进行寻找,只需要在对极线上进行寻找即可。现在的问题是,给定\(X_L\)和\([R|t]\)如何求解对极线\(\vec{e_RX_R}\)?
求解极线
假设两台相机的投影矩阵分别表示为: \[ \begin{aligned} P=K[I|0] \\ P'=K'[R|t] \end{aligned} \] 则射线\(\vec{O_LX_L}\)上的点\(X\)点集可以参数化为: \[ X(\lambda)= P^{+}x_L+\lambda [0, 0, 0, 1]^T \\ = [I|0]^TK^{-1}[u, v, 1]^{T} + \lambda[0, 0, 0, 1]^T \]
其实\(\lambda\)就是世界点\(X\)的深度信息,\(P^{+}\)为投影矩阵\(P\)的伪逆,即\(PP^{+}=I\)。
这条直线上有两个特殊点,一个是\(X(\lambda=0)=P^{+}x_L\),其对应右图中的点\(x_R\),还有一个是\(X(\lambda=\infty)=[0, 0, 0, 1]^T\)即第一个相机中心也是世界原点,其对应右图的极点\(e_R\)。 由于两点确定一条实现,接下来只要求得\(x_R\)和\(e_R\)的坐标即可求解极线方程,它们的坐标都可以由世界坐标直接投影到像平面。 \[ x_R = P'P^{+}x_L \\ e_R = P'[0, 0, 0, 1]^{T} \] 对于二维空间中的直线\(l:[k1, k2, c]\)而言,其参数可以直接由上面两点的齐次坐标的叉乘得到 \[ l = x_R \times e_R \\ = x_R^{\times} e_R \\ = K'^{-T}t^{\times}RK^{-1} x_L \\ = Fx_L \]
\(x^{\times}\)为向量\(x\)的反对称矩阵,作用是将叉乘写成矩阵乘法。\(\boldsymbol{v}^\times= \begin{pmatrix} 0 & -v_3 & v_2 \\ v_3 & 0 & -v_1 \\ -v_2 & v_1 & 0 \end{pmatrix}\)
其中\(F=K'^{-T}t^{\times}RK^{-1}\)又叫做基础矩阵(Fundamental Matrix)观察基本矩阵的构成,虽然它描述的是一种相机布局下的几何关系,但却包含了左右两个与几何布局关系不大的相机内参矩阵\(K、K'\),要是我们剥离相机的内参矩阵,就得到了更本质的东西\(E=t^{\times}R\),也叫做本质矩阵。
作用
从极限约束出发,假如两个相机已经预先矫正过了,即它们的成像平面相互平行,那么二者的极线也将是水平的,这意味着两个机位拍摄的图像,其同名点只可能出现在同一行,这极大降低了搜索同名点的成本。
极线矫正
然而,对于任意两个相机而言,它们的像平面极有可能不是相互平行的。对此,我们可以旋转其中第一幅图像的摄像机使得它与第二个相机平行。该旋转可以通过对第一幅图像施加一个单应变换\(H\)进行仿真。
对于具有相同摄像机中心只存在旋转运动的两幅图像之间的单应变换为: \[ x'=Hx \\ H = (K'R')(KR)^{-1} \] 其中\((K、 R)\)分别为相机1的内参和旋转矩阵,\((K'、R')\)为相机2的内参和旋转矩阵。经过这样的极线矫正之后,两幅图像的极线与光栅y轴重合,从而极大降低匹配同名点的成本。