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

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

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

T是平移矩阵部分,是从点 O l O_l Ol O r O_r Or的距离。 P l P_l Pl是点 O l O_l Ol到点 P P P的向量,也记作 P ⃗ l \vec P_l P l P r P_r Pr是点 O r O_r Or到点 P P P的向量,也记作 P ⃗ r \vec P_r P r。R是旋转矩阵部分。可得下面的关系式:

根据向量的减法,可得:
P ⃗ r ′ = P ⃗ l − T ⃗ (1) \vec P_r'=\vec P_l - \vec T \tag{1} P r=P lT (1)
把向量 P ⃗ r ′ \vec P_r' P r进行旋转,可得
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} P r=RP r=R(P lT )(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} R1P r=P r=(P lT )=RTP r(3)

三向量 P ⃗ r , P ⃗ r ′ , P ⃗ l − T ⃗ \vec P_r ,\vec P_r',\vec P_l - \vec T P r,P r,P lT 共面,由
定理:三个向量 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 T P r,P r,P lT 共面
∴ \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} (P lT )TT×P l=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×P l=0(5) P r T R ⋅ T × P ⃗ l = 0 (6) P_r^TR \cdot T\times\vec P_l=0\tag{6} PrTRT×P l=0(6) P r T R ⋅ S P ⃗ l = 0 (7) P_r^TR \cdot S\vec P_l=0\tag{7} PrTRSP l=0(7) P r T R S P ⃗ l = 0 (8) P_r^TR S\vec P_l=0\tag{8} PrTRSP l=0(8) E = R S (9) E=RS\tag{9} E=RS(9)

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

其中 ,S 的含义见下图:

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

Fundamental 和 Essential 的关系

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

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

其相互关系是:
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_2 p1,p2的像素位置为
在这里插入图片描述
这里 K 为相机内参矩阵,R, t 为两个坐标系的相机运动(如果我们愿意,也可以写成李代数形式)。如果使用齐次坐标,我们也可以把上式写成在乘以非零常数下成立的(up to a scale)等式
在这里插入图片描述
现在,取:
在这里插入图片描述
这里的 x 1 , x 2 x_1,x_2 x1,x2 是两个像素点的归一化平面上的坐标。代入上式,得:
在这里插入图片描述




Homography 几何推导

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

则平面方程为:



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

将上面两式子结合可得

因此单应矩阵为

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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚餐男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值