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.     产品外观

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,能够正常采集深度图像

图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图像),能够正常运行。

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

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

图4.2 调整参数带来的问题

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

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

图5.1 华硕Xtion与手对比图

图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操作系统上运行,其他体感摄像头支持良好。

时间: 2024-10-15 17:33:55

OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较的相关文章

Kinect 开发 —— Kinect for windows SDK

开发 -- 基本的SDK和Windows 编程技巧(彩色图像视频流,深度图像视频流的采集,骨骼跟踪,音频处理,语音识别API) 深度数据,就是Kinect的精髓和灵魂,很多问题都转换为深度图像的模式识别问题 AForge.NET 是一套C#编写的Framework,提供计算机视觉,机器学习 www.aforgenet.com 图像处理需要消耗大量的计算资源,使用C#这类托管语言并不明智,应多使用OpenCV 应用层API详解 NUI API Kinect Audio DMO :提供束波成形和音源

Kinect for Windows SDK v2.0 开发笔记 (十一) 高清面部帧(2) 面部特征对齐

(转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1408 根据前一节的说明,这节就是关于面部特征对齐的. 接口为IFaceAlignment,因为SDK还在Beta中,提供官网的连接可能会失效,所以不提供了. 需要可以到微软官方查询.目前,面部特征对齐主要可以干: 0. 获取面部外框 -- 面部帧也能.但是经测试,精度高得多,抖动大概在几像素内 1. 获取头部旋转中心 --结果是一个相机空间坐标,大致位置就是颈部中心 2. 获

Kinect for Windows SDK v2.0 开发笔记 (十五) 手势帧

 (转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,因为SDK未完成,不附上函数/方法/接口的超链接. 这次终于是新的东西了,是"手势帧",不过原名是"可视化手势构建器"(Visual Gesture Builder)帧,是 SDK 2.0自带的手势解决方案,不过,如果您觉得微软写得不可靠,甚至垃圾,您可以尝试自己写个,笔者在 提供的范例中,写了个简单的样子(几十行而已,不要期

Kinect for Windows SDK v2.0 开发笔记 (十三) 高清面部帧(4) 面部模型构建器

 (转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,因为SDK未完成,不附上函数/方法/接口的超链接. 这次让我们让面部捕捉更加稳定/精确吧! 自从一直8月有了高清面部帧的例子后,觉得IFaceModel::GetFaceShapeDeformations它不干正事,一直返回0.0f的数据. 与其他开发者简单交流后,发现了问题的根本所在,需要面部模型构建器(IFaceModelBuilder). 好了,那么

Kinect for Windows SDK v2.0 开发笔记 (十六) SDK2.0正式发布 与 自带工具

(转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 1409 来了,微软于10月22日正式发布了SDK v2.0,前兆是发现了API文档正常了... 话说为什么是1409而不是1410 于是从这节开始,开始附上API的超链接.正式版的体积也是可观,整整(比7月版)大了一倍 这节说说自带的软件,本打算录下来,但是太懒了 先附上微软自己的地址,Part1,Part2,这是手势的,虽然是使用C#,不过工具使用是完全一样的. 先看看SDK中自带的工具: 0. Kin

Kinect for Windows SDK v2.0 开发笔记 (十七) 深度帧3D

 (转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 1409 这节算是补充节吧,以3D方式显示深度帧,SDK更新的则在后面的章节说明. 之前想错了,以为每帧显示所谓的点云,GPU负担很大, 背景每帧都要传送 500 * 400 * 3 * 4 , 才2M的数据,之前估计错了. 3D接口依然是D3D11,这次简单多了,顺带复习一下吧 要点: 0. 初始化..  仅仅需要: IKinectSensor(使用 GetDefaultKinectSensor)

Kinect 开发 —— Kinect studio

This tool can record all the data coming into an application from a Kinect unit. You can then view, review and store the data. Kinect Studio lets you inject the captured data streams back into a Kinect-enabled application, allowing you to test your c

【翻译】Kinect Studio是? 三月 SDK Update的新机能

Kinect应用软件开发支援工具「Kinect Studio」的功能和用法的说明.由于可以记录/再生数据,让开发和调试变得更加简单. Kinect SDK v2预览版的RTM版的预定在发布之前会有2-3次的更新,3月27日第1次的更新(March SDK Update),将提供给Developer Preview Program的参与者. 这一节,是3月更新内容的介绍. Kinect Studio 所谓「Kinect Studio」,是Kinect应用面向开发者提供的开发支援工具. Kinect

Platform SDK、Windows SDK简介

Platform SDK及Windows SDK是由微软公司出品的一个软件开发包,向在微软的Windows操作系统和.NET框架上开发软件和网站的程序员提供头文件.库文件.示例代码.开发文档和开发工具. 微软每次发布一个主要版本的Windows,都会发布对应的开发工具以使得开发人员能够调用新的操作系统的应用程序开发接口(API). 在Windows 98之后,这个开发工具包被命名为为Platform SDK.在Windows Vista的SDK推出时,这个产品改名为Windows SDK. Pl