我在左图像中有两个对应点(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]
答案 0 :(得分:0)
对于三角测量算法,请参阅Hartley,Richard和Andrew Zisserman。计算机视觉中的多视图几何。第二版。剑桥,2000年.p。 312。
或者您可以使用计算机视觉系统工具箱中的triangulate
功能进行MATLAB。
答案 1 :(得分:0)
如果您真的很期待追求视觉(多视图几何,不是儿童游戏:P),您可以遵循Dima的建议。如果您只是在寻找问题的解决方案,那么
首先,计算公制坐标系中两个像素的坐标,这是通过将相应K矩阵的倒数乘以均匀像素坐标来完成的,
X1_metric =(Kleft)^ - 1 *(x1,y1,1)
X2_metric =(Kright)^ - 1 *(x2,y2,1)
现在,计算向量X2_metric的偏斜矩阵,即,如果X2_metric = [a,b,c]那么,
skew(X2_metric)= [0 -c b; c 0 -a; -b a 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
我希望它有所帮助:)。