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感应器。
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 v2从左至右分别为颜色摄像头,红外摄像机,红外投影机(这两部分看不到外观)。
图1 Kinect V1
图2 Kinect V2
2、Kinect配置比较
Kinect彩色摄像头可用来拍摄视角范围内的彩色视频图像,Kienct v1的分辨率为640x480,Kienct v2的分辨率为1920x1080。Kinect可用来获取用户的深度信息,Kinect v1获取的深度图像的分辨率为320x240,Kinect v2的分辨率为512x424。Kinect v1可检测到的有效范围为0.8~4.0m,Kinect v2可检测到的有效范围为0.5~4.5m,只有用户在有效范围内,Kinect才能检测到用户的存在。骨骼跟踪是Kinect“体感操作”的基础,Kinect可以跟踪到6个用户的位置信息,并且Kinect v1可以实时跟踪2个用户的详细位置信息,包括详细的姿势和骨骼点的三维坐标信息,Kinect v2可以同时跟踪6个用户的骨骼节点。Kinect v1最多可以支持20个骨骼点,Kinect v2最多可支持25个骨骼节点,数据对象类型以骨骼帧的形式提供,每一帧最多可以保存所支持的骨骼点对应的个数。Kinect v1骨骼点如图3所示,Kinect v2骨骼点如图4所示,Kinect v1及Kinect v2配置比较如表1所示
图3 Kinect V1骨骼节点
图4 Kinect V2骨骼节点
表1
|
Kinect v1 |
Kinect v2 |
|
颜色(Color) |
分辨率(Resolution) |
640×480 |
1920×1080 |
fps |
30fps |
30fps |
|
深度(Depth) |
分辨率(Resolution) |
320×240 |
512×424 |
fps |
30fps |
30fps |
|
人物数量(Player) |
6人 |
6人 |
|
人物姿势(Skeleton) |
2人 |
6人 |
|
关节(Joint) |
20关节/人 |
25关节/人 |
|
检测范围(Range of Detection) |
0.8~4.0m |
0.5~4.5m |
|
角度(Angle)(Depth) |
水平(Horizontal) |
57度 |
70度 |
垂直(Vertical) |
43度 |
60度 |
3、运行环境的比较
Kinect v1要在Windows 7及以后的版本上运行,Kinect v2要求是在Windows 8及以后的版本上运行。Kinect v1要求USB 2.0(或更快的USB)来运行,因为Kinect v2预览版传感器的分辨率也提高了,需要更快的USB 3.0来运行。CPU方面,Kinect v2和Kinect v1一样,要求Dual Core 2.66 GHz以上。Kinect v1要求的是支持DirectX 9.0c的GPU(Kinect Fusion除外),Kinect v2要求支持DirectX 11.0以后的GPU,像笔记本这种没有装载NVIDIA GeForce和AMD Radeon外置GPU(独立显卡)的很多无法运行,而像有Intel HD Graphics这种支持DirectX 11.0以后的处理器内置的GPU(集成显卡)是可以运行的。Kinect v1和Kinect v2运行环境的详细比较表如表2 所示。
表2
|
Kinect v1 |
Kinect v2 |
OS |
Windows 7及以后 |
Windows 8及以后 |
编译器(Compiler) |
VisualStudio 2010以后 |
VisualStudio 2012以后 |
端口(Connector) |
USB 2.0 |
USB 3.0 |
CPU |
Dual-Core 2.66GHz |
Dual-Core 2.66GHz |
GPU |
DirectX 9.0c |
DirectX 11.0 |
RAM |
2.0GBytes |
2.0 GBytes |
1、深度检测
深度检测是Kinect的核心技术,开发者可以通过Kinect获取到用户的深度信息,判断用户的位置。Kinect v1的深度检测用的是Light Coding的方式:红外投影机投射红外光谱,照射到粗糙物体或者毛玻璃后,光谱发生扭曲,形成散斑。因为散斑具有高度随机性,所以空间中每一个散斑的图案都不相同。在空间中打上这样的结构光,整个空间即被标记,当物体放在这个空间中时,红外摄像机接收到反馈信息,就可根据物体上散斑图案判断物体位置,形成深度图像。Kinect v2的深度检测用的是Time Of Light的方式:通过红外摄像头投射红外线形成反射光,根据光线飞行时间判断物体位置,形成深度图像。
2、骨骼跟踪
为了能对用户进行骨骼跟踪,需要构造出用户的骨骼图,对对应骨骼节点进行跟踪。首先要从深度图像中识别出“人体”目标,即从深度图像中跟踪任何“大”字形物体,此处与人体相似的衣物也会被标定。然后逐点扫描这些区域的深度图像像素点,来判断属于人体哪个部位,其中包扩边缘检测、噪声阈值处理等计算机图形学技术。通过这一技术最终将人体从背景环境中区分出来。当系统将人体从深度图像中分离出来后,接下来就是将人体各个部位识别出来。由于人的高矮胖瘦的不同,当用户做相同的动作时会呈现出不同的状态,机器是无法穷举出所有人体姿态的,只能通过机器学习去抽象常见的姿态和行为去推测、理解人类的意图,通过人体各个部位的特征值进行分类。获得人体的不同部位之后就可以进行关节点的识别,人体的关节连接着躯干、四肢、头颅等,会有很多重叠的地方,所以需要分别从正面、侧面等多个角度去分析、机器学习,根据每一个可能的像素来确定关节点,形成骨骼系统。
3、人脸识别
人脸识别也需要机器学习的支持,第一步首先定位人脸的存在,其次基于人的面部特征,对输入的人脸图像或者视频进行进一步分析,包括脸的位置、大小和各个面部器官的位置信息,依据这些信息,进一步提取每个人脸中所蕴含的身份特征,并将其与已知的人脸进行比较,从而识别每个人的身份。
4、语音识别
Kinect中语音识别包括很多层次的技术,如最简单的“语音命令”、声音特征识别、语种识别、分词、语气语调性感探测等多个方面。Kinect麦克风阵列捕获的音频数据流通过音频增强效果算法处理来屏蔽环境噪声。即使在一个大的空间,即使人离麦克风有一定距离,也能够进行语音命令的识别。Kinect阵列技术包含有效的噪声消除和回波抑制算法,同时采用波束成形技术通过每个独立设备的响应时间来确定声源位置,并尽可能避免环境噪声的影响。
目前,国外已经出现了很多使用Kinect开发的精彩应用,比如Kinect试衣镜、Air Presenter演讲软件、Kinect光剑、Kinect街头霸王等。很多创意都可以在MSDN Channel 9的Coding4fun栏目里看到。
在国内,Kinect for Windows SDK Beta发布伊始,微软亚洲研究院便启动了“微软校园菁英计划”之Kinect Pioneer项目,在全国范围内动员微软学生技术俱乐部的同学们集思广益,提交他们基于Kinect的新创意,并向优秀的创意团队提供Kinect设备和技术支持。仅一个多月的开发时间,多个优秀创意团队便成功提交了Kinect创意项目原型,其中包括使用手势进行变脸的3D脸谱虚拟平台、Kinect教学助手、基于Kinect的网上试衣间等。在随后的2012微软精英大挑战Kinect主题上,来自全国30所高校的100余支队伍也积极参与到Kinect for Windows的开发当中,这使得Kinect在中国大学生中得到了全面的推广。
Kinect的手势识别功能让用户不再需要数据手套即可通过双手操作系统界面,Kinect的动作识别功能让用户无需穿上数据衣即可进行系统交互,Kinect的语音识别功能让用户通过口令即可控制虚拟场景,Kinect在虚拟现实领域会有很大的发展。“ Air Guitar prototype using Kinect camera”是一款虚拟吉他的游戏,2007年英国艺术家Chris o’Shea 曾利用其表演过。这款游戏可通过Kinect的深度图像数据以及骨骼跟踪功能,对双手关节点的相对位置、角度、以及拨动“空气琴弦”那只手的运动速度进行实时跟踪,在空气中将琴弦划分若干区域。通过增强现实技术让演奏者可以看到屏幕上的虚拟琴弦,对提高演奏技艺有很大帮助。“虚拟试衣镜”也正悄然改变着一些时装专卖店的格局,让试衣间不再成为必需品。顾客不需要进入试衣间脱衣服试穿,只要站在虚拟试衣镜前比划,就能在屏幕上预览自己穿上新衣服的样子。同时在课堂上,教师也可通过Kinect给学生演示一些DNA、化学分子结构虚拟现实学习系统,让课堂恒生趣味性。可见Kinect的应用领域十分广泛。