我是OpenCV的初学者,我想从2D(投影在图像上)找到3D点,并且知道点中三个世界坐标中的两个 .
校准相机(已知:内在参数矩阵,失真系数向量)
旋转矢量和平移矢量
(u,v) - 图像上某点的坐标
一个点和一个未知的两个已知世界坐标
Problem variant #1 已知:X,Y未知:Z
Problem variant #2 已知:X,Z未知:Y
Problem variant #3 已知:Y,Z未知:X
如何找到第三个未知坐标?可能吗?
对的,这是可能的 . 考虑缺少非线性失真的简单情况 . 令Ki为相机矩阵的倒数,以及世界原点的相机中心(即无旋转或平移) . 设p =(u,v,1)为均匀像素坐标 . 然后通过像素的光线是:
s * P = Ki * p
其中 s > 0 是未知的比例 . 但是 s * P = [X, Y, Z] ,所以如果你知道X,Y或Z中的任何一个,你可以求解 s 并找到缺失的坐标 .
s > 0
s * P = [X, Y, Z]
s
对于非零旋转平移,将Ki替换为投影矩阵的倒数 . 对于非零失真,将Ki替换为完全重投影方程的简单乘法 .
1 回答
对的,这是可能的 . 考虑缺少非线性失真的简单情况 . 令Ki为相机矩阵的倒数,以及世界原点的相机中心(即无旋转或平移) . 设p =(u,v,1)为均匀像素坐标 . 然后通过像素的光线是:
其中
s > 0
是未知的比例 . 但是s * P = [X, Y, Z]
,所以如果你知道X,Y或Z中的任何一个,你可以求解s
并找到缺失的坐标 .对于非零旋转平移,将Ki替换为投影矩阵的倒数 . 对于非零失真,将Ki替换为完全重投影方程的简单乘法 .