简单的单目相机自校准算法

时间:2017-07-21 22:38:11

标签: python opencv camera-calibration kalman-filter

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

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

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

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

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

再挖掘一些我找到了一个用Python封装器为Octave编写的多相机自校准工具箱开源。我的最后一招是分解代码并直接用Python编写代码。还有其他选择吗?

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

还有其他方法可以非常准确地自我校准我的相机吗?经过自1997年以来的20年研究,有没有人想出一个更直接的方法?

1 个答案:

答案 0 :(得分:0)

这是一次性的事情,还是你正在开发一个应用程序来自动处理这样的大量视频?

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