[转载]深入理解Kinect for Windows开发 - yangecnu - 博客园

[转载]深入理解Kinect for Windows开发 – yangecnu – 博客园.

这个周末看了两天的微软Build 2012大会,真的是一次盛会,上面有很多的演讲主题,都是微软相关技术和产品的最新动态,我比较关注.NET、WPF、Office及Kinect相关开发,上面的演讲视频和PPT都可以下载,个人觉得比较精彩的有The Evolution of .NET ,回顾了微软推出.NET以来的历次开发者大会推出的新版本和新特性,里面还有10多年前比尔盖子老师在开发者大会上宣布.NET战略时的演讲视频,不觉得感叹岁月是把杀猪刀啊。 What’s New for Developers in Office 2013 and SharePoint 2013 介绍了不同于以往的以VBA,SharedAddIn,以及VSTO的全新的Office开发方式OfficeApp,Building apps for Office and SharePoint 2013 using the web technologies you know and love, Part 1Part2介绍了如何使用各种我们熟悉的技术如Html、JavaScriptC#等来构建OfficeApp。上面还有很多关于Windows Phone 8,WPF4.5等相关的介绍,主题很多,强烈建议大家有空可以上去看看。

大会上关于Kinect开发有三个,第一个是微软研究院讲的Super-Natural Interaction这 个PPT比演讲视频都大,达到了罕见的997M,为啥这么大呢,因为里面嵌入了一个长达40分钟视频,哈哈,这个演讲主要演示了微软研究院正在进行的各种 人机交互,虚拟现实等研究,非常的Cutting-edge,里面也有和Kinect相关的部分,有兴趣的可以看看。第二个是Kinect Design Considerations,一则关于Kinect应用程序设计是应该考虑的问题比如交互方式的设计的演讲,我没有太仔细看,不过内容应该和Kinect Human Interface Guideline内容差不多,您可以在Kinect Developer Toolkit中查看。第三篇演讲是 Kinect for Windows Programming Deep Dive  我将这个翻译为了深入理解Kinect for Windows开发,相对来说该演讲和Kinect开发比较相关,现与大家分享,该演讲上面写的级别为 300-advanced,个人觉得这个演讲内容其实很简单,只是对Kinect能够获取的相关数据源,Kinect SDK处理过了的可供识别的数据源,以及未来的趋势和大家做了一下介绍。Kinect SDK中其实没有太多的东西,真正的则在于各种模式识别算法,比如通过深度数据,红外数据,进行各种物体识别等等,有了这些数据,尤其是1.6版本的 SDK提供的获取红外原始数据,就可以通过这个数据,结合深度数据做出很多非常令人惊叹的应用来。废话不多说了,下面和大家分享一下该演讲的主要内容,也 算是一个关于Kinect开发的比较好的入门介绍吧。

一 大纲

Slide2

演讲大体分为5个部分,第一部分介绍了Kinect SDK的开发方式以及运行环境,第二部分是写代码,讲解Kinect中的一些彩色,深度,骨骼等数据的处理和显示,第三部分讲解了传感器直接产生的数据 流,包括彩色,深度,红外,语音,加速器数据源,第四部分讲解了经过Kinect SDK对原始数据流处理后的可供用来进行直接识别的,骨骼,语音及面部识别数据源,最后一部分讲解了未来Kinect可进行的一系列应用。现在先来看第一 部分吧。

二 Kinect应用场景及开发环境

首先介绍了一下Kinect的应用场景。主要有三大类方面的应用。第一是自然人机交互界面。比如说一些像少数派报告中的那种用手指非接触即可操纵大屏幕上 的显示内容。这在一些高科技或者科幻类电影中经常能够看到这类的场景。还有一些就是在国外已经有的应用如Kinect虚拟试衣间,Kinect车展演示广 告,Kinect 手术室影像操作,还有Kinect操作幻灯片Kinect进行照片浏览 等等,这些自然人机交互界面的应用带来了新的用户体验。第二种是自然环境识别,比如根据Kinect 产生的深度数据,红外数据对物体进行三维扫描重建,利用Kinect进行机器人导航进行障碍物自动回避等。第三种是自然用户的识别,比如说利用 Kinect来进行姿势识别,人脸识别。比如说一些大家比较熟悉的XBOX360 中的 舞林大会运动会大冒险等体感游戏,这些都是利用Kinect的一些数据来进行用户的动作识别,从而参与到游戏中的互动。还有一些增强现实的应用,利用了上面的三个方面的特性,比如说利用Kinect来将荧幕变成触摸屏,并在上面可以进行各种操作,等等应用。

Slide3

 

要开发上面的应用,首先要了解一下开发环境,如这张幻灯片所示:

Slide4

Kinect 提供了非托管(C++)和托管(.NET)两种开发方式的SDK,如果您用C++开发的话,需要安装Speech Runtime(V11),Kinect for Windows Runtime和驱动的,如果您使用C#和VB.NET的话,需要Microsoft.Kinect.dll和Mirosoft.Speech.dll两 个dll,这两个其实是对前C++里面的两个dll的.NET封装,不论何种开发,您都需要安装driver,所有这些都包含在Kinect SDK安装包中,安装方法您可以参考之前的文章。 Kinect开发支持Windows7/Windows Embedded Standard/Windows8操作系统,最新的1.6版本的SDK还支持虚拟机里面的Windows系统,不过只要年代不太久远的Windows系 统应该都是可以的。上面写的最好使用.NET 4.0/4.5也只是建议,老版本的应该也行。如果是使用.NET开发方式的话,您需要安装.NET Framework,IDE可以使用Visual Studio 2010/2012。

三 代码演示

