Kinect for Windows SDK v2 基本介紹

| | 0 Comments| 16:49
Categories:

最近 Heresy 終於開始認真學 Kinect for Windows SDK v2的程式開發了!而這一篇,就算是開始寫程式之前,一些比較基本的介紹了~

Kinect 最早是針對 Xbox 360 遊戲機所推出用來作為體感操作用的深度感應器,而 Kinect for Windows 則是將這個感應器用在 Windows PC 上的開發套件(最初的介紹)。不過當時 Heresy 主要是在學 OpenNI,所以比較沒有涉略這一塊。

而現在的 Kinect for Windows v2(以下簡稱 K4Wv2)呢,則是新一代、針對 Xbox One 的深度感應器的 SDK;他和舊款的感應器是不相容的(但是可以同時安裝、使用),而是針對新的感應器,提供更強大的功能。

基本介紹

下面的圖片,是官方投影片內的示意圖(參考)。可以看到,他主要的構成,是包括了深度感應器(depth sensor)、彩色攝影機(RGB camera)以及四個單元的麥克風陣列(microphone array)所組成。

如果對感應器有興趣的話,可以參考之前的開箱文(Kinect for Xbox One @ Windows 開箱文Kinect for Windows v2 感應器簡單開箱 )。

而透過 SDK 可以取得的資料,則包括了:

  • 彩色影像:1920 x 1080 @ 30 / 15 FPS(根據環境亮度)
  • 深度影像:512 x 424 @ 30 FPS、16bit 距離值(mm)、可偵測範圍 0.5 ~ 8 M
  • 紅外線影像:512 x 424 @ 30 FPS、16bit 強度值
  • 聲音資訊

根據上面的原始資料,則可以再透過軟體,進行人體的追蹤、骨架的辨識(0.5 ~ 4.5 M)。在 K4Wv2 下,最多六個人、每個人 25 個關節點(右圖),其中每個關節點都可以取得空間中的位置、以及方向性資訊。而由於這代的 SDK 有辦法抓到拇指,所以也可以藉此來判斷手的開闔~

在聲音的部分,由於他配置了麥克風的陣列,所以可以用來判斷出聲音的來源方向。

上面的都算是 Kinect SDK 提供的基本功能,而更進一步,K4Wv2 也另外提供了一些額外的模組,可以用來進行:用手來操作的介面,人臉追蹤與分析(Face)、人臉多邊形重建(HD Face),以及 3D 場景的重建(Fusion)等功能。

此外,目前 K4Wv2 也還有提供了預覽版的手勢辨識、自動學習功能,讓手勢的辨識從程式面轉到資料面,相對起來應該會更為好用、簡單。

而如果搭配 Microsoft Speech SDK 的話,也可以用來分析聲音的輸入、拿來做語音的控制。


系統需求

而在開始之前,首先須要確認自己的電腦的硬體需求。K4Wv2 的系統需求,其實算是相當高的!根據官方的列表,他需要:

  • 作業系統:Windows 8、Windows 8.1、Embedded 8 Standard(應該需要 64 位元版本)
  • 硬體:
    • 64bit、雙核心 3.1Ghz 以上的處理器
    • 4GB 以上的系統記憶體
    • 可支援的 USB 3.0 控制器(Intel 或 Renesas 晶片)
    • 支援 DirectX 11 的顯示卡
  • 開發環境:Visual Studio 2012、Visual Studio 2013

所以,如果電腦不符合上述需求的話,建議先想辦法把它弄到符合需求再說吧。

其中,比較討厭的應該是 USB 3.0 的控制器了吧…他的相容性,感覺比上一代更差了。而如果是電腦上的 USB 3.0 控制器不能用的話,個人是建議可以考慮買張 Renesas(NEC)晶片的 USB 3.0 擴充卡來用;Heresy 自己就是這樣才能使用的。

而在開發環境的部分,微軟現在也有釋出免費的全功能版 Visual Studio Community 2013 了~所以對於個人使用者來說,要取得應該不會有什麼問題了。


安裝

如果確定基本環境沒問題,手邊也有感應器的話,接下來就是要到官網(連結)、下載 SDK 來安裝了~目前最新的版本是 2014/10/21 的 2.0.1410.19000(下載頁面);目前 SDK 只有英文版,說實話,SDK 這類型的東西有中文版的機會應該不大。

