一种基于多Kinect的人体步态数据融合方法与流程

文档序号:14348266阅读:1893来源:国知局
一种基于多Kinect的人体步态数据融合方法与流程

一.技术领域

本发明涉及基于kinect的人体步态数据融合处理方法。

二.

背景技术:

近年来人们利用kinect研究出了大量有趣的应用,如虚拟试衣、视频会议、人脸检测、手势识别、步态检测等。结合微软提供的kinectforwindowssdk,连接好硬件设备,就可以通过微软提供的接口便捷地获取人体的三维骨骼数据。而且kinect还能直接获取深度数据,相比于传统视觉设备需要麻烦的配置和复杂的数据处理,kinect具有更加便捷的优势。

因为硬件的限制,一台kinect检测最长距离为4.5m,整个检测距离太短,不能完整呈现人体行走数据,目前利用两台kinect实现数据融合,设备只能如图1所示摆放,容易造成骨骼遮挡,影响左腿数据检测,而且扩距效果很差,只能达到6m左右。

三.

技术实现要素:

本发明的目的在于提供一种基于多kinect的三维数据融合方法,解决了现有kinect在提取人体骨骼数据时距离和精度问题,同时解决了骨骼数据出现跳变或者出现自遮挡时数据缺失的问题。

为了达到上述目的,本发明的技术方案是设计一种基于kinect的三维数据融合处理方法,包括如下步骤:

(1)水平对立摆放两台kinect,使其面向拍摄区域,kinect1和kinect2分别与电脑4和电脑5连接,电脑4与电脑5之间建立局域网,以便进行数据传输。

(2)在windows环境下编写c#程序,采用视觉采集设备kinect二代获取10个人体下肢骨骼关节点空间坐标数据(x,y,z),对应关节依次是脊柱根部、脊柱中部、左髋、左膝、左踝、左足、右髋、右膝、右踝、右足。

(3)对步骤(2)获取的原始数据进行中值滤波处理,滤除噪声,中值滤波的窗口长度是根据kinect数据传输速率(每秒30帧)确定的;

(4)获取人体背面骨骼数据时,因为行走中会有屈膝动作,根据kinect获取深度数据的原理可知,屈膝时衣服对膝关节会有遮挡,导致膝关节数据不准,利用数学几何法间接求出准确的膝关节空间数据。

(5)取左髋、左膝、左踝三个关节点的两套公共点坐标,对两台kinect的空间坐标系进行统一。

(6)由于待测人体与kinect深度传感器的距离过近、过远等因素所造成的误差称为骨骼数据的几何误差。为了消除这类误差,我们需要对得到的骨骼数据进行精度自补偿。

(7)对于符合数据融合条件的骨骼数据进行数据融合。

本发明的优点和有益效果如下:

(1)本发明提出了一种基于局域网通信协议,实现多台计算机分别连接kinect,同步进行步态采集、坐标统一、精度自补偿以及数据融合的新方法,解决了如何延长采集距离的问题,弥补其检测范围有限的缺点,成功获得了完整的步态数据,将采集步态周期从3~4个增加到8~9个。

(2)本发明利用数据拟合方法,对kinect骨骼数据进行精度自补偿,提高了采集的精度。

(3)本发明解决了kinect对人体背面数据采集中膝关节数据不准的问题,并采用了对立的摆放布局,即增加了步态检测距离,又节约设备硬件空间,提高了实际应用性。

四.附图说明

图1是传统多kinect硬件摆放示意图

图2是人体数据融合方法流程图

图3是人体数据融合方法硬件摆放示意图

图4是kinect空间坐标示意图

图5是人体下肢关节索引图

图6是数据融合策略分类图

五.具体实施方式(各部分的实现方式)

本发明一种基于多kinect的三维数据融合处理方法,具体按以下步骤实施,如图2所示:

步骤1,搭建数据采集系统:如图3所示,水平对立摆放两台kinect,使其面向拍摄区域3,拍摄区域3由两台kinect的摄像区域决定,kinect1和kinect2分别与电脑4和电脑5连接,电脑4与电脑5之间建立局域网,以便进行数据传输。

默认电脑4为主处理器,系统运行时,电脑5会实时将kinect2检测到的人物姿态骨骼数据通过局域网发送给电脑4,同时电脑4也会实时得到kinect1的姿态骨骼数据。然后电脑4会根据人物在区域3中的位置,调用融合算法进行多kinect的数据融合。

步骤2,数据采集:在windows平台下安装kinectsdk,用于视觉采集设备kinect和电脑连接,并能顺利采集数据。编写c#脚本,获取kinect骨骼跟踪功能的10个人体关节的空间坐标数据,单位为米,坐标原点在深度摄像头处,对应骨骼跟踪功能空间坐标系如图4所示。kinect1获取的是人体背面骨骼数据,kinect2获取的是人体正面骨骼数据。

