[英]How to create a depth map from PointGrey BumbleBee2 stereo camera using Triclops and FlyCapture SDKs?
我有BumbleBee 2立体摄像机和两个提到的SDK。
我已经设法在程序中捕获了视频,纠正了立体图像并获得了视差图。 我想拥有的下一件事是Kinect给出的类似于深度图的深度图。
Triclops的文档很短,仅引用函数,没有典型的工作流描述。 示例中描述了工作流程。
到目前为止,我发现了2个相关函数: triclopsRCDxxToXYZ()
函数家族和triclopsExtractImage3d()
函数。
第一个族的函数计算单个像素的x,y和z坐标。 Z坐标完美对应于以米为单位的深度。 但是,要使用此功能,我应该创建两个嵌套循环,如stereo3dpoints
示例所示。 这会产生过多的开销,因为每个调用都会返回两个以上的坐标。
第二个函数triclopsExtractImage3d()
始终返回错误TriclopsErrorInvalidParameter
。 该文档仅说“上下文和TriclopsImage3d之间存在几何不匹配”,这对我来说还不清楚。
Triclops 3.3.1 SDK的示例未显示如何使用它。 Google带来了Triclops SDK 3.2中的示例 ,该示例在3.3.1中不存在。
我尝试将上面链接中的第253-273行添加到当前的stereo3dpoints-出现了该错误。
有人有经验吗?
使用triclopsExtractImage3d()
是否有效或已过时?
我还尝试绘制从triclopsRCDxxToXYZ()
获得的disparity
与z
值。
该图显示了几乎精确的反比例关系: 。
那就是z = k / disparity
。 但是k
在整个图像上不是恒定的,它在大约2.5e-5到1.4e-3之间变化,这是两个数量级。 因此,一次计算并永久使用该值是不正确的。
也许有点晚了,您自己弄清楚了,但是:
要使用triclopsExtractImage3d
您必须首先创建3dImage。
TriclopsImage3d *depthImage;
triclopsCreateImage3d(triclopsContext, &depthImage);
triclopsExtractImage3d(triclopsContext, depthImage);
triclopsDestroyImage3d(&depthImage);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.