微軟版 Kinect SDK Beta 版推出!

| | 4 Comments| 14:07
Categories:

image微軟 XBox 360 的 Kinect(介紹)目前在各方面的應用都算是非常地熱門;不過由於微軟本身一開始只將他設定成 XBox 360 上的裝置,所以在其他環境(尤其是 PC)上要使用他,就得靠各式各樣的替代方案了∼而 Heresy 之前也針對 Kinect 技術製造商 PrimeSense 所推動的 OpenNI,做了一些程式開發上的介紹(介紹文)。

不過,之前二月的時候,微軟也已經放話過,會在春季推出 Winodws 上的 Kinect SDK 了∼大家等了很久,現在微軟終於放出第一個 Beta 版的 SDK 了!有需要的人可以到 Microsoft Research 的網頁上去下載了!他的網址是:http://research.microsoft.com/kinectsdk

目前 Kinect SDK 僅能用在 Winodws 7 的電腦上、不能在其他版本的 Windows 上執行;而微軟有同時提供 32 位元和 64 位元的版本,裡面包含了:

  • Kinect 在 Windows 7 上所需的驅動程式(包含四個裝置:Microsoft Kinect Audio Array Control、Microsoft Kinect Camera、Microsoft Kinect Device、Kinect USB Audio)
  • Application programming interfaces (APIs)、裝置介面(device interface),以及技術文件
  • 範例原始碼

不過也要注意,由於目前各種平台的 Kinect 驅動程式都不相同,所以如果使用微軟官方的 SDK 的話,建議先移除其他版本的驅動程式,以確保微軟官方的驅動程式能正確地安裝;當然,像是 OpenNI 這類的平台也就無法使用了∼

另外,雖然微軟有提供 32 位元和 64 位元兩種版本,但是主要是針對驅動程式的部分;目前的 Kinect SDK 應該僅只有支援建置 x86(win32)、也就是 32 位元的程式,並沒有辦法編譯出 64 位元的 Kinect 程式。同時,這個版本也只能用在非商業用途,如果想寫個要賣錢的程式,就得等之後的版本看看微軟要怎麼收費了∼

而在系統需求方面,硬體上需要:

  • Kinect(當然,要能接上電腦,所以需要他的轉接線)
  • 雙核心 2.66-GHz 或更快的處理器
  • 支援 DirectX 9.0c、相容 Windows 7 的顯示卡
  • 2GB 記憶體(建議 4GB)

軟體的部分,則需要:

他目前提供了那些功能呢?透過 Kinect SDK,開發者可以在 Visual Studio 2010 裡使用 C 、C# 或 VisualBasic 進行開發(範例程式都是 C 或 C#),並且可以:

  • 讀取 Kinect 感應器的原始資料(raw data streams、包括了深度感應器、彩色攝影機以及四個單元的麥克風陣列)
  • 追蹤一或兩個人的人體骨架,並根據骨架資料進行分析
  • 進階聲音處理,包含了聲音雜訊的抑制、回音的消除以及聲音來源方向的判斷,同時也可以整合 Microsoft Speech 來做語音辨識。

目前 Heresy 自己還沒真的下去寫,不過根據《Kinect SDK Reference》和《Programming Guide》(PDF)的內容來看的話,在 SDK 的內部,他是把功能分為 NUI APIAudio API 兩個部分。前者主要就是視訊(深度、彩色影像)、骨架以及 Kinect 角度控制(Kinect 上是有馬達的)的部分;而後者,則就是聲音的部分了∼

下面的圖則是《Programming Guide》內的 Kinect SDK 的架構圖:

image

而如果把微軟的 Microsoft SDK 拿來和 OpenNI 的 NITE 相比呢?

image首先,Kinect SDK 的骨架分析能分析出更多的骨架;相較於 NITE 能抓出 15 個關節點(參考),Kinect SDK 能抓到 20 個關節,在手腕、腳踝的部分,也都能獨立抓出來(準確度就不知道了 XD)。

再來,Kinect SDK 的骨架辨識與追蹤是不需要像 OpenNI 一樣要先擺出校正姿勢的!而且辨識的速度感覺還相當地快∼當然,OpenNI NITE 在某種程度上也可以做到不用校正姿勢的骨架追蹤中(參考),但是相較之下,Kinect SDK 直接使用這樣的方法,算是更方便的了。

以這兩點來說,Microsoft 的 Kinect SDK 是比較強大的;不過相對的,Kinect SDK 的骨架關節應該都只有位置的資訊,而不像 OpenNI 的骨架關節,除了位置以外,還同時提供方向和可靠度的資訊,可以做額外的處理。以這方面來說,應該還是 OpenNI 做得比較好。

另外,目前 Kinect SDK 似乎只能追蹤一或兩個人的完整骨架(原文為:The skeletal tracking engine provides full skeletal tracking for one or two players in the sensor’s field of view.);所以在人數方面,應該是 OpenNI 勝出的∼(不過在 Kinect 視野裡面能塞多少人又是另一回事了)

而在聲音的部分,Kinect 本身內建了四個單元的麥克風陣列,理論上應該可以提供相當好的效果,不過很可惜、OpenNI 目前在聲音的部分,應該算是沒有實際的功用的。

相較與此,Kinect SDK 則是有提供相對完整的聲音處理功能,利用這組麥克風陣列,除了可以做到更好的雜音抑制回音消除外,也可以透過「Beamforming」(參考維基百科)來判斷聲音的來源方向;而如果搭配 Microsoft Speech 的話,也可以做到語音辨識的功能∼功能算是相當地強大了!

整體來看,Microsoft Kinect SDK 目前所提供的功能算是相當強大的!在骨架分析的部分基本上和 OpenNI 應該算是互有勝負,但是在聲音處理的部分,就真的是完全勝利了∼另外對於 OpenNI 不能控制到的 Kinect 馬達,Kinect SDK 也可以順利地去讀取、設定 Kinect 攝影機角度的參數

不過和 OpenNI 相比,Kinect SDK 在某些方面卻還是沒有 OpenNI 來的多功能,例如 OpenNI 有提供的手勢辨識、姿勢偵測(雖然 OpenNI NITE 提供的也不多)、前景分析、錄製/重播…等等。再加上 OpenNI 有跨平台的特性、不像 Kinect SDK 被綁在 Windows 7 上,所以基本上,OpenNI 應該還是有它存活的空間吧?


附註:Kinect SDK 的 USB 似乎會挑 USB Port,如果確定驅動程式有安裝正確、但是執行官方的範例程式時還是出現「NuiInitialize failed」或是找不到 Kinect 之類的錯誤的話,請試著把 Kinect 接到另一個 USB Port 再試試看。

4 thoughts on “微軟版 Kinect SDK Beta 版推出!”

  1. 我已換過插孔了,可是還是出現”NuiInitialize failed”是我有安裝OPENNI的關係嗎?(Driver已換了)

  2. to 基哥建議多換幾個試試看。Heresy 自己是換了三個 Port、沒有和其他裝置共用的才成功。另外,也請確認在裝置管理員裡這些裝置都有正確抓到。

  3. 我能用的都用了(還把滑鼠的拔下來換kinect),結果還是不行OTZ!裝置管理員以確認過了,都有安裝

  4. to 基哥抱歉,那 Heresy 也不知道了 @@不知道有沒有可能換一台電腦試試看?

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *