我在3d空间中有3个视点位置(3d网格上的x,y,z坐标),方向(相对于视点原点x,y,z vector )。它们都看起来,并且每个确实都能看到空间中的三个点(带有过滤出背景的标记(x,y))(例如,我们在白色图像上有一个红色,蓝色,绿色的点)。除了分辨率,我们不知道其他任何视点相机的属性,并且它们是相同(极其相似)的相机。我们如何获得我们在太空中的关键位置?

最佳答案

我假设您已经校准了3台摄像机,否则我不知道是否存在解决问题的方法。

如果您有相机校准参数,即相机矩阵(A),旋转 vector (T),平移 vector (R)。从这些中,您可以使用P = A[R|T]获得投影矩阵。这意味着您可以使用X.Pi = x将现实世界X中的任何3d点投影到图像i,这意味着您可以使用xi' = xi.P3T - P1Tyi' = yi.P3T - P2T为每个 View 获得线性方程组。PiT是P中第i列的转置。该方程组使用奇异值分解。

引用:

  • http://www.robots.ox.ac.uk/~az/tutorials/tutoriala.pdf
  • https://github.com/opencv/opencv_contrib/blob/master/modules/sfm/src/triangulation.cpp
  • http://www.morethantechnical.com/2012/01/04/simple-triangulation-with-opencv-from-harley-zisserman-w-code/
  • 关于python - 从3个角度来看3个图像上有3个点如何在3d空间中获取其坐标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50292631/

    10-16 07:33