【问题标题】:How to create a depth map from PointGrey BumbleBee2 stereo camera using Triclops and FlyCapture SDKs?如何使用 Triclops 和 FlyCapture SDK 从 PointGrey BumbleBee2 立体相机创建深度图?
【发布时间】:2014-03-13 13:28:41
【问题描述】:

我有 BumbleBee 2 立体摄像头和两个提到的 SDK。

我已经设法在我的程序中捕获了一段视频,校正了立体图像并获得了视差图。接下来我想要一张类似于 Kinect 提供的深度图。

Triclops 的文档很短,它只引用了函数,没有典型的工作流程描述。工作流程在示例中进行了描述。

到目前为止,我已经找到了 2 个相关函数:triclopsRCDxxToXYZ() 函数家族和 triclopsExtractImage3d() 函数。

第一个系列的函数计算单个像素的 x、y 和 z 坐标。 Z 坐标完全对应以米为单位的深度。然而,要使用这个函数,我应该创建两个嵌套循环,如stereo3dpoints 示例所示。这会带来太多开销,因为每次调用都会返回两个以上的坐标。

第二个函数triclopsExtractImage3d() 总是返回错误TriclopsErrorInvalidParameter。文档只说“上下文和 TriclopsImage3d 之间存在几何不匹配”,这对我来说并不清楚。

Triclops 3.3.1 SDK 的示例没有展示如何使用它。 Google 带来了example from Triclops SDK 3.2,在 3.3.1 中是没有的。

我尝试将上面链接中的第 253-273 行添加到当前的 stereo3dpoints - 得到了那个错误。

有人有经验吗?

使用triclopsExtractImage3d() 是否有效还是已过时?

我还尝试绘制从triclopsRCDxxToXYZ() 获得的disparityz 的值。

该图显示了几乎精确的反比例:。

那是z = k / disparity。但是k 在整个图像中并不是恒定的,它从大约 2.5e-5 到 1.4e-3 变化,即两个数量级。因此,这个值只计算一次就永远使用是不正确的。

【问题讨论】:

    标签: c++ depth-buffer stereo-3d


    【解决方案1】:

    也许有点晚了,你自己想通了,但是:

    要使用triclopsExtractImage3d,您必须先创建一个 3dImage。

    TriclopsImage3d *depthImage;
    triclopsCreateImage3d(triclopsContext, &depthImage);
    triclopsExtractImage3d(triclopsContext, depthImage);
    triclopsDestroyImage3d(&depthImage);
    

    【讨论】:

      猜你喜欢
      • 2021-03-29
      • 2018-06-27
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      相关资源
      最近更新 更多