基本矩阵F与本质矩阵E的分析与计算

如题所述

第1个回答  2022-07-21
对于这三个矩阵还有坐标系什么的真是看了忘,忘了看,今日索性一次性将它记下来,下次再忘的时候翻看一下就行了。

如果直接将胶片放置在物体前面,由于光的折射,反射等等现象,在胶片上是成不了像的。但是在物体和胶片之间放上一块挡板,挡板上有一个小孔,它阻挡了大部分的光线,就将这个屏障上的小孔称之为光圈,胶片上就获得了倒立的图像。但是,这个小孔成像存在一个问题,就是,光圈越小曝光时间越长,形成高亮度的图像,,而且太小了,就会产生光的衍射现象,图像也模糊了,光圈大虽然曝光时间短了,可图像变模糊了。对于这样子的相机来进行实时的特征提取等等显然是行不通的,所以就有了透镜系统。在光圈之前加凸透镜,众所周知,凸透镜具有聚焦的功能,这样,成像的速度加快了许多,只需要差不多0.01秒。

当相机为单目的时候,只知道2D的像素坐标,需要通过两视图来估计相机的运动。假设从两张图像中得到了一对匹配好的特征点,如果有若干对这样的匹配点,就可以通过这些二维图像点之间的对应关系,恢复出两帧之间摄像机的运动。两视图的对极几何约束可以用基本矩阵F表示,那么如何得到这个矩阵呢?

首先说明一些术语,O1和O2称为光心,O1、O2和P构成的平面称为极平面,p和e1,q和e2称为极线,e1和e2为O1和O2与像素平面的交点称为极点。可以知道的是由于他们都在同一平面上,所以q点的投影必然在pe1这条极限上,而同理p的投影也必然在qe2上(针对于像素平面)。矩阵F表示了第一帧的像素点p与第二帧的像素点q极线之间的映射关系。如何得到F和E,有以下两种方法:

方法一:

这里需要引用两个点的齐次坐标叉乘能够表达一条直线l的系数。可以对其进行证明( 两点的叉乘表达一条直线 ),直线的方程可以表示为 ,所以该直线可以用向量 进行表示。e2是光心O1在第二帧上的投影,假设光心O1的齐次坐标为 ,转到光心O2的坐标为 ,将O2投影到相机平面,则e2的坐标为 ,q的齐次坐标为 。又因为 所以直线qe2可以表示为 ,由于这里p和q的坐标都用齐次坐标表示,那么(这里的"="是在相差尺度系数的情况下成立的):

设 和 是归一化平面的坐标,所以:



         (1)

所以 ,又因为q在直线上,那么 ,

由于K是3*3的矩阵,[R|t]是4*4的矩阵,将K进行扩展第4行第4列为1之外,第四列的其他值均为0,所以对于[R|t]来说,t的值已经对结果没有影响了,所以上式就变成 ,将 代入,得:

又有 ,所以

且 。

方法二:

将(1)式叉乘t,可以得到: ,再将其乘以 ,由于 是一个与t和x2都垂直的向量,所以左边为0,有;

,代入p,q,得 ,综上所述:



由于 ,F的秩为2(原因是因为 的秩为2),自由度为7(尺度等价性),使用直接线性变换8点法来进行计算。具体推导出来的就不写了,直接得出 ,A是一个8*9的矩阵, 就是将F矩阵展开的向量。

A中的一行为: ,一共需要8组匹配点

为:

计算过程:

(1)构造得到 ;

(2)对A进行SVD分解。由于A的秩是8(忽略特征点在同一个平面上的情况),那么它的对角矩阵的值为 ,而 ,右乘 得到 (U和V都是正交矩阵,转置就是它的逆),其列向量形式为:

求得的刚好是Af=0,为了求得F只要取V的最后一列就能构造了。

(3)但是,从上面构造的F可能是满秩的,所以需要进一步的求解,将上面构造的F进行SVD分解, ,现在求得的 值应该是有三个大于0的数,由于秩为2,应该将最后一个特征值置为0,为:

          

最终的F就等于最后一个特征值置为0对角矩阵乘以U和V,为 。

可以通过基本矩阵F得到本质矩阵E, ,也可以通过构造和基本矩阵一样的八点法来得到。由于 ,t有3个自由度,R也有3个自由度,那么它应该有6个自由度,又因为E的尺度等价性,所以E只有5个自由度。

对E进行奇异值分解相当于对 与 的乘积进行分解,乘积奇异值分解有个性质是任何一个矩阵A与正交矩阵相乘,其奇异值保持不变,证明:

由于奇异值是通过计算 的特征值得到的,那么 ,所以奇异值不变。

设 ,

由于 为反对称矩阵,可以证明任意的反对称矩阵都可以用 来表示,又有:

所以 ,则本质矩阵就可以写成 (根据尺度等价性,k可以去掉),那么 ,这就可以说明E的奇异值为何是 的形式了。

知道了E的SVD分解形式,R和t也可以相应的分解出来,E和-E是等价的,所以R和t存在两组解:





最后只要把任意一点带入4种解中,检测该点在两个相机下的深度,就可以确定哪个解是正确的了。

先就写这些吧,之后遇到什么不会或是容易忘记的再补充。

《视觉SLAM十四讲》 高翔

《矩阵分析与应用》 张贤达
相似回答
大家正在搜