2012-08-10 77 views
2

我正在尋找方式(儘可能快)從Kinect相機獲取相應深度的彩色像素。獲取深度在顏色位置,Kinect SDK

我找到了MapDepthFrameToColorFrame函數。但是這隻能給我一定的深度位置的顏色,我想的是相反的。

我想要這個的原因是,我將能夠點擊RGB圖像上的位置並獲得該像素的位置。

有沒有辦法做到這一點比從MapDepthFrameToColorFrame循環所有結果更快?

回答

6

這裏的問題是,由於攝像機和紅外發射器的位置,並非每個彩色像素都會分配一個深度。如果您面對Kinect並將左手握在胸前,則胸部會有一部分沒有深度數據,因爲您的手阻擋了紅外發射器。由於紅外相機距離RGB相機較近​​,因此從深度到RGB通常不會出現同樣的問題;如果Kinect可以看到紅外,它可以看到RGB。

要回答你的問題:我不知道有什麼辦法可以做到這一點,因爲RGB指數並沒有給你足夠的信息來計算深度指數。你有沒有嘗試過使用MapDepthFrameToColorFrame並像你提到的那樣循環?除非你像瘋子(或電腦)那樣點擊,否則我肯定會認爲應用程序能夠很好地處理這個問題。我不會花時間去嘗試優化它,直到確定它引起問題。

如果您願意,您可以通過檢查函數返回的顏色座標的子集來減少循環的大小。獲取RGB像素(x,y)的座標,然後檢查(x,y)附近的深度座標。也許(x-20,y-20)到(x + 20,y + 20)。如果沒有找到它,可以檢查數組的其餘部分。測試一下,你可能會發現一個很好的範圍來檢查要求的像素,你會在大部分時間得到擊中,沒有很多循環。

+0

謝謝你的好解釋。我真的需要這樣做,因爲它會在每幀更新(〜30/sec)時更新。但使用「近像素」的提示做了這項工作! – user1590336 2012-08-10 14:49:59

+4

@user如果它回答了您的問題,請接受它! – 2012-08-10 15:19:12