4.2实现踩气球的算法 17
4.2.1 空间中的物理坐标转换为屏幕的像素目标 17
4.2.2 踩气球主程序 20
结 论 26
致 谢 27
参 考 文 献 28
1 绪论
Kinect 是微软公司于2010年11月推出的体感外设,它实际上是一种3D体感摄影机,可以实现实时运动捕捉、麦克风输入等功能。人们可以站在Kinect前做出各种动作来与计算机交互,为实现NUI的交互提供了一个集成了装置。这种方式不仅使人们不再需要在身体上佩戴各类传感器,而且操作成本也大幅下降,所以基于Kinect的开发成为了目前的研究热点。
体感交互游戏是人机交互领域的经典问题。早期的体感交互游戏通过在手上佩戴各类传感器来确定人的位置、姿势等信息;随着各类技术的成熟和传感器材成本的降低,一般的实验室也能使用到精度较高的图像和声音采集设备,当前的体感交互游戏多为使用摄像头等图像采集设备,通过计算机视觉的方法对采集到的图像序列进行姿势的分割、跟踪、识别等一系列操作,最终实现体感交互游戏。本文着重讨论了使用Kinect识别到的骨骼图像及深度图像来判断人物,并使得人物可以通过腿部的位置来进行踩气球的游戏,实现非接触式的人机交互。
1.1 Kinect 实物图及其组件
图1.1 Kinect实物图
其主要包括以下的特点及功能:(图1.1)
① Kinect底部为多点阵列麦克风:主要功能为声音输入及定位,并可以帮助过滤环境噪声。
② RGB 摄像头: 作用是进行图像捕获。
③ 两个深度传感器: 由红外线投影机加单色CMOS传感器组成,使设备能识别3D空间。
④ 底座有机械转动功能,可以让摄像头本体能够看到的范围更广泛。
1.2 基于Kinect的体感动作识别
1.2.1 光编码(Light Coding)
利用连续光(红外线)对测量空间进行编码,经感应器读取编码的光线,交由处理器运算进行解码后,产生成一张具有深度的图像。Light Coding 技术的关键是激光散斑(Laser Speckle),当激光照射到粗糙物体或是穿透半透明物体后,会形成随机的反射斑点(散斑)[1]。散斑具有高度随机性,也会随距离不同而变换图案,空间中任何两处的散斑都会是不同的图案,等于是将整个空间加上了标记,所以任何物体进入该空间、以及移动时,都可确切纪录物体的位置。发出激光对测量空间进行编码,实质就是产生散斑。(图1.2)
图 1.2 Kinect深度识别
Kinect 就是以红外线发出人眼看不见的Class1激光,透过镜头前的光栅、扩散片(diffuser)将激光均匀分布投射在测量空间中,再透过红外摄影机记录下空间中的每个散斑,获得原始数据后,再通过处理器以黑白光谱的方式来计算环境(纯黑代表无穷远,纯白代表无穷近。黑白间的灰色地带对应物体到传感器的物理距离)。通过对分辨率范围内所有点的数据进行分析,就可以生成具有3D 景深的图像。
1.2.2 骨架追踪系统
光编码技术所获得的3D 深度图像的只是基本的影像资料,需要对其进行图像识别工作,以获得相应的动作指令用于人机交互。由于所需辨识的对象是人的动作,因此需要把3D 深度图像转换到骨架(人类)追踪系统。目的是判断场景中人数,每个人的具体动作,包含头部、躯干、四肢以及手指等,以获取动作指令。[2]在这一阶段,采用分割策略来将人体从背景环境中区分出来,即从噪音中提取出有用信号。并为每个被追踪的人物对象在景深图像中创建“分割遮罩“,也就是将背景物体(比如家具等)剔除后的景深图像。在后面的处理流程中仅仅传送分割遮罩的数据,减轻动作识别计算量。随后,将分割出的骨架结构数据与预先建立的包含可识别动作类型的图像资料库进行比对,辨别出使用者的动作类型:如挥手、踢腿、摇头、推拽等(如使用更高分辨率的红外摄像机和更详细的图像资料库,还可以进一步对使用者手指的骨架结构进行判断,从而识别含义更为复杂多样的手势动作),[3]最终获取使用者动作所表示的具体指令(图1.3)。