从两个2D点重建3D点?

7

OpenCV包含了许多支持从立体相机进行3D重建的功能。在我的情况下,我有两个摄像头,并且我想知道某个点的三维坐标。

我拥有:

  1. 该点在两幅图像上的像素坐标
  2. 已知的内部和外部相机参数

我想要得到:

该点的三维坐标

3个回答

3

我在另一个帖子post中回答了同样的问题。

如果您拥有外参,则拥有摄像机姿态。有了摄像机姿态和2D点,您可以将3D点投影到图像上(如果您的2D点和外参是正确的,则每个摄像机应该得到相同的结果)。您只需要将姿态转换为单应矩阵即可。我在链接中的帖子中解释了它。

祝好运!


据我理解,你的回答与这个情况不同。 - Mehdi

2
当你没有从两个视角三角化点的经验时,你应该阅读Hartley和Zisserman的书。在这本书中,描述了一种线性三角化方法,只需具备2D点对应、相机姿态和相机校准即可实现。
该方法的示例代码可以在这里找到,基于上述书籍。
然而,有很重要的条件必须满足。首先,测量的点对应必须符合极线约束x*E*x' = 0。其次,射线之间的夹角应大于几度,例如2度。

1

我不知道opencv是否有这样的结构。但是我知道您可以使用正弦定理来构建水平平行于相机的线性距离,使用点->相机->其他相机的内角作为参考点。

然后,一旦您获得了距离,您可以使用相同的结构计算垂直定位:其中角度从中心到点在相机上方或下方的距离计数,第一步找到的对象的距离,您可以使用90度作为想象点(在对象水平到相机之上)和对象之间的角度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接