2011-01-30 156 views
28

我買了一個Kinect在C#上玩我的電腦。 (並且它編程的有趣)Kinect模式識別

我使用CLNUIDevice.dll從Kinect獲取深度圖像。這工作正常,我可以通過圖像中的RGB值讀取深度。

現在我想知道哪些庫有做不同類型的識別。我已經看到了手部識別,人臉識別,骨骼,情感,物體等等。

圖像處理庫不一定要用於Kinect(雖然這很好),它們不一定要用於.Net(儘管那會很好)。例如:任何對象跟蹤lib都可以工作,但如果它能夠正確使用Kinect的3D熱圖,它將會更好。

+0

我見過使用了OpenCV的所有演示的樣品。這是一個醜陋的API的C庫,但應該有C#綁定。 – 2011-01-30 11:46:45

回答

16

您可以採用Kinect生成的一系列RGB矩陣,並通過標準圖像處理算法運行它們,實際上,圖像處理算法通常會結合在一起以產生有意義的結果。下面是可以很容易地在.NET來實現(和組合)幾個標準技術:

模板匹配 - 用於找到圖像的小部件相匹配的模板圖像http://en.wikipedia.org/wiki/Template_matching

形態,其在數字圖像處理的技術圖像處理 - 用於分析和幾何結構的處理的理論和技術的基礎上,集理論,格理論,拓撲和隨機函數 http://ashleyaberneithy.wordpress.com/2011/08/08/automating-radiology-detecting-lung-nodules-using-morphological-image-processing-in-f/

也有可以在特定情況下可以使用更先進的圖像處理技術例如人臉識別和模式匹配機器學習

主成分分析 - 我已經在過去使用這種技術,我認爲這是現代消費相機用於執行面部識別http://en.wikipedia.org/wiki/Principal_component_analysis

機器學習模式匹配 - 我過去使用支持向量機和基於神經網絡的學習算法來檢測圖像矩陣中的模式。值得一讀瓦普尼克的統計學習理論 - http://www.amazon.com/Statistical-Learning-Theory-Vladimir-Vapnik/dp/0471030031,它展示瞭如何將訓練數據成功地映射到n維結構,以及如何在對數據進行分類的結構中成功建模超平面,然後可以基於此模型對新數據進行分類。名爲LibSVM的庫也存在,我發現它很有用。 http://www.csie.ntu.edu.tw/~cjlin/libsvm/

只是一個側面說明,它很可能是更自然的使用F#.NET世界中實現一些這些算法

編輯:另一個真正好的書是「數字圖像處理」

2

一個有用的.Net庫,用於計算機視覺和機器學習是AForge.NET

下面是一個代碼示例,並使用它與Kinect的人的視頻:Conquex

2

學習OpenCV。它是當今計算機視覺實驗室/學習的標準框架。嘗試輪廓發現設施,K最近鄰居等,但首先,瞭解其界面(數據結構,功能)。

0

Siding with Kenny就這一個 - Emgu C#封裝到OpenCV是我的目標。 OpenCV(通常基於C++)是目前應用最廣泛的計算機視覺框架,也是由英特爾部分維護/優化的。目前很多研究人員和工程師都使用它來創建他們自己的項目,Emgu包裝器爲您提供了一個很好的翻譯,以開始在C#中使用它的庫。我覺得Kinect領域的許多開源創新正在發生在libfreenect包裝(最適用於Linux/C++)和EmguCV應該爲您提供模仿(或使用其他人的模仿)這些Vision研究人員的最佳方式是做。

0

對OpenCV進行了一些修正,它曾經是C庫,而遺留代碼仍在維護中,OpenCV現在幾乎是純粹的C++,即從版本2.1開始。當它是一個C語言庫時,其中很多內容處理起來非常複雜,在新版本中已經被簡化了。

另外還有一個Yahoo OpenCV組,它是一個很好的資源。此外openCV還附帶一組樣本,這些樣本可以幫助您更好地掌握基本的模式匹配。

鏈接到雅虎組 http://tech.groups.yahoo.com/group/OpenCV/

Kinect和OpenCV的http://www.morethantechnical.com/2010/11/22/kinect-and-opencv-2-1/