OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较

一.对比介绍:

1. OpenCV:开源跨平台,OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。

2. OpenNI:OpenNI组织创建于2010年11月。主要成员之一是PrimeSense公司(以色列一家公司,被苹果收购(2013年11月25),Kinect1核心芯片,华    硕Xtion)。其他成员还有开发ROS的机器人公司Willow Garage,以及游戏公司Side-Kick。(因此OpenNI完全支持华硕,而不完全支持kinect2)

3. PCL:构成现在PCL算法基础的第一个算法,是由Dr. Radu Bogdan Rusu在德国慕尼黑工业大学读博士期间开发的,后来在2009年底由Willow Garage公司进一步开发完成。

二. 华硕Xtion和微软kinect比较:原文网址:http://blog.sina.com.cn/s/blog_7e6503990100utgx.html

华硕Xtion PRO(For Developers Only)体感设备使用评测(与Kinect对比),2011-05-23

1.     产品外观

OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较

2.     参数规格

以下参数摘自华硕Xtion Pro外包装盒:

l  有效距离:3.5米~0.8米

l  有效角度:70?

l  电源/接口:USB 2.0

l  传感器:深度探测

l  支持平台:Intel X86 & AMD

l  操作系统:Win 32/64:XP,Vista,Win7

Linux Unubtu 10.10:X86,32/64 bit

l  程序语言:C++/C#(Windows), C/C++

以下参数为实际测量参数(实际测量参数有部分误差):

l  设备长:18cm

l  设备宽:3.6cm

l  设备高(连底座):5cm

l  镜头部分高:2.6cm

3.     驱动支持

安装测试在Windows 7 32位系统下进行。

设备包装中包含的驱动就是Prime Sense的驱动,安装过程中,观察了下,发现光盘中程序的版本如下:

l  OpenNI版本为 1.0.0.1

l  Sensor版本为 5.0.0

l  NITE版本为 1.3.0

安装完成后,在设备管理器里面的PrimeSense目录下,出现“PrimeSense PS1080”

安装后能够正常使用,打开NiViewer.exe,能够正常采集深度图像

OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较

 

3.1 NiViewer采集的深度图

然后尝试使用OpenNI发布的新版本驱动,使用了如下版本:

l  OpenNI版本 1.1.0.41

l  Sensor版本 5.0.0.1.32

l  NITE版本 1.3.1.5

安装完成后,在设备管理器,同样看到了该设备,但是在运行NiViewer.exe的时候,出现如下错误:

One or more of the following nodes could not be enumerated:

 

Device: PrimeSense/SensorKinect/5.0.1.32: The device is not connected!

据错误信息推断应该是Sensor驱动的问题,因此目前使用Xtion的话就还是使用老版本的驱动。

4.     开发

使用老版本的驱动,运行之前开发的程序(没有使用RGB图像),能够正常运行。

OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较

 

4.1 之前开发的程序能正常运行

使用SetMapOutputMode函数调整不同的分辨率和FPS,发现只有分辨率为640*480,FPS为30时能够正常运行,其他参数下,要么就是黑屏,要么就是程序停止响应,要么就是如下图所示状态:


OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较

 

4.2 调整参数带来的问题

参数设置带来的问题,还需要进一步研究下。深度图的使用和原来的使用差别不大。

 

5.     华硕Xtion Pro与微软Kinect对比

OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较

5.1 华硕Xtion与手对比图

 


OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较

5.2 Xtion与Kinect对比图

 

下表整理了两个设备之间的差别:

属性

华硕Xtion Pro

微软 Kinect

18cm

28cm

3.6cm

6cm

高(带底座)

5cm

7.5cm

镜头部分高

2.6cm

4cm

景深摄像头感应距离

0.8m~3.5m

1.2m~3.5m

有效视角

70?

水平:57? 垂直:43?

电源/ 接口

USB2.0

外接电源+ USB2.0

传感器

深度摄像头

深度摄像头+RGB摄像头

能否控制马达

机动底座,倾斜范围:±27度

音频系统

语音麦克风阵列

 

