在上篇相机模型中介绍了图像的成像过程,场景中的三维点通过“小孔”映射到二维的图像平面,可以使用下面公式描述:
基础矩阵(F)表示的就是这种从点到直线的映射。
F的几何推导
该推导来自《计算机视觉中的多视图几何》。
要将一幅图像上的像点(x)映射到另一幅图像对应的对极线(l')可以分为两步:第一步,将像点(x)映射到另一幅图像上与之对应的对极线(l')上的某点(x')上,(x')是(x)的匹配点;第二步,连接对极点(e')与点(x')得到的直线就是对极线(l')。
- 点通过平面转移 如下图,平面(pi)不通过两相机中心,过第一个相机的中心(C)和像点(x)的射线与(pi)相交于点(X)。该点(X)再投影到第二幅图像上得到像点(x'),这个过程称为点通过平面的转移。
点(X)位于像点(x)和相机中心确定的射线上,其在另一幅图像上的像点(x')必然位于该射线在另一幅图像的投影也就是对极线(l')上。点(x)和点(x')都是三维点(X)的像点,这样第一副图像上的像点集合(x_i)和第二幅图像上的像点集合(x'_i)是射影等价的,它们都射影等价于共面的三维点集合(X_i)。因此,存在一个2D单应(H_{pi}),把每一个点(x)映射到对应的点(x')上。
2D单应(H_{pi})指的是将射影平面上的点集(x_i)映射到另一个射影平面的点集(x'_i)上的射影变换,在实际情况中(x_i)和(x'_i)通常是两幅图像上的像点,每幅图像都被视为一个射影平面。
-
构造对极线 给点点(x'),通过(x')和对极点(e')的对极线(l')可以表示为:$$l'=e' imes x'=[e']{ imes}cdot x'$$.
又由于(x'=H_{pi}x)((H_{pi})是将(x)变换为(x')的单应),带入上式可得: $$l'=[e']{ imes}H_{pi} x$$
定义$$F=[e']{ imes}H{pi}$$
这样就得到了从点(x)到对极线(l')的变换$$l'=Fx$$
以上就是基础矩阵(F)的推导过程。 -
基础矩阵(F)可以记为:(F=[e']_{ imes}H_{pi}),其中(H_{pi})是一幅图像上像点到另一幅图像上的2D单应,([e']_{ imes})是对极点(e')的反对称矩阵。由于([e']_{ imes})秩为2,(H_{pi})的秩为3,基础矩阵(F)的秩为2.
-
对极约束
由于(l'=Fx),而像点(x')在对极线(l')上,故可得到
上式被称为对极约束,仅通过匹配的点对就可以求出两视图的基础矩阵(F)。
向量的叉积,反对称矩阵([e']_{ imes}) 在射影几何中,一条直线有两点确定,如上面对极线有像点(x')和对极点(e')确定,并且可以表示为这两个点的叉积形式,有(l'=e' imes x')。
设有两个向量(overrightarrow{a},overrightarrow{b}),则这两个向量的叉积仍然是一个向量,并且垂直于(overrightarrow{a},overrightarrow{b})所在的平面。其坐标表示如下:
其中(overrightarrow{a}_{ imes})称为向量(overrightarrow{a})的反对称矩阵
通过引入反对称矩阵,向量的叉积可以使用矩阵乘法的表示,形式非常简洁。
F的代数推导
该推导来自《视觉SLAM十四讲》
设以第一个相机作为坐标系三维空间的点(P=[X,Y,Z]),其在两个相机的像点分别为(p_1,p_2)。由于第一个相机的中心作为世界坐标系的原点,也就是说第一个相机没有旋转和平移,通过小孔相机模型可得:
其中,(K)是相机的内参,(R,t)是第二个相机相对于第一个相机的旋转和平移。
从(p_1 = KP)可以得到(P=K^{-1}p_1),带入第二个式子可得到:
两边同时左乘(K^{-1}),得到
设(x_1=K^{-1}p_1,x_2=K^{-1}p_2),代入
两边同时左乘向量(t)的反对称矩阵(t_{ imes}),由于(t_{ imes}t=0),消除(t)
两边再同时左乘(x_2^T)
由于(t_{ imes}x_2)是向量(t)和向量(x_2)的叉积,同时垂直于向量(t)和向量(x_2),所以左边(x_2^Tt_{ imes}x_2=0),得到
再将(x_1,x_2)换掉
上式是对极约束的另一种表示,该式子中仅包含像点,相机的旋转和平移,中间的矩阵就是基础矩阵(F)。
式子(F=K^{-T}t_{ imes}RK^{-1}),可知假如相机的内参数(K)是已知的,提取中间的矩阵可到
E被称为本质矩阵,其和基础矩阵相差相机的内参(K)。
通过匹配的点对计算相机的位姿
通过上面的知道,对于匹配的像点(p_1,p_2)以及基础矩阵(F)有如下关系:
也就是说,仅通过匹配的点对(最少7对)可以计算出两视图的基础矩阵(F),然后再从(F)中分解得到相机的位姿势。
相机的相对位姿可以通过特征点匹配估计出来:
- 提取两幅图像的特征点,并进行匹配
- 利用匹配得像点计算两视图的基础矩阵(F)
- 从基础矩阵(F)中分解得到相机的选择矩阵(R)和平移向量(t)