计算3D世界点

时间:2017-05-09 17:17:05

标签: python opencv 3d computer-vision

我是OpenCV的初学者,我想从2D(投影在图像上)找到3D点,并且知道点中三个世界坐标中的两个。

我有什么:

  1. 校准相机(已知:内在参数矩阵,失真系数向量)
  2. 旋转矢量和平移矢量
  3. (u,v) - 图像上某点的坐标
  4. 一个点和一个未知的两个已知世界坐标
  5. 问题变量#1 已知:X,Y未知:Z

    问题变体#2 已知:X,Z未知:Y

    问题变体#3 已知:Y,Z未知:X

    如何找到第三个未知坐标?有可能吗?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。考虑缺少非线性失真的简单情况。令Ki为相机矩阵的倒数,以及世界原点的相机中心(即无旋转或平移)。设p =(u,v,1)为均匀像素坐标。然后通过像素的光线是:

s * P = Ki * p

其中s > 0是未知比例。但是s * P = [X, Y, Z],所以如果您知道X,Y或Z中的任何一个,您可以求解s并找到丢失的坐标。

对于非零旋转平移,将Ki替换为投影矩阵的倒数。对于非零失真,将Ki替换为完全重投影方程的简单乘法。