6.     使用感受

从购买上来看,华硕Xtion目前价格为1399,目前大陆地区只能从华硕销售部门进行订购;而Kinect目前看到的价格已经降到一千元以下了,实体店和网上都能订购比较方便。

从功能上来看,华硕Xtion只有深度摄像头;而Kinect深度摄像头和RGB摄像头都有,RGB摄像头虽然像素不高,也能用其在游戏中照相什么的,还有一些用处。目前测试发现华硕的深度摄像头采集的数据并不比Kinect高,深度图像都会抖动。

总体来说,感觉华硕Xtion的价格有点贵,不提供RGB摄像头,没有音频系统,没有控制马达。目前,其他方面的性能还没有测试出有比Kinect提高和改进的。华硕Xtion比Kinect好用的一点是,Xtion只需要USB口就能驱动了,不像Kinect还需要外接电源;Xtion耗热较小,Kinect用一会儿就开始发烫了;Xtion的外观比较小巧,比较容易安置。

 

三、Microsoft Kinect SDK 和 PrimeSense OpenNI 的区别(2011年07月),原文地址:http://blog.csdn.net/leowangzi/article/details/6604512

After playing with both the Microsoft Kinect SDK and the PrimeSense OpenNI SDK here are some of my thoughts,Note that the Microsoft’s SDK version is the Beta version, so things may change when the final one is released)


Microsoft’s Kinect SDK (Beta)pro: 优点

  • support for audio 支持音频
  • support for motor/tilt 支持马达
  • full body tracking: 全身追踪
    • does not need a calibration pose 不需要标定姿势(投降姿势)
    • includes head, hands, feet, clavicles 包括头,手,脚和锁骨
    • seems to deal better with occluded joints 看起来处理关节闭塞更好些 
  • supports multiple sensors 支持多传感器(多台Kinect)
  • single no-fuss installer 简化安装(安装更容易)
  • SDK has events for when a new Video or new Depth frame is available 当新的视频或深度图有效时,SDK会有可用事件 

con: 缺点

  • licensed for non-commercial use only 非商用(商业需要付费)
  • only tracks full body (no mode for hand only tracking)  只能追踪全身(不包含特定的追踪模式:例如只追踪手)
  • does not offer alignment of the color&depth image streams to one another yet 

      although there are features to align individual coordinates
    • and there are hints that support may come later
    full body tracking:  全身追踪
      only calculates positions for the joints, not rotations 关节只有坐标数据,没有旋转数据 only tracks the full body, no upperbody or hands only mode 只能追踪全身,不包含特定的追踪模式:例如只追踪手或上半身
    • seems to consume more CPU power than OpenNI/NITE (not properly benchmarked)  和OpenNI/NITE相比,看起来更消耗CPU(没有采用适当的基准)
    no gesture recognition system  不包含手势识别系统 no support for the PrimeSense and the ASUS WAVI Xtion sensors? (can anyone confirm this?)  不支持PrimeSense和华硕的WAVI Xtion硬件平台 only supports Win7 (x86 & x64)   只支持Win7(32位和64位) no support for Unity3D game engine  不支持Unity3D游戏引擎 no built in support for record/playback to disk  不支持数据记录或回放到硬盘 no support to stream the raw InfraRed video data  不支持红外线视频数据流
  • SDK does not have events for when new user enters frame, leaves frame etc  SDK没有此类发生事件,例如当一个用户被侦测到或用户丢失等等。 



