2011-09-05 147 views
9

其目標是在不同背景(又名背景去除)上顯示此人。使用Kinect去除背景:身體周圍的噪音抑制

我在微軟的Beta Kinect SDK中使用Kinect來做到這一點。在深度的幫助下,背景被過濾,我們只能得到人的形象。

這很簡單,我們可以找到在互聯網上隨處可見的代碼。然而,深度信​​號是嘈雜的,我們得到的像素不屬於所顯示的人。

我申請的邊緣檢測,看它是否是有用的,我目前得到這個:

這裏還有一個沒有邊緣檢測:

enter image description here

我的問題是:我可以通過哪種方式擺脫人物周圍這些嘈雜的白色像素?

我嘗試了形態學操作,但身體的某些部分被擦除,仍然留下白色像素。

該算法不需要是實時的,我可以應用它,當我按下'保存圖像'按鈕。

編輯1:

我只是試圖做的形狀邊界最接近的框架背景減法。你看到的單個像素閃爍,這意味着它是噪音,我可以輕鬆擺脫它們。

編輯2:

現在項目結束了,這裏就是我們所做的:Kinect的的手動校準使用OpenNI驅動程序,它直接提供了紅外圖像。結果非常好,但每個校準都針對每個Kinect。

然後,我們在邊框上應用了一點透明度,結果看起來非常好!但是我無法提供照片。

+1

您可以在應用邊緣檢測器之前發佈圖像嗎? – misha

+1

剛剛補充說。 – wormsparty

+0

可以共享代碼 – ravithejag

回答

5

你的問題不只是嘈雜的白色像素。您也錯過了該人的重要部分,例如他右手的一部分。我建議你對深度數據的閾值更加保守(允許更多的誤報)。這會給你更多噪點的像素,但至少你會有整個人。

爲了擺脫噪聲像素的,我能想到的一對夫婦的事情:

  • 羽毛外像素(減少它們的強度/增加透明度,如果您使用的是alpha通道)
  • 平滑圖像,在平滑圖像上執行邊緣檢測,然後在原始清晰圖像上使用這些邊緣。
  • 做一些皮膚區域檢測以標記絕對屬於某人的部分。請參閱skin detection in the YUV color space?Skin Color Detection
  • 對於衣服,使用色調和飽和度圖像。如果你知道T恤的顏色(或者至少它不是中性顏色),那麼這很容易脫穎而出。如果你不知道這些信息,那麼建立一個使用其他框架的人的模型可能是值得的(如果你的視頻中有一個很大的灰色斑點,那麼你的主題有可能穿着一件灰色的襯衫)

這些方法不是相互排斥的,所以可能值得嘗試組合使用它們。如果我想到別的什麼,我會回到這裏。

+0

謝謝,明天我會看看你的想法。關於缺少人員的部分,我無法控制它,因爲我使用SDK的人員檢測。即使我編寫了自己的版本,當深度信號非常嘈雜時(例如在手臂邊緣或頭髮上),也會發生這些錯誤。有時,在頭部的某些部位,我得到的深度爲0,我無法輕鬆恢復。 – wormsparty

2

如果沒有其他解決邊緣抖動的方法,您可以隨時嘗試使用抗混疊作爲後期處理。