【问题标题】:Bundle adjustment functions捆绑调整功能
【发布时间】:2012-12-04 23:53:00
【问题描述】:

如果我有一个已知的相机位姿(旋转 + 位置)和内在函数(失真系数和相机矩阵),并且 2 个相机从稍微不同的角度指向同一个场景。

有没有办法使用捆绑调整来优化相机姿势?最好在一些已经存在的 API 或函数中使用,这些 API 或函数不需要太多的数学知识。

【问题讨论】:

    标签: opencv camera bundle adjustment


    【解决方案1】:

    您应该使用PBA (Multicore Bundle Adjustment) from Changchang Wu。它确实是一个不错的库,它是用 C++ 编写的。此外,它还具有多核计算甚至 GPU 计算,加速约 20 倍。

    结构清晰,易于使用。

    因此,您应该使用PBA,而不是使用SBA from LourakisSSBA from Christopher Zach

    【讨论】:

    • PBA 优化良好且速度非常快,但支持的功能少于 SSBA(例如 fx/fy)。选择哪一个取决于您正在处理的问题。
    【解决方案2】:

    您可能想在http://www.inf.ethz.ch/personal/chzach/opensource.html 上查看 SSBA,但仍需要一些数学知识才能正确使用它。

    【讨论】:

    【解决方案3】:

    您可以直接在 OpenCV 中尝试实现。它在 contrib 模块中。但我还不能让它正常工作..:/ article about it

    【讨论】:

    • 在撰写本文时它仅限于全景图像,因此如果您进行一些翻译,例如结果很糟糕。
    • 我想反对将全景图像等同于仅假设旋转摄像机运动的普遍概念。仅仅因为相机帧被投影到球体上并不意味着它们必须以这种方式被捕获。我认为 HomographyBasedEstimator 和 BundleAdjusterReproj 以及 BundleAdjusterRay 都假设旋转运动模型是当前 OpenCV 实现中的一个缺陷。当运动模型是仿射时,我希望有其他方法可以解决更通用的问题。
    【解决方案4】:

    试试 Ceres 求解器。 here 提供了一个示例实现。同样,您需要了解捆绑调整的数学原理。但这是不可避免的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-03
      • 2020-02-24
      • 2012-01-29
      • 1970-01-01
      • 2011-03-06
      • 2016-11-16
      • 2014-08-28
      • 1970-01-01
      相关资源
      最近更新 更多