如何从透视确定物体的3D位置?

时间:2009-11-19 10:23:17

标签: 3d distance perspective

我有一个如图所示的情况,我需要在矩形空间中但在透视下确定红色和蓝色正方形的x,y。矩形的长度和宽度都是已知的。 从不同位置观看的矩形是相同的。 区别在于,在矩形右侧偏移90度时观察到一个。

...谢谢 alt text

3 个答案:

答案 0 :(得分:1)

请注意,以下是一般解决方案。我想我的数学运算正确;任何知道更好的人都应该评论(或编辑,如果你确定......)

首先,您需要校准您的相机:它们的位置,指向的位置以及它们的视野范围。这将是(或者需要缩小为)每个摄像机的投影矩阵,它将homogeneous世界空间点转换为均匀视点。如果您不是先验地知道这一点,您可以从已知的常见特征(例如,图中投影的灰色矩形)中找出它。

然后,您需要识别您的对象及其在每个图像上的位置。说,找到红色和蓝色矩形的中心。

这将为每个对象或特征提供一个线性系统:

P=[x,y,z,w]^t = world point (homog. 4-vector)
p1=[x1,y1,w1]^t = point on screen 1;  M1= 3x4 projection matrix 1:  p1=M1*P
p2=[x2,y2,w2]^t = point on screen 2;  M2= 3x4 projection matrix 2:  p2=M2*P

您的已知数据是:p1 / w1 =(u1,v1,1)和p2 / w2 =(u2,v2,1);将这些乘以变量w1和w2,得到:

(u1,v1) are constant  ->  p1=[u1*w1,v1*w1,w1]^t
(u2,v2) are constant  ->  p2=[u2*w2,v2*w2,w2]^t
assume that w=1       ->  P=[x,y,z,1]^t

最后,你有一个由5个变量组成的6个方程组:(x,y,z,w1,w2)。由于该系统是超定的,您可以使用最小二乘法来解决它。

了解超定位的一种方法:给定一对相机(如其矩阵所述),您希望它们能够始终如一地显示场景。如果其中一个摄像机未对准(即,如果摄像机矩阵没有完全反映实际摄像机),它可能会显示高于或低于应该(比如说)的位置的物体,因此该摄像机的结果不一致和另一个。

由于您可能使用浮点(甚至可能是现实数据),因此无论如何您的值永远不会完全准确,因此您始终需要处理此问题。最小二乘法允许您解决这种超定系统;它还提供可能有助于诊断和解决数据问题的错误值。

答案 1 :(得分:0)

你有基本的线性代数知识吗?如果是,那就容易了。

1)你需要两个投影的投影矩阵(称为P1和P2为3x2矩阵) 2)你有方程:t(x1,y1)= P1 t(x,y,z)和t(x2,y2)= P2 t(x,y,z)(其中t是向量的转置) 3)你得到一个由3个unknows和4个方程组成的系统

也许你不知道投影矩阵,然后你首先找到它们。

你最有可能构成一些更漂亮的东西(只有一个3乘4的矩阵,左边应该有一个伪逆)。

如果你对线性代数一无所知,那么......只要问问我就会发展。

PS:对不起,如果数学内容很糟糕

答案 2 :(得分:0)

如果这是线性系统,图像处理中的仿射矩阵应该可以帮助您确定其确切位置。 [x,y] =

[Sxcos0,sin0

-sin0,Sycos0]

http://www.sci.utah.edu/~acoste/uou/Image/project3/ArthurCOSTE_Project3.pdf https://www.cse.unr.edu/~bebis/CS485/Lectures/GeometricTransformations.ppt