上一篇《ASUS Xtion 2 開箱》基本上是大致介紹了 ASUS Xtion 2 的硬體。而這一篇,則來講一下它接上電腦使用的狀況吧~
華碩第一代的 Xtion 基本上是採用和第一代 Kinect 相同的 PrimeSense 方案;不過由於 PrimeSense 已經被 Apple 收購了,所以華碩的 Xtion 2 也不可能再使用這個架構了…
華碩官方並沒有提供 Xtion 2 採用的方案是哪一家的,不過在和華碩的人員確認過後,是得知他採用的是 ToF(Time of flight)技術的深度感應器,號稱精確率是 3%(還是應該是誤差率?)。
<!–more–>
而在將 Xtion 2 接上 Windows 10 的電腦後,並不需要特別安裝驅動程式,他會被視為標準的影像裝置;在裝置管理員裡會出現下面的硬體:
右圖就是在裝置管理員中,以「依連線」的方式看到的裝置列表。
也由於 Xtion 2 在系統中會被視為標準的影像裝置,所以這也代表了他的資料是可以透過一般可以讀取 webcam 畫面的程式來做取得的~
不過,要使用 Xtion 2 的話,USB 控制器似乎還是得注意一下。像是 Heresy 老電腦上的 ASMedia 的 USB 3.0 控制器雖然可以正確偵測到硬體,但是在使用上卻有一些小問題,導致深度影像可以取得,但是卻沒辦法顯示彩色影像…
OpenNI
根據華碩的說法,Xtion 2 是使用 OpenNI 2.2 做為開發環境。
但是由於官方版的 OpenNI 2 預設僅支援 PrimeSene 系列的深度感應器(含第一代 Kinect),所以如果本來已經有安裝過 OpenNI 2 的人,在執行 NiViewer 的時候,是偵測不到 Xtion 2 的。
這時候,就需要把本來安裝的 OpenNI 移除,改裝華碩光碟中的版本了。
ASUS Xtion 2 的光碟片的啟動程式還滿花俏的,不過實際上內容不算多,最主要的也僅有「SDK」底下的特製版 OpenNI 2.2 而已。
他有提供 Windows 和 Linux 的 32/64 位元版本,以 Windows 64 位元板來說,他的檔名是「OpenNI-x64-2.2withXtion2.msi」,完整的 OpenNI 版本編號是 2.2.0.33,也算是 OpenNI 官方推出的最後一個版本了。
而和官方版的 OpenNI 2 的差別,在於他在安裝資料夾中的「ToolsOpenNI2Drivers」路徑下,多了 Xtion 2 的驅動程式模組的檔案:RvcLib.dll 和 SenDuck.dll。
其中,RvcLib.dll 是 Realtek 的程式,個人猜測應該是用來和 Xtion 2 做額外的溝通用的。他的詳細資料裡面是寫「Realtek semiconductor」,如果拿掉的話,執行 NiViewer 時會出現「calibrated data not found」的錯誤;此時雖然 NiViewer 還是可以跑,但是深度影像和彩色影像的對位會出問題。
而 SenDuck.dll 才是主要讓 OpenNI 2 可以讀取彩色影像和深度影像的驅動程式模組,在他的詳細資料中名稱是「Xtion2 Driver for OpenNI 2.2」,版本編號是 1.1.1.3。
基本上,只要安裝過一次華碩 Xtion 2 的特製版 OpenNI 2 後,就可以把這兩個檔案複製出來,之後只要把這兩個檔案放到對應的驅動程式路徑(OpenNI2Drivers)下,官方版的 OpenNI 2 也就可以存取 Xtion 2 了。
而實際上,個人覺得華碩如果肯直接把這兩個 dll 檔放出來的話,其實對於既有的 OpenNI 開發者來說,應該會是更方便的事啊…
下圖就是 Xtion 2 在 NiViewer 裡面的畫面:
至於深度影像上的比較,這邊就先不寫了。有興趣可以自行和《Intel RealSense F200 感應器簡單使用紀錄》和《Kinect for Xbox One @ Windows 簡單測試》這兩篇文章的圖片做比較。
不過,這邊也碰到一個問題了…華碩號稱 Xtion 2 的彩色影像最高解析度是 2592 x 1944,但是在 OpenNI 的環境中,不管是深度影像、彩色影像,還是紅外線影像,所回報支援的解析度,都只有 640×480 和 320×240 兩種…
所以看來如果要使用更高解析度的彩色影像的話…似乎就不能透過 OpenNI 了?
華碩為什麼會這樣設計呢?Heresy 個人猜測可能是為了深度影像和彩色影像的對位吧…不過這也是純粹個人臆測了。
而至於用來分析人體骨架的 PrimeSense NiTE 呢?恩,不意外地,不能用。
這點,主要應該還是卡在 PrimeSense 的 NiTE 有限制一定要使用自家的感應器才能用的授權協議上了…否則,老實說,要繞過他的限制其實是不難的。
但是實務上,也由於這樣的限制,Xtion 2 在搭配 OpenNI 2 使用時,是沒辦法使用 NiTE 2 進行追蹤人體骨架的…
而這點,除非有其他支援 OpenNI 的人體骨架追蹤函式庫出現,否則大概是沒有比較好的解法了。
一般軟體
右圖就是 Heresy 試著用「Debut Video Capture Software」這套軟體來開啟 Xtion 2 的彩色影像攝影機時,可以使用的解析度設定;可以看到,最高解析度是 2592 x 1944,不過此時會只剩 15 fps。
而深度攝影機也可以在這套軟體中偵測到,他支援的解析度就比較少、也比較詭異了。下圖就是他偵測到的可用解析度:
理論上 Xtion 2 的深度攝影機應該最高解析度是 640 x480 30fps,不過在這邊僅能看到 640 x 240 30fps 就是最高解析度的選項了;而在選取之後,深度感應器的紅外線 LED 燈並不會亮起、程式抓到的畫面也只是奇怪的綠色條紋畫面:
在 Heresy 來看,使用其他軟體來讀取深度攝影機的話,應該是不太可行的方案。
畫面很奇怪的問題,基本上應該是由於對於影像單位像素的定義不同的關係,理論上或許還有可能靠自行計算來產生 640×480 的深度影像格式(話說,Heresy 完全不知道該怎麼解析他就是了…);但是紅外線 LED 沒有亮起,應該會讓深度值沒有意義,這點應該就是無解的了。
大致上就是這樣了。
基本上,個人始終還是比較好奇,華碩為什麼會現在又針對 OpenNI 推出新的感應器?不過,基本上現在大概就是當作又有一個深度影像品質比較好的感應器了。
而個人覺得比較可惜的是:
- 不支援 PrimeSense NiTE
- 透過 OpenNI 取得的彩色影像最高只有 VGA 解析度
- 不支援 Windows Hello 的人臉解鎖