1

我正在使用 Matlab 的相机校准工具箱。校准后,我有立体相机系统的内在和外在参数。接下来,我想确定相机系统和物体之间的距离。为了获得这些信息,我使用了工具箱中包含的函数 stereo_triangulation。输入是两个矩阵,包括左右图像中对应的像素坐标。

我尝试使用基本块匹配方法获取对应坐标,该方法在 Matlab 的立体视觉帮助中有所描述。

我的图片分辨率为 1280x960 像素。我知道最大的差异在 520 像素左右。我将视差范围的最大值设置为 520。但随后确定坐标需要很长时间。在实践中是不可能使用的。使用 Matlab 的函数 disparity() 计算视差图要快得多。但我想要前面的步骤 - 对应的坐标。

请您建议我如何有效地使用 Matlab 获得坐标?

4

1 回答 1

1

视差和 3D 通过简单的公式关联(见下文),因此计算 3D 数据和视差图的时间应该相同。符号是

  • f - 以像素为单位的焦距,
  • B - 相机之间的分离,
  • u, v - 系统中以图像中间为中心的行和列,
  • d-视差,
  • x, y, z - 3D 坐标。

z=f*B/d;
x=z*u/f;
y=z*v/f;

1280x960 的分辨率对于任何相关立体声都无法实时工作来说太大了。想一想:您必须遍历 2d 图像、2d 相关窗口和视差范围。这意味着 5 个嵌入式循环!我不再使用 Matlab,但我知道它很慢。

于 2014-03-09T06:38:57.843 回答