OpenCV 包含很多对立体相机 3D 重建的支持。就我而言,我有两个相机,我想知道某个点的 3D 坐标。
我有的:
- 两幅图像上点的像素坐标
- 已知的内在和外在相机参数
我想得到什么:在 3D 中坐标这个点
OpenCV 包含很多对立体相机 3D 重建的支持。就我而言,我有两个相机,我想知道某个点的 3D 坐标。
我有的:
我想得到什么:在 3D 中坐标这个点
我在另一篇文章中回答了同样的问题。
如果你有外部参数,那么你就有了相机姿势。使用相机姿势和 2D 点,您可以预测 3D 点(如果您的 2D 点和外在参数正确,则每个相机的结果应该相同)。您只需要将姿势转换为单应性。我在我链接的帖子中解释了它。
祝你好运!
我不知道 opencv 是否有这个结构。但是我知道您可以使用正弦定律的角度-侧角来构建与相机水平平行的线性距离,使用点->相机->其他相机的内角作为参考点。
然后,一旦获得距离,就可以使用相同的构造计算垂直定位:从死点到点上方或下方多远的角度是相对于任一相机而言的,到第一个找到的对象的距离步骤,您可以使用 90 度作为该假想点(与相机水平的物体上方)和物体之间的角度。
当您没有从两个角度进行三角剖分的经验时,您应该阅读Hartley 的书和 Zisserman 的书。在本书中,描述了一种线性三角测量方法,该方法非常容易实现,具有二维点对应、相机位姿和相机校准。
此处给出了此方法的示例代码。它是基于上面提到的书。
然而,必须满足一些非常重要的条件。首先,测量点的对应关系必须相对于极线约束是正确的x*E*x' = 0
。其次,射线之间的角度应该大于几度,例如2度。