2013-11-14 42 views
0

作爲我的項目的一部分,我必須使用kinect來實現手和手指跟蹤。 從我至今讀的基本方法是:kinect手和手指跟蹤

  1. 跟蹤手
  2. 的輪廓採用凸包或k曲率算法中

這是正確的找到指尖? 如果是有人可以提供關於如何跟蹤輪廓的教程,因爲我無法找到任何好的輪廓。

有沒有其他的方式來跟蹤手和手指?


編輯

後的一些工作,我能夠檢測使用Sobel邊緣檢測圖像中的手的邊緣。但是正在減少我的fps。有什麼方法可以提高其性能? 以及如何從檢測到的邊緣獲取輪廓以執行手指檢測?它可以直接在邊緣完成嗎?

對不起這麼多的問題,但我是新來的這一切的東西

回答

0

一個非常簡單的方法來做到這一點,這是我在安裝成功實施,是簡單地尋找最接近的像素到Kinect的,並假設這是指向手指。 (1)將X和Y裁剪到特定的感興趣區域,在那裏您不希望任何外來物體進入場景(傢俱,牆壁,地板等)。 (2)排除掉落在特定深度範圍之外的所有像素(沒有太近,沒有超出您想要關注的跟蹤區域,用戶將站在哪裏) (3)選擇當前最近(最亮)像素深度圖,並將其設置爲閾值。從該閾值向後(遠離傳感器)工作,直到一定的距離範圍(可能是幾釐米)。 (4)檢查產生的斑點的大小。如果太小,可能只是噪音。如果它太大,比手指或手大,所以它可能是整個身體(手沒有伸向傳感器),所以忽略它。 (5)假設blob通過了以上所有,請跟蹤它。

+0

請問你能解釋一些關於消除噪音?目前我正在做的是找到最近的像素,並允許距離它10釐米的所有像素,但它不斷拾取一些隨機噪聲。我如何刪除它? – vaibhav

+0

噪音是否影響您的跟蹤點或您最近像素的閾值?無論哪種方式,您都需要實現一個檢查指定幀數的系統(3-5應該足夠了),並試圖忽略預期範圍之外的值。這有幫助嗎? – Anselan

0

手指跟蹤是一個巨大的話題。 Anselan爲您提供了輕鬆的解決方案,可以跟蹤來自kinect的最接近手指的指尖,但這就是它 - 沒有冒犯的意思。如果Kinect設置在一個不好的角度,所以它會在你的手指之前看到你的手掌,如果手指直接指向Kinect(深度圖將是黑色的,那麼它不會工作)

Candescent NUI是一個.NET/KinectSDK項目的手指追蹤「安靜」。我不是.NET專家,但我可能會看一下它,因爲我找不到任何可以完成這項工作的C/C++,請讓我知道,如果你發現了什麼。順便說一句,還有一個(封閉源代碼)英特爾的項目,它看起來更有前途,但它只適用於創意相機出於市場營銷的原因