捆绑调整功能
Posted
技术标签:
【中文标题】捆绑调整功能【英文标题】:Bundle adjustment functions 【发布时间】:2012-12-04 23:53:00 【问题描述】:如果我有一个已知的相机位姿(旋转 + 位置)和内在函数(失真系数和相机矩阵),并且 2 个相机从稍微不同的角度指向同一个场景。
有没有办法使用捆绑调整来优化相机姿势?最好在一些已经存在的 API 或函数中使用,这些 API 或函数不需要太多的数学知识。
【问题讨论】:
【参考方案1】:您应该使用PBA (Multicore Bundle Adjustment) from Changchang Wu。它确实是一个不错的库,它是用 C++ 编写的。此外,它还具有多核计算甚至 GPU 计算,加速约 20 倍。
结构清晰,易于使用。
因此,您应该使用PBA,而不是使用SBA from Lourakis 或SSBA from Christopher Zach。
【讨论】:
PBA 优化良好且速度非常快,但支持的功能少于 SSBA(例如 fx/fy)。选择哪一个取决于您正在处理的问题。【参考方案2】:您可能想在http://www.inf.ethz.ch/personal/chzach/opensource.html 上查看 SSBA,但仍需要一些数学知识才能正确使用它。
【讨论】:
确实它已经消失了,你仍然可以从这个 repo 的子目录中获取 SSBA 3.0 的代码:github.com/royshil/SfM-Toy-Library/tree/master/3rdparty【参考方案3】:您可以直接在 OpenCV 中尝试实现。它在 contrib 模块中。但我还不能让它正常工作..:/ article about it
【讨论】:
在撰写本文时它仅限于全景图像,因此如果您进行一些翻译,例如结果很糟糕。 我想反对将全景图像等同于仅假设旋转摄像机运动的普遍概念。仅仅因为相机帧被投影到球体上并不意味着它们必须以这种方式被捕获。我认为 HomographyBasedEstimator 和 BundleAdjusterReproj 以及 BundleAdjusterRay 都假设旋转运动模型是当前 OpenCV 实现中的一个缺陷。当运动模型是仿射时,我希望有其他方法可以解决更通用的问题。【参考方案4】:试试 Ceres 求解器。 here 提供了一个示例实现。同样,您需要了解捆绑调整的数学原理。但这是不可避免的。
【讨论】:
以上是关于捆绑调整功能的主要内容,如果未能解决你的问题,请参考以下文章