对极几何基础矩阵原理以及实现
原理参考:https://www.cnblogs.com/sunny-li/p/7500541.html
1、基本概念
立体成像的基本几何就是对极几何。下图是最经典的对极几何示意图。
O1和O2是两个相机的主点(可以是不同时刻)。P为空间中一个物点,两个相对的白色平面是像面,p1和p2是P点在像面上的对应点,e1 e2为像面和O1 O2的交点。O1O2为基线,也被称作相机的移动方向。
下面介绍极点的性质:
极点
=像平面和的基线O1O2交点
=O2在相机1上的像点为e1
=基线的平行线在各自像面上的消失点
对极约束
p点在像面2上的对应点一定在极线l’上。
2、基础矩阵
如果已知基础矩阵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)
2.1、基础矩阵性质
F有什么样的性质呢?简单说来, 3x3的矩阵,理论上9个自由度,但是需要符合以下两个约束
a)如果F为基础矩阵,那么kF也为基础矩阵
b)秩为2
所以减去两个自由度,F有7个自由度。
至于秩=2。我们知道,矩阵的秩有这么一个性质,矩阵相乘的秩不大于各矩阵的秩
那么,可以知道F其实是以下这些矩阵相乘的结果
其中,