计算3D世界点
Calculating 3D world point
我是 OpenCV 的初学者,我想从 2D(投影在图像上)找到 3D 点,并且已知一个点的三个世界坐标中的两个。
我有:
- 校准相机(已知:内在参数矩阵,畸变系数向量)
- 旋转矢量和平移矢量
- (u, v) - 图像上某个点的坐标
- 一个点的两个已知世界坐标和一个未知
问题变量 #1 已知:X, Y 未知:Z
问题变量 #2 已知:X, Z 未知:Y
问题变量 #3 已知:Y、Z 未知:X
如何找到第三个未知坐标?可能吗?
是的,这是可能的。考虑不存在非线性失真的简单情况。令 Ki 为相机矩阵的逆矩阵,相机中心位于世界原点(即无旋转或平移)。令 p=(u, v, 1) 为齐次像素坐标。那么通过该像素点的光线为:
s * P = Ki * p
其中 s > 0
是未知比例。但是 s * P = [X, Y, Z]
,所以如果你知道 X、Y 或 Z 中的任何一个,你就可以求解 s
并找到缺失的坐标。
对于非零旋转平移,将 Ki 替换为投影矩阵的逆矩阵。对于非零失真,用完整的重投影方程代替 Ki 的简单乘法。
我是 OpenCV 的初学者,我想从 2D(投影在图像上)找到 3D 点,并且已知一个点的三个世界坐标中的两个。
我有:
- 校准相机(已知:内在参数矩阵,畸变系数向量)
- 旋转矢量和平移矢量
- (u, v) - 图像上某个点的坐标
- 一个点的两个已知世界坐标和一个未知
问题变量 #1 已知:X, Y 未知:Z
问题变量 #2 已知:X, Z 未知:Y
问题变量 #3 已知:Y、Z 未知:X
如何找到第三个未知坐标?可能吗?
是的,这是可能的。考虑不存在非线性失真的简单情况。令 Ki 为相机矩阵的逆矩阵,相机中心位于世界原点(即无旋转或平移)。令 p=(u, v, 1) 为齐次像素坐标。那么通过该像素点的光线为:
s * P = Ki * p
其中 s > 0
是未知比例。但是 s * P = [X, Y, Z]
,所以如果你知道 X、Y 或 Z 中的任何一个,你就可以求解 s
并找到缺失的坐标。
对于非零旋转平移,将 Ki 替换为投影矩阵的逆矩阵。对于非零失真,用完整的重投影方程代替 Ki 的简单乘法。