视觉测距法后,应进行三角测量以进行束调整

问题描述

我正在逐步从单眼视觉测距管道建立束调整。使用2D-2D功能对应关系(例如ORB功能),已编写了简单的VO管道。最重要的是,在通常10帧的窗口中,每个帧中的公共点都存储在数组中。因此,如果总共有10帧,则这是10帧末尾可用的不同输出

  1. 9个相似度转换(4x4),即i的帧i+1i=0:9间的一次转换
  2. 10xN个关键点值,其中在所有10个帧中跟踪N个公共关键点。 N通常是25。每个关键点的格式为(x,y)

现在,要在此窗口中执行任何类型的束调整,必须找到公共点的3D位置。我的问题是,如何获得3D点。我知道3D点是通过使用它们之间的帧变换对相应2D点进行三角剖分而获得的。 (使用cv2.triangulatePoints)但是,必须选择哪些框架进行三角剖分?假设3D点相对于框架0的参考,有很多选择可以进行三角剖分。即一个人可以选择框架1并进行三角剖分以获得3D点,或者甚至可以选择框架9并通过应用框架09间的变换进行训练(仅通过链接帧间翻译),或类似地介于两者之间的任何帧。

从理论上讲,如果所有帧间姿态估计都是正确的(具有正确的比例),则使用帧0和任何其他帧进行三角剖分的3D点应相同。但是,束调整的重点是细化稍微不正确的姿势估计。我的理解是,所有姿势的准确性在很大程度上取决于初始三角剖分3D点的准确性。因此,为了获得最佳性能,最佳的框架选择是什么。如何做到这一点?

还是有一种无需显式三角剖分即可执行束调整的方法

注意:请不要建议将视觉里程计流水线(使用2D-2D对应关系)更改为PNP算法,因为我想知道如何针对纯2D-2D情况(使用基本矩阵)来做到这一点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)