关于python:计算3D世界点

Calculating 3D world point

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

我拥有的:百万千克1校准摄像机(已知:固有参数矩阵、畸变系数矢量)百万千克1百万千克1旋转矢量和平移矢量百万千克1百万千克1(u,v)-图像上点的坐标百万千克1百万千克1一个点的两个已知世界坐标和一个未知世界坐标百万千克1

问题变量1已知:x,y未知:z

问题变量2已知:x,z未知:y

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

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


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

1
s * P = Ki * p

其中,s > 0是一个未知的尺度。但是s * P = [X, Y, Z],所以如果你知道x、y或z中的任何一个,你可以解出s并找到缺少的坐标。

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