Math 使用3个或更多摄像机计算空间中某点的三维坐标

Math 使用3个或更多摄像机计算空间中某点的三维坐标,math,camera,geometry,Math,Camera,Geometry,我正在做这个项目,我需要知道物体在空间中的“精确”坐标。我开始用这篇论文寻找答案: 它描述了如何找到从两个对齐摄影机的轴到对象的距离。很好,这给了我一个我知道的距离,但我只知道离轴的距离,而不是相机的中间,所以我想如果我不能接近相机中间的距离,那就不太好了 所以我想,太好了,为什么不加两个垂直于前两个的摄像头呢。现在,这给了我平面上的坐标 然后我想,如果摄像机不在同一个平面上,我肯定可以计算出另一个距离,一个摄像机从下平面,一个摄像机从上平面,但这就是问题开始的地方:这些摄像机没有对齐 所以我想

我正在做这个项目,我需要知道物体在空间中的“精确”坐标。我开始用这篇论文寻找答案:

它描述了如何找到从两个对齐摄影机的轴到对象的距离。很好,这给了我一个我知道的距离,但我只知道离轴的距离,而不是相机的中间,所以我想如果我不能接近相机中间的距离,那就不太好了

所以我想,太好了,为什么不加两个垂直于前两个的摄像头呢。现在,这给了我平面上的坐标

然后我想,如果摄像机不在同一个平面上,我肯定可以计算出另一个距离,一个摄像机从下平面,一个摄像机从上平面,但这就是问题开始的地方:这些摄像机没有对齐

所以我想到了两个问题:

  • 有没有可能得到易于与不平行的相机配合使用的公式

  • 如果是的话,就有办法只用两个摄像头,对吗


一般来说,回答问题只需要两个摄像头

现在,假设您的相机位于
(100)
(010)
,并且您可以找到从每个相机指向问题点的向量,例如
(m1,m2,m3)
(n1,n2,n3)
。那么问题点就在两条线的交点上

(1,0,0) + s(m1,m2,m3)
(0,1,0) + t(n1,n2,n3)
从那里,我们得到了方程组

-m1 * s + n1 * t = 1
 m2 * s - n2 * t = 1
 m3 * s - n3 * t = 0
系统有3个方程和2个变量,但2e知道系统有一个解,因为在两条线的交点处有一个点。我建议使用高斯消去法来求解系统,但在大多数情况下,我们也可以通过以下简单的消去法进行处理:

s = (n3/m3) * t
m2 * (n3/m3) * t - n2 * t = 1
(m2 * n3 - n2 * m3)/m3 * t = 1
t = m3/(m2 * n3 - n2 * m3)
问题的关键是

(  (n1*m3)/(m2*n3-n2*m3), 1 + (n2*m3)/(m2*n3-n2*m3), (n3*m3)/(m2*n3-n2*m3) )
或者做一点代数

(n1*m3, m2*n3, n3*m3)/(m2*n3-n2*m3)
除非
m3=0
m2*n3-n2*m3=0
,否则这在大多数情况下都有效

对一般位置的两个摄像机进行类似计算;或者,您可以使用任何线性变换,将相机移动到
(100)
(010)
,使用上述计算,并使用逆变换将结果恢复到其原始坐标


有各种病理学和特殊情况(特别是,如果该点位于两台摄像机确定的轴上,则无法找到该点的位置),但这些情况不会显示在典型数据中。但是,如果你想保证在任何情况下都能回答问题,你需要三个非共线摄像头。

一般来说,回答问题只需要两个摄像头

现在,假设您的相机位于
(100)
(010)
,并且您可以找到从每个相机指向问题点的向量,例如
(m1,m2,m3)
(n1,n2,n3)
。那么问题点就在两条线的交点上

(1,0,0) + s(m1,m2,m3)
(0,1,0) + t(n1,n2,n3)
从那里,我们得到了方程组

-m1 * s + n1 * t = 1
 m2 * s - n2 * t = 1
 m3 * s - n3 * t = 0
系统有3个方程和2个变量,但2e知道系统有一个解,因为在两条线的交点处有一个点。我建议使用高斯消去法来求解系统,但在大多数情况下,我们也可以通过以下简单的消去法进行处理:

s = (n3/m3) * t
m2 * (n3/m3) * t - n2 * t = 1
(m2 * n3 - n2 * m3)/m3 * t = 1
t = m3/(m2 * n3 - n2 * m3)
问题的关键是

(  (n1*m3)/(m2*n3-n2*m3), 1 + (n2*m3)/(m2*n3-n2*m3), (n3*m3)/(m2*n3-n2*m3) )
或者做一点代数

(n1*m3, m2*n3, n3*m3)/(m2*n3-n2*m3)
除非
m3=0
m2*n3-n2*m3=0
,否则这在大多数情况下都有效

对一般位置的两个摄像机进行类似计算;或者,您可以使用任何线性变换,将相机移动到
(100)
(010)
,使用上述计算,并使用逆变换将结果恢复到其原始坐标

有各种病理学和特殊情况(特别是,如果该点位于两台摄像机确定的轴上,则无法找到该点的位置),但这些情况不会显示在典型数据中。然而,如果你想保证在任何情况下都能回答这个问题,你需要三个非共线摄像机