我必须从 2D 图像进行 3D 重建。我的老师告诉我,第一步是通过对棋盘拍一些照片来获得相机矩阵。我已经有了这些照片,并且正在使用 OpenCV 来获取相机矩阵。该矩阵具有以下形式:
我现在该怎么办?我的老师告诉我,我必须从图像中获取一些特征,然后匹配它们……但是我该如何使用这个矩阵呢?我读到了 Structure-from-motion,但我没有找到任何关于使用这个矩阵的信息。一旦我从图像中获得匹配项,流程是什么?
我必须从 2D 图像进行 3D 重建。我的老师告诉我,第一步是通过对棋盘拍一些照片来获得相机矩阵。我已经有了这些照片,并且正在使用 OpenCV 来获取相机矩阵。该矩阵具有以下形式:
我现在该怎么办?我的老师告诉我,我必须从图像中获取一些特征,然后匹配它们……但是我该如何使用这个矩阵呢?我读到了 Structure-from-motion,但我没有找到任何关于使用这个矩阵的信息。一旦我从图像中获得匹配项,流程是什么?
如果您要从运动路线沿结构向下走,那么您要做的事情绝非易事,因此请确保您和您的老师理解这一点。
该矩阵称为相机校准矩阵(或在摄影测量术语中,内部方向)。通常,运动算法的结构要求每个相机都这样做,从那里,您必须确定每个相机帧的外部方向。外部方向包括空间中的 X、Y、Z 位置以及相机指向方向的描述(通常以欧拉角描述)。这可以使用匹配功能来完成。一旦你有了外部方向,你就可以使用这些信息和特征来对匹配的特征进行三角剖分。
因此,回顾一下一般的 SfM 过程:
大多数 SfM 过程的最后一步使用捆绑调整来优化场景的结构(和相机姿势)。这通常是非常复杂的编码,因此值得查看预先存在的实现,例如Lourakis 的 SBA。
如果您想查看流行的现有 SfM 实现,请查看由 Noah Snavley 编写的Bundler 。此外,对于密集的 3d 重建,请查看PMVS。最后,要获得全面的工作流程,请查看VisualSfM。
如果您正在寻找的更像是基于立体相机的 3d 重建,那么网上有很多关于使用 OpenCV的教程。