【问题标题】:Easy monocular camera self-calibration algorithm简单的单目相机自校准算法
【发布时间】:2017-12-28 02:19:51
【问题描述】:

我有一段道路/建筑物的视频,我想用它创建一个 3D 模型。我正在看的场景是僵硬的,无人机正在移动。我假设没有任何额外的信息,如相机姿势、加速度或 GPS 位置。我很想找到一个我可以根据自己的喜好调整的 python 实现。

到目前为止,我已决定将 OpenCV calcOpticalFlowFarneback() 用于光流,这似乎相当快速和准确。有了它,我可以得到带有findFundamentalMat() 的基本矩阵F。到目前为止一切顺利。

现在,根据我正在关注here 的教程,我应该神奇地拥有相机的校准矩阵,我显然没有也不打算在我正在开发的未来应用程序中使用它。

经过长时间的研究,我找到了一篇论文(从点对应和移动相机的自校准 基本矩阵)从 1997 年开始,它定义了我正在寻找的东西(有一个很好的总结 here)。我正在寻找可能的最简单/最简单的实现,但我遇到了这些问题:

  • 如果我要使用的相机自动改变曝光和对焦(不变焦),相机的内在参数会改变吗?
  • 我不熟悉用于数值求解方程的同伦连续方法,而且它们似乎很慢。
  • 我打算使用扩展卡尔曼滤波器,但不知道从哪里开始,知道错误的初始化会导致不收敛。

进一步挖掘,我发现了一个 Multi Camera Self Calibration 工具箱,它是为 Octave 编写的,带有 Python 包装器。我最后的手段是分解代码并直接用 Python 编写。还有其他选择吗?

注意:我不想使用棋盘或平面约束。

还有其他方法可以非常准确地自我校准我的相机吗?从1997年开始研究了20年,有没有人想出更直接的方法??

【问题讨论】:

标签: python opencv camera-calibration kalman-filter


【解决方案1】:

这是一次性的,还是您正在开发一个应用程序来自动处理大量此类视频?

如果是前者,我宁愿使用像 Blender 这样的集成工具。在 youtube 上查找一个运动跟踪(或“matchmoving”)教程以了解它,例如 this one

【讨论】:

  • 谢谢弗朗西斯科。我不知道像 Blender 这样的工具存在。很高兴知道。然而,我的目标是对场景进行真正的深度重建。根据一篇名为 Visual SLAM 算法:2010 年至 2016 年的调查 的论文,总结为here,我已经能够找到我正在寻找的东西。这是一种密集的直接 SLAM 方法,称为 DTAM (demo here)
  • 无论如何,我仍然被自校准问题所困扰
猜你喜欢
  • 2011-01-30
  • 2012-10-16
  • 2021-05-27
  • 1970-01-01
  • 2011-04-05
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
相关资源
最近更新 更多