视觉SLAM 单目初始化 八点法 SVD分解疑问

本文详细解释了在视觉SLAM中,如何通过八点法求解2D-2D单目的基础矩阵,涉及自由度、最小奇异值选择、奇异向量的应用以及为何需要置零处理。文章强调了使用多余匹配点增强鲁棒性及秩2约束的重要性。
摘要由CSDN通过智能技术生成

        在看视觉SLAM十四讲和ORB SLAM3源码的时候,对2D-2D单目初始化那有些不明白,主要是用八点法求本质矩阵F

问题:

1.为什么F的自由度是7,而解方程又要8个点?

2.为什么用最小奇异值对应奇异向量作为F的元素?

3.直接取出来的F矩阵为什么不能直接用,而是要奇异值分解后,将最小奇异值置零,再带回去?

1.基础矩阵F的自由度与八点法

        基础矩阵F描述了在无校准立体视觉系统中,一幅图像上的一点与另一幅图像上对应点的几何关系。基础矩阵是从三维空间到二维图像的投影和对应点关系的数学表示。

1.1为什么基础矩阵有7个自由度

尺度不变性:基础矩阵(F)有9个元素,因为它是一个3\times3的矩阵。然而,由于基础矩阵定义了两个图像之间的对应关系,但这种对应关系是在无穷远的投影平面中定义的,这意味着它是在齐次坐标下表达的。齐次坐标下,矩阵乘以任何非零标量都表示同一个映射,即如果(F)是一个基础矩阵,那么\lambda F(其中\lambda是任意非零实数)也表示相同的几何关系。这减少了一个自由度,从9降到了8。

秩2约束:理论上,由于基础矩阵是由外部参数(即相机的旋转和平移)导出,它的秩应该是2。这是因为在理想情况下,任何两个视图的基础矩阵可以写成外部参数的乘积,这个乘积的形式决定了F的一个奇异值为0,从而减少了一个自由度,从8降到了7。

1.2为什么需要八对匹配点

        尽管基础矩阵有7个自由度,但在实际求解过程中,我们通过构建一个线性系统来求解未知的(F)。每对匹配点给出一个关于F的线性方程。理论上,7个方程足以求解7个未知数。然而,由于噪声和测量误差的存在,直接利用7对点可能得不到一个鲁棒的解。通过引入更多的对应点(如8对或更多),我们构造了一个过定(overdetermined)系统,可以通过最小二乘方法等技术求解,从而增加了计算的稳定性和解的准确性。

2.为什么用最小奇异值对应奇异向量作为F的元素

        在利用八点法求解基础矩阵F过程中,采用奇异值分解(SVD)来解齐次线性方程组Af = 0(其中A为根据匹配点对构建的矩阵,f为基础矩阵F的列向量形式)是为了寻找最佳解。这个过程中取最小奇异值对应的奇异向量作为基础矩阵的解的原因跟这个问题的数学性质和求解过程有关。

2.1齐次线性方程组的性质

        对于齐次线性方程组Af = 0(其中A是一个N \times 9的矩阵,(N)是匹配点对的数量,且通常N \geq 8),求解f是在寻找一个非零向量f,使得Af = 0。在大多数情况下,我们希望找到的这个解不仅仅满足方程,而且在某种意义上是最好的解。

2.2最小奇异值与问题的最优解

        在数学上,一个矩阵的奇异值分解将矩阵分解为U \Sigma V^T的形式,其中\Sigma包含了奇异值,并且奇异值从大到小排序。奇异值反映了矩阵在特定方向上的"张力"或者"拉伸能力"。对于方程Af = 0,我们想要找到一个最满足这个方程的非零解f,即寻找使得Af尽可能接近于零的f。在所有可能的解中,A的最小奇异值对应的右奇异向量(V中的列向量)给出了满足这个条件的向量f。换句话说,这个解使得Af的长度(即方程的"误差")最小。

2.3基础矩阵约束

        对于基础矩阵F,理论上它应该满足秩为2的约束。直接通过最小奇异值的奇异向量求解得到的F可能不会满足这个约束,因此通常在求解后还需要对F进行调整(例如通过设置最小奇异值为0,再重新构造F)来确保其满足秩为2的条件。

        总之,通过取最小奇异值对应的奇异向量作为解的原因,在于这种方法依据线性代数理论提供了满足原始方程组Af = 0的最优解,在这个框架内,"最优"意味着在给定的约束下最小化错误或残差。

3.为什么要将结果的最小奇异值置0

        如前所述,理论上基础矩阵的秩应该是2。由于测量误差和计算方法,直接计算可能得到一个近似的基础矩阵,其所有奇异值都不为0,即其秩为3。为了强制实现秩2的约束,可以通过将计算得到的基础矩阵进行奇异值分解,然后将最小的奇异值设置为0,最后再通过剩余的奇异值和奇异向量重构基础矩阵。这样做的依据是要确保结果的基础矩阵尽可能地反映真实的几何关系,并满足理论上的秩2约束。这一步骤不仅可以提高计算结果的准确性,还有助于后续的几何解析过程,如立体匹配和三维重建。

4.总结

        八点法在求解基础矩阵时,实际上可以使用超过八对匹配点来构建齐次线性方程组。八点法是一种经典的计算两个视图间基础矩阵F的方法,基础矩阵描述了图像间的对应点如何关联。基础矩阵有7个自由度,理论上需要8个点来求解(每对匹配点提供一个方程),但在实际应用中,常常采用更多的匹配点以提高求解的稳定性和准确性。

当使用超过8对点时,可以通过最小二乘法求解一个过定的(overdetermined)线性方程组来找到最佳拟合的基础矩阵。过程中,齐次线性方程组的形式如下:

Ax = 0

        其中,x代表基础矩阵F的九个元素(由于F是齐次的,实际上只有八个自由度),A是由对应点构成的矩阵。当点的数量超过8时,A变成一个N×9的矩阵(N为匹配点对的数量)。

要求解这个方程组,可以使用奇异值分解(SVD)来找到A空间中的最小奇异值对应的奇异向量,这个向量即为F矩阵的解。

以下是使用更多对匹配点来求解基础矩阵的基本步骤:

  1. 对所有匹配点应用标准化过程,以改进数值稳定性。
  2. 构建线性方程组Ax=0
  3. 使用奇异值分解求解方程组,得到与最小奇异值对应的奇异向量,该向量即为F的解。
  4. 由于直接求解可能导致结果不满足基础矩阵的秩为2的约束,因此需要将得到的基础矩阵通过再次SVD分解,并将奇异值矩阵的最小奇异值设置为0,再重构基础矩阵,以确保其满足秩为2的约束。
  5. 可选地,对基础矩阵进行去标准化。

        使用更多的匹配点可以提高求解基础矩阵的鲁棒性和准确性,尤其是在存在噪声和错误匹配的情况下。然而,这也可能引入外点(outliers),因此,通常会结合随机抽样一致性算法(RANSAC)等方法,以提高结果的稳定性。

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值