翻译自:Microsoft Kinect SDK vs PrimeSense OpenNI http://www.brekel.com/?page_id=671
在试用了微软Kinect SDK和PrimeSense OpenNI SDK后,总结整理了一些我的想法。
注意:目前微软的SDK是Beta版本,最终的正式发布版可能会有所变化。
Microsoft’s Kinect SDK(Beta)
优点:
- 支持音频
- 支持马达
- 全身跟踪:
-
- 不需要标定姿势,进入就能识别
- 包含头、手、脚和锁骨
- 对封闭关节处理更好
- 支持多台Kinect设备
- 安装简单,一个程序安装完即可
- 当新的视频帧或者深度信息帧可用时,SDK能产生对应事件
缺点:
- 许可证不包含商业用途
- 只有全身跟踪,没有单独对手的跟踪模式
- 不支持彩色图和深度图的坐标对齐
- 目前有个别的坐标对齐功能
- 有迹象显示未来将有该功能
- 全身跟踪:
-
- 只有关节位置数据,没有旋转角度数据
- 只有全身跟踪模式,没有上半身或者只有手模式
- CPU资源消耗似乎超过OpenNI/NITE(没有采用适当的基准,即没有进行严格的比对测试)
- 没有手势识别系统
- 不支持PrimeSense和华硕WAVI Xtion?(不太确定)
- 只支持Win7(x86 & x64)
- 不支持Unity3D游戏引擎
- 没有内建的录制/播放功能
- 不支持获取红外视频流的原始数据
- SDK对新用户的进入和离开没有对应事件
PrimeSense OpenNI/NITE
优点:
- 许可证包含商业用途
- 包含一个手部跟踪框架
- 包含一个手势识别框架
- 能够进行深度图到彩色图像的自动对齐
- 全身跟踪:
-
- 计算了骨骼的旋转角度
- 支持只识别手模式
- CPU消耗似乎比微软SDK小(没有进行严格测试)
- 支持Primesense的设备和华硕WAVI Xtion
- 支持多设备,但是设置和枚举的方法比较奇怪
- 支持Windows(包括Win 7, Vista和XP),Linux和Mac OSX
- 代码代码完全支持Unity3D游戏引擎
- 支持获取红外视频流原始数据
- SDK对新用户的进入和离开有对应事件
缺点:
- 不支持音频
- 不支持马达(虽然可以用CL-NUI的马达驱动)
- 全身跟踪:
-
- 缺少头部、手、脚和锁骨的旋转角
- 需要一个标定姿势才能开始跟踪谷歌(标定数据可以存储起来,方便重用)
- 闭塞关节点没有估算
- 支持多设备,但是设置和枚举的方法比较奇怪
- l 安装需要三个独立的安装包和一个NITE的序列号
- SDK没有提供新视频或者深度图数据可用时的事件。
个人总结:
微软在骨骼识别和音频方面很有优势。
OpenNI可能更适合做带颜色点云的工作,在非Win7平台开发和进行商业项目开发。
手势识别工作中:
- 如果你想开发上半身或手的项目,或者想使用一个现有的框架,可以使用OpenNI和NITE
- 如果是全身识别,则使用微软的SDK更稳定,当然你也就必须要自己编写手势识别算法(OpenNI/NITE全身识别的也是如此)。