最近 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 模式的使用的流程,就是:
- 取得感應器(sensor)
- 取得資料來源(data source)
- 開啟資料畫面讀取器(frame reader)
- 進入主迴圈
- 透過讀取器取得資料畫面(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 的程式開發部分做整理就是了。