《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于深度图像的人体骨骼提取技术的研究
基于深度图像的人体骨骼提取技术的研究
2015年微型机与应用第12期
关 沫,梁梦雪
(沈阳工业大学 信息科学与工程学院,辽宁 沈阳 110870)
摘要: 利用Kinect设备获取深度图像,通过前景提取得到深度图像中的人体目标,使用距离变换(包括欧氏距离、城市街区距离、棋盘距离方法)和图像细化算法(包括Hilditch细化算法和Zhang快速并行细化算法)研究并实现了人体骨骼的提取,通过实验对各算法的运行效果进行了对比分析。同时,利用深度图像具备深度信息这一特点解决了在骨骼提取中出现的人体自遮挡问题。在获取的人体骨骼线基础上根据人体测量比例定位人体各骨骼关节点,最终通过实验证明了该骨骼提取方法的有效性。
Abstract:
Key words :

  摘  要: 利用Kinect设备获取深度图像,通过前景提取得到深度图像中的人体目标,使用距离变换(包括欧氏距离、城市街区距离、棋盘距离方法)和图像细化算法(包括Hilditch细化算法和Zhang快速并行细化算法)研究并实现了人体骨骼的提取,通过实验对各算法的运行效果进行了对比分析。同时,利用深度图像具备深度信息这一特点解决了在骨骼提取中出现的人体自遮挡问题。在获取的人体骨骼线基础上根据人体测量比例定位人体各骨骼关节点,最终通过实验证明了该骨骼提取方法的有效性。

  关键词: Kinect;深度图像;细化算法;骨骼提取

0 引言

  随着人机交互技术的发展,人们对各种计算设备的控制不再局限于使用键盘、鼠标、遥控器、触摸屏或各种传感器,还可以让用户直接与计算机进行“沟通”,通过对人体动作的分析得到人体运动的参数,解析出相应的控制指令使计算机完成相应的任务,实现非接触式的人机交互。人体骨骼提取是人体运动分析过程中捕获人体动作的关键步骤,对分析人体的运动姿态,获取人体运动参数有重要意义。在人体运动过程中,经常会出现人体自身遮挡的情况,如何解决这一问题是获取人体动作的难点。本文使用Kinect设备获取深度图像,对人体的骨骼提取技术进行研究,并利用深度图像具有的深度信息来解决人体自身遮挡问题。