这部分主要是通过编写代码演示Kinect的各项功能,代码我在这里就不讲了。

首先第一个演示是显示彩色影像,比较简单。然后是结合深度影像数据显示彩色影像数据上对应某一点的深度值。

demo1

图上使用鼠标点击就能够加上一个标签,标签里面的值是该点的深度值,这个功能应该是比较好实现的,主要是展示如何使用彩色影像数据和深度数据,您如果感兴趣的话看完这篇文章应该就能实现这个功能。

然后演示了骨骼追踪功能,图中追踪了头部,双手的位置,并显示了两只手所处的深度值,头部上显示的Tracking ID,Kinect能同时追踪6个待选目标,但只有两个目标处于活动状态。每一次追踪都会分配给目标一个Tracking ID。

demo2

这个功能主要演示了如何使用骨骼数据,您如果感兴趣的话看完这篇文章应该就能实现这个功能。

除了1.5及之前能够提供的各种数据之外,1.6 的SDK提供了红外影像数据,您可以利用数据校准彩色影像数据,使得在较暗的条件下也能够进行人物识别。其实Kinect骨骼识别主要是通过深度数据来实 现的,而深度数据是通过红外发射接收产生的,1.6版本的SDK提供了我们直接访问和操作红外数据的能力。

demo7

第四个Demo是演示了Kinect的面部识别功能,Kinect的面部识别是在1.5 SDK中引入的,面部识别可以识别最多达一百多个面部特征点,下面是演示的Demo:

demo3

上面的功能在Kinect Developer Toolkit中有实例和源代码,您可以下载查看,入门的话,您也可以看这篇文章,比较简单的对使用FaceTracking的一点介绍。

Kinect除了这些功能之外还有强大的语音识别功能,在这篇演讲中没有演示出来,不过在Super-Natural Interaction这篇演讲的视频中,您可以体会该改功能的强大,Kinect语音识别不仅能够识别出声音,而且还能对声音的来源方向进行识别,且具有强大的去噪增强功能,要了解这些你可以看这篇文章,对Kinect的语音识别做了一些简单的介绍。

四 Kinect数据源及应用

Kinect开发涉及到的数据源分为两类:

一类是传感器本身产生的原始数据源,比如说彩色影像数据源,深度影像数据源,语音数据源,红外影像数据源,加速计数据源,其中红外影像数据源,加速计数据源是在1.6的SDK中新加入的。下面这张图很好的说明了各个数据源:

Sensor Resource Image

第二类数据源是,SDK中通过一些算法识别出来的可以直接拿来进行识别的数据源,他们包括:骨骼追踪,语音识别,面部识别数据源。

Recognize source

可以看到,骨骼追踪数据源是在深度影像数据源的再通过一系列算法实现的,语音识别是通过语音数据源再通过一系列算法实现的,而面部识别则综合了彩色影像、深度影像和骨骼追踪为系列数据源的再通过一系列算法实现的。这些功能都是通过SDK来实现的。

有了这些数据源,就能够进行各种应用了:

application

典型的应用有绿屏抠像,这个功能在一些电视节目录制,比如天气预报节目中都是应用的这个实现的,他把任务从背景中分离出来,然后可以随意的更换背景,这个功能用到了影像数据和深度数据,你可以参考这篇文章,里面有一个简单的例子。第二个应用是产生点阵云,就是通过Kinect的深度影像数据产生每个点的位置信息然后生成三维模型。如下面这个例子:

demo4

图中左边是通过Kinect的深度影像数据产的三维建模图像。

第三个应用是魔镜功能,我觉得应该是一些类似哈哈镜效果或者是IOS中的Photo Booth应用,主要用到了彩色影像数据,面部识别,骨骼识别等功能。还有一些就是虚拟试衣间这样的功能,最后的一个应用场景就是各种NUI交互界面了。

五 展望

除了以上的几种典型的数据源之外,还展示了下一步的计划,比如说针对景深数据进行进一步处理的Kinect Fusion数据源。

next

下面是演示的例子:图中,右边桌子上摆放了一个茶壶,然后利用Kinect对该茶壶进行了三维建模,然后。移除右边实物茶壶后,用户可以对虚拟的茶壶进行 各种操作,神奇吧,这些都是下一个版本或者是将来的SDK能够方便我们或者简化我们实现这些功能准备添加的功能。

demo6

到最后展望了下一步要进行的工作:

Slide22

可以看出Kinect的愿景是使得计算机能够看到、听到、能够更加理解周围的人和环境。

Kinect SDK的版本发布是很快的,自从今年二月份发布了Kinect Sensor for Windows 体感仪及Kinect for Windows SDK 1.0官方版本以来;5月21日 发布了1.5版本SDK以及1.5的Developer Toolkit及调试工具Kinect Studio 1.5,不久又发布了Developer Toolkit 1.5.1及Developer Toolkit 1.5.2;10月9日发布了1.6版本的SDK和Developer ToolKit,同时宣布正式在大陆开售Kinect Sensor for Windows体感仪。每一个版本都增加了一些新的功能。相信下一个版本的SDK 也会有新的功能加入。

相信大家看了这个演讲之后应该可以感受到Kinect带来的变化,也相信以后Kinect开发能应用到日常生活中的例子会越来越多。

最后,希望大家有空到Channel9上看真人演讲哦,上面还有很多有意思主题演讲,所有演讲的PPT都可以在线看,视频都提供下载,当您不确定那个演讲 想不想看时,可以看看下面的在线屁屁踢哦,当然除了那种900多M的变态PPT之外其他的都可以在线浏览,这样您就可以迅速的了解演讲内容以及对该内容有 没有兴趣啦。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