《精密测试理论与技术B》综合设计题目微软Kinect三维测量及人体姿势识别班级测控一班姓名王一霖学号3012210020指导教师孙长库微软Kinect三维测量及人体姿势识别王一霖(精仪学院,测控一班,3012210020)摘要:微软的kinect技术已经问世数年,由于它对空间的额测量比较准确,围绕它可以进行有效的三维测量和姿势识别。本文详细分析介绍了kinect的三维人体跟踪算法、深度识别算法、人体姿势识别算法,通过分析Kinect获取的深度图信息来对人体轮廓进行区分判定,提取前景目标区域以及计算目标区域的深度直方图。通过对深度直方图进行分析去除背景区域部分,根据获取的深度直方图求取跟踪图像的深度反向投影;最后结合Camshift算法确定当前选取目标区域的尺寸和中心位置来进行对人体的实时跟踪。还利用kinect进行了导轨直线度的设计测量,并分析了测量不确定度。关键词:kinect;深度信息;Camshift算法;反向投影1.引言姿势识别是机器视觉领域的研究热点.被广泛应用在人机交互、行为分析、多媒体应用和运动科学等领域。姿势识别主要有两种方法。第一种是利用可穿戴传感器,比如戴在身体上的加速度计或装在衣服上的张力传感器。可穿戴传感器具有精确直接的特点,但会对肢体运动造成束缚,会给用户带来额外的负担。第二种是利用视觉捕捉技术,例如视频或者静态图像,通过对视觉数据的处理来判断用户的动作。基于视觉捕捉技术在特征表达方面,起初是采用人体轮廓作为姿势特征表达。但是轮廓特征从整体角度描述姿势,忽略了身体各部位的细节,不能精确地表示丰富多彩的人体姿势。有研究采用基于身体部位的姿势表达,即把人体轮廓分成若干个身体部位,例如颈部、躯干和腿。[1]由于这些姿势特征都是从二维彩色图像中抽取而来.需要处理人体定位、肢体被遮挡、不同光照条件等问题。近年来,Kinect等深度传感器不仅提供彩色图像数据,而且提供了三维深度图像信息。三维深度图像记录了物体与体感器之间的距离,使得获取的信息更加丰富。利用Kinect的实时骨骼跟踪技术和支持向量机(supportvectormachineSVM)识别4种姿势(站,躺,坐和弯腰)。本文采用Camshift自适应飘移算法和深度图像处理对人体进行跟踪,采用逻辑回归算法对54种姿势进行识别研究,设计开发实时的人体姿势识别系统,并应用kinect对导轨直线度进行测量,并分析不确定度。[2]2.跟踪算法2.1人体跟踪算法为了对人体进行持续有效有效的姿势识别,必须使用良好有效的算法对人体进行跟踪。我采用了连续自适应均值偏移算法(Cambridge算法),该算法是以颜色直方图为目标模型的跟踪算法,可以有效地解决人体目标变形的问题,在简单背景环境中能取得较好的跟踪效果,但在复杂背景中不能解决大面积同色干扰等问题。在此基础上可以利用Kinect传感器获取深度图信息,根据获取的深度信息结合Camshift算法来进行对人体的实时跟踪。该算法通过分析Kinect获取的深度图信息来对人体轮廓进行区分判定,提取前景目标区域以及计算目标区域的深度直方图,再对深度直方图进行分析去除背景区域部分;根据获取的深度直方图求取跟踪图像的深度反向投影并结合Camshift算法确定当前选取目标区域的尺寸和中心位置对人体实时跟踪。提高了人体跟踪的稳定性及鲁棒性。具体算法如下[3]:(1)读取第1帧视频图像,提取出其中的Cb、Cr颜色分量(2)通过手动选择确定初始目标及其区域,并以此区域初始化搜索窗口,提取目标的颜色直方图(3)保持搜索窗中心不变适当扩大搜索区域,计算目标颜色概率直方图,转换为颜色概率投影图(4)在概率投影图上利用Camshift算法,计算出搜索窗新的质心位置,然后移动搜索窗的中心到新计算的质心位置。Camshift算法寻找新质心方法为先计算跟踪窗口内的质心(𝑋𝑐,𝑌𝑐),其中零阶矩和一阶矩为𝑀00=∑∑𝐼𝑐(𝑥,𝑦)𝑦𝑥,𝑀10=∑∑𝑥𝐼𝑐(𝑥,𝑦)𝑦𝑥,(2.1)𝑀01=∑∑𝑦𝐼𝑐(𝑥,𝑦)𝑦𝑥(2.2)2.2深度图像获取利用可见光图像的单目识别常常遭遇光照变化、阴影、物体遮挡以及环境变化等因素的干扰。利用深度图像进行模式识别可以很好地克服以上可见光图像模式识别常遇到的困难深度图像中像素的灰度值仅与视场窗口平面到物体表面的距离有关。因此,深度图像首先具有空间颜色无关性,不会遇到光照、阴影等因素的影响。其次,深度图像的灰度值与图像的横、纵坐标组合在一起,在一定的空间范围内,可以用来表示物体在3D空间中的坐标,因此可以等效成在3D空间中进行模式识别。再者,如果利用图像深度信息进行模式识别,就相当于单目3D空间模式识别,可以克服遮挡或重叠问题。更重要的是,深度图摄像机的成像原理可以很好地保证相机标定的鲁棒性,适应各种环境变化,使之容易自调节重新标定且不需要测量标定物。这样,系统研发可以更多关注识别算法本身,而不会过分依赖于标定等前端工作的准确性,极大地简化了实际应用系统的复杂程度。假设图像深度值的变化方向(即摄像机拍摄方向)与所需要描述的三维场景的视场方向Z方向相同的话,那么就能够很容易地描述整个三维场景。因此,深度图像也称为距离图像。与彩色图像相比,深度图像能直接反映物体表面的三维特征,且不受光照、阴影和色度等因素的影响。在局部空间范围内和不需要颜色域信息时,深度图像可以代替双目成像[1]。根据深度图像的定义,如图2-1,可以得到深度图如下2个性质:1)颜色无关性。该性质表明深度图像与彩色图像不同,不会有光照、阴影、以及环境变化的干扰;2)灰度值变化方向与视场Z方向相同。该性质表明,利用深度图像可以在一定范围内重建3D空间区域,并且可以在一定程度上解决物体遮挡或同一物体各部分重叠的问题。利用特性,即使2个物体有遮挡部分,物体前后关系在深度图中产生的距离差别,即灰度值的分层性,也可以用某个阈值将遮挡物体或者同一物体的不同部分分割开来,这是可见光图像无法做到的。图2-1真实图片(左)与深度图片(右)获取深度图像的光编码成像系统如图2-2所示,组成成像系统的三个核心元件包括:激光发射器,不均匀透明介质,CMOS感光器件。其中,激光发射器与CMOS感光器件成一定角度对准目标场景,而不均匀透明介质放置于激光发射器镜头前。激光发射器透过不均匀介质发射激光,在场景中形成激光散斑。CMOS感光元件可以拍摄散斑图像[5]。图2-2光编码成像系统光编码技术的成像过程如图2-3所示[6]。(1)标定。首先在目标区域距光源的多个不同位置分别用CMOS感光元件采集散斑图案,然后存储这些不同位置的图案作为参考图像。此时标定完成。图3中,参考图像的位置分别记为Z1,Z2,Z3,Z4。(2)取样。当不透明物体放入场景,或者物体在场景中运动时,在物体表面形成新的散斑,得到测试图像,此时的散斑图样发生变化,与所有参考图像均不同。在图3中,物体A和物体B表面形成散斑的位置是ZA,ZB。(3)定位。将测试图像与所有参考图像分别计算相关系数,选取产生相关系数最大的参考图像,即物体在该参考图像所在位置的可能性最大。在图3中,场景放入A物体所拍摄的ZA位置散斑测试图与Z2处参考图像相关系数最大,即认为A物体在Z2距离处。同理,B物体认为在Z3距离处。(4)重建。根据所选取的参考图像与光源间的标定关系,通过几何变换,计算得出物体到光源的距离,构建3D图像。并对距离数据归一化,转换成图像灰度值,最后将所生成的深度图像输出给外部处理设备。此时即完成对场景某一时刻的深度图像拍摄,向外部处理系统输出。然后返回执行第2步,得到连续不断的深度图像视频流。图2-3光编码技术成像过程图2.3深度信息获取实例[7]获取深度信息是利用结构光(斑点式红外激光如图2-4)向人体扫描成像,如图2-5所示。图2-4斑点式红外激光(结构光)Kinect采集图像获取深度图第一帧标记人体目标进行图像处理计算深度反向投影检测出运动人体Camshift算法运动人体追踪图2-5深度信息获取实例2.4结合深度信息的Cambridge算法在获取了深度信息之后。我们可以对Cambridge算法进行改进,来补偿由于算法本身对于空间深度的不敏感缺点。具体算法如下:(1)检测出运动人体目标的有效初始位置(2)计算人体中心位置(𝑥0,𝑦0)(3)目标区域的中心可以估计得到:201201(||||)(||||)MiiiiMiiixxxwkhxxxwkh(2.3)1(())()Muiiiuiqwbxupx(2.4)式中,20(||||)ixxkh表示一个加窗函数,为像素点𝑥𝑖在目标的中心位置时颜色分布的权重。𝑤𝑖是权重函数,函数𝑏(𝑥𝑖)为像素点𝑥𝑖在直方图特征中的索引值。函数()x定义为10()00xxx(2.5)计算出人体目标区域的位移值,预测下一帧图像人体目标区域的中心点位置,更新候选人体目标深度直方图。在目标建模过程中,融入了对深度信息的限制,同样在目标区域估计过程中,权值𝑤𝑖的计算同样需要考虑到深度信息,即把式(2.4)重新定义为1(())()Mdepthuiiiiuiqwbxuwpx(2.6)其中,argargargarg1,|(,)|=0,|(,)|tettetdepthitettetdxydTwdxydT(2.7)𝑑(𝑥,𝑦)表示像素点(𝑥,𝑦)的深度值;𝑑𝑡𝑎𝑟𝑔𝑒𝑡表示跟踪目标的平均深度信息;𝑇𝑡𝑎𝑟𝑔𝑒𝑡表示用于区分前景,背景的深度值阈值。2.5跟踪算法总流程(1)读取第1帧视频图像,初始化目标位置(2)通过手动选择当前人体目标的初始位置,并以此区域初始化搜索窗口,提取并计算目标的深度直方图;利用深度直方图滤除背景,保持搜索窗中心不变适当扩大搜索区域,计算目标的深度反向投影图(3)利用Camshift算法确定人体目标的深度重心位置,为了抗噪声干扰等情况,选取深度重心周围的8个点的平均值,由8个点的深度值的平均值确定当前目标的具体位置,估计目标的新位置;利用窗口方程计算窗口的宽度(4)在深度反向投影图上利用Camshift算法,计算出搜索窗新的重心位置,然后移动搜索窗的中心到新计算的重心位置。判断重心位置是否收敛,若收敛则获取下1帧图像,用前1帧计算得到的搜索窗口的中心和大小来初始化当前帧的搜索窗口然后转到步骤2,按此计算实现目标的连续跟踪。3.人体姿势识别3.1算法基本原理在对人体进行跟踪后,就可以对姿势进行识别。人体姿势就是人体某一时刻各个关节的相对位置。方法是利用骨骼跟踪技术。骨骼跟踪是在深度图像的基础上,利用机器学习方法逐步实现。在人体姿势识别中,主要分为三个步骤:(1)人体轮廓分割,判断深度图像上的每个像素是否属于某一个用户,过滤背景像素。(2)人体部位识别,从人体轮廓中识别出不同部位。(3)关节定位,从人体部位中定位20个关节点以及25个关节角度。如图3-1,表3-1,表3-2所示。图3-1人体20关节图表3-1关节具体定义表表3-2关节角度定义表利用逻辑回归的算法可以实现姿态的识别。逻辑回归的总体思路就是通过不断地用kinect分析得到的骨骼跟踪信息与数据库的骨骼信息进行不断地比对与匹配,获得真实的人体姿态。3.2逻辑回归具体实现过程假设N维向量𝑥=[𝑥0,𝑥1,…,𝑥𝑁−1]𝑇参数向量𝜃=[𝜃0,𝜃1,…,𝜃𝑁−1]𝑇。构建函数模型为ℎ𝜃(𝑥)=𝑔(𝜃𝑇𝑥)(3.1)(1)为了使输出在0-1之间,定义𝑔(𝑧)=11+exp(−𝑧)(3.2)(2)在一对多的逻辑回归分类中.每一类都要训练一个模型ℎ𝜃(1)(𝑥),。在进行预测时,选择ℎ𝜃(1)(𝑥)值最大的一类作为分类结果。假设训练样本为𝑆={(𝑥(𝑖),𝑦(𝑖))}𝑖=1𝑀⊑(𝑋×𝑌)𝑀(3.3)其中,𝑥(𝑖)∈𝑋⊑𝑅𝑁,𝑦(𝑖)∈𝑌={0,1}分别表示输入向量和标签。(3)参