一种基于人体骨骼关节点间空间向量的行走状态识别方法

文档序号:10570353阅读:538来源:国知局
一种基于人体骨骼关节点间空间向量的行走状态识别方法
【专利摘要】一种基于人体骨骼关节点间空间向量的行走状态识别方法,包括:利用Kinect摄像机检测到人体后,识别出人体骨骼的关节点三维坐标;根据人体骨骼的关节点间所构成的空间向量识别人体行走状态。提取识别所需的左髋骨、左膝盖、右髋骨、右膝盖、左肩骨和右肩骨的三维坐标;分别计算左髋骨和左膝盖构成的空间向量与竖直方向的夹角的余弦值、右髋骨和右膝盖构成的空间向量与竖直方向的夹角的余弦值;通过这两个夹角的余弦值判断目标人是否处于行走状态,通过左肩骨和右肩骨构成的空间向量与Kinect摄像机正方向的夹角正弦值,判断处于行走状态的目标人是处于直行、左转还是右转。本发明能准确获得人体骨骼关节点的三维坐标数据,快速获取目标人每一帧的姿态动作。
【专利说明】
一种基于人体骨骼关节点间空间向量的行走状态识别方法
技术领域
[0001] 本发明涉及RGBD相机视觉技术领域,具体涉及一种基于人体骨骼关节点间空间向 量的行走状态识别方法。
【背景技术】
[0002] 目前的跟随型服务机器人均为被动式的,在主人的后面或侧面跟随行进、或走或 停。在这种情况下,主人就无法随时随刻对其进行监视。当机器人搬运贵重物品时,即使发 生了物品的遗失,主人也很难立即发现,因而很容易造成很多不必要的损失。相对地,如果 跟随型服务机器人能够在主人的前方行进,通过识别和预测主人的下一步动作做出正确的 响应,就能够兼顾跟随和监视,避免当前被动式跟随机器人的缺陷,使得人从机器人的协助 中获益更多。另一方面,当服务机器人被用于携带工具、材料或引导等用途时,机器人在前 方也更加符合人类的习惯。

【发明内容】

