立体视觉:深度估计

时间:2013-11-13 14:54:31

标签: matlab stereoscopy matlab-cvst disparity-mapping

我正在研究立体视觉任务,我想获得立体视觉相机和物体之间的距离。我正在使用Matlab与计算机视觉系统工具箱 我使用“相机校准工具箱for Matlab”校准了相机,因此我有左右相机的内在参数和外部参数(右相机的位置和左相机)。我还有一对经过纠正的图片和他们的差异图。为了估计视差,我使用了Matlab函数disparity()。我知道相机的基线和焦距,但我的结果仍然是错误的。

baseline = 70 mm
focal length = 25 mm
disparity = 60 pixels
---------------------
depth = baseline * focal length / disparity = 70 * 25 / 60 = 29 mm

但我知道距离是cca 600 mm。这个公式对吗?单位怎么样? mm * mm / pixel != mm。特别是我想使用Camera矩阵(内在参数)进行计算,但我没有弄清楚如何。我会感激任何提示。

1 个答案:

答案 0 :(得分:4)

就像你说的那样,你必须将单位转换成mm。为此你需要这个公式

z = (b*F) / (d*s)

mm = (mm * mm) / (pixel * (mm/pixel)) 

哪里

  • z =以mm为单位的深度
  • b =以毫米为单位的基线
  • F =以mm为单位的焦距
  • d =像素深度
  • s =传感器尺寸,单位为mm /像素。 (通常它提供的是,之前也要进行转换)。

修改

有时您的焦点位于像素中,因此您无需使用传感器尺寸。所以只需使用你的公式:

z = b*F / d
mm = mm * pixel / pixel