Kinect sdk與OpenNi驅動的差別
通過試玩過微軟的Kinect sdk與OPenNi的Kinect之後,下面對兩者作了一些比較。注意:微軟的sdk版本是最初的beta版,與最新的released版本會有所出入。
Kinect sdk優點:
- 支援音頻
- 支援馬達
- 全身追蹤。不需要标定姿勢(投降姿勢);包括頭,手,腳和鎖骨;看起來處理關節閉塞更好些。
- 支援多傳感器(多台Kinect)
- 簡化安裝(安裝更容易)
- 當新的視訊或深度圖有效時,SDK會有可用事件
Kinect sdk缺點:
- 非商用(商業需要付費)
- 隻能追蹤全身(不包含特定的追蹤模式:例如隻追蹤手)
- 深度圖與彩色圖不提供自動對齊
- 全身追蹤。關節隻有坐标資料,沒有旋轉資料 (不過在v1.5版本已經解決);隻能追蹤全身,不包含特定的追蹤模式:例如隻追蹤手或上半身;
- 和OpenNI/NITE相比,看起來更消耗CPU(沒有采用适當的基準);
- 不包含手勢識别系統 ;
- 不支援PrimeSense和華碩的WAVI Xtion硬體平台,隻支援Win7(32位和64位);
- 不支援Unity3D遊戲引擎;
- 不支援資料記錄或回放到硬碟 ;
- 不支援紅外線視訊資料流
- 沒有此類發生事件,例如當一個使用者被偵測到或使用者丢失等等。
OpenNi優點:
- 可以商用(不需要付費)
- 包含手部追蹤架構
- 包含手勢識别架構
- 可以自動對齊深度圖資料到彩色圖資料
- 全身追蹤。包含坐标資料和旋轉資料;支援特殊跟蹤模式:例如:隻追蹤手和頭或上半身
- 和微軟的sdk相比消耗的CPU更少
- 支援Primesense和華碩的WAVI Xtion硬體平台
- 支援多傳感器但是需要安裝和枚舉,這一點有點古怪
- 支援Windows(包括Vista&XP&WIN7),Linux系統和蘋果作業系統(翻者:也支援Android)
- 自帶的代碼全面支援Unity3D遊戲引擎,也支援Ogre
- 支援資料記錄到硬碟或從硬碟回放資料
- 持紅外資料流
- 有此類發生事件,例如:當一個使用者被偵測到或者使用者丢失。(提供回調函數供開發者使用)
OpenNi缺點:
- 不支援音頻
- 不支援馬達,馬達是微軟的專利,是以primesense公司不想惹微軟。
- 全身追蹤;缺乏以下關節:頭,手,腳,和鎖骨;需要一個标定姿勢(投降姿勢)才能開始追蹤骨骼(注意:标定資料是可以存儲和提取的友善重用,不過這在1.5版本已經解決,已經不需要手勢)
- 關節閉塞沒有被估算
- 支援多感應器但是需要安裝和枚舉,這一點有點古怪。
- 需要單獨安裝NITE
編後語:
微軟在骨骼識别和音頻方面還是比較有優勢,而OpenNI似乎更适合做一些帶顔色的點雲的工作,和在非Win7平台來開發商業項目。如果你想開發基于上半身或手識别的項目,可以使用OpenNI和NITE;但如果是全身識别毋庸置疑微軟的SDK是最好的,然而你必須自己編寫你自己的手勢識别代碼。