[0003] 本发明的目的在于提供一种基于人体骨骼关节点间空间向量的行走状态识别方 法。
[0004] 本发明的技术方案是:
[0005] -种基于人体骨骼关节点间空间向量的行走状态识别方法,包括:
[0006] 利用Kinect摄像机检测到人体后,识别出人体骨骼的关节点三维坐标;
[0007] 根据人体骨骼的关节点间所构成的空间向量识别人体行走状态。
[0008] 识别出人体骨骼的关节点三维坐标的具体方法是:
[0009] 当目标人进入Kinect摄像机检测范围后,Kinect摄像机获取深度图像和彩色图 像;
[0010] 对Kinect摄像机获取的深度图像进行中值滤波处理,去除深度图像的孤立噪声 占 .
[0011] 对深度图像进行旋转和平移使其与彩色图像配准;
[0012] 通过3D投影关系将深度图像中的每个像素点坐标与实际空间中所对应的点在水 平及垂直方向上的坐标一一对应,通过深度图像的帧处理操作获取人体骨骼关节点三维坐 标。
[0013] 根据人体骨骼的关节点间所构成的空间向量识别人体行走状态,具体方法是:
[0014] 提取识别所需的左髋骨、左膝盖、右髋骨、右膝盖、左肩骨和右肩骨的三维坐标;
[0015] 分别计算目标人的左髋骨和左膝盖构成的空间向量与竖直方向的夹角的余弦值、 右髋骨和右膝盖构成的空间向量与竖直方向的夹角的余弦值;
[0016] 通过这两个夹角的余弦值判断目标人是否处于行走状态:若两个夹角的余弦值中 有一个余弦值小于设定阈值,则目标人处于行走状态;否则,目标人处于静止状态;
[0017] 通过目标人左肩骨和右肩骨构成的空间向量与Kinect摄像机正方向的夹角正弦 值,判断处于行走状态的目标人是处于直行、左转还是右转:若该夹角正弦值大于设定正弦 值上限,则判断目标人处于左转状态;若该夹角正弦值小于设定正弦值下限,则判断目标人 处于右转状态;若该夹角正弦值介于设定正弦值上限到设定正弦值下限之间,则判断目标 人处于直行状态。
[0018] 对Kinect摄像机获取的深度图像进行中值滤波处理:首先判断深度图像像素值矩 阵中心点是否为深度噪声点:是,则对于深度噪声点进行中值滤波,去除深度图像像素值矩 阵中的所有零值点,再取深度图像像素值矩阵内所有像素值的中位数给该中心点赋值;否 则保留该深度图像像素值矩阵中心点的原深度。
[0019] 有益效果:
[0020] 1.能够准确的获得人体骨骼关节点的三维坐标数据。
[0021] 2.能够准确快速获取目标人每一帧的姿态动作。也为人体姿态的预测提供了可 能。
【附图说明】
[0022] 图1本发明【具体实施方式】使用的Kinect摄像机的视场范围示意图;
[0023]图2本发明【具体实施方式】深度图中BytesPerPixel属性图;
[0024] 图3本发明【具体实施方式】采用的中值滤波处理方法流程图;
[0025] 图4本发明【具体实施方式】的中值滤波处理效果图,(a)是原始深度图像,(b)是经过 中值滤波处理后的深度图像;
[0026] 图5本发明【具体实施方式】采用的人体行走示意图;
[0027]图6本发明【具体实施方式】中人体姿态判定原理示意图,(a)为人体左转判定原理示 意图,(b)为人体右转判定原理示意图;
[0028]图7本发明【具体实施方式】中人体行走状态判断流程图;
[0029]图8本发明【具体实施方式】中使用的Kinect摄像机所识别的人体骨骼关节点图。
【具体实施方式】
[0030]下面结合附图对本发明的【具体实施方式】做详细说明。
[0031]本实施方式中,由跟随型服务机器人携带Kinect摄像机进入场景内,为保证跟随 型服务机器人根据人体行走状态在目标人前方跟随,采用本发明的基于人体骨骼关节点间 空间向量的行走状态识别方法,实时对目标人的行走状态进行识别,跟随型服务机器人根 据人体行走状态在目标人前方跟随。Kinect摄像机作为一款3D体感摄影机,Kinect摄像机 导入了即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能,是人机互动研究 领域的常用设备之一。当Kinect摄像机获取人的每一帧骨骼关节点数据后,可以导入计算 机内,将骨骼关节点三维坐标数据同各骨骼关节点间所成空间向量夹角结合起来,判断每 一帧状态下人体的行走状态。
[0032] -种基于人体骨骼关节点间空间向量的行走状态识别方法,包括:
[0033]步骤1、跟随型服务机器人利用其携带的Kinect摄像机检测到人体,识别出人体骨 骼的关节点三维坐标;
[0034]识别出人体骨骼的关节点三维坐标的具体方法是:
[0035] 步骤1-1、当目标人进入Kinect摄像机检测范围后,Kinect摄像机获取深度图像和 彩色图像;
[0036] Kinect摄像机的视场是有限的,如图1所示,有效距离L为0~4米。可以看出, Kinect摄像机的水平侦测范围为57度(以sensor为中心,左右各28.5度)。垂直范围为43度 (以sensor为中心,上下各21.5度)。如果人体活动超过了Kinect摄像机视场范围,Kinect摄 像机还可以追焦27度(马达能够上下旋转27度),因此,理论上上下扫描的范围应该为97度。 [0037]每个像素的深度值是和Kinect摄像机视场中物体离Kinect摄像机的距离是对应 的。如图2所示的BytesPerPixel属性的深度图像数据帧中,每个像素值占16位,针对这种 BytesPerPixel属性,即每一个像素占2个字节。但是每一个像素的深度值(Depth Bits)只 占用了16个位中的13个位,目标人索引位(Player Index)取值范围为0~6,值为0表示该像 素不是目标人。
[0038] 从深度图像的左上角开始,先从左到右,再从上到下,每一个像素(2bytes)的格式 在开启深度流时由ImageFormat来指定,例如要计算深度图像上任意像素点所代表的距离:
[0039] 当ImageFormat的属性是ImageFormat ? Depth时,第二个byte左位移8位元,并将两 个byte按位进行或运算,即可得到深度图像中对应的点到Kinect摄像机的实际距离d,如式 (1)所示:
[0040] d=(int)(Bits[0] |Bits[l]<<8) (1)
[0041 ]当ImageFormat的属性是ImageFormat .DepthAndPlayerlndex时,较低3位元是目 标人索引位,第一个by te右位移3位元,第二个byte左位移5位元,并将两个byte按位进行或 运算,即可得到深度图像中对应的点到Kinect摄像机的实际距离d,如式(2)所示:
[0042] d=(int)(Bits[0]>>3|Bits[l]<<5) (2)
[0043] Kinect摄像机获取的深度图像实际上是不稳定的,存在一些噪声点和空洞,特别 是在狭窄边缘处获取的深度值较为不稳定,直接对其进行骨骼关节点提取时会造成一些影 响,使由深度数据提取的骨骼关节点信息稳定性差,所以需要进行一些噪声的滤波处理和 形态学操作等,消除深度图像中存在的一些空洞和边缘模糊,从而使得由深度数据提取的 骨骼关节点信息更加稳定、准确,这样便可以更好进行人体骨骼关节点数据的获取。
[0044]中值滤波是一种能够有效抑制噪声的非线性信号处理技术,它基于排序统计理 论,其基本原理是在数字图像或数字序列中,用某一点的一个邻域中各点值的中值来代替 该点的值,同时让它周围像素点的像素值接近真实值,从而将孤立的噪声点消除。具体方法 是采取特定结构的二维滑动模板,按像素值大小对将板内像素进行排序,生成单调上升(或 下降)的二维数据序列。以下为二维中值滤波输出公式:
[0045] g(x,y) =med{f(x_k,y-l),(k,1 GW)} (3)
[0046] 其中8(^7)4(^7)分别为处理后的图像和原始图像。1为二维模板,通常为2乂2, 3X3区域等。
[0047]实际上,由Kinect摄像机获取的深度图像噪声点主要是零值点,因此本实施方式 采取改进的中值滤波处理方法,对深度图像中的孤立噪声点进行去除;
[0048]步骤1-2、对Kinect摄像机获取的深度图像进行中值滤波处理,去除深度图像的孤 立噪声点;
[0049]如图3所示,对Kinect摄像机获取的深度图像进行中值滤波处理:首先判断使用的 如式(4)所示的模板为5X5的邻域窗口即深度图像像素值矩阵的中心点P是否为深度噪声 点:是,则对于深度噪声点进行中值滤波,删除该零值点,再取深度图像像素值矩阵内所有 像素值的中位数给该中心点赋值;否则保留该深度图像像素值矩阵中心点的原深度。
[0050]在图4中,(a)是原始深度图像,(b)是经过中值滤波处理后的深度图像,可见,经过 中值滤波后消除了深度图像中的一些噪声点和空洞,并消除了一些边缘模糊现象。噪声得 到了较好的消除,为从深度图像中提取的深度骨骼坐标的正确率提供了有效保障。 1 1 1 r 1111 1
[0051 ] 1 1 p 1 1 C4) 11 1 11 11111
[0052]步骤1-3、对深度图像进行旋转和平移使其与彩色图像配准;
[0053] Kinect摄像机中深度传感器在RGB摄像头的两边,因摄像头位置不同其所成深度 图像和彩色图像不相匹配,故需要通过配准合并两者的信息。RGB图像是3D空间坐标系中的 点在二维平面的投影,仅考虑旋转、平移的仿射变换,故可采用投影变换公式进行计算,深 度传感器与RGB摄像头的坐标变换关系为,如式(6)所示: 'xl 「^
[0054] j; Y +T (5) z Z
[0055] 上式中,R为旋转矩阵,T为平移矩阵,(x,y,z)为RGB摄像头坐标系对应点的坐标, (X,Y,Z)为深度图像坐标系对应点的坐标。对应RGB图像的点坐标,如式(7)所示:
(6)
[0057] (f x,fv)为RGB图像中对应比例参数,(cx,cy)为RGB图像中心点。
[0058]步骤1-4、通过3D投影关系将深度图像中的每个像素点坐标与实际空间中所对应 的点在水平及垂直方向上的坐标一一对应,通过深度图像的帧处理操作获取人体骨骼关节 点三维坐标。
[0059]由于像素随着距离的增加略有降低,故对于深度图像中的每个像素点(i,j),其与 实际空间中所对应的点在水平和垂直方向上的坐标也不是简单的线性关系,通过3D投影关 系分析给出了以下的对应关系式,如(5)式所示:
(7)
[0061]其中,(i,j)为深度图像像素点坐标,(x,y)为空间点坐标,(Sx,Sy)为Kinect摄像机 的畸变,(Cx,Cy)为图像中心点,(fx,fv)为比例参数,d为由式(1)和式(2)计算的空间点距 Kinect摄像机的实际距离。按照上述公式可以将深度图像每一个像素点转化成为3D坐标, 这个3D坐标系以Kinect摄像机为坐标原点,竖直方向为z轴,水平方向为y轴,垂直yz平面方 向为x轴即垂直镜头方向。
[0062] 当Kinect摄像机检测到人体时,先生成深度图像,再通过NUI_SKELETON_FRAME结 构所包含的对于深度图像的帧处理操作,获取骨骼数据,骨骼的API消息处理每一个深度事 件消息,以便应用程序处理数据。骨豁数据来自SkeletonStream,SkeletonStream对象产生 SkeletonFrameaKinectSensor 对象有一个名为 SkeletonFrameReady 事件。当 SkeletonStream中有新的骨豁数据产生时就会触发该事件。SkeletonStream产生的每一帧 数据都是一个骨骼对象集合。接收骨骼数据存储在Skeleton数据结构中,Skeleton定义了 一系列字段来描述骨骼信息,包括描述骨骼的位置以及骨骼中关节可能的位置信息。 Skeleton数据结构中eTrackingState表明当前人体追踪状态类型,dwTrackingID是人体识 别的ID,成员变量NUI_SKELET0N_P0SITI0N_C0UNT为人体骨骼数量,Position明确某骨骼节 点位置,Ske 1 e tonPos i t i ons中存放骨豁节点的三维坐标。
[0063] Kinect for Windows SDK是通过20个骨骼关节点来表示人体骨架的,具体由图8 可以看到。数据对象类型以骨骼帧的形式提供,每一帧最多可以保存20个骨骼关节点。当走 进Kinect摄像机的视野范围的时候,Kinect摄像机即把20个骨骼关节点的位置找到,位置 通过(x,y,z)三维坐标来表示。
[0064]设每一个时刻,kinect摄像机经中值滤波后从深度图像中提取到的骨骼坐标为
[0065] ph=(xh,Yh,Zh) (8)
[0066] 其中
[0067] Xh=(xq,xi,…,xi9)
[0068] YH=(yo,yi,…,yi9)
[0069] Zh=(zq,zi,…,zi9)
[0070] Xh、Yh和ZH分别表示目标人当前时刻的骨骼关节点坐标。
[0071] 步骤2、根据人体骨骼的关节点间所构成的空间向量识别人体行走状态;
[0072] 根据人体骨骼的关节点间所构成的空间向量识别人体行走状态,如图7所示,具体 方法是:
[0073]步骤2-1、提取识别所需的左髋骨、左膝盖、右髋骨、右膝盖、左肩骨和右肩骨的三 维坐标;识别人体行走状态使用到的目标人的骨骼关节点有:左髋骨(112,712,212)、左膝盖 (叉13,713,213)、右髋骨(116,716,216)、右膝盖(117,717,217)、左肩骨(14,74,24)和右肩骨(18,丫8, Z8) 〇
[0074] 步骤2-2、分别计算目标人的左髋骨和左膝盖构成的空间向量与竖直方向的夹角 的余弦值、右髋骨和右膝盖构成的空间向量与竖直方向的夹角的余弦值,人体行走状态如 图5所示;
[0075] 目标人的左髋骨和左膝盖构成的空间向量与竖直方向的夹角W的余弦值为
(9)
[0077]目标人右髋骨和右膝盖构成的空间向量与竖直方向夹角ar的余弦值为 (10)
[0079] 步骤2-3、通过这两个夹角的余弦值判断目标人是否处于行走状态:若两个夹角的 余弦值中有一个余弦值小于设定阈值〇. 98,则目标人处于行走状态;否则,目标人处于静止 状态;
[0080] 步骤2-4、通过目标人左肩骨和右肩骨构成的空间向量与Kinect摄像机正方向的 夹角余弦值,判断处于行走状态的目标人是处于直行、左转还是右转,如图6(a)~(b)所示: 若该夹角正弦值大于设定正弦值上限0.3,则判断目标人处于左转状态;若该夹角正弦值小 于设定正弦值下限-0.3,则判断目标人处于右转状态;若该夹角正弦值介于设定余弦值上 限0.3到设定正弦值下限-0.3之间,则判断目标人处于直行状态。
[0081]设目标人左肩骨和右肩骨所成向量与Kinect摄像机正方向夹角0h的正弦值
(11)
[0083] 当| sin0h | <0 ? 3时,视为目标人在直行;
[0084] 当|8丨11011|>〇.3且<9〇°时,视为目标人左转;
[0085] 当|sin0h| >0.3且0h>9〇°时,视为目标人右转。
【主权项】
1. 一种基于人体骨骼关节点间空间向量的行走状态识别方法,其特征在于,包括: 利用Kinect摄像机检测到人体后,识别出人体骨骼的关节点三维坐标; 根据人体骨骼的关节点间所构成的空间向量识别人体行走状态。2. 根据权利要求1所述的人体行走状态识别方法,其特征在于,识别出人体骨骼的关节 点二维坐标的具体方法是: 当目标人进入Kinect摄像机检测范围后,Kinect摄像机获取深度图像和彩色图像; 对Kinect摄像机获取的深度图像进行中值滤波处理,去除深度图像的孤立噪声点; 对深度图像进行旋转和平移使其与彩色图像配准; 通过3D投影关系将深度图像中的每个像素点坐标与实际空间中所对应的点在水平及 垂直方向上的坐标一一对应,通过深度图像的帧处理操作获取人体骨骼关节点三维坐标。3. 根据权利要求1所述的人体行走状态识别方法,其特征在于,根据人体骨骼的关节点 间所构成的空间向量识别人体行走状态,具体方法是: 提取识别所需的左髋骨、左膝盖、右髋骨、右膝盖、左肩骨和右肩骨的三维坐标; 分别计算目标人的左髋骨和左膝盖构成的空间向量与竖直方向的夹角的余弦值、右髋 骨和右膝盖构成的空间向量与竖直方向的夹角的余弦值; 通过这两个夹角的余弦值判断目标人是否处于行走状态:若两个夹角的余弦值中有一 个余弦值小于设定阈值,则目标人处于行走状态;否则,目标人处于静止状态; 通过目标人左肩骨和右肩骨构成的空间向量与Kinect摄像机正方向的夹角正弦值,判 断处于行走状态的目标人是处于直行、左转还是右转:若该夹角正弦值大于设定正弦值上 限,则判断目标人处于左转状态;若该夹角正弦值小于设定正弦值下限,则判断目标人处于 右转状态;若该夹角正弦值介于设定正弦值上限到设定正弦值下限之间,则判断目标人处 于直行状态。4. 根据权利要求2所述的人体行走状态识别方法,其特征在于,对Kinect摄像机获取的 深度图像进行中值滤波处理:首先判断深度图像像素值矩阵中心点是否为深度噪声点:是, 则对于深度噪声点进行中值滤波,去除深度图像像素值矩阵中的所有零值点,再取深度图 像像素值矩阵内所有像素值的中位数给该中心点赋值;否则保留该深度图像像素值矩阵中 心点的原深度。
【文档编号】G06K9/00GK105930795SQ201610247535
【公开日】2016年9月7日
【申请日】2016年4月20日
【发明人】王晓哲, 米威名, 任凭, 侯晨月
【申请人】东北大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1