其中图5是kinect人体下肢的关节索引,依次是脊柱根部、脊柱中部、左髋、左膝、左踝、左足、右髋、右膝、右踝、右足。获取关节点数据过程中,要求测试者在kinect正前方1.5-4.5m的范围内,才能保证这10个关节的三维空间坐标数据有效。

步骤3,数据滤波:根据步骤2中获得步态原始数据,采用中值滤波的方法进行噪声滤除。中值滤波适用于偶然出现的脉冲干扰信号,是一种基于排序统计理论并有效抑制噪声的非线性信号处理技术。中值滤波的基本原理是把数字信号序列中现在的值和其邻域的各点值排序,然后去中间的值代替该点的值,从而消除孤立的噪声点。

在对步骤2中10个关节点空间坐标(x,y,z)进行中值滤波的过程中,需要定义一个奇数长度2n+1(n为自然数)的窗口。以髋关节x坐标值为例,连续的2n+1个x坐标值序列为:x(i-n),...,x(i),...,x(i+n),其中x(i)为膝关节x坐标值得采样值,将该数据序列按从小到大排序,排序后结果为:sranged(1),sranged(2),…,sranged(2n+1),中值滤波输出值w为sranged(n+1),如公式1所示。

w=sranged(n+1)=med(sranged(1),sranged(2),…,sranged(2n+1))(1)

其中,med函数为取序列中间值的函数。

步骤4,处理背面膝关节数据:在获取人体背面骨骼数据时,因为人在正常行走过程中,会有屈膝动作,裤子会随着膝关节一起弯曲,根据kinect获取深度数据的原理可知,此时kinect检测的是裤子弯曲部分的深度数据,并不是人体膝关节关节腔的位置;即裤子导致膝关节数据不准。我们舍弃测出的不准确数据,通过数学几何法间接求出膝关节空间坐标。

已知髋关节空间坐标(xhip,yhip,zhip)、踝关节空间坐标(xankle,yankle,zankle)、大腿长lthight、小腿长lcalf、膝关节x轴坐标xknee,由公式(2)可解出背面膝关节空间坐标:

步骤5,两kinect统一坐标系:两个坐标系之间的转换关系如下,

其中,(x,y,z)t为1号kinect下测量的坐标值(x',y',z')t为2号kinect下测量的坐标值,r为旋转矩阵(含有αβγ三个参数)(δx,δy,δz)t表示平移参数)

此处提供具有两套关节坐标的公共点(xi,yi,zi)、(xi',yi',zi')i=1,2,...,nn≥3

为方便计算,对所用到的坐标进行重心化处理,将两坐标系的公共点的坐标均划算成以重心为原点的重心化坐标另外两个坐标系的重心坐标为:(xr,yr,zr)、(x'r,yr',z'r)

将(4)代入(3)中可得:

取左髋、左膝、左踝三个关节点的两套公共点坐标,通过(5)式求出旋转矩阵,再通过(6)式求出平移参数。

步骤6,骨骼数据精度自补偿:由于待测人体与kinect深度传感器的距离过近、过远等因素所造成的误差称为骨骼数据的几何误差。为了消除这类误差,我们需要对得到的骨骼数据进行精度自补偿。

kinect骨骼数据精度在检测区间[1.5m-3m]上近似成线性关系,在区间[3m-4.5m]上近似成n次多项式函数关系,通过实验数据拟合,得到kinect骨骼数据精度误差曲线分别为n(1,j)(l)和n(2,j)(l)。

yj'(l)=yj(l)-nj(l)j=1,2,...,n

其中,yj'(l)表示第j个关节补偿后的数据,nj(l)表示真实测量值yj(l)上的测量误差。

步骤7,进行数据融合:对两kinect摆放距离l进行分析,如图6所示,可以分出三种不同的融合策略,分别是l=6m、6m<l≤7.5m以及7.5m<l≤8.5m;三种融合策略下的融合算法根据骨骼数据精度误差曲线进行分类,可以将工作区域所得到的骨骼数据精度大大提高。

1)对于满足a={只有kinect1采集数据}的骨骼点,yj'(l)=y('1,j)(l)

2)对于满足b={只有kinect2采集数据}的骨骼点,yj'(l)=y('2,j)(l)

3)对于满足c={kinect1和kinect2都能采集数据}的骨骼点,yj'(l)=(y('1,j)(l)+y('2,j)(l))/2。

其中,y('1,j)(l)表示kinect1第j个关节补偿后的数据,y('2,j)(l)表示kinect2第j个关节补偿后的数据。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1