PrimeSense OpenNI/NITEpro: 优点

  • license includes commercial use 可以商用(不需要付费)
  • includes a framework for hand tracking 包含手部追踪框架
  • includes a framework for hand gesture recognition 包含手势识别框架
  • can automatically align the depth image stream to the color image  可以自动对齐深度图数据到彩色图数据
  • full body tracking:  全身追踪 
    • also calculates rotations for the joints 包含坐标数据和旋转数据
    • support for hands only mode 支持特殊跟踪模式:例如:只追踪手和头或上半身
    • seems to consume less CPU power than Microsoft Kinect SDK’s tracker (not properly benchmarked) 和微软的SDK相比消耗的CPU更少
  • also supports the Primesense and the ASUS WAVI Xtion sensors 支持Primesense和华硕的WAVI Xtion硬件平台
  • supports multiple sensors although setup and enumeration is a bit quirky 支持多传感器但是需要安装和枚举,这一点有点古怪。
  • supports Windows (including Vista&XP), Linux and Mac OSX 支持Windows(包括Vista&XP&WIN7),Linux系统和苹果操作系统(翻者:也支持Android)
  • comes with code for full support in Unity3D game engine  自带的代码全面支持Unity3D游戏引擎(翻者:也支持Ogre)
  • support for record/playback to/from disk 支持数据记录到硬盘或从硬盘回放数据
  • support to stream the raw InfraRed video data 支持红外数据流
  • SDK has events for when new User enters frame, leaves frame etc SDK有此类发生事件,例如:当一个用户被侦测到或者用户丢失。(提供回调函数供开发者使用) 

con: 缺点

  • no support for audio 不支持音频
  • no support for motor/tilt (although you can simultaneously use the CL-NUI motor drivers) 不支持马达(翻者:马达是微软的专利,所以primesense公司不想惹微软)
  • full body tracking:  全身追踪 
    • lacks rotations for the head, hands, feet, clavicles 缺乏以下关节:头,手,脚,和锁骨
    • needs a calibration pose to start tracking (although it can be saved/loaded to/from disk for reuse) 需要一个标定姿势(投降姿势)才能开始追踪骨骼(注意:标定数据是可以存储和提取的方便重用)
    • occluded joints are not estimated 关节闭塞没有被估算
  • supports multiple sensors although setup and enumeration is a bit quirky 支持多感应器但是需要安装和枚举,这一点有点古怪。
  • three separate installers and a NITE license string (although the process can be automated with my auto driver installer)  需要单独安装NITE
  • SDK does not have events for when new Video or new Depth frames is available SDK没有此类发生事件,例如:当新的视频或者深度图数据有效时。(翻者:OpenNI提供了类似功能的函数可使用,虽然不是回调函数,但是也很好用) 



(Personal) conclusion:Microsoft seems to have the edge when working with skeletons and/or audio.
微软在骨骼识别和音频方面有优势。(翻者:本人非常认同,微软的音频识别将会在未来的体感游戏里发挥重要的作用!)
OpenNI seems to be best suited when working on colored pointclouds, on non-Win7 platforms and/or for commercial projects.
OpenNI似乎更适合做一些带颜色的点云的工作,和在非Win7平台来开发商业项目。
When working with gestures in specific: 手势识别 

    • If your sensor only sees the upperbody/hands and/or you want an existing framework to start with use OpenNI/NITE. 
      如果你想开发基于上半身或手识别的项目,可以使用OpenNI和NITE
    • When your sensor can see the full body the more stable Microsoft skeleton may be the best to use, however you’ll have to code your own gesture recognitions. (You’d also have to extend OpenNI/NITE for fullbody gestures btw)
      全身识别毋庸置疑微软的SDK是最好的,然而你必须自己编写你自己的手势识别代码。

 

平台上比较:
Kinect for Windows SDK 仅支持Windows 7/Windows 8 操作系统(PC平台为主,电视机,机顶盒等嵌入式平台为0)
OpenNI 支持大多数操作系统 

OpenNI各版本之间的比较:
OpenNI 1.X 版本  支持大多数操作系统,支持Kinect/Xtion独立驱动
OpenNI 2.X 版本  支持大多数操作系统,支持Xtion独立驱动,Kinect则要靠Kinect for Windows SDK自带的驱动做桥接。


简单的说:
Kinect for Winows SDK 不允许非Kinect的摄像头使用。
OpenNI 2.X 不允许Kinect在非Windows操作系统上运行,其他体感摄像头支持良好。

OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较

上一篇:Photoshop打造华丽的汽车壁纸方法


下一篇:CorelDRAW鼠绘教程:绘制宋代女词人李清照