檔案下載完成後,請直接執行並完成安裝。SDK 預設的安裝路徑會在「C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409」(最後的版本可能以後會有不同),裡面包含了開發 K4Wv2 所必需的東西。
(運作所需的檔案有的會裝在別邊)

在安裝完 SDK 的同時,會順便安裝 K4Wv2 的驅動程式。而如果一切都順利的話,在連上感應器後,在裝置管理員裡面,應該可以看到像是右圖的狀況。其中包括了:

  • WDF KinectSensor Interface 0
  • Xbox NUI Sensor
  • 麥克風陣列(Xbox NUI Sensor)

另外,由於 K4Wv2 基本上應該是採用 server – client 的操作模式,在安裝完成後,就會有管理 Kinect 感應器的程式在背景執行著;所以在工作管理員裡面,應該也會看到好幾個多出來的處理程序:

  • KinectMonitor.exe
  • KinectService.exe
  • KStudioHostService.exe

不過上面都只是 Heresy 有注意到的,還有沒有其他的就不確定了。


SDK Broswer、測試

當都準備就緒後,就可以透過「SDK Browser (Kinect for Windows) v2.0」來跑一些範例程式起來測試了~

SDK Broswer 的介面基本上如下,裡面有許多的工具、範例等資源,可以用來參考。

在這個介面上有一些分類,其中在範例的部分,有提供 C#、C 、以及 Windows Store 三種,前兩者都可以透過按右下角的「Run」直接執行。

如果是和 Heresy 一樣,是要進行 Native C 的程式開發的話,就是要看 C 的範例;而如果是打算使用 .Net Framework 來做開發環境的話,則是可以參考 C# 的範例。

至於 Windows Store 的範例,則是透過 WinRT API(Windows API for Windows Runtime apps、MSDN)來做為開發環境,這樣可以開發出可以在 Windows 8 的 Windows Store 上架的 App。

而在都安裝好後,個人會建議先選幾個範例來執行、確認裝置是可以正確運作的。例如,如果找到「Depth Basics-D2D」之後,點選他右下角的「Run」的話,應該就會看到類似右圖的深度圖。

如果範例都可以正常運作的話,那應該就代表軟硬體的環境設置沒有問題了~

接下來,如果想要自己編譯、修改範例的話,除了可以在 SDK Broswer 裡面點選「Install」、將檔案複製到指定的地方來進行後續動作外,也可以直接把「Samples」目錄下需要的範例手動複製出來。
(因為資料夾權限的關係,所以本來的檔案位置無法進行修改)


SDK 架構

而在這篇最後,先來提一下 K4W v2 的 SDK 架構。下圖是出自官方投影片的架構圖(High-level architecture):

在上圖中,紅色的部分,就是 K4W v2 SDK 軟體上的所提供的功能;最下方的「Kinect Drivers」是用來和實際的感應器硬體溝通的,而在上面則有「Kinect Runtime」在運作。對於程式開發者,SDK 則是提供了「Native API」、「.Net API」以及「WinRT API」可以用來開發屬於自己的應用程式。

而也由於 K4W v2 是採用共用同一份 runtime 的模式,所以可以多個應用程式同時使用感應器,並不會有應用程式把感應器鎖死的問題。不過可惜的是,現階段的 SDK 似乎是不支援多感應器的。

至於在基本的資料存取上,K4W v2 SDK 基本的資料都是使用相同的架構設計,基本上如果是 polling 模式的使用的流程,就是:

  1. 取得感應器(sensor)
  2. 取得資料來源(data source)
  3. 開啟資料畫面讀取器(frame reader)
  4. 進入主迴圈
    • 透過讀取器取得資料畫面(frame)

在資料來源的部分來說,以 C 的 API 來看,包括了深度影像(depth frame)、彩色影像(color frame)、紅外線影像(infrared frame)、長時間曝光紅外線影像(long exposure infrared frame)、聲音(audio)、身體(body frame)、身體索引(body index frame);這些不同的來源,都有對應的 frame reader 和 frame 的定義。

而如果是採用 event 的架構的話,則拿到的則會是資料畫面的參考(frame reference),之後再透過這份參考取得真正的畫面。


這篇簡介就大概先寫道這了。

接下來,應該會正式進入程式的部分;不過基本上,Heresy 應該只會針對 C 的程式開發部分做整理就是了。

Leave a Reply

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