我有一对从整流立体图像中提取的匹配2D特征。在OpenCV中使用cvPerspectiveTransform函数,我尝试在3D中重建这些功能。结果与现实世界中的实际对象维度不一致。我意识到Matlab校准工具箱中有一个功能可以将2D立体声功能转换为3D点云。然而,这些特征是从原始图像中提升的。
如果我想使用经过校正的图像,是否可以根据2D要素位置和视差信息重建3D位置。
答案 0 :(得分: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
的最后一个等式应该得出上面给出的公式。