Pose-Graph Optimization vs Bundle Adjustment

时间:2023-02-03 20:48:38

Pose-Graph Optimization和Bundle Adjustment是Visual Odometry中两种重要的优化方式。

  1. Pose-Graph Optimization

相机位置可以表示为一幅图像:“点”为相机位置,“边”为相机位置间的刚体运动。

Cost function:  Pose-Graph Optimization vs Bundle Adjustment

其中,eij表示边,Ci和Cj是点(即相机位置),Teij表示位置i和j间的变换。Pose-graph optimization寻找能使cost function达到最小的相机位置参数。

  • Loop Constraints

 Loop Constraints:(闭环约束,不知道翻译得对不对):相机运动到t时刻运动到i位置,在t+n时刻再次运动到了i位置,此时即为一个闭环约束。这样的闭环约束减小相距较远的节点间的漂移。

   通过对当前图像与前期图像相似度的评估来寻找闭环约束。

 Loop Detections: 在长时间未找到landmark时,激发对landmark的重新侦测或回到之前标定过的区域。

 Visual Similarity: global image descriptors & local image descriptors

  •  Global Image Descriptors:用全局图像描述子来计算相似度的典型方法:Visual Words

 图像由一个visual words包来描述。两幅图像间的相似性由图像间visual word histograms的距离来计算。Visual word是用整数来表示的高维特征描述子。由于这样的量化,原始的高维描述空间通过k-means聚类划分为一个个不重叠的小单元。这些小单元被称为visual vocabulary。All feature descriptors that fall within the same cell will get the cell number assigned, which represents the visual word. Visual-word-based similarity computation is often accelerated by organizing the visual-word database as an inverted-file data structure  that makes use of the finite range of visual vocabulary.

视觉相似度计算是Loop Detection的第一步。找到n个最相似的图像后,使用极线约束(epipolar constraint)进行几何校验。在两图像间使用宽基线特征匹配(wide-baseline feature matches)计算刚体变换来确认匹配。然后这个刚体变换将作为一个额外的闭环约束添加至pose graph.

 该方法在大型图像数据集的相似度计算中非常有效。

 

2. Windowed (or Local) Bundle Adjustment

    Bundle Ajustment在优化相机参数的同时优化3D landmark参数(pose-graph优化仅针对前者)。Bundle Adjustment考虑n帧(至少2帧)图像的一个窗口,然后针对这个图像集进行相机参数和3D landmarks的参数优化。Bundle Adjustment目的是使图像二次投影误差(image reprojection error)最小:

Pose-Graph Optimization vs Bundle Adjustment

其中pik是第k幅图像上的第i个图像点,该点是3D landmark Xi的投影。g(Xi,Ck)是根据当前相机位置Ck的图像二次投影。

二次投影误差是非线性函数,且通常使用Levenberg-Marquardt法进行优化。这就需要一个初始化,且初始化需要离最小值点很近,通常将一个标准的双视角VO的解作为初始值。针对该优化问题的Jacobian具有特殊的结构,可应用于高效的计算。

相较于单纯的双视角的VO,Windowed bundle adjustment减少了偏移(drift),因为它在多帧图像间操作。当前相机位置由3D landmark连接。图像特征的追踪在之前和之后的相机位置中都存在。当前相机位置和前n-1帧的相机位置需要和n帧图像的检测结果保持一致。窗口大小n大多由运算方面的原因控制。通常情况下bundle adjustment的计算复杂度为O((aM+lN)3),其中M为点的数量,N是相机位置的个数,q是点的参数个数,l是相机位置参数的个数。窗口越小,需要优化的参数个数就越少,因此实时的bundle adjustment就越容易实现。通过优化相机参数和固定3D landmarks可以减少计算复杂度。

 

References:

Scaramuzza D, Fraundorfer F. Visual odometry [tutorial][J]. Robotics & Automation Magazine, IEEE, 2011, 18(4): 80-92.