[英]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.