【发布时间】: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年,有没有人想出更直接的方法??
【问题讨论】:
-
更新:在 2017 年的 survey 中,我找到了对 a paper from 2009 的引用,这是使用视频序列进行相机自校准的最新技术。该调查还提到了处理相机参数变化以及消除相机变焦效果的出版物。
标签: python opencv camera-calibration kalman-filter