Computer vision 如何找到2幅图像的3D点

Computer vision 如何找到2幅图像的3D点,computer-vision,matlab-cvst,3d-reconstruction,Computer Vision,Matlab Cvst,3d Reconstruction,我在左图中有两个对应的点(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 11

我在左图中有两个对应的点(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]

有关三角剖分算法,请参见Hartley、Richard和Andrew Zisserman。计算机视觉中的多视图几何。第二版。剑桥,2000年。P312


或者您可以使用MATLAB计算机视觉系统工具箱中的
三角剖分
功能。

如果您真的希望追求视觉,您可以遵循Dima的建议(多视图几何,不是儿童游戏:p)。如果你只是在寻找问题的解决方案,它就在这里

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

X1_度量=(Kleft)^-1*(X1,y1,1)

X2_度量=(克里特)^-1*(X2,y2,1)

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

歪斜(X2_度量)=[0-cb;c0-a;-ba0]

现在,求比例因子lambda=(歪斜(X2_度量)*t)/(歪斜(X2_度量)*R*X1_度量)

我们几乎完成了,左边图像帧中点的3D坐标是

X1(3D)=(λ*X1_度量)

要计算右图像帧中的三维坐标,只需执行以下转换

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


我希望这会有帮助:)

我有一个问题,t=10在上一个等式中吗?或者它是给定数据的平移向量?t是您在问题中提到的平移向量。因此,此方法无论两个摄影机之间的距离如何都有效?两个摄影机之间的距离,只不过是数据中向量“t”的大小(2阶范数)。因此,两个摄像机之间的距离在数据中隐式给出。是的,这种方法总是有效的(除非范数(t)=0):-)