SLAM 学习笔记 本质矩阵E、基础矩阵F、单应矩阵H的推导

因为在剖析单目初始化的过程中,需要用到基础矩阵F和单应矩阵H,所以想从基础上推导一下,但是发现几何推导自己没太理解,而且比较抽象,不方便从理论出发落实到实际代码,但是又不想浪费这一过程的总结,于是自己另外开了个篇章来记录自己的思考和理解。

这里是继承了ORB-SLAM3 学习笔记 单目初始化过程剖析3 TrackMonocular->GrabImageMonocular->Track的《2-2-1 对极约束》部分的,有了极限约束,我们尝试用数学公式描述极点、极线和极平面之间的关系。

T是平移矩阵部分,是从点O l O_lOlO r O_rOr的距离。P l P_lPl是点O l O_lOl到点P PP的向量,也记作P ⃗ l \vec P_lPlP r P_rPr是点O r O_rOr到点P PP的向量,也记作P ⃗ r \vec P_rPr。R是旋转矩阵部分。可得下面的关系式:

根据向量的减法,可得:
P ⃗ r ′ = P ⃗ l − T ⃗ (1) \vec P_r'=\vec P_l - \vec T \tag{1}Pr=PlT(1)
把向量P ⃗ r ′ \vec P_r'Pr进行旋转,可得
P ⃗ r = R P ⃗ r ′ = R ( P ⃗ l − T ⃗ ) (2) \vec P_r= R\vec P_r'=R(\vec P_l - \vec T)\tag{2}Pr=RPr=R(PlT)(2)
∵ \because R是正交矩阵,则R可逆:
R − 1 P ⃗ r = P ⃗ r ′ = ( P ⃗ l − T ⃗ ) = R T P ⃗ r (3) R^{-1}\vec P_r= \vec P_r'=(\vec P_l - \vec T)=R^T\vec P_r\tag{3}R1Pr=Pr=(PlT)=RTPr(3)

三向量P ⃗ r , P ⃗ r ′ , P ⃗ l − T ⃗ \vec P_r ,\vec P_r',\vec P_l - \vec TPr,Pr,PlT共面,由
定理:三个向量 a , b , c 共面的充分必要条件是 (a,b,c)=0
可知它们的混合积为零(混合积对应于有向体积),参考下图:

为了便于理解混合积,用图说话。可以看到,混合积的结果可以表示为底面积S乘以高h,很容易理解:混合积就是有方向的体积。

所以结合定理,因为三向量P ⃗ r , P ⃗ r ′ , P ⃗ l − T ⃗ \vec P_r ,\vec P_r',\vec P_l - \vec TPr,Pr,PlT共面
∴ \therefore ( P ⃗ l − T ⃗ ) T ⋅ T × P ⃗ l = 0 (4) (\vec P_l - \vec T)^T \cdot T\times\vec P_l=0\tag{4}(PlT)TT×Pl=0(4)( R T P r ) T ⋅ T × P ⃗ l = 0 (5) (R^TP_r)^T \cdot T\times\vec P_l=0\tag{5}(RTPr)TT×Pl=0(5)P r T R ⋅ T × P ⃗ l = 0 (6) P_r^TR \cdot T\times\vec P_l=0\tag{6}PrTRT×Pl=0(6)P r T R ⋅ S P ⃗ l = 0 (7) P_r^TR \cdot S\vec P_l=0\tag{7}PrTRSPl=0(7)P r T R S P ⃗ l = 0 (8) P_r^TR S\vec P_l=0\tag{8}PrTRSPl=0(8)E = R S (9) E=RS\tag{9}E=RS(9)

其实这里( P ⃗ l − T ⃗ ) T (\vec P_l - \vec T)^T(PlT)T看的有点不太明白,后来翻了下资料,感觉这里就是用列向量的转置矩阵表示行向量,至于对不对希望大家可以一起讨论下。

其中 ,S 的含义见下图:

总结来说,Essential矩阵的几何推导是基于三向量共面推导出来:

Fundamental 和 Essential 的关系

由上面的式子可以看到,本质矩阵E只能描述摄像机坐标系下两个视图间的约束关系(描述的是p ppp ′ p'p之间的关系),所以它只依赖摄像机的外部参数(R & T)。
如果需要描述像素坐标系下两个图像间的约束关系,它必须在基本矩阵的基础上再进行仿射变换,即依赖内部参数和外部参数。

可以说,F是E的推广,把假设"校准的摄像机"去掉了。本质矩阵(E)+基本矩阵(F):用于描述2个视图间的对极几何关系。
本质矩阵(E)表示的是(1)透视变换:world→ \rightarrowcamera
基本矩阵(F)表示的是(2)射影变换:image→ \rightarrowimage

其相互关系是:
F = K − T E K − 1 (10) F=K^{-T}EK^{-1}\tag{10}F=KTEK1(10)

总结来说,Fundamental 矩阵带入的是像素点坐标,所以需要内参转换成相机坐标,这也描述了F和E之间的关系:

Fundamental 矩阵代数推导

看了好几篇文章,感觉还是视觉十四讲里面的代数推导比较明晰,我就直接参考过来,当做记录了。
设以第一个相机作为坐标系三维空间的点:
在这里插入图片描述
根据针孔相机模型,我们知道两个像素点p 1 , p 2 p_1,p_2p1,p2的像素位置为
在这里插入图片描述
这里 K 为相机内参矩阵,R, t 为两个坐标系的相机运动(如果我们愿意,也可以写成李代数形式)。如果使用齐次坐标,我们也可以把上式写成在乘以非零常数下成立的(up to a scale)等式
在这里插入图片描述
现在,取:
在这里插入图片描述
这里的 x 1 , x 2 x_1,x_2x1,x2 是两个像素点的归一化平面上的坐标。代入上式,得:
在这里插入图片描述




Homography 几何推导

由于是假设特征点处于同一平面,因此首先设平面在第一个相机系下的法向量为 N,深度为 d。

则平面方程为:



X1,X2分别为点在两个相机系下的坐标,因此

将上面两式子结合可得

因此单应矩阵为

可以看到其同样含有旋转和平移信息。

对极约束和单应性的区别和联系

  • 两幅图像之间的对极约束和场景的结构无关,即对于任意场景结构的图像都是成立的,他不能给出两幅图像上的点的一一对应关系,只能将点映射到线。而单应矩阵可以将点对应到点。
  • 单应矩阵,不像对极约束那样完全不限制场景的结构,单应矩阵要求场景中的点都在同一平面上。
  • 当相机只有旋转没有平移时,可使用单应矩阵估计运动,因为此时平移为0,计算得到的本质矩阵也为0,进而旋转也为0,得到了错误的解,而使用单应性依然能够正确计算。

版权声明:本文为shanpenghui原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。