首页 > 代码库 > 【Kinect开发笔记之(一)】初识Kinect

【Kinect开发笔记之(一)】初识Kinect


一、Kinect简介

Kinect是微软在2010年6月14日对XBOX360体感周边外设正式发布的名字。它是一种3D体感摄影机(开发代号“Project Natal”),同时它导入了即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能。

二、Kinect分类

  1. Kinect for Xbox 360:该版本设计之初就是为了Xbox 360定制的,并未考虑其他的平台。从微软授权角度而言,它无法用于商业开发
  2. Kinect for Windows : 固件上做了升级,支持“近景模式”、提升了骨骼跟踪等API的性能,更好地兼容各种Windows计算机、采用更为先进的声学模型,并且其将作为微软授权在Windows平台下进行Kinect开发的传感器。其他方面和Kinect for Xbox 360的版本差异不大。
  3. Kinect for Windows v2:预售当中,今年7月份开始发货,届时也将有Kinect for Windows SDK 2.0测试版,正式上市和正式版SDK要几个月之后。功能强大了不止那么一点点啊。(好像系统要求为win8) http://www.xbox-skyer.com/content.php?r=3606-次世代-Kinect-更大的眼睛、更灵敏的耳朵和更聪明的头脑



三、软件开发环境


非官方组合

一开始微软对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/NITE

OpenNI(opennatural interface开放自然交互)是一个多语言,跨平台的框架,它定义了编写应用程序,并利用其自然交互的API。可以到这里下载。从名字判断其终极目标大约是实现少数派报告的效果,从目前放出来的一些demo,恐怕已经超越了这个终极目标。它不是专为Kinect开发,但有Kinect的生产商PrimeSense的支持。这个感觉也是目前相对来说用的比较多的非官方组合:SensorKinect + NITE + OpenNI;其中SensorKinect是Kinect的驱动。NITE是PrimeSense提供的中间件,可以分析Kinect读取的资料,输出人体动作等等。


微软官方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.8 。

很快,将会有Kinect for Windows SDK 2.0面世,Kinect for 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)官方SDK:

优点:

提供了音频支持、调整倾角的转动电机、在全身跟踪骨骼跟踪方面:非标准姿势检测(相对于OpenNi的投降势…),头部、手、脚、锁骨检测以及关节遮挡等细节上的处理更为细致(但精度是否更高还不能确定)。此外,支持多传感器(多台Kinect);

缺点:

微软对非商业使用的限制。从可移植的角度来看,官方SDK只能用于Windows平台,而OpenNi还至少支持华硕的WAVI Xtion体感设备,今后支持的硬件平台还可能更多。相比较而言官方SDK 不支持Unity3D游戏引擎、也不支持像OpenNi一样的角色入场和出场的事件响应机制。


2)非官方OpenNI/NITE:

优点:

可用于商业开发、包含手势识别和跟踪功能、可自动对齐深度图像和RGB图像,全身跟踪、关节旋转角度计算、看起来性能较好、已有众多游戏产品应用、支持记录/回放数据写入磁盘、支持原始红外视频数据流、支持角色入场和出场的事件响应机制。支持Primesense和华硕的WAVI Xtion硬件平台和windows、Linux和Mac等软件平台。自带的代码全面支持Unity3D游戏引擎。

缺点:

未提供音频功能、不支持调整倾角的转动电机、在全身跟踪骨骼跟踪方面:无法跟踪头部、手、脚和锁骨的旋转动作,需要标准姿势检测(即著名的投降姿势…),关节遮挡等细节上的处理似乎存在算法bug。不能自动安装并识别Kinect多机环境。安装过程较为繁琐,特别是NITE还要申请开发证书编码。OpenNi也没有提供可用视频和深度图输入的事件触发机制(但OpenNI提供了类似功能的函数可使用,虽然不是回调函数,但是也很好用)。


总结(水平有限,请补充):

OpenNI最大的优势就是允许跨平台多设备,以及商业应用。但从原始数据的采集和预处理技术上看,微软的SDK似乎更稳定一些,况且还提供了不错的骨骼和语音支持。OpenNi/NITE虽然也提供了手势识别和跟踪,然而在全身骨骼姿势识别和跟踪上还要更多借鉴微软的产品。(个人认为,官方SDK经过多次的更新,已经慢慢赶超OpenNI了,特别是接下来就要发布的Kinect for Windows v2功能更加强大)

因此,选择SDK还是OpenNI取决于:

  1. 是否跨平台、是否跨设备(即支持Kinect以外的设备)
  2. 是否习惯微软编程方式
  3. 是否要用到特性的feature(如3D人脸跟踪、三维重建、语言识别)



四、Kinect应用开发汇总

本文(百度文库上面的内容,来源未知)汇总了当前使用Kinect SDK for Windows 开发出的各种各样的应用,点击相应的链接可以看到对应Kinect应用的Demo视频。

虚拟应用

Kinect试衣镜,这款基于kinect体感技术的神奇的试衣镜,让客户可以快速的试穿衣服,提高销售效率和企业形象。

http://v.youku.com/v_show/id_XMjU4MjExNjgw.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