Kinect介绍和开发环境配置

来源:互联网 发布:西门子plm软件主要功能 编辑:程序博客网 时间:2024/05/22 10:50

Kinect II在2013年的11月份已经问世,手上目前只有Kinect XBOX360一代产品,所用均是这台一代产品。

一、Kinect简介

      Kinectfor Xbox 360,简称 Kinect,是由微软开发,应用于Xbox 360 主机的周边设备。它让玩家不需要手持或踩踏控制器,而是使用语音指令或手势来操作 Xbox360 的系统界面。它也能捕捉玩家全身上下的动作,用身体来进行游戏,带给玩家“免控制器的游戏与娱乐体验”。其在2010年11月4日于美国上市,建议售价149美金。Kinect目前正成为全世界销售最快的消费性电子产品。

1.1、硬件

       Kinect有三个镜头,中间的镜头是 RGB 彩色摄影机,用来采集彩色图像。左右两边镜头则分别为红外线发射器和红外线CMOS 摄影机所构成的3D结构光深度感应器,用来采集深度数据(场景中物体到摄像头的距离)。彩色摄像头最大支持1280*960分辨率成像,红外摄像头最大支持640*480成像。Kinect还搭配了追焦技术,底座马达会随着对焦物体移动跟着转动。Kinect也内建阵列式麦克风,由四个麦克风同时收音,比对后消除杂音,并通过其采集声音进行语音识别和声源定位。


1.2、软件开发环境

1.2.1、非官方组合

      一开始微软对Xbox 360推出Kinect的时候,并没有在windows的开发包。而由于Kinect强大的功能和相对低廉的价格,geeks们纷纷表示希望能在电脑上用它。于是就有多位大牛开发了驱动,目前我了解到的有三个:

1)CL NUI Platform

      由NUI的大牛AlexP开发(他开发的其他著名产品包括PS3的windows驱动),可以这里载,目标平台是windows7,能够获取彩色摄像头,深度传感器以及加速度传感器数据,使用简单方便。

2)OpenKinect/libfreenect

       由号称第一个破解Kinect的Hector Martin发起,可以到这里下载,目标平台是Linux and Mac,据说有人成功移植到了windows上。因为很多geek都是Mac的拥趸,所以开发参与者众多,不仅仅是个可以获得数据的driver,geek们还写了其他高级的东西,比如我前面提到的骨骼化,将彩色摄像头作为纹理贴在深度数据上等等,很吸引人啊。

3)OpenNI

       OpenNI(opennatural interface开放自然交互)是一个多语言,跨平台的框架,它定义了编写应用程序,并利用其自然交互的API。可以到这里下载。从名字判断其终极目标大约是实现少数派报告的效果,从目前放出来的一些demo,恐怕已经超越了这个终极目标。它不是专为Kinect开发,但有Kinect的生产商PrimeSense的支持。这个感觉也是目前相对来说用的比较多的非官方组合:SensorKinect + NITE + OpenNI;其中SensorKinect是Kinect的驱动。NITE是PrimeSense提供的中间件,可以分析Kinect读取的资料,输出人体动作等等。

1.2.2、微软官方SDK

       Kinect体感游戏在Xbox 360 上获得很好的评价,但是对于 Windows 平台上的开发却一直只能使用非官方的解决方案(上面所说),例如NKinect 配合CL NUI SDK;但是微软终于在2011 年 6 月推出了 Kinect forWindows SDK Beta,特别是可以使用 C# 与.NETFramework 4.0 来进行开发。Kinect for Windows SDK主要是针对Windows7设计,内含驱动程序、丰富的原始感测数据流程式开发接口、自然用户接口、安装文件以及参考例程。Kinect for Windows SDK可让使用C++、C#或VisualBasic语言搭配MicrosoftVisualStudio2010工具的程序设计师轻易开发使用。目前最新是V1.6 。

      Kinectfor Windows SDK的下载地址:

http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx

       Kinect SDK目前只支持Windows 7,分为x86和x64两个版本。开发工具方面还需要.NET Framework 4.0和Visual Studio 2010 (最低Express版本)的支持。

1.2.3、非官方和官方开发包的优缺点

1)官方SDK:

优点:

       提供了音频支持、调整倾角的转动电机、在全身跟踪骨骼跟踪方面:非标准姿势检测(相对于OpenNi的投降姿势…),头部、手、脚、锁骨检测以及关节遮挡等细节上的处理更为细致(但精度是否更高还不能确定)。此外,支持多传感器(多台Kinect);

缺点:

       微软对非商业使用的限制。此外,未提供手势识别和跟踪功能,未实现RGB图像/深度图像的互对齐,只是提供了对个体坐标系的对齐。在全身骨骼跟踪中,SDK只计算了关节的位置,并未得出其旋转角度。从可移植的角度来看,SDK beta只能用于Kinect/Win7平台,而OpenNi还至少支持华硕的WAVI Xtion体感设备,今后支持的硬件平台还可能更多。相比较而言SDK beta不支持Unity3D游戏引擎、不支持记录/回放数据写入磁盘、不支持原始红外视频数据流、也不支持像OpenNi一样的角色入场和出场的事件响应机制。

2)非官方OpenNI/NITE:

优点:

       可用于商业开发、包含手势识别和跟踪功能、可自动对齐深度图像和RGB图像,全身跟踪、关节旋转角度计算、看起来性能较好、已有众多游戏产品应用、支持记录/回放数据写入磁盘、支持原始红外视频数据流、支持角色入场和出场的事件响应机制。支持Primesense和华硕的WAVI Xtion硬件平台和windows、Linux和Mac等软件平台。自带的代码全面支持Unity3D游戏引擎。

缺点:

       未提供音频功能、不支持调整倾角的转动电机、在全身跟踪骨骼跟踪方面:无法跟踪头部、手、脚和锁骨的旋转动作,需要标准姿势检测(即著名的投降姿势…),关节遮挡等细节上的处理似乎存在算法bug。不能自动安装并识别Kinect多机环境。安装过程较为繁琐,特别是NITE还要申请开发证书编码。OpenNi也没有提供可用视频和深度图输入的事件触发机制(但OpenNI提供了类似功能的函数可使用,虽然不是回调函数,但是也很好用)。

总结:

       OpenNI最大的优势就是允许跨平台多设备,以及商业应用。但从原始数据的采集和预处理技术上看,微软的SDK似乎更稳定一些,况且还提供了不错的骨骼和语音支持。对于部分身体部位识别方面的功能,SDKbeta没有提供局部识别和跟踪,这需要自己的后续开发(至少在相当一段时期内微软可能都不会提供此类功能)。OpenNi/NITE虽然提供了手势识别和跟踪,然而在全身骨骼姿势识别和跟踪上还要更多借鉴微软的产品。

因此,按照目前在社区中的表现,SDK beta和OpenNi/NITE孰优孰劣还真无法一下子确定。而且随着越来越多的开发者加入微软这一方,SDK beta的普及可能会更快,但在更高层次的应用上,对二者的选用往往是需要一定智慧的。

(这部分参考:http://www.hanyi.name/blog/?p=330)


二、开发环境配置

开发平台: Win7 x86 + VS2010 + Kinect for Windows SDK v1.7 + OpenCV2.4.0

2.1、下载

       在下面的网站下载Kinect for Windows SDK和Developer Toolkit:

http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx

       其中,下载回来的文件是KinectSDK-v1.7-Setup.exe(主要提供Kinect的驱动和设备访问接口) 和KinectDeveloperToolkit-v1.6.0-Setup.exe(主要提供一些有助于开发的工具,包括Kinect Studio和多种编程语言的开发例程等)。

2.2、安装与测试

        上面的两个开发板安装非常简单,全程按默认配置安装完即可。

        安装完后,插入Kinect,系统将会自动的搜索驱动。要安装的驱动还是比较多的,最后安装成功后,设备管理器里面增加了如下项:


       为了检查是否安装成功,我们在开始处找到Developer Toolkit Browser v1.7.0 (Kinect for Windows),这个就是我们上面安装的开发包工具。打开后发现资源还挺多的。包括一些开发文档,开发工具和支持很多编程语言的例程(点击install,就可将源代码工程复制到你指定的目录,我们也可以直接到这个开发包工具的安装目录的samples文件夹下查看):


       我们Run上图的这个SkeletonViewer,如果之前的安装是正确的话,那么这个程序就显示你的彩色图像、深度图像和骨架等等数据。当然,还有其他比较有趣的应用,我们可以都运行看看。

2.3、在VS2010中配置开发环境

      要使用VS进行开发的话,需要配置include和lib路径。

进入VS,进入项目属性,在Projects and Solutions中,选择VC++Directories。

假设Kinect是安装在默认路径下,则

(1)Include files加入C:\Program Files\Microsoft SDKs\Kinect\v1.7\inc;

(2)Library files加入C:\Program Files\Microsoft SDKs\Kinect\v1.7\lib\x86;

(3)还需要在链接器的输入中,增加附加依赖性:Kinect10.lib

这样VS的开发环境就配置好了。

      下面我们看看Kinect的开发包含哪些头文件:

C:\Program Files\MicrosoftSDKs\Kinect\v1.7\inc 目录下有:

NuiApi.h ---包含所有的NUI(自然用户界面) API头文件和定义基本的初始化和函数访问入口。这是我们C++工程的主要头文件,它已经包含了NuiImageCamera.h 和 NuiSkeleton.h。

NuiImageCamera.h ---定义了图像和摄像头服务的API,包括调整摄像头的角度和仰角,打开数据流和读取数据流等。

NuiSkeleton.h ---骨架有关的API,包括使能骨架跟踪,获取骨架数据,骨架数据转换和平滑渲染等。

NuiSensor.h ---音频API,包括ISoundSourceLocalizer接口,用于返回声源的方向(波束形成)和音频的位置。

 

三、配置OpenCV (可参考http://blog.csdn.net/gillian_tian/article/details/18841215)

       OpenCV是Intel的开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。

主页:http://opencv.org/

       我电脑配置了2.4.0版本。

这里,我们用到OpenCV来显示和处理获取到的颜色和深度图像等,所以也需要将其添加进工程里面。和上面的过程一样(你安装的目录可能不一样,请按实际情况操作):

(1)Include files加入D:\opencv\build\include;

(2)Library files加入D:\opencv\build\x86\vc10\lib;

(3)还需要在链接器的输入中,增加附加依赖性:

opencv_highgui240.lib

opencv_core240.lib

opencv_video240.lib

opencv_imgproc240.lib

其他的在需要的时候可以再添加。

 

       好了,到这里,环境都配置好了,下一步就可以开始Kinect开发这个精彩的世界了。


参考:http://blog.csdn.net/zouxy09/article/details/8146055



0 0
原创粉丝点击