谈及游戏,或许对于大多数人来说最先想到的就是游戏机,伴随着游戏机的产生,游戏控制器必不可少。当我们玩射击游戏时,它是我们手中的枪,轻轻按动按键,屏幕上的“我们”就会扣下扳机,向阻拦我们的敌人倾泻子弹;当我们玩飞行游戏时,它是我们手中的操纵杆,靠着它我们能够尽情在蓝天中翱翔、作战,让我们以为自己身在F16战机的座舱中,而不是某个狭小的房间里;当我们玩竞速游戏时,它是手中的方向盘,尽管实际上我们的位置没有挪动半分,却依然感受到坐在法拉利跑车中尽情驰骋的快感,这个奇妙的东西,就是游戏控制器。 随着索尼、微软、任天堂体感游戏设备的竞争,一个新概念诞生了,那就是微软开发的体感设备Kinect的理念“不用控制器”(文献【2】)。如下图中,玩家以自己身体的运动来控制游戏中角色的运动情况:
一个东西的诞生,伴随的不仅仅只是单一的工作,基于微软Kinect的出现,多种关于其工作的过程的课题也应运而生。就如图1所示,这包含图像的扫描、背景的重建、骨架的追踪、局部优化和全局优化等等,我们才能将玩家所作动作作用于游戏角色中。此次我所选课题为:基于微软Kinect体感游戏控制器的3文场景重建方法研究,则是其中的一部分,主要是对其背景深度进行分析、处理,从而重建其背景模型。
1.2 难点问题及分析、处理
1.2.1 怎么得到有效的深度值
借助于微软的xbox360以及其所给的SDK(文献【3】),我们可以很容易的对每帧图像就行扫描,但由于设备都有其局限性或者误差,图像经过处理得到的深度值不一定都是有用或者甚至得不到深度值,这时,我们就需要对其进行分析和处理。在对深度值就行分析处理之前,我们还需要明白一个过程:在处理第N+1帧图像的时候,我们需要对前N帧图像的处理工作需完成,并且结合《Analysis of Three-Dimensional Scenes》中Methods for Scene Analysis部分(文献【4】),我们了解到,图像的最大深度值就是其最大距离值,而使得深度值无用或者得不到有效深度值主要有两方面原因:
1) 距离问题:Kinect摄像头能识别的范围为距离其1.5M-----4M内的地方,超出或者太近都将得不到深度值。我们知道,一幅图像都是由很多像素点构成,如果一幅图像中某些像素点得不到深度值,那是不是就不进行处理呢?或者在显示的时候就直接显示为空呢?答案是否定的,由于要对图像进行背景重建,对于得不到深度值的图像的像素点,出于使用方便,我们可以规定其深度值为0(文献【5】).
2) 阴影遮挡问题:我们知道,如果摄像头和周围背景及其之间的空间关系没有任何变化,得到的图像是不会改变的;如果他们二者都没变化,但是他们之间出现了在改变形状或者动作的事物(例如一个运动着的人),得到的图像中某些像素点的深度值和先前的比较就会出现变化。我们就要对这些深度值就行分析,确定其是否合适。
关于阴影遮挡,主要有两方面--完全遮挡和间隔遮挡。所谓完全遮挡,就是如果背景中一个像素点因为阴影遮挡没有深度值,并且其投射到当前背景的距离值远大于当前背景深度值(当透过一个非透明物体看另一个物体时,是无法看见的,我们可以看做其距离无限大),则丢失其当前深度值;而间隔遮挡就是事物在晃动的过程中,每帧图所能看到的背景是不同的,规定其如果一个像素点的深度值不能为连续的多个帧所共用,则也失去其深度值。按照上文所述,如果一个像素没有深度值,则将其深度值规定为0. 基于KINECT体感游戏控制器的3维背景重建方法研究(2):http://www.751com.cn/jisuanji/lunwen_7814.html