9

我正在从事立体视觉任务,我想获得立体视觉相机和物体之间的距离。我正在使用带有计算机视觉系统工具箱的 Matlab。
我使用“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. 特别是我想使用相机矩阵(内在参数)进行计算,但我不知道如何。我会感谢任何提示。

4

1 回答 1

8

就像您说的,您必须将单位转换为毫米。为此,您需要这些公式

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

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

在哪里

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

编辑

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

z = b*F / d
mm = mm * pixel / pixel
于 2013-11-13T15:03:28.367 回答