KinectforWindowsSDK开发入门(九):骨骼追踪进阶下
[译]Kinect for Windows SDK开发入门(一):开发环境配置
[译]Kinect for Windows SDK开发入门(一):开发环境配置1. Kinect设备黑色的Kinect设备如下图:基座和感应器之间有一个电动马达,通过程序能够调整俯仰角度,在上面的感应器中有一个红外投影仪,两个摄像头,四个麦克风和一个风扇。
打开外面的盖子可以看到里面的构造:这些感应器用来捕捉RGB和深度数据,面对Kinect,从左往右看。
最左边是红外光源,其次是LED指示灯,再次彩色摄像头,用来收集RGB数据,最右边是红外摄像头用才采集景深数据。
彩色摄像头最大支持1280*960分辨率成像,红外摄像头最大支持640*480成像。
在感应器的下方是麦克风阵列,他包括四个不同的麦克风,一个左边的红外发射器下面,另外3个在右边景深摄像头下面。
初步了解了Kinect构造后,接下来看看开发环境的搭建:2. Kinect for Windows SDK软硬件环境Kinect for Windows SDK是一些列的类库,他能够使得开发者能将Kinect作为输入设备开发各种应用程序。
就像名字所显示那样,Kinect for Windows SDK只能运行在32位或者64位的windows7及以上版本的操作系统上。
∙硬件配置1一台电脑,当然内存越大越好(推荐2G或者以上),处理器频率(2.66GHz及以上)越高越好。
2Windows 7操作系统,以及支持Microsoft DirectX9.0c兼容的显卡3Kinect for Xbox360 Sensor(如果单买的话自带有USB Power Adapter,如果是和Xbox360套装一起捆绑的话,因为Xbox主机能够直接为Kinect外设提供电源,所以没有电源,需要另买USB Power Adapter)使用Visual Studio 2010 Express版本或专业版进行开发时,需要安装最新版本的Kinect for Windows SDK,包含有对Kinect的硬件驱动。
基于Kinect骨骼追踪技术的智能教学控制系统的设计与实现
DES I GN AND I M PLEM ENTATI oN oF KI NECT S KELETAL
TRACK I NG TECHNoLoGY. BAS ED I NTELLI GENT TEACHI NG CoNTRoL S YSTEM
Gu R o n g He Yi mi n g J i n L i y a n
统应用 案例。经过 实验 显示该 系统可取得 较高 的精度识别 , 提高 了人机 交互的效率性和 自然性。
关 键 词
中图 分 类 号
骨 骼追 踪
T P 3 9 1
虚拟 现 实 自然用 户界 面
文献标识码 A
WP F语 言
K i n e c t
D O I : 1 0 . 3 9 6 9 / j . i s s n . 1 0 0 0 — 3 8 6 x . 2 0 1 3 . 0 6 . 0 7 3
顾 容 何益明 金丽燕
( 浙江工业 大学教育科学与技术学院 浙江 杭州 3 1 0 0 1 4)
摘
Hale Waihona Puke 要 基于K i n e c t 的 骨 骼追 踪 系 统是 虚 拟 现 实 技 术在 教 学 应 用 中 的 研 究 热 点 之 一 。 目标 是 通 过 用 K i n e c t f o r Wi n d o w s S D K提
s k e l e t a l p o i n t :t h e wo r l d c o o r d i n a t e s y s t e m f o 3 D s k e l e t o n d a t a i s t r a n s f o me r d i n t o t h e i ma g e p i x e l c o o r d i n a t e s f o t w o — d i me n s i o n l a d a t a ;a n d t h e n g o e s t h r o u g h t h e n o i s e r e d u c t i o n a n d i f l t e in r g o n e a c h s k e l e t a l p o i n t d a t a a n d d i s p l a y s t h e r e n d e in r g i ma g e .E x p e r i me n t l a r e s u l t s
Kinect开发教程
Kinect开发Windows7 环境的 Kinect SDK Beta(开发工具包),需要Microsoft .NET Framework 4.0、Microsoft Visual Studio 2010,使用 C++, C#, VB 等开发语言。
硬件要求是双核 2.66GHz CPU,至少 2GB 内存建议 4GB,支持 DirectX 9 的显卡。
微软发布的Kinect SDK包含以下三方面功能:原始传感器流:该功能可以从深度传感器、彩色摄像头传感器、麦克风等传感器中获取原始数据流,并可以使开发者在由Kinect传感器中所产生的低层次的数据流基础上进行开发。
骨骼追踪技术:该功能可以追踪一至两名用户在Kinect区域内活动时的骨骼图像,并可以为开发者提供更方便的途径开发动作应用程序。
高级音频功能:音频处理功能包括高级的噪音处理、回声消音,并可以辨别当前发声源,以及将这些数据信息导入Windows语音识别应用程序中。
安装环境:首先来说,Kinect for Windows SDK的下载地址:/en-us/um/redmond/projects/ kinectsdk/download.aspxKinect SDK目前只支持Windows 7,分为x86和x64两个版本。
开发工具方面还需要.NET Framework 4.0和Visual Studio 2010 (最低Express版本)的支持。
Kinect SDK的视频开发教程:/Series/KinectSDKQuickstarts?sort=r ecent#tab_sortBy_recentKinect SDK的开发指南:/en-us/um/redmond/projects/kin ectsdk/guides.aspxKinect SDK的官方论坛:/Forums/en-US/kinectsdk/thr eads硬件设备的需求是:Kinect for Xbox 360 sensor和Xbox 360 Kinect AC Adapter/ Power Supply。
kinect2.0的骨骼节点坐标的获取与handstate
kinect2.0的骨骼节点坐标的获取与handstatekinect2.0的骨骼追踪相比较上一代算是有了大幅度提升,最多可以同时追踪6个人身上的25个骨骼节点(图为v1和v2的对比)其实单纯的获取骨骼节点的坐标还是很简单的,我就讲一下在控制台程序中实时的输出骨骼坐标的方法吧当然只要需要调用kinect 第一步肯定是添加引用因为所声明的变量在获取骨骼的监听事件中还要调用,所以需要声明为全局静态变量,首先还是要声明个kinectsensor[csharp] view plain copyprint?1.public static KinectSensor kinect;2.public static BodyFrameReader bodyframereader;3.public static Body[] bodies = null;变量声明完,下一步就应该获取并打开传感器了[csharp] view plain copyprint?1.kinect = KinectSensor.GetDefault();2.kinect.Open();然后开始读入数据[csharp] view plain copyprint?1.bodyframereader = kinect.BodyFrameSource.OpenReader ();2.if (bodyframereader != null)3.{4.bodyframereader.FrameArrived += Bodyframereader_ FrameArrived;5.}[csharp] view plain copyprint?1.private static void Bodyframereader_FrameArrived(object sender, BodyFrameArrivedEventArgs e)2.{3.bool data = false;ing (BodyFrame bodyframe = e.FrameReference.Acquir eFrame())5.{6.if (bodyframe != null)7.{8.if (bodies == null)9.{10.bodies = new Body[bodyframe.BodyCount];11.}12.13.}14.bodyframe.GetAndRefreshBodyData(bodies);15.data = true;16.}17.if (data)18.{19.foreach (Body body in bodies)20.{21.if (body.IsTracked)22.{23.IReadOnlyDictionary<JointType, Joint> joints = body.J oints;24.CameraSpacePoint position = joints[JointType.HandRi ght].Position;25.Console.WriteLine(position.X.ToString() + "," + positio n.Y.ToString() + "," + position.Z.T oString());26.CameraSpacePoint position2 = joints[JointType.Shoul derRight].Position;27.Console.WriteLine(position2.X.ToString() + "," + positi on2.Y.ToString() + "," + position2.Z.T oString());28.Console.WriteLine();29.30.31.}32.}33.34.35.}36.}插上kinect运行就可以看到输出了在此基础上想要得到handstate也就是手势也就是几行代码了类似在[csharp] view plain copyprint?1.if (body.IsTracked)的大括号下添加[csharp] view plain copyprint?1.if (body.HandRightState == HandState.Closed)2.Console.WriteLine("close\n\n");3.if (body.HandRightState == HandState.Open)4.Console.WriteLine("open\n\n");5.if (body.HandRightState == sso)6.Console.WriteLine("lesso\n\n");t同时把上面的输出给注释掉(全选后ctrl+k+c可以快速注释,ctrl+k+u取消注释)运行后对着kinect把右手合上张开就可以看到输出了,还有那个lesso ,完全合上是close 完全张开是open 其他情况就都是lesso了附上全部handstate。
微软正式发布Kinect for Windows及SDK
微软正式发布Kinect for Windows及SDK10月9日,微软正式在中国发布了Windows版Kinect感应器。
从现在起,企业可以充分利用Kinect 体感功能,为中国客户开发和部署商业解决方案。
同期,微软还发布了最新版本的Kinect for Windows软件开发工具包(SDK),以及供全球下载的运行时间。
Kinect for Windows平台支持企业和开发者利用PC及其它Windows终端使用Kinect,以开发更多应用给用户带来更多创新体验。
Kinect for Windows平台包括Kinect for Windows感应器,Kinect for Windows 开发工具包(SDK),以及商用许可。
Kinect for Windows能够帮助用户通过手势和语音与计算机进行自然交互,从而向各行业领导厂商提供全新的交互工具以改变其客户和员工的人机交互方式。
Kinect for Windows的发布意味着用户不再局限于使用键盘、鼠标或触控屏幕进行计算机操作,使用者只需给出口令即可完成应用命令操作。
如果他们想要在屏幕上移动对象,只需通过手势即可完成。
这一创新性的自然界面人机交互开启了全新的计算应用体验类别,其中包括:• 零售行业——与零售商店和公共场所数字标牌信息亭进行远程互动;• 医疗行业——充分利用语音和手势功能进行远程诊疗,以确保无菌环境和免控制要求;• 利用Kinect for Windows的人体跟踪功能来开发培训和模拟工具,如物理疗法应用、员工学习模块或体育健身应用;• 教育领域——在教室中,对数据进行可视化和操纵。
Kinect for Windows感应器中国地区建议零售价格为人民币1930元,可在京东商城网站购买。
Kinect for Windows感应器提供了Windows开发者所要求的功能和特性,其中包括:用户可在无需接触键盘或屏幕的情况下进行人机交互(例如在会议室、手术室或办公室)的近距离功能。
Kinect介绍
Kinect介绍(一)Kinect的发展历史Kinect最早是在2009年6月1日E3 2009上首次公布,当时的代号是“Projet Natal”意为初生,遵循微软以城市名作为开发代号的传统,“Projet Natal”是由来自巴西的微软董事Alex Kipman以巴西城市Natal, Rio Grande do Norte命名。
Natal在英语中还有初生的含义,这也是微软给予此计划对XBOX360带来新生的期望。
微软在2010年6月13日晚在Galen Center举行“初生计划全球首秀”发布会,在会上微软宣布“Poject Natal”正式命名为Kinect,取意为“kinetic”(运动)和“connect”(沟通)的融合,Kinect一代就此诞生。
微软在这次发布会上同时宣布,Kinect将于2010年11月4日在北美正式发售, 2012年10月9日开始在中国销售第一代Kinect for Windows感应器。
2013年五月Xbox One 发表会上Scott Evans 和Kareem Choudhry 两位Kinect专家展示了次世代Kinect(Kinect二代)那些不可思议的新功能。
新Kinect作为次世代主机必不可少的一部分,开发者们可以基于Kinect感知的语音、手势和玩家感觉信息,来给玩家带来前所未有的互动性体验。
2014年10月微软开始在中国销售第二代Kinect for Windows感应器。
(二)Kinect两代产品异同点1、Kinect组件Kinect v1及Kinect v2都拥有一个外壳、底座、散热器、4个不同类型螺钉、3部分主板及14种关键芯片;都拥有4个麦克风阵列,可过滤噪声,定位声源,识别语音内容,比较图1、图2可知,他们的摆放位置有所差异;Kinect v1有Moving Touch传动马达电动机用于仰角控制,一般是根据它与用户间的位置、距离调节,Kinect v2需要手动去控制;Kinect拥有多个摄像机,Kinect v1从左至右分别为红外投影机,颜色摄像机,红外摄像机,Kinect v1如图1所示。
Kinect for Windows SDK开发入门(八):骨骼追踪进阶 上
前7篇文件我们介绍了Kinect SDK中各种传感器的各种基本知识,我们用实验的方式演示了这些基本对象和方法的如何使用,这些都是Kinect开发最基本的知识。
了解了这些基本知识后,就可以开发出一个基于Kinect的简单程序了。
但是这些离开发出一个好的基于Kinect的应用程序还有一段距离。
后面的文章中,将会结合Kinect SDK介绍WPF以及其它第三方工具,类库来建立一个以Kinect 为驱动的有较好用户体验的程序。
我们将利用之前讲到的知识来进行下面一些比较复杂的话题。
Kinect传感器核心只是发射红外线,并探测红外光反射,从而可以计算出视场范围内每一个像素的深度值。
从深度数据中最先提取出来的是物体主体和形状,以及每一个像素点的游戏者索引信息。
然后用这些形状信息来匹配人体的各个部分,最后计算匹配出来的各个关节在人体中的位置。
这就是我们之前介绍过的骨骼追踪。
红外影像和深度数据对于Kinect系统来说很重要,它是Kinect的核心,在Kinect系统中其重要性仅次于骨骼追踪。
事实上,这些数据相当于一个输入终端。
随着Kinect或者其他深度摄像机的流行和普及。
开发者可以不用关注原始的深度影像数据,他们变得不重要或者只是作为获取其他数据的一个基础数据而已。
我们现在就处在这个阶段,Kinect SDK并没有提供给开发者访问原始红外影像数据流的接口,但是其它第三方的SDK可以这么做。
可能大多数开发者不会使用原始的深度数据,用到的只是Kinect处理好了的骨骼数据。
但是,一旦姿势和手势识别整合到Kinect SDK并成为其一部分时,可能开发者甚至不用接触到骨骼数据了。
希望能够早日实现这种集成,因为它代表这Kinect作为一种技术的走向成熟。
本篇文章和下篇文章仍将讨论骨骼追踪,但是采用不同的方法来处理骨骼数据。
我们将Kinect作为一个如同鼠标,键盘或者触摸屏那样的一个最基本的输入设备。
微软当初推出Kinect for Xbox的口号是“你就是控制器”,从技术方面讲,就是“你就是输入设备”。
Kinect for Windows SDK开发入门(十三):语音识别 下
[译]Kinect for Windows SDK开发入门(十三):语音识别下上一篇文章介绍了Kinect中语音识别的基本概念,以及一些语音处理方面的术语。
在此基础上使用Kinect麦克风阵列来进行音频录制的例子说明了Kinect中音频处理的核心对象及其配置。
本文将继续介绍Kinect中的语音识别,并以两个小例子来展示语音识别中的方向识别和语音命令识别。
1. 使用定向麦克风进行波速追踪(Beam Tracking for a Directional Microphone)可以使用这4个麦克风来模拟定向麦克风产生的效果,这个过程称之为波束追踪(beam tracking),为此我们新建一个WPF项目,过程如下:1. 创建一个名为KinectFindAudioDirection的WPF项目。
2. 添加对Microsoft.Kinect.dll和Microsoft.Speech.dll的引用。
3. 将主窗体的名称改为“Find Audio Direction”4. 在主窗体中绘制一个垂直的细长矩形。
界面上的细长矩形用来指示某一时刻探测到的说话者的语音方向。
矩形有一个旋转变换,在垂直轴上左右摆动,以表示声音的不同来源方向。
前端页面代码:界面。
后台逻辑代码和之前的例子大部分都是相同的。
首先实例化一个KinectAudioSource赋值给本身。
将BeamAngleMode设置为Adaptive,使得能够自动追踪说话者的声音。
我们需要编写KinectAudioSource对象的BeamChanged事件对应的处理方法。
当用户的说话时,位置发生变化时就会触发该事件。
我们需要创建一个名为BeamAngle的属性,使得矩形的RotateTransform可以绑定这个属性。
public partial class MainWindow : Window, INotifyPropertyChanged{public MainWindow(){InitializeComponent();this.DataContext = this;this.Loaded += delegate { ListenForBeamChanges(); };}private KinectAudioSource CreateAudioSource(){var source = KinectSensor.KinectSensors[0].AudioSource;source.NoiseSuppression = true;source.AutomaticGainControlEnabled = true;source.BeamAngleMode = BeamAngleMode.Adaptive;return source;}private void ListenForBeamChanges(){KinectSensor.KinectSensors[0].Start();var audioSource = CreateAudioSource();audioSource.BeamAngleChanged += audioSource_BeamAngleChanged;audioSource.Start();}public event PropertyChangedEventHandler PropertyChanged;private void OnPropertyChanged(string propName){if (PropertyChanged != null)PropertyChanged(this, new PropertyChangedEventArgs(propName));}private double _beamAngle;public double BeamAngle{get { return _beamAngle; }set{_beamAngle = value;OnPropertyChanged("BeamAngle");以上代码中,还需要对BeamChanged事件编写对应的处理方法。
Kinect for Windows 产品手册
不同行业的解决方案
案例 1
零售行业:搭建试衣模拟环境
Kinect for Windows 为零售业搭建逼真实时 的模拟环境。通过 Kinect Fusion 的扫描特 性,让消费者能摆脱反复试衣的麻烦,开 拓了消费者购物的新体验。 查看相关视 频
案例 3
教育行业:轻松、快乐的学习环境
Kinect for Windows 为学生学习搭建的 模拟环境,让学生沉浸在活泼、生动有 趣的教学场景中,丰富了想象力 ,提高了 创造力和动手能力。 查看相关视 频
硬件要求
• 32 位 (x86) 或 64 位 (x64) 处理器 • 双核 2.66-GHz 或更快的处理器 • 供 Kinect for Windows 传感器专用的 USB
2.0 总线 • 2GB RAM
操作系统要求
• 要求在 Windows 7, Windows 8, Windows Embedded 7 或 Windows Embedded 8 环境下使用
中国建议零售价:RMB 1930 元 Kinect for Windows 硬件包括一年的质保,支持和在访问基于语音和人脸追踪的软件更新。传感器不附带任何软件, 并且只可以通过面向 Kinect for Windows 开发的应用程序才能操作使用; Kinect for Windows SDK 是授权于用户,而非售卖!使用 SDK 要求接受在产品手册和 上的 软件许可协议。使用 Kinect for Windows 传感器需接受这些条款。 您不得复制或逆向改变该软件。本产品不适用于 Xbox 360® 视频游戏和娱乐系统。保修条款见随带产品手册和 。
• 利用 Kinect for Windows SDK 和相关运行软件开发应用程序;注:传感器设备无内置软件,并且只可Байду номын сангаас通过面向
Kinect骨骼数据驱动的实时角色动画实验教学设计
Kinect骨骼数据驱动的实时角色动画实验教学设计摘要:针对动作捕捉技术教学实验实施不便、实验设备搭建和维护麻烦等问题,提出利用Kinecc镜头采集骨骼运动数据,实时驱动三维虚拟角色动作并记录输出动画的方法,论述实时角色动画实验教学设计过程。
关键词:实时角色动画;Kinect镜头;实验教学;教学设计0.引言随着增强现实、虚拟现实和动作捕捉等高级计算机视觉技术的发展,计算机三维动画的应用范围日益宽广,在建筑场景交互展示、城市虚拟规划、工业产品展示、角色动画等领域均有较大市场,特别是《阿凡达》《变形金刚》《星球黎明》等一系列融合了三维建模、动作捕捉等计算机三维动画技术的电影热映以后,以动作捕捉技术为核心,演员实时驱动三维虚拟角色进行动作,记录生成动画的角色动画制作方式变得流行。
目前各个高校开设的三维动画课程在角色动画部分都以讲授传统动画技术为主,大致分为关键帧动画技术和渲染输出技术两大模块,对上述新兴的实时角色动画制作技术较少涉及。
1.动作捕捉与实时角色动画技术的特点近年来,随着在动画制作、影视特效、体感交互等领域的广泛应用,动作捕捉及实时角色动画技术取得了长足发展。
目前普遍应用的运动捕捉方式为电磁式和光学式两大类,无论使用哪种,一般都要求演员穿着专业的运动捕捉服记录动作,如图1所示。
运动捕捉基于计算机图形学原理,通过传感器——光学摄像头或电磁传感器将运动物体(如人)的运动状态记录下来,最终得到基于时间维度的各个观测点的三维空间坐标,其运动数据质量的高低取决于捕捉观测点的准确程度,因此在对运动状态记录精度要求较高的应用(如大型电影、面部表情动画、运动分析、精细肢端动作交互等)中均需使用专业运动捕捉服装并在服装上准确设置观测点标志,如光学式捕捉系统用的反光球或电磁式传感器与电缆。
上述动作捕捉得到的运动状态数据精度较高,实时l生好,《变形金刚》《星球黎明》等电影的拍摄普遍采用此种方式。
但对于教学实验而言,角色动画实验学时有限,每次实验都穿着服装并进行标定并不现实;同时,动作捕捉服装及其附件价格较高,受设备数量和维护需要等限制也难以在本科生课程实验中应用。
kinectforwindows-手势识别之一,kinect手势识别框架
kinectforwindows-⼿势识别之⼀,kinect⼿势识别框架
何为⼿势识别,就是电脑认识⼈⼿的⾃然动作。
⾃然动作包括摆⼿,握拳,双⼿合⼗等等。
如果电脑能认识我们这些⼿势,将来的⼈机交互将会变得简单⽽有趣。
这⾥⼿势不等同于某些规定的动作,⽐如按⿏标左键,则不属于⼿势,这个动作的结果是固定的,⽽⼿势有⼀定的随意性,容易被电脑误会,但是也有⼀定的规律可循,这些⼿势在现实⽣活中也表⽰⼀些特定的意义。
kinect在v1.7.0的开发包的⼯具包中,新增了⼿势识别的功能。
⼿势识别的框架如下:
最底层是KinectInteraction1.7.0_*.dll,提供C++接⼝,可供C++开发。
在这个dll基础上,封装了Microsoft.Kinect.Toolkit.Interation.dll,供C#语⾔开发
⽽在Microsoft.Kinect.ToolKit.Interation.dll基础上,封装了了Controls控件,供WPF开发。
所以在C++层次实现⼿势识别⽐较困难,在我们提供的例⼦⾥,演⽰了如何⽤C++实现⼿势识别,并简单的实现了握拳和松⼿的两个⼿势的识别。
⼿势识别依赖⾻骼跟踪和深度图,因此在实现⼿势识别的设备上,要打开深度图流和⾻骼跟踪流。
当程序收到深度图数据时,通过⼿势识别的接⼝,将深度数据送到⼿势识别系统去分析,当程序收到⾕歌跟踪数据时,程序也将数据发送到⼿势识别系统去分析。
⼿势识别系统认为数据⾜够并能提供⼿势识别的结果时,通知应⽤程序来获取数据,程序通过分析⼿势数据流,得到⼿势结果。
kinect原理
Kinect原理详解1. 简介Kinect是由微软公司开发的一款基于深度摄像头和红外线传感器的体感控制设备。
它能够通过捕捉玩家的动作和声音,实现与游戏、虚拟现实等应用的交互。
Kinect 的原理涉及到深度感知、运动追踪和声音识别等多个方面。
2. 深度感知原理Kinect的深度感知能力是通过红外线投影和红外线摄像头来实现的。
在Kinect设备上,有一个红外线发射器和一个红外线摄像头。
红外线发射器会发射一束不可见的红外线光束,并覆盖整个场景。
当这些红外线光束照射到物体表面时,一部分光会被物体吸收,另一部分光会被反射回来。
红外线摄像头能够接收到这些反射回来的光,并将其转换成电信号。
根据物体与Kinect之间的距离,反射回来的光强会有所不同。
通过测量反射光强度,Kinect可以计算出物体与其之间的距离。
这样就实现了对场景中物体的深度感知。
3. 运动追踪原理Kinect的运动追踪能力是通过红外线摄像头和RGB摄像头的配合来实现的。
红外线摄像头主要用于捕捉玩家的骨骼信息,而RGB摄像头则用于捕捉玩家的图像。
在运动追踪过程中,红外线摄像头会将场景中的人体轮廓提取出来,并识别出骨骼关节。
这些骨骼关节包括头部、颈部、肩部、手臂、手掌、腿部等。
通过对骨骼关节的跟踪,Kinect可以实时获取玩家的姿势和动作信息。
例如,当玩家抬起手臂时,Kinect能够识别出这一动作,并将其转换成相应的指令,用于控制游戏或其他应用。
4. 声音识别原理Kinect还具备声音识别功能。
它内置了多个麦克风阵列,可以接收到环境中的声音信号,并对其进行处理和分析。
声音信号在进入麦克风阵列后,会经过一系列的处理步骤,包括噪声消除、语音增强和语音识别等。
通过这些处理,Kinect能够准确地识别出玩家的语音指令。
Kinect支持多种语音指令,玩家可以通过语音来控制游戏、播放音乐、搜索内容等。
声音识别的原理主要是基于模式匹配和机器学习算法,通过对大量训练数据进行学习和分析,提高了声音识别的准确性和稳定性。
Kinect for Windows SDK开发:Kinect Fusion
Kinect for Windows SDK开发入门(十九):Kinect FusionKinect for Windows SDK1.7中引入了Kinect Fusion功能。
在1.8的SDK中对该功能进行了改进和强化,Kinect Fusion能够使得我们使用Kinect for Windows 传感器来进行真实场景的三维几何重建,目前已支持导出.obj及.stl等三维数据格式。
Kinect Fusion技术在支持GPU加速的机器上能够对物体进行实时的三维建模。
和传统的三维建模方式相比,Kinect Fusion最大的优势是快速便捷。
Kinect Fusion可以用于工业设计,3D打印,游戏制作,医疗教育等领域。
下图是Kinect Fusion的工作流程。
Kinect传感器获取的深度影像数据在刚开始的时候有很多数据丢失,通过移动Kinect传感器对物体进行扫描,几秒钟过后就能够创建足够平滑的重建的静态场景,产生点阵云以及3D 表面模型。
Kinect Fusion对计算机的硬件条件要求较高,Kinect Fusion能够使用C++ AMP技术在DirectX11兼容的GPU上处理数据,也可以在CPU上处理数据,可以在重建立方体构建的时候,通过设置重建的类型来确定。
CPU处理模式适合离线处理,只有最新的兼容DirectX 11的GPU才支持实时、交互性的重建。
基于GPU的重建的最低配置要求系统支持DirectX 11的显卡,如果达不到要求,Kinect Fusion就运行不起来。
目前NVIDIA GeForce GTX560,AMD Radeon 6950,同类型或者比该类型显卡配置更高的硬件能够实现实时交互三维重建。
官方推荐配置是,台式机CPU主频3GH或以上,多核处理器,拥有2G内存的独立显卡。
当然也可以使用配置有支持DirectX11 技术的显卡的笔记本,但是运行速度比同类型的台式机会慢的多。
Kinect for Windows SDK开发入门(六):骨骼追踪基础 上
[译]Kinect for Windows SDK开发入门(六):骨骼追踪基础上Kinect产生的景深数据作用有限,要利用Kinect创建真正意义上交互,有趣和难忘的应用,还需要除了深度数据之外的其他数据。
这就是骨骼追踪技术的初衷,骨骼追踪技术通过处理景深数据来建立人体各个关节的坐标,骨骼追踪能够确定人体的各个部分,如那部分是手,头部,以及身体。
骨骼追踪产生X,Y,Z数据来确定这些骨骼点。
在上文中,我们讨论了景深图像处理的一些技术。
骨骼追踪系统采用的景深图像处理技术使用更复杂的算法如矩阵变换,机器学习及其他方式来确定骨骼点的坐标。
本文首先用一个例子展示骨骼追踪系统涉及的主要对象,然后在此基础上详细讨论骨骼追踪中所涉及的对象模型。
1. 获取骨骼数据本节将会创建一个应用来将获取到的骨骼数据绘制到UI界面上来。
在开始编码前,首先来看看一些基本的对象以及如何从这些对象中如何获取骨骼数据。
在进行数据处理之前了解数据的格式也很有必要。
这个例子很简单明了,只需要骨骼数据对象然后将获取到的数据绘制出来。
彩色影像数据,景深数据分别来自ColorImageSteam和DepthImageStream,同样地,骨骼数据来自SkeletonStream。
访问骨骼数据和访问彩色影像数据、景深数据一样,也有事件模式和“拉”模式两种方式。
在本例中我们采用基于事件的方式,因为这种方式简单,代码量少,并且是一种很普通基本的方法。
KinectSensor对象有一个名为SkeletonFrameReady事件。
当SkeletonStream 中有新的骨骼数据产生时就会触发该事件。
通过AllFramesReady事件也可以获取骨骼数据。
在下一节中,我们将会详细讨论骨骼追踪对象模型,现在我们只展示如何从SkeletonStream流中获取骨骼数据。
SkeletonStream产生的每一帧数据都是一个骨骼对象集合。
每一个骨骼对象包含有描述骨骼位置以及骨骼关节的数据。
Kinect for Windows SDK开发入门(三):基础知识 下
[译]Kinect for Windows SDK开发入门(三):基础知识下1. 性能改进上文的代码中,对于每一个彩色图像帧,都会创建一个新的Bitmap对象。
由于Kinect视频摄像头默认采集频率为每秒30幅,所以应用程序每秒会创建30个bitmap对象,产生30次的Bitmap内存创建,对象初始化,填充像素数据等操作。
这些对象很快就会变成垃圾等待垃圾回收器进行回收。
对数据量小的程序来说可能影响不是很明显,但当数据量很大时,其缺点就会显现出来。
改进方法是使用WriteableBitmap对象。
它位于System.Windows.Media.Imaging命名空间下面,该对象被用来处理需要频繁更新的像素数据。
当创建WriteableBitmap时,应用程序需要指定它的高度,宽度以及格式,以使得能够一次性为WriteableBitmap 创建好内存,以后只需根据需要更新像素即可。
使用WriteableBitmap代码改动地方很小。
下面的代码中,首先定义三个新的成员变量,一个是实际的WriteableBitmap对象,另外两个用来更新像素数据。
每一幅图像的大小都是不变的,因此在创建WriteableBitmap时只需计算一次即可。
InitializeKinect方法中加粗的部分是更改的代码。
创建WriteableBitmap对象,准备接收像素数据,图像的范围同时也计算了。
在初始化WriteableBitmap的时候,同时也绑定了UI元素(名为ColorImageElement的Image对象)。
此时WriteableBitmap中没有像素数据,所以UI上是空的。
还需要进行的一处改动是,对ColorFrameReady事件响应的代码。
如下图。
首先删除之前创建Bitmap那部分的代码。
调用WriteableBitmap对象的WritePixels方法来更新图像。
方法使用图像的矩形范围,代码像素数据的数组,图像的Stride,以及偏移(offset).偏移量通常设置为0。
KINECT教程
1.1Kinect for Windows Developer Toolkits1.1.1Kinect Studio微软的Kinect for Windows(K4W)团队再次创建了它。
他们已经发布了一些新的测试版软件和一个SDK与新的Kinect v2设备一起工作。
注:这是基于初步的软件/硬件,可能会改变。
在他们最近的Kinect v2 SDK(preview 1403)更新中。
开发者预览计划的成员现在可以去看看新的Kinect Studio V2,去探索微软花了大部分精力开发的万众期待的Kinect Studio应用程序的Kinect v2 版本有多么精彩。
介绍本文讲述的是关于第2版Kinect设备所使用的Kinect Studio以及应用程序如何工作。
还讨论了潜在的使用模式,并快速的一步步讲解如何在定制的基于Kinect v2应用程序中去使用它。
如果这听起来很有趣,请继续往下看。
KinectStudio V2允许开发人员,测试人员和爱好者测试利用多个记录样本来测试自定义的Kinect v2应用。
它还允许开发者查看Kinect v2设备某一帧的基于像素的视图数据。
见下图。
Kinect Studio v2的功能让我们来分解说明目前的功能特点:从Kinect v2设备录制样本剪辑:Color,depth,IR,IR长时间曝光,body帧,body索引,计算机系统信息,系统声音,相机设置,相机标定回放录制的样本剪辑:Color,depth,IR,IR长时间曝光,body帧,body索引,计算机系统信息,系统声音,相机设置,相机标定直接从连接的Kinect V2设备播放实时数据从录制和播放的样本剪辑中查看三维坐标和数据可在3-D空间放大,扭曲,旋转从录制和播放的样本剪辑中查看二维坐标和数据可放大察看不同的视角:•Kinect视角•方向性的立方体(Orientation Cube)•地板平面(这里指透视图中地板)通过不同的点云呈现深度数据:•彩色点,灰色点•通过材质和不同颜色的深浅(RGB和灰度)呈现深度数据查看红外数据和值:在一个特定的像素x,y坐标通过一个灰色图查看从文件打开样本剪辑从库中(网络共享)打开并连接样本剪辑观测帧信息:开始时间,持续时间放大特定帧选择要记录的流这个工具如何工作?KinectStudio v2应用程序是一个Windows Presentation Foundation应用程序,挂接到一些托管和原生C + +库,用于访问颜色,深度和红外流的数据。
Kinect for Windows 2.0配置及参数文字资料
第二代Kinect for Windows 感应器设置对于需要密集使用第二代Kinect for Windows 骨骼追踪的应用程序还需要自定义应用程序处理,我们建议使用以下的电脑配置作为参考。
我们发现在最具挑战性的追踪场景中,Kinect for Windows 能够提供极好的性能;同时仍然允许附加的应用程序处理和维持最佳的帧速率。
硬件要求•64 位(x64)处理器•物理双核3.1 GHz(每个物理2 个逻辑核心)或更快的处理器•专用的USB 3.0 总线(英特尔和瑞萨控制器)• 2 GB RAM•支持DirectX 11 的显卡(Intel HD 4000, AMD Radeon HD 6470M, NVIDIA Geforce 610m, AMD Radeon HD 6570)•Windows 或Windows Embedded 8 或8.1产品清单第二代Kinect for Windows 感应器的包装内含有:1.第二代Kinect for Windows 感应器及连接线2.电源与电源线B 3 网线4.产品说明书第二代Kinect for Windows 是人类计算历史上最新技术之一,通过简单的手势和语音,实现人机自然交互的应用程序开发。
The Kinect for Windows 感应器采用深度感应技术,内置彩色摄像机、红外(IR)发射器和一个麦克风阵列,能够感知人类的位置、动作和声音。
第二代感应器的深度保真提高了3 倍,极大的提升了对物体包括微小物体的识别度和清晰度。
Kinect for Window 软件开发工具包 (SDK) 为开发人员提供驱动程序、工具、应用程序接口、设备接口,代码示例,促进基于Kinect 应用程序的商业部署。
SDK 2.0 改进的骨骼追踪,追踪人数高达6 人,每人25 个关节。
姿势越正确,应用程序识别的动作越精确。
Kinect for Windows 感应器和免费软件开发工具包(SDK)为开发人员开发和部署响应人类动作、手势和声音指令的交互应用程序奠定了坚实的基础,推动了人机交互技术的发展。
KinectforWindowsSDK开发学习相关资源
KinectforWindowsSDK开发学习相关资源Kinect for Windows SDK(K4W)将Kinect的体感操作带到了平常的应⽤学习中,提供了⼀种不同于传统的⿏标,键盘及触摸的⽆接触的交互⽅式,在某种程度上实现了⾃然交互界⾯的理想,即通过⼿势,语⾳即可向应⽤程序发出指令。
⽬前K4W SDK已经更新到了1.7版本,新的Xbox One上⾯的Kinect功能更强⼤,预计明年会退出新的K4W的传感器及相关开发的SDK,届时动作捕捉会更加精细和强⼤。
K4W SDK中的内容不是特别多,学习相关开发只需要掌握简单的.NET或者C++语法即可,但是如果学深⼊的话,可能需要掌握⼀些模式识别,图像处理⽅⾯的知识,尤其是需要从传感器取得的影像数据或者深度数据中提取⼀些有⽤的操作的时候。
不过微软提供的K4W已经封装好了⼀些操作,如⾯部识别,语⾳识别,Fusion,⾻骼追踪等,能够满⾜⼤部分的应⽤开发的需求和场景了。
本⽂主要是给⼤家推荐⼀些Kinect开发的相关书籍,论坛等资料,在学习过程中,遇到问题了,您可以知道如何解决。
⼀、 K4W相关书籍由于K4W是去年2⽉份左右推出的第⼀个正式版SDK,所以介绍K4W开发的书籍相对较少,在这⽅⾯,国外的⽐较早。
在这⾥推荐两本:⼀本是这本书中的代码和⽰例都是采⽤1.0的SDK展⽰的,不过基本除了1.5 SDK中坐姿模式,⾯部识别,1.7中加⼊的Fusion之外,其他的都包括进去了,⽽且讲的很基础和通俗易懂,包括讲解了⼀些WPF的基础知识。
最早之前我在学习K4W相关开发之时就是参考的这本书。
第⼆本是,这本书是稍晚,采⽤的是1.5的SDK,内容较第⼀本更加偏重实战。
这两本书都⽐较基础⽽且英⽂都通俗易懂,有兴趣的话,推荐⼤家看⼀下。
除了国外的这两本讲解开发的书籍之外,今年也有两本讲解Kinect开发的中⽂书:⼀本是还有⼀本是这两本书我没有看过,不便发表评论,不过如果英⽂不好的同学,可以搞本过来看看,K4W的内容也不是太多,⼊门应该没有问题。