摘要: 昨天晚些时候,微软发布了Kinect for Windows SDK 1.5版本,新版本SDK对1.0版本的进行了较大的改动和更新。本文根据Microsoft Kinect for Windows SDK and Toolkit – v1.5 Release Notes 和 Kinect for Windows: SDK and Runtime version 1.5 Released 这两篇文章,并结合自己的安装和体验整理而成。1. SDK 1.5 的下载和安装 新版本SDK和1.0版本的SDK完全兼容,如果您之前安装过1.0的,可以直接安装1.5的SDK,如果您之前的开发版本是Beta版. 阅读全文
posted @ 2012-06-21 14:01 Eoocy 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章介绍了Kinect for Windows SDK进阶开发需要了解的一些内容,包括影像处理Coding4Fun Kinect工具类库以及如何建立自己的扩展方法类库来方便开发,接下来介绍了利用Kinect进行近距离探测的一些方法,限于篇幅原因,仅仅介绍了近距离探测的三种方式。 本文接上文将继续介绍近距离探测中如何探测运动,如何获取并保存产生的影像数据;然后将会介绍如何进行脸部识别,以及介绍全息图(Holograme)的一些知识,最后介绍了一些值得关注的类库和项目。2.4 运动识别 目前,利用运动识别(motion detection)来进行近景识别是最有意思的一种方式。实现运动识别的. 阅读全文
posted @ 2012-06-21 14:00 Eoocy 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 前面十三篇文章介绍了Kinect SDK开发中的各个方面的最基础的知识。正如本系列博闻标题那样,这些知识只是Kinect for windows SDK开发的入门知识。本文将会介绍Kinect进阶开发需要了解一些知识(beyond the basic)。 读者可能会注意到,在学习了前面十三篇文章中关于Kinect开发的方方面面,如影像数据流、景深摄像机、骨骼追踪、麦克风阵列、语音识别等这些知识后,离开发出一些我们在网上看到的那些具有良好用户体验的Kinect应用程序还是显得捉襟见肘。Kinect SDK在某种意义上只是提供了一些其它Kinect类库的相同或者更好的功能。为了进一步提高Kine. 阅读全文
posted @ 2012-06-21 13:59 Eoocy 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章介绍了Kinect中语音识别的基本概念,以及一些语音处理方面的术语。在此基础上使用Kinect麦克风阵列来进行音频录制的例子说明了Kinect中音频处理的核心对象及其配置。本文将继续介绍Kinect中的语音识别,并以两个小例子来展示语音识别中的方向识别和语音命令识别。1. 使用定向麦克风进行波速追踪(Beam Tracking for a Directional Microphone) 可以使用这4个麦克风来模拟定向麦克风产生的效果,这个过程称之为波束追踪(beam tracking),为此我们新建一个WPF项目,过程如下:1. 创建一个名为KinectFindAudioDirec. 阅读全文
posted @ 2012-06-21 13:58 Eoocy 阅读(272) 评论(0) 推荐(0) 编辑
摘要: Kinect的麦克风阵列在Kinect设备的下方。这一阵列由4个独立的水平分布在Kinect下方的麦克风组成。虽然每一个麦克风都捕获相同的音频信号,但是组成阵列可以探测到声音的来源方向。使得能够用来识别从某一个特定的方向传来的声音。麦克风阵列捕获的音频数据流经过复杂的音频增强效果算法处理来移除不相关的背景噪音。所有这些复杂操作在Kinect硬件和Kinect SDK之间进行处理,这使得能够在一个大的空间范围内,即使人离麦克风一定的距离也能够进行语音命令的识别。 在Kinect第一次作为Xbox360的外设发布时,骨骼追踪和语音识别是Kinect SDK最受开发者欢迎的特性,但是相比骨骼追踪,. 阅读全文
posted @ 2012-06-21 13:57 Eoocy 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 上文简要介绍了手势识别的基本概念和手势识别的基本方法,并以八种手势中的挥手(wave)为例讲解了如何使用算法对手势进行识别,本文接上文,继续介绍如何建立一个手部追踪类库,并以此为基础,对剩余7中常用的手势进行识别做一些介绍。1. 基本的手势追踪 手部追踪在技术上和手势识别不同,但是它和手势识别中用到的一些基本方法是一样的。在开发一个具体的手势控件之前,我们先建立一个可重用的追踪手部运动的类库以方便我们后续开发。这个手部追踪类库包含一个以动态光标显示的可视化反馈机制。手部追踪和手势控件之间的交互高度松耦合。 首先在Visual Studio中创建一个WPF控件类库项目。然后添加四个类: Kin. 阅读全文
posted @ 2012-06-21 13:52 Eoocy 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 像点击(clicks)是GUI平台的核心,轻点(taps)是触摸平台的核心那样,手势(gestures)是Kinect应用程序的核心。和图形用户界面中的数字交互不同,手势是现实生活中存在的动作。如果没有电脑我们就不需要鼠标,但是没了Kinect,手势依然存在。从另一方面讲,手势是日常生活中人与人之间相互交流的一部分。手势能够增强演讲的说服力,能够用来强调和传递情感。像挥手(waving)或者指点(pointing)这些手势都是某种无声的演讲。 Kinect应用程序的设计和开发者的任务就是将这些现实生活中存在的手势映射到计算机交互中去以传达人的想法。尝试从鼠标或触摸式的GUI设计移植基于手势的. 阅读全文
posted @ 2012-06-21 13:51 Eoocy 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 1. 基于景深数据的用户交互 到目前为止我们只用了骨骼数据中关节点的X,Y值。然而Kinect产生的关节点数据除了X,Y值外还有一个深度值。基于Kinect的应用程序应该利用好这个深度值。下面的部分将会介绍如何在Kinect应用程序中使用深度值。 除了使用WPF的3D特性外,在布局系统中可以根据深度值来设定可视化元素的尺寸大小来达到某种程序的立体效果。下面的例子使用Canvas.ZIndex属性来设置元素的层次,手动设置控件的大小并使用ScaleTransform来根据深度值的改变来进行缩放。用户界面包括一些圆形,每一个圆代表一定的深度。应用程序跟踪用户的手部关节点,以手形图标显示,图标会根据 阅读全文
posted @ 2012-06-21 13:49 Eoocy 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 前7篇文件我们介绍了Kinect SDK中各种传感器的各种基本知识,我们用实验的方式演示了这些基本对象和方法的如何使用,这些都是Kinect开发最基本的知识。了解了这些基本知识后,就可以开发出一个基于Kinect的简单程序了。但是这些离开发出一个好的基于Kinect的应用程序还有一段距离。后面的文章中,将会结合Kinect SDK介绍WPF以及其它第三方工具,类库来建立一个以Kinect为驱动的有较好用户体验的程序。我们将利用之前讲到的知识来进行下面一些比较复杂的话题。 Kinect传感器核心只是发射红外线,并探测红外光反射,从而可以计算出视场范围内每一个像素的深度值。从深度数据中最先提取出来 阅读全文
posted @ 2012-06-21 13:48 Eoocy 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章用在UI界面上绘制骨骼数据的例子展示了骨骼追踪系统涉及的主要对象,然后详细讨论了骨骼追踪中所涉及的对象模型。但是了解了基本概念是一回事,能够建立一个完整的可用的应用程序又是另外一回事,本文通过介绍一个简单的Kinect游戏来详细讨论如何应用这些对象来建立一个完整的Kinect应用,以加深对Kinect骨骼追踪所涉及的各个对象的了解。1. Kinect连线游戏 相信大家在小时候都做过一个数学题目,就是在纸上将一些列数字(用一个圆点表示)从小到大用线连起来。游戏逻辑很简单,只不过我们在这里要实现的是动动手将这些点连起来,而不是用笔或者鼠标。 这个小游戏显然没有第一人称射击游戏那样复杂,. 阅读全文
posted @ 2012-06-21 13:47 Eoocy 阅读(249) 评论(0) 推荐(0) 编辑
摘要: Kinect产生的景深数据作用有限,要利用Kinect创建真正意义上交互,有趣和难忘的应用,还需要除了深度数据之外的其他数据。这就是骨骼追踪技术的初衷,骨骼追踪技术通过处理景深数据来建立人体各个关节的坐标,骨骼追踪能够确定人体的各个部分,如那部分是手,头部,以及身体。骨骼追踪产生X,Y,Z数据来确定这些骨骼点。在上文中,我们讨论了景深图像处理的一些技术。骨骼追踪系统采用的景深图像处理技术使用更复杂的算法如矩阵变换,机器学习及其他方式来确定骨骼点的坐标。 本文首先用一个例子展示骨骼追踪系统涉及的主要对象,然后在此基础上详细讨论骨骼追踪中所涉及的对象模型。1. 获取骨骼数据 本节将会创建一个应用. 阅读全文
posted @ 2012-06-21 13:43 Eoocy 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 1. 简单的景深影像处理 在上篇文章中,我们讨论了如何获取像素点的深度值以及如何根据深度值产生影像。在之前的例子中,我们过滤掉了阈值之外的点。这就是一种简单的图像处理,叫阈值处理。使用的阈值方法虽然有点粗糙,但是有用。更好的方法是利用机器学习来从每一帧影像数据中计算出阈值。Kinect深度值最大为4096mm,0值通常表示深度值不能确定,一般应该将0值过滤掉。微软建议在开发中使用1220mm(4’)~3810mm(12.5’)范围内的值。在进行其他深度图像处理之前,应该使用阈值方法过滤深度数据至1220mm-3810mm这一范围内。 使用统计方法来处理深度影像数据是一个很常用的方法。阈值可以基 阅读全文
posted @ 2012-06-21 12:54 Eoocy 阅读(484) 评论(0) 推荐(1) 编辑
摘要: Kinect传感器的最主要功能之一就是能够产生三维数据,通过这些数据我们能够创建一些很酷的应用。开发Kinect应用程序之前,最好能够了解Kinect的硬件结构。Kinect红外传感器能够探测人体以及非人体对象例如椅子或者咖啡杯。有很多商业组织和实验室正在研究使用景深数据来探测物体。 本文详细介绍了Kinect红外传感器,景深数据格式,景深图像的获取与展示,景深图像的增强处理。1. Kinect传感器 和许多输入设备不一样,Kinect能够产生三维数据,它有红外发射器和摄像头。和其他Kinect SDK如OpenNI或者libfreenect等SDK不同,微软的Kinect SDK没有提供获取 阅读全文
posted @ 2012-06-21 12:53 Eoocy 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 1. 性能改进 上文的代码中,对于每一个彩色图像帧,都会创建一个新的Bitmap对象。由于Kinect视频摄像头默认采集频率为每秒30幅,所以应用程序每秒会创建30个bitmap对象,产生30次的Bitmap内存创建,对象初始化,填充像素数据等操作。这些对象很快就会变成垃圾等待垃圾回收器进行回收。对数据量小的程序来说可能影响不是很明显,但当数据量很大时,其缺点就会显现出来。 改进方法是使用WriteableBitmap对象。它位于System.Windows.Media.Imaging命名空间下面,该对象被用来处理需要频繁更新的像素数据。当创建WriteableBitmap时,应用程序需要指定 阅读全文
posted @ 2012-06-21 12:51 Eoocy 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 上篇文章介绍了Kinect开发的环境配置,这篇文章和下一篇文章将介绍Kinect开发的基本知识,为深入研究Kinect for Windows SDK做好基础。 每一个Kinect应用都有一些基本元素。应用程序必须探测和发现链接到设备上的Kinect传感器。在使用这些传感器之前,必须进行初始化,一旦初始化成功后,就能产生数据,我们的程序就能处理这些数据。最后当应用程序关闭是,必须合理的释放这些传感器。 本文第一部分将会介绍如何探测初始化几释放传感器,这是非常基础的话题,但是对于基于Kinect开发的应用程序非常重要。一旦初始化好了之后,Kinect的各种传感器就能够产生数据。我们的程序可以读. 阅读全文
posted @ 2012-06-21 12:50 Eoocy 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 前几天无意中看到微软发布了Kinect for windows sensor,进去看了一下Kinect应用的例子,发现Kinect除了作为xbox360游戏的外设外还能开发一些很酷的应用,而且微软也发布可针对Kinect开发的Kinect for windows SDK1.0正式版本,原本想买一个Kinect for windows sensor来进行开发玩一玩的,可是那个出来没多久,淘宝上只有代购的,而且比Kinect for Xbox360 sensor贵了很多,而且只能进行开发,考虑到以后开发完了,想玩Xbox的话直接就再买个主机,连上这个就可以玩体感游戏了,所以在淘宝上买了一个Kine 阅读全文
posted @ 2012-06-21 12:49 Eoocy 阅读(289) 评论(0) 推荐(0) 编辑