簡體   English   中英

如何使用Triclops和FlyCapture SDK從PointGrey BumbleBee2立體攝像機創建深度圖?

[英]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()獲得的disparityz值。

該圖顯示了幾乎精確的反比例關系: 在此處輸入圖片說明

那就是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM