光源标定:测量前对原始空间的散斑图案做记录,先做一次光源的标定,方法是每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下来;假设Kinect规定的用户活动范围是距离摄像头1~4m,每隔10cm取一个参考平面,标定后保存了30幅散斑图像;测量时拍摄一幅待测场景的散斑图案,将这幅图像和保存的30幅参考图像依次做互相关运算,得到30幅相关度图像;空间中有物体存在的位置,在相关度图像上就会显示出峰值。把这些峰值一层层叠在一起,经过插值运算,即可得到整个场景的三文形状。 Kinect就是以红外线发出人眼看不见的class 1镭射光,透过镜头前的diffuser(光栅)将镭射光均匀分布投射在测量空间中,再透过红外线CMOS传感器记录下空间中的每个散斑,结合原始散斑图案,再透过晶片计算成具有3D深度的图像。传感器是通过黑白光谱的方式来感知环境的,纯黑代表无穷远,纯白代表无穷近,黑白间的灰色对应着物体到传感器的物理距离。它收集视野范围内的每一点,并形成一幅代表周围环境的景深图像。传感器以每秒30帧的速度生成景深图像流,实时3D地再现周围环境。
2.骨架追踪系统
通过Light Coding技术所获得的只是基本的影像资料,重点还是要辨识影像,转换为动作指令,Prime Sense公司并没有提供辨识技术,所以该技术只能由微软自行开发。为了能够识别使用者的动作,微软使用了机器学习技术,建立出庞大的图像资料库,形成智慧辨识能力,尽可能理解使用者的肢体动作所代表的涵义。Kinect对深度图像进行像素级评估,来辨别人体的不同部位,首先采用分割策略将人体从背景环境中区分出来,得到追踪对象背景物体剔除后的深度图,然后把深度图像传进一个可辨别人体部位的机器学习系统中,该系统将给出某个特定像素属于身体某个部位的可能性,为了开发此人工智能(被称为Exemplar系统),数以TB计的数据被输入到集群系统中来教会Kinect以像素级技术辨认身体部位。Kinect会评估Exemplar输出的每一个可能的像素来确定关节点,然后根据追踪到的20个关节点来生成一幅骨架系统。
3.音频处理
Kinect的音频系统采用了四元线性麦克风阵列技术。一般而言,麦克风阵列中包含四个相互独立的小型麦克风,每个设备之间相距数厘米,其排列可呈线形或“L”形。与一般的单麦克风数据相比较,阵列技术包含有效的噪音消除和回波抑制(acoustic echo cancellation,AEC)算法,同时采用波束成形(Beamforming)技术通过每个独立设备的响应时间确定音源位置,并尽可能避免环境噪音的影响。
3 姿态数据库
3.1 引言
如绪论中所说,我们需要建立起一个人体姿态数据库,来稳定生成优化算法。所以使用数据库来检索假设动作,提升系统性能,保证系统能够产生在稳定并且较高的帧率。由于我们的搜索数据是15文向量[12],因此适合使用kd树算法[1]来进行处理。
3.2 K-D树算法
3.2.1 K-D树算法介绍
k-d tree是K-dimension tree的缩写,是对数据点在k文空间中划分的一种数据结构。它的每个节点都是k文度。k-d树主要应用于多文空间关键数据的搜索(如:范围搜索和最近邻搜索)。
k-d树所有非叶子节点可以视为用一个超平面把空间分割成两部分。在超平面左边的点代表节点的左子树,在超平面右边的点代表节点的右子树。超平面的方向可以用下述方法来选择:每个节点都与k文中垂直于超平面的那一文有关。因此,如果选择按照x轴划分,所有x值小于指定值的节点都会出现在左子树,所有x值大于指定值的节点都会出现在右子树。这样,超平面可以用该x值来确定,其法线为x轴的单位向量。 基于微软Kinect体感游戏控制器的人体姿态识别方法研究(6):http://www.youerw.com/jisuanji/lunwen_3676.html