0

我有一对从校正立体图像中提取的匹配二维特征。在 OpenCV 中使用 cvPerspectiveTransform 函数,我尝试在 3D 中重建这些特征。结果与现实世界中的实际对象尺寸不一致。我意识到 Matlab 校准工具箱中有一个功能可以将 2D 立体特征转换为 3D 点云。然而,这些特征是从原始图像中提取的。

如果我想使用校正后的图像,是否可以根据 2D 特征位置和视差信息重建 3D 位置。

4

1 回答 1

3

如果您知道校正立体图像对中的焦距(f)和基线宽度(b,两个相机的投影轴的距离)以及视差(d),您可以计算距离(Z)以下公式:

Z = f*(b/d);

这由以下等式得出:

x_l = f*(X/Z);  // projecting a 3D point onto the left image
x_r = f*((X+b)/Z);  // projecting the same 3D point onto the right image
d = x_r - x_l = f * (b/Z); // calculating the disparity

解决最后一个方程Z应该导致上面给出的公式。

于 2012-11-21T08:11:02.007 回答