本文未指明图片来源为 Multiple View Geometry in Computer Vision 。
读 Multiple View Geometry in Computer Vision 所做笔记。
第 9 章 《对极几何与基本矩阵》,Epipolar Geometry and the Fundamental Matrix。
对极几何研究的对象是双视图几何,即两张相邻影像的位姿关系。
基本矩阵可以看做是将点投影(转换)为直线,将左影像上的一个点投影到右影像上形成一条核线。
假设有一空间平面 π ,将 π 上的点 X 投影到左右影像上,可以得到这个三维点在两张影像上的像 x,x′ ,将空间平面上所有的点都进行投影,能够得到左右影像上所有点的对应关系,这种对应关系可以使用单应矩阵(homography matrix, page 87) Hπ 描述:
右影像上的核线 l′ 可以由两个点——右影像上的核点 e′ 与右影像上的任意一点 x′ ——确定:
将 x′=Hπx 代入:
这样就得到了基本矩阵的定义:
因为 x′ 在右核线 l′ 上,所以点积为 0 :
空间中三维点 X 反向投影到左影像上得到点 x ,这个过程可以用投影矩阵 PX=x 进行描述。
现在想办法将 X 用 x 表示, P 是一个 4x3 的矩阵,不可逆。使用 P 的伪逆: P+=PT(PPT)−1 ,得
对于左影像 X 是对应一条直线上的所有点,可以使用下面的方程表示这一条直线:
现在将这一条直线投影到右影像上,即可得到右影像的核线。投影的方式是在 X(λ) 上找到两个点,将这两点分别投影到右影像上,投影后的两个点确定右影像上的核线。
取 λ 为0,得到直线上的第一个点 P+x ,取 λ 为 ∞ 得到直线上的第二个点 C (即左影像的成像中心)。将这个两个点分别投影到右影像上,得到 P′P+x 与 P′C 。 P′C=e′ ,左影像成像中心在右影像上的成像是核点。这两个点叉乘即可得到右影像上的核线:
所以 F=[e′]×P′P+ 。
一张截图说明一切:
两张影像上核线的对应关系可以看作是中心投影,投影中心 p 位于核线上。
求左核线 l 对应的右核线 l′ 是现在左核线上找一点 x 使用基本矩阵通过 l′=Fx 计算得到。 x 是任意的,只需要其在 l 上就行。可以通过做核线 l 与另一条不经过核点直线的交点计算得到 x 。假设另外一条直线为 k ,那么 l 与 k 的交点为 [k]×l ,所以右核线的计算方法如下:
直线 k 选择为 e 能够简化计算,直线 e 肯定不会通过核点 e ( eTe≠0 ),所以对应核线的计算公式整理如下:
在仅有位移的情况下,左右相机的内参也一致,左右相机的投影矩阵可以写成 P=K[I|0],P′=K[I|t] , 由
可以得到
计算两张影像上影像坐标的对应关系。
x=PX=K[I|0]X 左影像的投影关系,现在反求空间点 X 的坐标, (X,Y,Z)T=ZK−1x ,其中 Z 是标量,表示 X 的深度。将 X 的坐标计算结果带入右影像的投影关系 x′=P′X=K[I|t]X ,可以得到 x′ 与 x 的关系:
当两张影像相对位姿含有旋转与位移时,先将左影像进行旋转,与右影像对齐(具有相同的姿态)。于是将问题简化为上述的位移问题。
将一张影像仅做旋转,相当于将影像进行一次平行投影(投影点在无穷远处),如下图:
这个平行投影可以使用单应矩阵 H∞ 表示, H∞ 通过两张影像的投影矩阵计算得到。
将上式的 x′ 替换 x′=x+Kt/Z 中的 x ,即可得到最后的结果: