Kinect SDK Beta for Windows的开发评测

(一)Kinect介绍

什么是Kinect,我不说官方定义了,就说我的理解,我觉得Kinect就是“计算机的眼睛“,到现在它具有的能力是准确跟踪他面前的人的姿态与动作。如下图【插图】,它由一个光学摄像头(中间)与两个红外摄像头构成,并且有一些硬件、软件逻辑,既能给开发者传送底层的物理数据,也能为开发者提供高层的物理数据(具体是什么数据下面说),通过这些高层的物理数据,开发者能够很容易知道站在kinect面前的用户究竟是怎样的姿势,并且做了什么动作。还有不怎么了解的同学可以参考百科的介绍:http://baike.baidu.com/view/3766855.htm

本文基于Kinect SDK Beta for Windows,对其开发进行了评测,而具体的开发介绍需要参见开发指南与SDK,在官网上也能下载得到http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/default.aspx

(二)Kinect提供数据能力评测

Kinect能提供以下三种数据(图像):

Color图(RGB或YUV):也就是从光学摄像头得到的视频流中截取出来的图像,有多分辨率,最高分辨率可以达到1280X1024,获取图像的最高帧数率可以达到30FPS(在最高帧数率时好像分辨率达不到1280X1024)。虽然有图像有RGB与YUV两种模型,但由于来自同一摄像头,实际上是一样的。图像帧保存在_NUI_IMAGE_FRAME结构中。图像示例如下【插图】:

Depth图(深度图):也就是从两个红外摄像头计算得到的深度图像,深度图像中每个像素点有16bits,高13bits是以毫米为单位的深度值,而低3bits是追踪到的人的标号(kinect会自动识别与追踪人像),关于Depth图,一个有趣的现象是当物体与kinect的“眼睛”距离小于800毫米的时候,kinect就没办法返回正确的深度值了,而是返回0,代表无穷远(这有点像当物体距离人眼太近的时候,人也没办法看清)。Depth图同样有多分辨率,最高分辨率可达到640X480,帧数方面与Color图相当。图像帧同样保存在_NUI_IMAGE_FRAME结构中。(另外,开发中还需要知道的是,Depth图的坐标与Color图的坐标不是一一对应的,需要调用sdk中一个函数进行转换)。图像示例如下【插图】:

Skeleton数据(20个关节数据)Skeleton Information是一个对开发者非常有用的高层物理数据,它将kinect从一个单纯传感器提升到一个智能设备的高度。【插图】人体的骨骼可以通过如下图所示关键的20个关节来描述,而Skeleton Information描述的就是这20个关节的物理参数。20个关节的空间坐标点用四元向量保存在NUI_SKELETON_DATA结构中,其空间坐标如图所示【插图】,以kinect作为坐标原点,值的单位为米(不是很确定)。(另外,开发种要注意的是,第一,kinect提供的关节点坐标是镜像坐标,这是kinect空间坐标结构决定的,需要注意,如果不希望用镜像图,可以做一些坐标上的转换;第二, kinect眼睛的视线可能与水平面不垂直,但可以通过sdk提供的参数判断水平面。)。图像示例如下【插图】:

骨骼数据示例

人骨骼数据基于的空间坐标

对于kinect能提供的这些数据,我的看法是:Color图与Depth图属于比较底层的数据,要应用起来,由于目前的sdk没有提供更高层的算法(比如人脸识别等),都是需要开发者自己去完成的,这对一般开发者就比较有难度了(但由于它比起其他摄像头带有深度信息,开发潜力仍然是很大的),因此,从这个角度来看,kinect是以高级的摄像头。另一方面,通过20个关节的数据(高层的数据),开发人员就能够很容易开始获得用户的姿态与姿势变化,虽然目前的sdk更倾向于人站着,并且基本都在视野范围内才能正确的识别(但一旦被它识别,它具有的跟踪功能能比较好地跟踪人),即便如此,基于此的应用(不止是游戏)仍然可以是非常丰富的。

(三)Kinect开发从哪里开始

因为本文讲的是Kinect在windows下的开发,所以对于开发者首要的要求就是windows下程序开发的能力,这方面的话,可以是用纯Windows Api开发,也可以用MFC、C#等。

具备了基本的Windows开发能力后,通过学习Kinect SDK for Windows,就可以上手开发了,现在版本的SDK还比较小,学习起来还是比较容易的,困难主要在windows的程序设计,而不是SDK上,毕竟SDK只是为你提供这些原始的数据,而如何接受这些数据、利用这些数据才是重要的、复杂的。(Kinect的SDK与开发者指南可以去官网上下载。)

程序开发基本都是这样一个流程,学习阶段总是有点手忙脚乱的,编程特别是调试阶段总是有点咬牙切齿,而当你看你写的东西顺利跑出你想要的结果的时候,总是有点欣喜若狂的。特别是kinect这种新潮的东西,比开发播放器等“旧东西”更有吸引力,它能让许多还处于你的梦想阶段的东西成为现实。

(四)如何配置kinect开发环境

首先,安装Windows 7操作系统。

然后,安装Kinect SDK for Windows。

继续,安装Visual Studio 2010。

最后,开始新建项目(可以是Windows窗口程序、MFC程序、C#程序),项目建立完成后要:1、包含头文件2、链接静态链接库3、链接动态链接库。

于是就可以开始你的kinect开发之旅了~

(五)关于音频

Kinect也是提供音频功能的,它有一个由四个麦克风组成的阵列,来捕获外界的声音。Kinect可以通过四个麦克风在收到声波的微小时差来判定声源的位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值