2014-04-13 1247 views
4

我想从立体相机中获得物体的实际距离。我正在使用学习OpenCV O'Reilly书中给出的OpenCV示例代码。获得视差图后,我想使用的公式:从视差图中获取真实深度

距离= FOCAL_LENGTH *基线距离/差距

的问题是:

  1. 我收到差距负值。如何转换这些值,以便它们可用于实际深度计算?

  2. 在以上公式中,焦距和基线距离的单位是毫米(由重投影矩阵返回),而视差将以像素为单位。所以结果将以mm^2 /像素为单位。如何将视差值从像素转换为毫米。

+0

为什么我会得到负值的差距?据我了解,这应该是积极的。它与相机的方向有关吗? – user3291650

回答

0

为差距转换为距离的简单公式为平行摄像机的情况下写的,并与测量的单位(毫米,你的情况)表示的差异。

在实践中,使用的OpenCV,并假设你的立体声钻机被校准后,将执行一个致密三角测量,使用常规像reprojectImageTo3D

+2

如何将视差转换为mm? – user3291650

+0

你有问题的答案吗?如果是的话,我想知道解决方案,因为我也在研究同一个问题。在这一点上,我有xyz点云,qmatrix等。谢谢 – Ghimire

0

可以使用的CV立体对应的功能,如立体声块匹配或半全局块匹配。这将为您提供整个图像的视差图,该图可以使用Q矩阵(cv :: reprojectImageTo3D)转换为3D点。