2012-03-26 91 views
3

我正在嘗試使用處理上的多個kinects來製作PointCloud映射用戶。我在用戶的正面和背面使用兩個相反兩側的生物體並生成兩個PointCloud。帶有多個Kinect的PointCloud

麻煩的是PointClouds X/Y/Z沒有同步,它只是把它們放在屏幕上,它肯定看起來很混亂。有一種方法可以計算或比較它們,將第二個PointCloud轉換爲「加入」第一個?我可以手動翻譯位置,但如果我移動傳感器,它會再次關閉。

+0

你在使用'AllFramesReady'事件嗎?這應該是同步所有的相機 – 2012-04-07 02:52:15

回答

4

假設所有Kinects是固定的,我想你會在這個順序去:

  1. 決定哪些的Kinect作爲一個全球參考使用,
  2. 爲每個3D變換GET參數其他Kinects的 - 我想嘗試 使用PMatrix3D和applyMatrix(),雖然它可能是緩慢的,
  3. 適用於其他各個Kinects'點雲的變革和借鑑 雲

我還沒有知道如何獲得Procrustes transformation的轉換參數,但假設它們不會改變,您可能必須設置多個參考點,可能是通過顯示每對中的點雲的Kinects並註冊你知道的點在兩點雲中都是一樣的。獲得足夠的它們之後,構建一個PMatrix3D並將其應用於push/popMatrix中。 這是這個傢伙使用的方法:http://www.youtube.com/watch?v=ujUNj1RDL4I

另一種方法是使用Iterative Closest Point算法並從其輸出構造3D變換。如果有人知道一個好的,我真的很喜歡ICP或PCL庫的處理。

+0

非常感謝!我會試一試,現在我會投票答覆你的答案。 – 2012-03-27 16:49:18