1 深度图像的前景提取

  Kinect通过其红外发射器向三维场景中发出连续的近红外激光方式获取深度图像,当激光照射到粗糙物体时就会形成具有高度随机性的衍射斑点,称为激光散斑。激光散斑是一种具有三维纵深的编码技术[1-2]。根据成像物体的不同距离会变换出不同图案的激光散斑,被激光散斑照射的空间内会即时地对其进行标记,之后红外摄像头接收空间内的标记,并将相关的数据传递给Kinect的内部图像处理器芯片,图像处理器再分析接收到的散斑图案在空间中的距离,最后形成深度图像。

  本文通过对深度图像的深度值的判定把前景区域和背景区域进行区分。在这里就会涉及关于阈值门限的设定内容,深度图像前景提取中阈值的限定发挥着关键性的作用,阈值门限的取值取决于深度图像中深度值最大的点。深度图像前景提取的公式如式(1)所示:

  1.png

  其中,fg(x,y)是前景图像中(x,y)处的逻辑值;d(x,y)表示深度图像中(x,y)处坐标的深度值;0}{W0~`KSYY$6~X~(B8UJ7O.jpg代表阈值门限,在不同的场景下最大深度值不同,导致阈值是一个可变的值,阈值0}{W0~`KSYY$6~X~(B8UJ7O.jpg要根据最大深度值的参数进行选定。定义0}{W0~`KSYY$6~X~(B8UJ7O.jpg=(k×dmax),其中用dmax表示最大深度值,k的取值与检测准确率有关联。检测准确率如式(2)所示:

  检测准确率=α/β(2)

  其中,α代表正确检测到的目标数,β代表检测到的目标总数。为达到相对最好的检测效果,使漏检和误检都尽可能小,从实验可以得出当k取值为0.75时基本可以达到最佳效果[3]。前景提取的图像如图1所示。

001.jpg

2 人体骨骼提取方法

  在上述工作中实现了深度图像中人体目标前景提取,但在人体运动过程中,经常会出现人体自身遮挡的情况,本文利用深度图像中的深度值解决其他剪影的骨骼提取方法可能无法解决的遮挡问题。为了实现更为准确的骨骼提取,对现有的一些骨骼提取方法进行了实验研究。

  2.1 距离变换算法

  (1)欧氏距离

  欧式距离是最常用的距离定义方式,即所在空间内任意两点的直线距离[3]。欧氏距离公式如式(3)所示。

  3.png  其中,p、q分别代表深度图像的背景坐标点与前景坐标点的集合。图2是目标人体的前景提取后的图像,其中(b)为欧氏距离变换后得到的图像。

002.jpg

  (2)城市街区距离和棋盘距离

  街区距离也称为绝对值距离,即一个像素点从它的起点处移动到它的终点位置所需要的步数,并且要求像素点的移动限定在它的上下左右这几个方向,如式(4)所示。图3为城市街区距离变换后获取到的图像。

003.jpg

  D(p,q)=|(px-qx)|+|(py+qy)|(4)

  棋盘距离的基本思想是像素点可以在沿着对角线的方向上进行移动,在对角线方向上移动的距离称为棋盘距离,如式(5)所示。图4为棋盘距离变换后得到的图像。

  D*(p,q)=max|(px-qx)|+|(py+qy)|(5)

  2.2 图像细化算法

  图像的细化操作是在保持图像原有的形状基础上再除去图像上的一部分点,最后获取到所需要的骨架图[4]。本文采用Zhang快速并行细化算法与Hilditch算法进行对比研究,探索在人体骨骼提取上效果更佳的方法。图5是利用Hilditch细化算法得到的骨骼提取图像,图6是利用Zhang细化算法得到的骨骼提取图像。

004.jpg

  从上述方法成像效果看,欧氏距离提取出的人体骨骼线比较连贯,但位置上存在偏移,有较明显的误差;使用城市街区和棋盘距离变换算法提取人体骨骼线有时会出现不连贯的现象。从图像细化算法的成像效果来看,Zhang快速并行细化算法提取的人体骨骼线更干净,图像更清晰、更稳定,图像比较流畅时基本没有多余毛刺。最终选定Zhang快速并行快速细化算法进行人体骨骼的提取。

3 利用深度信息处理人体自遮挡问题

  如果人处于Kinect设备要求的可视范围内,做一些产生遮挡的动作,如手臂处于身体前面的位置,就会在获取的深度图像中产生与身体部分不一样的深度值,可以利用不同的深度数据来处理手臂遮挡的问题。

  先确定人体区域部分,然后根据深度值分布的情况在人体区域进行查找,把与身体区域深度值相差较大的部分看成是手遮挡在身体前面的情况;而与身体区域深度值相差不大的部分,则看成是身体部分。对前景区域的腐蚀会致使人的头部、腿部和手臂先被腐蚀掉。

005.jpg

  为了处理手臂遮挡的问题,要将手臂与身体部分区分出来,再分别提取骨架,最后融合在一起。首先,需要确定身体区域内部近似于矩形的部分,如图7(a)所示,求出这一部分深度值的平均值,把此处的深度值记为h。删去与平均值相差3以上的深度值,就可以除去手臂遮挡在身体前面的区域部分,便于求得身体区域的深度值。其次,对剩下的深度值部分再求平均值,这样得出的平均值就是身体部分的平均深度值,设定此处深度值为h*。将与深度值h与深度值h*相差4以内深度值的部分设置为零,最后留下的部分就是除去了身体矩形区域部分而得到的手臂部分,如图7(b)所示。最后对得到的手臂部分进行腐蚀操作,如图7(c)所示,可以得到比较干净的手臂部分的图像,继续进行细化处理可得到最后的手臂骨架部分,如图7(d)所示。图像变化的整个过程如图7所示。

006.jpg

  将得到的手臂部分的骨骼图与前面得到身体部分骨骼图相融合就可以得到完整的骨骼图。如图8所示,图8(a)为深度图像前景提取后进行图像处理得到的图像;图8(b)为(a)图直接进行Zhang快速并行细化所得到骨骼线;图8(c)是将(b)图人体骨骼图像与图7(d)图手臂骨骼提取的图像相组合,最后得到人体骨骼提取后的图像。

4 人体骨骼点的定位

  本文以NASA人体测量数据中人体比例方面的数据为基础,实现人体骨骼关节点的定位。考虑到人的大部分动作都是通过手臂来完成的,所以着重研究人体上半身的骨骼点的标记。

  通常将头部细化后的顶点位置设定为头部骨骼关节点位置,但这样的定位方法较为粗略,为提高头部骨骼关节点定位准确度,本文先检测头部区域位置,然后在此区域内找到重心点位置,把重心点设定为人头骨骼关节点。在人体手臂弯曲时提取到的手臂骨骼线是有弧度的,不能准确定位哪个点为肘部骨骼关节点。本文通过深度图像得到三维空间中两点间的实际距离,相应的方法最早在openkinect.org网站上由Stéphane Magnenat提出,这里不再详细说明。将手臂线上的点转换为对应实际空间的坐标,依据最大三角形算法找出一个点,使得这个点满足与肩部关节点和手部关节点,这3个点在实际三维空间中构成的三角形面积最大[5]。最后能够认定这个点为手臂中的转折点,即为肘部关节点。如果求出的面积都很类似,并且值都非常小,那么可以近似认为手臂是伸直状态,此时取肩部关节点与手部关节点连线的中点位置为肘部关节点。如图9所示,弧线是人体骨骼提取图中手臂骨骼线图,连接A点和B点能够与弧线上的点构成三角形,在多个可能的点中,选取能够构成最大三角形的那个点所在的位置,将其确定为肘部关节点。

007.jpg

5 实验结果分析

  在实验中采集了几十组人体图像,重点分析研究两种情况,一种是当手臂不与身体形成遮挡时,人的双手会自然在身体两侧。选取几组处理过的深度图像前景提取图,先进行人体骨骼线的提取,再定位出人体各部位的骨骼关节点,如图10所示。

008.jpg

009.jpg

  另一种是手臂与身体存在遮挡的情况,图11是一些有代表性的图像。每组第一张是深度图像前景提取再进行图像处理后的图像;第二张为进行人体骨骼提取得到的人体骨骼线;第三张为提取遮挡部分的骨骼线;第四张为将第二张和第三张提取的骨骼线进行叠加,并标记出骨骼关节点位置的图像。

6 结论

  本文首先获取深度图像的前景部分,对距离变换和图像细化算法的骨骼提取方法进行了研究与实现。根据深度图像所具备的深度信息解决人体运动中可能存在的自遮挡问题。其次,在实现骨骼提取的基础上定位人体骨骼关节点,检测人头所在位置,并设定人头重心点为头部关节点位置。根据最大三角形算法实现手臂的肘部关节点定位,人体其他部位关节点参考人体比例结构进行定位。最后通过实验验证了本文中人体骨骼提取方法的有效性。

参考文献

  [1] CHEN L, WEI H, FERRYMAN J M. A survey of human motion analysis using depth imagery[J]. Pattern Recognition Letters, 2013, 34(15):1995-2006.

  [2] LEE S. Depth camera image processing and applications[C]. 19th IEEE International Conference on Linage Processing,IEEE, 2012:545-548.

  [3] STEFAN G, ROBIN S. Anti-aliased euclidean distance transform[J]. Pattern Recognition Letters,2011(32):252-257.

  [4] 包建军,樊菁.鲁棒的二值图像并行细化算法[J].计算机辅助工程,2006(4):43-46.

  [5] 李斌.单幅深度图人体关节点定位[D].武汉:华中科技大学,2012.


此内容为AET网站原创,未经授权禁止转载。