我有一个如图所示的情况,我需要在矩形空间中确定红色和蓝色正方形的 x,y,但在透视下。矩形的长度和宽度是已知的。矩形是相同的,只是从不同的位置看。不同之处在于,在矩形右侧偏移 90 度的情况下进行查看。
3 回答
请注意,以下是通用解决方案。我想我已经算出正确的数学了。任何更了解的人都应该发表评论(或编辑,如果你确定......)
首先,您需要校准您的相机:它们在哪里,它们指向哪里,以及它们的视野是什么。这将作为(或需要简化为)每个相机的投影矩阵,它将同质世界空间点转换为同质视点。如果您不先验地知道这一点,您也许可以从已知的共同特征中找出它(例如,图中投影的灰色矩形)
然后,您需要识别您的对象及其在每张图像上的位置。比如说,找到红色和蓝色矩形的中心。
这将为您提供每个对象或特征的线性系统:
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)您需要两个投影的投影矩阵(称它们为 3x2 矩阵的 P1 和 P2) 2)您有方程:t(x1,y1) = P1 t(x,y,z) 和 t(x2,y2 ) = P2 t(x,y,z) (其中 t 是向量的转置) 3) 你得到一个由 3 个未知数和 4 个方程组成的系统
也许您不知道投影矩阵,那么您首先要找出它们。
您很可能可以编造一些更奇特的东西(只有一个 3 x 4 矩阵,它的左侧应该有一个伪逆矩阵)。
如果您对线性代数一无所知,那么……只要问,我就会发展。
PS:对不起,如果数学的东西是英语不好
如果这是一个线性系统,图像处理中的仿射矩阵应该可以帮助您确定其确切位置。[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