2014-11-21 42 views
2

我在左图中有两个相应的点(x1,y1),右图中有(x2,y2)。两台摄像机之间的距离是10米。我想知道如何在右侧相机的坐标中找到3D点?我有以下数据:如何找到2个图像的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

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

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

0

如果您真的很期待追求愿景(多视图几何,并非儿童游戏:P),您可以按照迪玛的建议。如果你只是在这里寻找这个问题的解决方案,它是,

首先,计算度量坐标系中两个像素的坐标,这是通过将相应的K矩阵的逆与相同的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; Ç0 -a; -ba 0]

现在,发现对比例因子,λ-=(歪斜(X2_metric)* T)/(歪斜(X2_metric)* R * X1_metric)

我们几乎完成,在左图像的帧的点的三维坐标,

X1(3D)=(拉姆达* X1_metric)

为了计算右图像的帧中的三维坐标,简单地执行以下变换,

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

我希望它有帮助:)

+0

我有个问题,是在最后一个方程t = 10?或者它是来自给定数据的翻译矢量? – nikhilk 2014-11-21 23:31:36

+0

t是您在问题中提到的翻译矢量。 – Vishu 2014-11-22 07:51:16

+0

那么,这种方法的工作原理与两台相机之间的距离无关? – nikhilk 2014-11-22 16:56:37

相关问题