Kinect的学习笔记发展(一)Kinect引进和应用
Kinect的学习笔记发展(一)Kinect引进和应用
一、Kinect简单介绍
Kinectfor Xbox 360,简称 Kinect,是由微软开发,应用于Xbox 360 主机的周边设备。它让玩家不须要手持或踩踏控制器,而是使用语音指令或手势来操作 Xbox360 的系统界面。它也能捕捉玩家全身上下的动作,用身体来进行游戏,带给玩家“免控制器的游戏与娱乐体验”。
其在2010年11月4日于美国上市,建议售价149美金。
Kinect在销售前60天内,卖出八百万部,眼下已经申请金氏世界记录,成为全世界销售最快的消费性电子产品。
2012年2月1日,微软正式公布面向Windows系统的Kinect版本号“Kinect for Windows”,建议售价249美金。而在2012年晚些时候,微软还将公布面向“教育用户”的特别版Kinect。
(以上来自wiki百科)
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)
二、Kinect应用开发汇总
本文(百度文库上面的内容,来源未知)汇总了当前使用Kinect SDK for Windows 开发出的各种各样的应用,点击相应的链接能够看到相应Kinect应用的Demo视频。
虚拟应用
Kinect试衣镜,这款基于kinect体感技术的奇妙的试衣镜,让客户能够高速的试穿衣服,提高销售效率和企业形象。
http://v.youku.com/v_show/id_XMjU4MjExNjgw.html
Kinect自制应用3D试衣间
http://v.youku.com/v_show/id_XMjg0MDA3MDYw.html
3D建模
3D摄像机, 用两个KINECT实现3D摄像机的基本效果。
http://v.youku.com/v_show/id_XMjI3MDQ2MjEy.html
雕塑工具。立等可取Kinect成街头高速人像雕塑工具,利用Kinect对人体进行3D建模,然后依据人体的3D信息,连接对应的塑模设备,塑造出人体塑像。
http://v.youku.com/v_show/id_XMjU2Njg2MzE2.html
机械控制
用Kinect 操控遥控直升机
http://v.youku.com/v_show/id_XMjgzOTYxODk2.html
Kinect Robo,使用Kinect作为机器人的头,通过kinect检測周围环境,并进行3D建模,来指导机器人的行动。
http://v.youku.com/v_show/id_XMjIzNDMyMjg0.html
Kinect控制高达机械人
http://v.youku.com/v_show/id_XMjM3NDUxMjg4.html
虚拟乐器
空气吉他。通过Kinect手势操作虚拟吉他弹奏音乐。
http://v.youku.com/v_show/id_XMjI5NjM3NzMy.html
Kinect弹奏中国古代乐器,通过手势的改变能够演奏出不同中国古代乐器的声音。
http://v.youku.com/v_show/id_XMjI1MDA4MTM2.html
虚拟娱乐
Kinect破解“初音”。将体感控制应用到漫画人物——初音上。
http://v.youku.com/v_show/id_XMjMxNjQ5MzAw.html
变身奥特曼。捕捉玩家骨架数据。虚拟为奥特曼的形态与之随动,而且附加一些特技效果。
http://v.youku.com/v_show/id_XMjM1MTY1NDY4.html
Kinect破解玩光剑,Kinect检測玩家的动作。虚拟出光剑的影像,与之随动。
http://v.youku.com/v_show/id_XMjI0NTIzOTIw.html
计算机相关应用
Kinect手势操作浏览器,通过Kinect手势对浏览器进行翻页。下拉,放缩等操作。
http://v.youku.com/v_show/id_XMjI1MjczMzg4.html
Air Presenter,让你的演讲从此与众不同。用kinect进行演讲的软件。
http://v.youku.com/v_show/id_XMjU1MTMyNzky.html
Kinect多点触摸。使用kinect实现隔空多点触摸,浏览图片、地图等。
http://v.youku.com/v_show/id_XMjM1MzE2MTY0.html
Kinect体感控制看片,第四军医大学西京医院骨科的医生们将破解的kinect应用在手术室,在术中。手术者可通过体感控制查看患者的影像资料。大慷慨便了医生手术,降低了手术室的人员流动。
http://v.youku.com/v_show/id_XMjM2Nzg2NDky.html
虚拟实验
Kinect蜡笔物理,使用Kinect手势画图。通过体感控制所画图形,并使之具有物理特性。比方重力。吸引力等。
http://v.youku.com/v_show/id_XMjI4MDMwMzM2.html
用Kinect控制闪电(特斯拉线圈)
http://v.youku.com/v_show/id_XMjY5NjE2MzQ0.html
游戏
Kinect破解玩马克思佩恩
http://v.youku.com/v_show/id_XMjM2NjYxNDg0.html
kinect破解玩求生之旅2 体感打僵尸
http://v.youku.com/v_show/id_XMjM3Mjk5MjQw.html
Kinect破解玩魔兽世界
http://v.youku.com/v_show/id_XMjMzMDM1MzI0.html
Kinect破解玩街头霸王
http://v.youku.com/v_show/id_XMjM4MjkzNjA0.html
Kinect破解玩超级马里奥兄弟
http://v.youku.com/v_show/id_XMjI1NzY1OTM2.html
Kinect破解玩兵者诡道
http://v.youku.com/v_show/id_XMjM0NDk2MDg4.html
Kinect破解玩 现代战争
http://v.youku.com/v_show/id_XMjM1NjU4NjE2.html
一群来自卡内基梅隆的学生使用Kinect的交互特点实现了18个各种各种的有趣的想法。他们只用了两周的时间,从大二学生到研究生不等。让我们来看一下他们实现的奇思妙想吧!
原文及视频信息链接http://golancourses.net/2011spring/projects/project-3-interaction/
1. Comic Kinect
此演示样例主要应用了Kinect的骨架跟踪技术和玩家分段数据,将拳击和脚踢的交互通过可视的漫画效果表现出来。而且同步发出一些拟声效果。
2. Mario Boo
当Kinect传感器检測到有人出如今视野内时,会出现一个幽灵保持在人的背后,随着人的运动而运动,而且会依据深度信息的远近而改变自身大小。
3. Magrathea
Magrathea使用Kinect依据桌上的不论什么物体动态的产生地形图。摄像头读取桌上物体的不断变化深度信息,能够展现出类似地球地形逐渐进化的过程。
4. We be Monsters
从中午舞狮中获取灵感,运用Kinect的骨架跟踪技术,两个人分别同坐自己的四肢操纵虚拟怪兽的四肢和头尾。
5. Mix&Match Interaction Toy
使用了Kinect/OpenNI 骨架技术,使得3张卡片组成的人体能够跟玩家随动。而且通过手的滑动更换图片。
6. Kinect Flock
作者创建了一个微粒系统。当用户移动时。像棉絮一样的东西会随之涌动,当用户精巧时,则聚集到參与者的深度区域。
7. roboScan
roboScan是一个3D模型+扫描仪,将一个Kinect设备固定在一个ABB 4400机械手上。设定好的动作和操作者同一时候控制机器人和摄像机的3D位置。
Kinect的深度数据用来产生一个精确的外部环境的模型。
8. Neurospasta
Neurospasta是一个须要全身投入的自由形态游戏平台。參与者能够控制他们各自基于Kinect的木偶,也能够通过功能设定控制别人的化身。
9. Will-o-the-Wisp
这个设计充满了神奇色彩。玩家能够控制一个发光的球体,球体依据玩家手的运动而动。依据深度信息变大或变小。
10. Balloon Grab
通过检測手掌张开还是握紧的手势。作者开发了一个基于模拟气球飞行的简易小游戏。
11. Hand-Tracking Visualization
该软件使用手势控制音频的可视化效果,结合检測到场景中手距Kinect的深度信息。參与者手的位置。速度以及其它參数被用来创建一个交互式的声音的可视化效果。
感觉Kinect该应用程序还偶尔字:Kinect该应用程序依赖于你的想象力!
Kinect的学习笔记发展(一)Kinect引进和应用的更多相关文章
- Kinect的学习笔记发展一Kinect引进和应用
Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
- Kinect开发学习笔记之(一)Kinect介绍和应用
Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
- IOS学习笔记02---语言发展概述,计算机语言简介.
IOS学习笔记02---语言发展概述,计算机语言简介. ------------------------------------------------------------------------ ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- 我的Android进阶之旅------>Android中编解码学习笔记
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...
- MongoDB学习笔记:快速入门
MongoDB学习笔记:快速入门 一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...
- WeX5学习笔记
目录 WeX5学习笔记... 1 1.轻松看透WeX5产品能力和技术... 1 2.WeX5可以怎么玩?... 3 一.纯本地App. 3 二.关联一个网站,希望默认就打开某页... 4 三.UI设计 ...
- ASP.Net MVC开发基础学习笔记:一、走向MVC模式
一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...
- AngularJS的学习笔记(一)
声明:单纯作为我自己的学习笔记,纯是为了自己学习,上面的话都是从各处粘贴,如有冒犯,请原谅我这个小菜鸟~ AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷. 使用双大括 ...
随机推荐
- [置顶] 关于redhat系统yum源的配置2
(二)配置yum源(官方) 1.在终端输入以下命令(RHEL6/CentOS6) wget http://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/ ...
- 用Stack实现对多线程的管理范例
多线程就是并发技术,当线程数量超过一定数量时,系统响应就会变慢,所以就必须对线程数量进行控制,那么采用哪种控制方法呢?采用Stack类模仿堆栈,之所以说是模仿,就是因为Stack类毕竟不是真实的堆栈, ...
- CentOS5.6下安装Oracle10G软件 【保留报错经验】
CentOS5.6下安装Oracle10G ****************************************************************************** ...
- 排序(6)---------归并排序(C语言实现)
归并排序: 归并操作,也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作.归并排序算法依赖归并操作. 归并操作的步骤例如以下: (1) 申请空间,使其大小为两个已经排序序列之和.该空 ...
- struts 2吊牌s:if 、s:iterator注意
疏忽,也没有相应的总结.实际上JSTL标签Struts2标签混淆.导致一些上述问题的细节.今天我给从下一个总结,同 后不要再犯这种错误. 总喜欢在s:if标签里面使用$,导致各种数据读不出来. str ...
- A*寻路算法的实现
原理:http://www.cppblog.com/christanxw/archive/2006/04/07/5126.html 算法理论请到原理这个传送门,代码中的注释,已经比较详细,所以我不会讲 ...
- ANSI C中取得结构体字段偏移量的常用方法
来自http://blog.chinaunix.net/u2/62910/showart_492571.html 假设在ANSI C程序中定义了一个名为MyStruct的结构类型,其中有一个名为MyF ...
- Delphi控件的停靠功能
Delphi自带的许多控件都有停靠功能,而且操作非常简单,大可不必选用第三方控件. 基本上,要进行Dock操作至少需要两个组件,一个人被附着的Dock Site组件,另一个人附在Dock ...
- Delphi的VMT的结构图,很清楚
Every Delphi class is defined internally by its vmt—its virtual-method table. The vmt contains a li ...
- WiPlug_百度百科
WiPlug_百度百科 WiPlug