-1

我必须从 2D 图像进行 3D 重建。我的老师告诉我,第一步是通过对棋盘拍一些照片来获得相机矩阵。我已经有了这些照片,并且正在使用 OpenCV 来获取相机矩阵。该矩阵具有以下形式:

相机矩阵

我现在该怎么办?我的老师告诉我,我必须从图像中获取一些特征,然后匹配它们……但是我该如何使用这个矩阵呢?我读到了 Structure-from-motion,但我没有找到任何关于使用这个矩阵的信息。一旦我从图像中获得匹配项,流程是什么?

4

1 回答 1

9

如果您要从运动路线沿结构向下走,那么您要做的事情绝非易事,因此请确保您和您的老师理解这一点。

该矩阵称为相机校准矩阵(或在摄影测量术语中,内部方向)。通常,运动算法的结构要求每个相机都这样做,从那里,您必须确定每个相机帧的外部方向。外部方向包括空间中的 X、Y、Z 位置以及相机指向方向的描述(通常以欧拉角描述)。这可以使用匹配功能来完成。一旦你有了外部方向,你就可以使用这些信息和特征来对匹配的特征进行三角剖分。

因此,回顾一下一般的 SfM 过程:

  1. 校准相机(你已经完成了)。
  2. 跨场景收集图像。
  3. 在每个图像之间查找和匹配特征(查看 OpenCV 的feature2d模块)。
  4. 使用匹配特征估计每一帧的相机位姿
  5. 使用相机位姿和匹配特征对每个匹配点的 3D 结构进行三角测量

大多数 SfM 过程的最后一步使用捆绑调整来优化场景的结构(和相机姿势)。这通常是非常复杂的编码,因此值得查看预先存在的实现,例如Lourakis 的 SBA

如果您想查看流行的现有 SfM 实现,请查看由 Noah Snavley 编写的Bundler 。此外,对于密集的 3d 重建,请查看PMVS。最后,要获得全面的工作流程,请查看VisualSfM

如果您正在寻找的更像是基于立体相机的 3d 重建,那么网上有很多关于使用 OpenCV的教程。

于 2013-12-08T17:38:51.957 回答