我有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()是否有效或已过时?

我还尝试绘制从disparity获得的ztriclopsRCDxxToXYZ()的值。

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

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

最佳答案

也许有点晚了,您自己弄清楚了,但是:

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

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

关于c++ - 如何使用Triclops和FlyCapture SDK从PointGrey BumbleBee2立体摄像机创建深度图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21775081/

10-11 16:04