2

我在左图中有两个对应点(x1,y1),在右图中有(x2,y2)。两台摄像机之间的距离为 10 米。我想知道如何在正确的相机坐标中找到 3D 点?我有以下数据:

R=[ 1 0 0;
    0 0.9 -0.25;
    0 0.2 0.96]
t=[ 0.5; -10; 2.75];
Kleft= [-1000 0 511;
         0 -1000 383;
         0  0    1];
Kright=[-500 0 319;
         0 -500 119;
         0 0 1];
Essentail Matrix=[0   -5.2445   -8.9475;
                  2.7500   -0.1294   -0.4830;
                  10.0000    0.4830   -0.1294]
4

2 回答 2

0

如果您真的很期待追求视觉,您可以遵循 Dima 的建议(多视图几何,这不是儿戏:P)。如果您只是在这里寻找问题的解决方案,

首先,计算两个像素在公制坐标系中的坐标,这是通过将对应的K矩阵的逆矩阵乘以齐次像素坐标来完成的,

X1_metric = (Kleft)^-1 * (x1, y1, 1)

X2_metric = (Kright)^-1 * (x2, y2, 1)

现在,计算向量 X2_metric 的偏斜矩阵,即如果 X2_metric = [a,b,c] 那么,

偏斜(X2_metric)= [0 -cb;c 0 -a ;-ba 0 ]

现在,找到比例因子 lambda = (skew(X2_metric)*t)/(skew(X2_metric) * R * X1_metric)

我们差不多完成了,左图帧中点的 3D 坐标是,

X1(3D) = (lambda * X1_metric)

要计算右图帧中的 3D 坐标,只需进行以下变换,

X2(3D) = (R*X1(3D)) + t

我希望它有帮助:)

于 2014-11-21T21:06:04.860 回答
0

对于三角测量算法,请参阅 Hartley、Richard 和 Andrew Zisserman。计算机视觉中的多视图几何。第二版。剑桥,2000 年。312.

或者,您可以使用triangulateMATLAB 计算机视觉系统工具箱中的函数。

于 2014-11-21T13:44:29.673 回答