Kinect在成像时可以同时通过三种方式来实现:彩色影像、3D深度影像和声音讯号。成像的最开始,计算机会首先获得一个绿色背景下的模糊的人体影像。每一个人体部分,在任何姿势的时候,都有大量的变量。连上摄像机以后,摄像机会对人体所有部分成像,每个像素都进入了“骨骼追踪算法”系统之中。Kinect还带有一个红外感应装置,因此,这个人影每一个骨骼节点的深度是可知的,就可以形成深度影像。
随后,计算机会对每一个像素进行分析评估,比如判断它是在人体的哪个部位。再接下来,每一个像素的特征变量都会在一个叫做“随机决定库”里进行搜索,看这个有着特定性质的像素是否符合一个特定的身体部位。
在这个过程中,游戏系统会收集到大量的运动捕捉数据———在最初的研究中,像哪怕跳舞、踢球或跑步这样的运动,都会产生50万的数据帧。研究者后来将数据帧数量限制在10万左右。
当设备辨别出人体部位之后,这个系统就开始计算每个人体节点的三文位置所在,Xbox系统每秒钟要做出200次的算法,比之前的人体识别技术快上10倍。这样,玩家的运动也可以被识别得更快。
数据库并不能代表所有的人体行为,而只是常见的一些行为,因此,在系统中,Kinect带上了机器学习技术,对于不常见的一些行为可以学习并放入图像资料库中。接下来Kinect要做的,就是增加机器识别的准确性,这可能需要更大的数据库,以及更快的运算速度。
Kinect采用分割策略来将人体从背景环境中区分出来,即从噪音中提取出有用信号。Kinect可以主动追踪最多两个玩家的全身骨架,或者被动追踪最多四名玩家的形体和位置。在这一阶段,我们为每个被追踪的玩家在景深图象中创建了所谓的分割屏蔽,这是一种将背景物体(比如椅子和宠物等)剔除后的景深图象。在后面的处理流程中仅仅传送分割屏蔽的部分,以减轻体感计算量。[3]
1.3 OpenCV概述[4]
OpenCV[19]是英特尔®开源计算机视觉库。OpenCV采用C/C++语言编写,可以运行于Linux/Windows/Mac等操作系统上,还提供了Python、Ruby、Matlab以及其他语言的接口。
它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。
1.4 本文中项目执行的流程
1.4.1 本课题研究内容
从微软发布的各种关于Kinect 的文献中,我们可以得知其主要功能是动作感应器侦测3D影像和骨架追踪,至于骨架追踪则是此次我们团队项目的主要内容。其过程为将侦测到的3D深度图像,转换到骨架追踪系统。该系统最多可同时侦测到6个人,包含同时辨识2个人的动作;每个人共可记录20组细节,包含躯干、四肢以及手指等都是追踪的范围,达成全身体感操作。为了看懂使用者的动作,微软也用上机器学习技术(machine learning),建立出庞大的图像资料库,形成智慧辨识能力,尽可能理解使用者的肢体动作所代表的涵义 。上述可知,本课题主要是对经摄像头扫描得到图像的深度值如何进行分析、处理以选取合适的深度值来进行背景模型的重建工作,方便后续骨架追踪。
1.4.2 本文研究的主要内容
我主要负责的内容是课题中关于深度图像的兴趣点的实时检测和识别的部分。本文研究的主要内容是对一个已有的深度图像提取兴趣点,并根据这些兴趣点进行分类,检测和识别出图像中的人体部位。
1.4.3 本文的组织结构
从提出问题开始,接着设置问题,分析问题,最后解决问题并作总结和对比。
2 基于深度图像的dijkstra算法的实现 Kinect体感游戏控制器的手势检测方法研究(3):http://www.youerw.com/jisuanji/lunwen_7818.html