首页 文章

计算3D世界点

提问于
浏览
1

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

我有什么:

  • 校准相机(已知:内在参数矩阵,失真系数向量)

  • 旋转矢量和平移矢量

  • (u,v) - 图像上某点的坐标

  • 一个点和一个未知的两个已知世界坐标

Problem variant #1 已知:X,Y未知:Z

Problem variant #2 已知:X,Z未知:Y

Problem variant #3 已知:Y,Z未知:X

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

1 回答

  • 0

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

    s * P = Ki * p
    

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

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

相关问题