CN109064487A - 一种基于Kinect骨骼节点位置追踪的人体姿势比较方法 - Google Patents

一种基于Kinect骨骼节点位置追踪的人体姿势比较方法 Download PDF

Info

Publication number
CN109064487A
CN109064487A CN201810709702.5A CN201810709702A CN109064487A CN 109064487 A CN109064487 A CN 109064487A CN 201810709702 A CN201810709702 A CN 201810709702A CN 109064487 A CN109064487 A CN 109064487A
Authority
CN
China
Prior art keywords
bone
angle
frame
moment
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810709702.5A
Other languages
English (en)
Other versions
CN109064487B (zh
Inventor
张元�
吕金泽
韩燮
高天
高天一
石倩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
North University of China
Original Assignee
North University of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by North University of China filed Critical North University of China
Priority to CN201810709702.5A priority Critical patent/CN109064487B/zh
Publication of CN109064487A publication Critical patent/CN109064487A/zh
Application granted granted Critical
Publication of CN109064487B publication Critical patent/CN109064487B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Analysis (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明具体涉及一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,主要解决了现有骨骼节点位置定位和用户姿势比较方法中存在的数据稳定性和数据实时性不可兼得的缺点。本发明首先利用动态帧数替换算法保存靠近此时刻的一批数据,作为节点滤波的数据源,然后用改进的中位值均值滤波算法对数据源中自适应截取出的数据进行滤波与偏移预测,输出稳定且实时性高的滤波点,以用于后续计算用户骨骼角度和骨骼向量积角度,最后平滑骨骼角度和骨骼向量积角度,作为评价用户动作的依据。该方法适用于滤波和平滑与时间相关的连续性变化的变量,也可应用于虚拟现实游戏中对用户姿态的追踪,以及工程中对器件角度动态变化的监控和测量。

Description

一种基于Kinect骨骼节点位置追踪的人体姿势比较方法
技术领域
本发明属于多用户肢体动作实时比较方法技术领域。具体提出了一种基于Kinect骨骼节点位置追踪的人体姿势比较方法。此方法也可应用于虚拟现实游戏中对用户姿态的追踪,以及工程中对器件角度动态变化的监控和测量。
背景技术
虚拟现实技术(Virtual Reality,VR)是一种可以创建和体验虚拟世界的计算机技术,是以沉浸性(Immersion)、交互性(Interaction)和构想性(Imagination)为基础特征的计算机高级人机界面。它利用计算机生成一种虚拟环境,通过模拟实际情况从而对人的触觉、听觉、视觉等感觉器官进行影响,使人能沉浸在计算机生成的虚拟世界中。同时还可借助传感头盔、运动捕捉***、数据手套等专业设备,使用户进入虚拟空间,实时感知和操作虚拟环境中的对象。
随着虚拟现实技术的快速发展及其在各行业中广泛的应用,虚拟现实***中对用户动作和姿态的追踪计算在实际的应用中起着越来越重要的作用,计算的精度和结果的稳定程度影响着用户对虚拟***的实时操控性和操控精确度,而虚拟界面的实时交互性影响着用户的沉浸感和真实感。
三维空间中用户的动作,具有连续性和速度变化的特性,在处理用户动作数据的时候既要考虑对用户数据的滤波和平滑处理,又要求***的延迟不能太低,这对于算法是有很高的要求的,但在现有的动作变化处理方法中,没有根据用户动作变化的速度计算的相关方法,现有方法中没有加入预测偏移量,也没有合理利用最近产生的数据,导致在用户动作连续变化时要么算法平滑数据很好但是***延迟很高,要么实时性很好但是平滑和滤波效果不理想,在虚拟***的人机交互中极大地影响了用户体验。
发明内容
本发明的目的是解决虚拟动作学***滑处理和实时性要求,从而提高***中对用户动作的实时计算的精确性和稳定性,提高用户体验。
为解决上述技术问题,本发明采用的技术方案为:
一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,包括以下步骤:
步骤1,将Kinect V2和笔记本的USB3.0接口相连接,确保设备扫描得到的深度数据和彩色数据能够正常传输,通过KinectSDKWrapper脚本在Unity3D中对KinectV2识别并自动计算得到的骨骼节点数据进行接收并存储;
步骤2,通过动态帧数替换算法保存从KinectSDKWrapper脚本接收到的最近N帧人体全身的20个特征骨骼节点数据,并实时更新;
步骤3,依据中位值平均滤波算法对步骤2中实时更新的骨骼节点数据进行抖动偏差处理,并加入偏移预测,之后得出稳定的骨骼节点数据;
步骤4,依据步骤3中稳定的骨骼节点数据,求出与骨骼节点相连的18个对应人体全身各主要部位骨骼的骨骼向量,并计算这18个骨骼向量旋转连接处的两相邻骨骼向量的角度值,以及连接这个骨骼节点的两骨骼向量的向量积;
步骤5,利用步骤4得出的实时骨骼角度值和向量积,计算同一时刻两个用户的所有对应骨骼关节处骨骼向量所形成的角度的差值的绝对值,以及该骨骼关节处两段骨骼所组成的向量积的角度,通过动态帧数替换算法动态记录从现在时刻起往前N帧的每一帧中两用户的骨骼角度差值和骨骼向量积角度值;
步骤6,通过EWMA算法平滑同一骨骼关节位置的不同帧数下骨骼向量角度值和骨骼向量积角度值,用平滑后的骨骼向量角度值作差值和设定的阈值角度作比较,用平滑后的骨骼向量积角度值作差值和设定的阈值角度作比较,依据不同身体部位影响整体身体姿态的权重,给符合阈值约束的关节位置一个分数值并记录,然后统计当前分数总和并显示,即完成了两个用户基于Kinect骨骼节点位置追踪的人体姿势比较。首先利用动态帧数替换算法保存靠近此时刻的一批数据,作为节点滤波的数据源,然后用改进的中位值均值滤波算法对数据源中自适应截取出的数据进行滤波与偏移预测,输出稳定且实时性高的滤波点,以用于后续计算用户骨骼角度和骨骼向量积角度,最后平滑骨骼角度和骨骼向量积角度,作为评价用户动作的依据。该方法适用于滤波和平滑与时间相关的连续性变化的变量,也可应用于虚拟现实游戏中对用户姿态的追踪,以及工程中对器件角度动态变化的监控和测量。
进一步,所述步骤2)中通过动态帧数替换算法保存从KinectSDKWrapper脚本接收到的最近N帧人体全身的20个特征骨骼节点数据,并实时更新,动态帧数替换算法需要实时采集当前最近N帧的骨骼点位置信息,即需要在新的一帧开始时,把采集到的新一帧中20个骨骼节点的位置信息保存下来,这就需要先把距离当前帧N-1帧的数据抛弃,保证滤波时使用的数据是实时更新的最近N帧的数据,其步骤包括:
2.1、当前总运行帧数不大于m帧时,把此刻此位置的数据按顺序保存在预设好的二维数组FramePos[m,i]的第0到第m-1行中;
2.2、总运行帧数大于m帧时,丢弃最早一帧的数据,所有数据前移一位,把此刻的最新数据下载到数组的第m-1行中;
2.3、每帧都对全身的20个骨骼节点循环一次步骤2.1和2.2。
通过以上步骤2.1到2.3实时更新用户骨骼节点数组,保证之后数据处理时用到的是实时更新的数据。
再进一步,所述步骤3)中,依据中位值平均滤波算法对步骤2中实时更新的骨骼节点数据进行抖动偏差处理,并加入偏移预测,之后得出稳定的骨骼节点数据,***运行时根据不同动作过程中人体不同骨骼节点位移速率的不同,依据自适应帧数计算方法计算出20个关节点各自适合的帧数数量,用于滤波和计算预测偏移量,其步骤包括:
3.1、计算此刻此节点的位移速率v和加速度a;速率v和加速度a的计算方法为:
v=d/t,a=Δv/t
其中d为此节点最近两帧的位置,t为帧间间隔,△v是此节点最近两帧的速度差;
3.2、把位移速率v带入调节函数中,计算出此刻此节点的位移速率对应适合的帧数数据的数量M;
其中,函数φ(v)为由先验方法拟合的四参数方程,A0、B0、C0、D0为常数;
3.3、从帧数替换算法获取到的此节点最近N帧数据中,取靠近此刻的M帧数据下载到新的数组AutoArray中,并采用冒泡排序算法从小到大排序;
3.4、去掉数组A中队首和队尾元素后取平均值;
3.5、根据步骤3.1中计算出的位移速率v和加速度值a,计算预测值,以及预测值在X、Y、Z三个方向的偏移量Px、Py、Pz
预测值的计算方法:
P=v0*t+0.5*a*t2
偏移量:
其中,angle_x,angle_y,angle_z分别为偏移量与X、Y、Z抽的夹角,把它们分别加入步骤3.4计算出的平均值的X、Y、Z分量中,作为最后的滤波预测位置;
3.6、每帧都对所有骨骼节点重复一次以上步骤,保存此刻这20个节点的稳定位置。
通过以上步骤3.1到3.6,滤波并预测出所有骨骼节点的当前位置,保证在节点相对静止或运动时都有较好的滤波预测效果。
更进一步,所述步骤4)中,依据步骤3中稳定的骨骼节点数据,求出与骨骼节点相连的18个对应人体全身各主要部位骨骼的骨骼向量,并计算这18个骨骼向量旋转连接处的两相邻骨骼向量的角度值,以及连接这个骨骼节点的两骨骼向量的向量积,其步骤包括:
4.1、根据步骤3中实时计算出的用户全身20个骨骼节点的位置,对应于用户不同骨骼所连接的两个节点做向量差,得到对应于用户全身18个骨骼的骨骼向量;
4.2、对相邻的骨骼向量通过Unity3D的Math库函数Angle计算其夹角值,表示该用户对应关节点连接的两个骨骼的夹角;
4.3、对人为规定的重要骨骼关节点通过Unity3D的Math库函数Cross计算连接该关节点的两骨骼向量的向量积,用来指示该用户该关节点处两段骨骼组成的平面的法线方向。
更进一步,所述步骤6)中,通过EWMA算法平滑同一骨骼关节位置的不同帧数下骨骼向量角度值和骨骼向量积角度值,骨骼向量角度值的变化速率决定从当前帧开始往前共L帧,这L帧中每一帧的角度值占最终平滑角度值的权重,再统计计算出角度的最终平滑值,其步骤包括:
6.1、计算并保存此刻此角的变化速率v,根据v计算出此刻此角对应的权重控制参数α,其中:
v=v此刻的速率-v前一帧的速率
其中,函数λ(v)为由先验方法拟合的四参数方程,A1、B1、C1、D1为常数;
6.2、把α带入权重调整函数f(x)中,作为此刻的调整函数,计算此刻此角对应的L帧数据中每帧数据占最终平滑角度值的权重;
f(x)=1.05*eα*x+1
其中α是随当前角度的变化速率实时变化的权重控制参数,x取0到L,f(0)到f(L)为此刻此角这L帧各自的权重;
6.3、统计此刻此角的这L帧数据,计算出此刻此角的平滑值,计算方法为:
其中,Angle为此角此刻的平滑值,Ai为此角最近第i帧的角度值,f(i)为第i帧对应的权重;
6.4、每帧都对所有骨骼角度和向量积角度重复一次以上步骤,保存此刻这14个骨骼向量角度值和11个骨骼向量积角度值的平滑值。
通过以上步骤5.1到5.4的方法,既兼顾了用户动作变化慢时角度值平滑处理的稳定性,又兼顾了用户动作变化快时角度平滑处理的实时性。
本发明采用以上技术方案,通过上述步骤1到步骤6,得到用户动作变化中骨骼节点的滤波实时位置和用户各骨骼角的实时角度值的平滑值,可有效地提高追踪用户动作的准确性和稳定性,提升了用户体验;改进的方法不仅可以用于虚拟现实游戏中对用户姿态的追踪,还可以用于对现实中运动的点的位置的实时计算和实时变化的角度的实时计算,可以被广泛地应用。
附图说明
图1是本发明的流程图;
图2是Kinect采集到的彩***;
图3是Kinect采集到的深度图;
图4是Kinect自动计算得到的用户骨架;
图5是用户骨骼节点位置索引图;
图6是骨骼节点过滤中自适应长度数组的长度受节点速度值的影响函数;
图7是用户骨骼向量索引图;
图8是用户骨骼向量角度示意图;
图9是用户骨骼向量积示意图;
图10是角度平滑中权重控制参数α受角度变化速率影响的函数;
图11是不同帧数权重值受权重控制参数α影响的函数。
具体实施方式
下面结合附图和实施例对本发明的方法作进一步的详细描述。
如图1所示,本实施例中的一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,其特征在于:包括以下步骤:
步骤1,将Kinect V2硬件的USB端口和笔记本的USB3.0接口相连接,确保设备扫描得到的深度数据和彩色数据能够正常传输,通过KinectSDKWrapper脚本在Unity3D中对KinectV2硬件自动计算得到的骨骼节点数据进行接收并存储,即将微软公司的产品KinectV2硬件的USB端口和笔记本的USB3.0接口相连接,通过微软公司官网下载对应版本的驱动KinectStadio V2.0,该驱动能通过设备采集用户的深度数据,并结合驱动自身的深度学习算法来计算获得所扫描用户的骨架结构,用来确定用户的关节点位置,同时确保设备扫描得到的深度数据和彩色数据能够正常传输,通过KinectSDKWrapper脚本在Unity3D中对KinectV2硬件自身计算得到的骨骼节点数据进行接收并存储(见附图2~附图5);
步骤2,通过动态帧数替换算法计算出KinectSDKWrapper脚本接收到的最近N帧人体全身的20个特征骨骼节点数据,并实时更新,其步骤包括:
2.1、当前总运行帧数不大于m帧时,把此刻此位置的数据按顺序保存在预设好的二维数组FramePos[m,i]的第0到第m-1行中;
2.2、总运行帧数大于m帧时,丢弃最早一帧的数据,所有数据前移一位,把此刻的最新数据下载到数组的第m-1行中;
2.3、每帧都对全身的20个骨骼节点循环一次步骤2.1和2.2。
通过动态帧数替换算法计算出KinectSDKWrapper脚本接收到的最近m帧人体全身的20个特征骨骼节点位置数据,为Vector3类型,保存在数组FramePos[m,js]中,其中js是节点的索引,js值为0~19,m是要保存的距离本时刻的帧数,本次实验中取30,因为设备的采集频率是30帧/秒,m不易过大,否则会导致过高的延迟影响用户体验,依据队列规则实时更新FramePos,保证FramePos中保存的一直是最新的所有节点的最近30帧源数据,动态帧数替换算法需要实时采集当前最近m帧的骨骼点位置信息,即需要在新的一帧开始时,把采集到的新一帧中20个骨骼节点的位置信息保存下来,这就需要先把距离当前帧m-1帧的数据即FramePos[0,js]抛弃,把当前帧的最新数据下载到Framepos[29,js]中,保证滤波时使用的数据是实时更新的最近30帧的数据,取此刻用户2左手数据FramePos[m,5],如下表1:
表1 此刻FramePos数组数据
步骤3,依据中位值平均滤波算法对步骤2中实时更新的骨骼节点数据进行抖动偏差处理,并加入偏移预测,之后得出稳定的骨骼节点数据,其步骤包括:
3.1、计算此刻此节点的位移速率v和加速度a;速率v和加速度a的计算方法为:
v=d/t,a=Δv/t
其中d为此节点最近两帧的位置,t为帧间间隔,△v是此节点最近两帧的速度差;
3.2、把位移速率v带入调节函数中,计算出此刻此节点的位移速率对应适合的帧数数据的数量M;
其中,函数φ(v)为由先验方法拟合的四参数方程,A0、B0、C0、D0为常数;
3.3、从帧数替换算法获取到的此节点最近N帧数据中,取靠近此刻的M帧数据下载到新的数组AutoArray中,并采用冒泡排序算法从小到大排序;
3.4、去掉数组A中队首和队尾元素后取平均值;
3.5、根据步骤3.1中计算出的位移速率v和加速度值a,计算预测值,以及预测值在X、Y、Z三个方向的偏移量Px、Py、Pz
预测值的计算方法:
P=v0*t+0.5*a*t2
偏移量:
Pz=P*cos(angle_z*PI/180)
其中,angle_x,angle_y,angle_z分别为偏移量与X、Y、Z抽的夹角,把它们分别加入步骤3.4计算出的平均值的X、Y、Z分量中,作为最后的滤波预测位置;
3.6、每帧都对所有骨骼节点重复一次以上步骤,保存此刻这20个节点的稳定位置。
依据改进的中位值平均滤波算法对个节点的30个源数据进行抖动偏差处理,并加入偏移预测量predis,输出稳定的骨骼节点数据Smoothing_Joint[5],用户2左手索引为5,***运行时根据不同动作过程中人体不同骨骼节点位移速率的不同,依据自适应帧数计算方法计算出当前帧时刻这个关节点适合的帧数数量i_autoArray[5],节点的运动速率和滤波的帧数数量负相关(见附图6),既保证了移动速率慢时滤波的稳定性,又兼顾移动速率快时位置计算的实时性,i_autoArray[js]帧数据分别用于索引js各自对应的节点进行滤波和预测偏移量计算,在对FramePos数据的滤波中:
计算Frame[29,5]和Frame[28,5]得此刻节点的运动速率为v=1.32cm/秒,把位移速率v带入调节函数φ(v)中,计算出此刻此节点的位移速率所对应的适合的帧数数据的数量n为10,从帧数替换算法获取到的节点最近30帧数据FramePos[0,5]~FramePos[29,5]中,取靠近此刻的n帧数据下载到新的数组AutoArray[n,5]中,所以AutoArray[0,5]~AutoArray[9,5]为FramePos[29,5]~FramePos[20,5]的值,用冒泡排序算法从小到大排序数组AutoArray,并去掉数组AutoArray中队首AutoArray[0]和队尾AutoArray[n-1]后取平均值计算得此节点的滤波均值根据此刻此节点的位移速率v和加速度值a,计算预测值predis,以及预测值在X、Y、Z三个方向的偏移量Px、Py、Pz
预测值predis的计算方法为:
P=v0*t+0.5*a*t2
得出预测值predis=0.3688cm,其中v0为节点的初速度值JointSpeed[(i_autoArray[js]-1),js],a为节点这i_autoArray[js]帧的加速度值,计算得a=0cm/s2,t为节点从v0到当前速率的时间,为n帧的帧间间隔,加速度a和时间t的计算方法为:
偏移量计算:
其中,angle_x、angle_y、angle_z分别为偏移量与X、Y、Z抽的夹角,把它们分别加入步骤3.4计算出的平均值P的X、Y、Z分量中,作为最后的稳定位置,得Smoothing_Joint[5]=(5.9.-32.8,-15.5),每帧都对所有骨骼节点重复一次以上步骤,保存此刻这20个节点的滤波预测的稳定位置Smoothing_Joint[js]。
步骤4,依据步骤3中计算得到的滤波后的骨骼节点数据,求出与骨骼节点相连的18个对应人体全身各主要部位骨骼的骨骼向量,并计算这18个骨骼向量旋转连接处的两相邻骨骼向量的角度值,以及连接这个骨骼节点的两骨骼向量的向量积,其步骤包括:
4.1、根据步骤3中实时计算出的用户全身20个骨骼节点的位置,对应于用户不同骨骼所连接的两个节点做向量差,得到对应于用户全身18个骨骼的骨骼向量;
4.2、对相邻的骨骼向量通过Unity3D的Math库函数Angle计算其夹角值,表示该用户对应关节点连接的两个骨骼的夹角;
4.3、对人为规定的重要骨骼关节点通过Unity3D的Math库函数Cross计算连接该关节点的两骨骼向量的向量积,用来指示该用户该关节点处两段骨骼组成的平面的法线方向。
依据步骤3的方法计算得到的滤波后的稳定的20个骨骼节点数据Smoothing_Joint[js],求出与这20个骨骼节点相连的18个对应人体全身各主要部位骨骼的骨骼向量,并计算这18个骨骼向量旋转连接处的两相邻骨骼向量的角度值BoneAngle[i],以及连接这个骨骼节点的两骨骼向量的向量积J_Angle[j],i、j分别为骨骼角度索引和骨骼向量积索引,根据实时计算出的用户右肩节点位置Smoothing_Joint[2]和用户右胳膊肘节点位置Smoothing_Joint[3],以及用户右手手腕节点位置Smoothing_Joint[4],计算出用户的右大臂向量和右前臂向量,用户的全身骨骼计算同理(见附图7);
调用unity的mathf库函数angle计算得此刻用户的右胳膊肘角度BoneAngle[5],表示该用户对应关节点连接的两个骨骼的夹角,用户的全身骨骼角度计算同理(见附图8);
对人为规定的重要骨骼关节点通过Unity3D的Math库函数Cross计算连接该关节点的两骨骼向量的向量积J_Angle[j],用来指示该用户该关节点处两段骨骼组成的平面的法线方向(见附图9)。
步骤5,利用步骤4计算得出的实时骨骼角度值和向量积,计算同一时刻两个用户的所有对应骨骼关节处骨骼向量所形成的角度的差值的绝对值,以及该骨骼关节处两段骨骼所组成的向量积的角度,通过步骤2的动态帧数替换算法动态记录从现在时刻起往前N帧的每一帧中两用户的骨骼角度差值和骨骼向量积角度值,即利用步骤4计算得出的实时骨骼角度值和向量积,计算同一时刻两位用户对应位置向量积的角度值Cross[j],通过步骤2的动态帧数替换算法实时更新从现在时刻起往前10帧的每一帧中两用户的骨骼角度和骨骼向量积角度值,分别保存在数组FrameAngle[30,14]和FrameCross[30,11]中;
步骤6,通过改进的EWMA算法平滑同一骨骼关节位置的不同帧数下骨骼向量角度和骨骼向量积角度,用平滑后的骨骼向量角度作差值和设定的阈值角度作比较,用平滑后的骨骼向量积角度作差值和设定的阈值角度作比较,依据不同身体部位影响整体身体姿态的权重,给符合阈值约束的关节位置一定的分数值并记录,然后统计当前分数总和并显示,即通过EWMA算法平滑同一骨骼关节位置的不同帧数下骨骼向量角度值和骨骼向量积角度值,其步骤包括:
6.1、计算并保存此刻此角的变化速率v,根据v计算出此刻此角对应的权重控制参数α,其中:
v=v此刻的速率-v前一帧的速率
其中,函数λ(v)为由先验方法拟合的四参数方程,A1、B1、C1、D1为常数;
6.2、把α带入权重调整函数f(x)中,作为此刻的调整函数,计算此刻此角对应的L帧数据中每帧数据占最终平滑角度值的权重;
f(x)=1.05*eα*x+1
其中α是随当前角度的变化速率实时变化的权重控制参数,x取0到L,f(0)到f(L)为此刻此角这L帧各自的权重;
6.3、统计此刻此角的这L帧数据,计算出此刻此角的平滑值,计算方法为:
其中,Angle为此角此刻的平滑值,Ai为此角最近第i帧的角度值,f(i)为第i帧对应的权重;
6.4、每帧都对所有骨骼角度和向量积角度重复一次以上步骤,保存此刻这14个骨骼向量角度值和11个骨骼向量积角度值的平滑值。
通过改进的EWMA算法平滑同一骨骼关节位置不同帧数下的骨骼向量角度和骨骼向量积角度,在骨骼角度和向量积角度的平滑计算中,骨骼向量角度的变化速率决定从当前帧开始往前共10帧,这10帧中每一帧的角度值占最终平滑角度值的权重,再统计计算出角度的最终平滑值,用于统计最后得分:
先计算并保存此刻此角的变化速率v,根据v计算出此刻此角对应的权重控制参数α,其中:
v=v此刻的速率-v前一帧的速率
其中,函数λ(v)为由先验方法拟合的四参数方程,A1、B1、C1、D1为常数,再把权重控制参数α带入权重调整函数f(x)中,作为此刻的调整函数,计算此刻此角对应的10帧数据中每帧数据x占最终平滑角度值的权重f(x)(见附图10和附图11):
f(x)=1.05*eα*x+1
其中α是随当前角度的变化速率实时变化的权重控制参数,x取0到9,f(0)到f(9)为此刻此角这10帧各自的权重,保存在数组Wight_Angle[10,i]中,表示此角最近10帧数据值各自的权重值,并计算每帧所占总权重的占比,保存在数组Wight_Percentage[10,i]中,然后统计此刻此角的这10帧数据,计算出此刻此骨骼角的平滑值Smoothing_BoneAngle[i],或者此刻向量积角的平滑值Smoothing_CrossAngle[j],计算方法为:
其中,Smoothing_BoneAngle[k]为角k此刻的平滑值,FrameAngle[i,k]为角k最近第i帧的角度值,Wight_Percentage[10,i]为第i帧对应的权重占比,每帧都对所有骨骼角度和向量积角度每帧重复一次以上步骤,保存此刻这14个骨骼角度和11个骨骼向量积的平滑角度,最后把平滑的这25个角度值传入分数统计函数,计算当前得分,如下表2,其中帧数号为1~10,为10表示当前帧角度值,1为最远帧角度值:
表2 此刻此角不同帧数的权重对应关系
通过此方法,可以使角度变化速率越快时,当前帧的角度值所占比重就越大,既兼顾了平滑角度要用到的多帧数据,又保证了角度平滑结果的实时性。此刻角度的变化速率v=34.95度/秒,带入函数λ(v)计算得到的权重控制参数α=0.472,把α带入权重分配函数f(x)得到这一时刻不同帧数的权重值(如上表2),然后加权计算得此刻此角的平滑值Smoothing_Angle[4]=97.4816度,同理平滑其他骨骼角度和骨骼向量及角度值。
通过以上方法,得到用户骨骼节点在空间中的滤波预测位置Smoothing_Joint[js]以及利用节点的滤波预测位置计算平滑后的用户各部位的骨骼角度值Smoothing_BoneAngle[i]和向量积角度值Smoothing_CrossAngle[j],把平滑后的角度值带入分数计算函数中,比较用户1和用户2的同一时刻各对应位置的角度平滑值,统计用户获得的总分。

Claims (5)

1.一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,其特征在于:包括以下步骤:
步骤1,将Kinect V2和笔记本的USB3.0接口相连接,确保设备扫描得到的深度数据和彩色数据能够正常传输,通过KinectSDKWrapper脚本在Unity3D中对KinectV2识别并自动计算得到的骨骼节点数据进行接收并存储;
步骤2,通过动态帧数替换算法保存从KinectSDKWrapper脚本接收到的最近N帧人体全身的20个特征骨骼节点数据,并实时更新;
步骤3,依据中位值平均滤波算法对步骤2中实时更新的骨骼节点数据进行抖动偏差处理,并加入偏移预测,之后得出稳定的骨骼节点数据;
步骤4,依据步骤3中稳定的骨骼节点数据,求出与骨骼节点相连的18个对应人体全身各主要部位骨骼的骨骼向量,并计算这18个骨骼向量旋转连接处的两相邻骨骼向量的角度值,以及连接这个骨骼节点的两骨骼向量的向量积;
步骤5,利用步骤4得出的实时骨骼角度值和向量积,计算同一时刻两个用户的所有对应骨骼关节处骨骼向量所形成的角度的差值的绝对值,以及该骨骼关节处两段骨骼所组成的向量积的角度,通过动态帧数替换算法动态记录从现在时刻起往前N帧的每一帧中两用户的骨骼角度差值和骨骼向量积角度值;
步骤6,通过EWMA算法平滑同一骨骼关节位置的不同帧数下骨骼向量角度值和骨骼向量积角度值,用平滑后的骨骼向量角度值作差值和设定的阈值角度作比较,用平滑后的骨骼向量积角度值作差值和设定的阈值角度作比较,依据不同身体部位影响整体身体姿态的权重,给符合阈值约束的关节位置一个分数值并记录,然后统计当前分数总和并显示,即完成了两个用户基于Kinect骨骼节点位置追踪的人体姿势比较。
2.根据权利要求1所述的一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,其特征在于:所述步骤2)中通过动态帧数替换算法保存从KinectSDKWrapper脚本接收到的最近N帧人体全身的20个特征骨骼节点数据,并实时更新,其步骤包括:
2.1、当前总运行帧数不大于m帧时,把此刻此位置的数据按顺序保存在预设好的二维数组FramePos[m,i]的第0到第m-1行中;
2.2、总运行帧数大于m帧时,丢弃最早一帧的数据,所有数据前移一位,把此刻的最新数据下载到数组的第m-1行中;
2.3、每帧都对全身的20个骨骼节点循环一次步骤2.1和2.2。
3.根据权利要求2所述的一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,其特征在于:所述步骤3)中,依据中位值平均滤波算法对步骤2中实时更新的骨骼节点数据进行抖动偏差处理,并加入偏移预测,之后得出稳定的骨骼节点数据,其步骤包括:
3.1、计算此刻此节点的位移速率v和加速度a;速率v和加速度a的计算方法为:
v=d/t,a=Δv/t
其中d为此节点最近两帧的位置,t为帧间间隔,△v是此节点最近两帧的速度差;
3.2、把位移速率v带入调节函数中,计算出此刻此节点的位移速率对应适合的帧数数据的数量M;
M=φ(v)=(A-D)/[1+(v/C)B]+D,
其中,函数φ(v)为由先验方法拟合的四参数方程,A0、B0、C0、D0为常数;
3.3、从帧数替换算法获取到的此节点最近N帧数据中,取靠近此刻的M帧数据下载到新的数组AutoArray中,并采用冒泡排序算法从小到大排序;
3.4、去掉数组A中队首和队尾元素后取平均值;
3.5、根据步骤3.1中计算出的位移速率v和加速度值a,计算预测值,以及预测值在X、Y、Z三个方向的偏移量Px、Py、Pz
预测值的计算方法:
P=v0*t+0.5*a*t2
偏移量:
其中,angle_x,angle_y,angle_z分别为偏移量与X、Y、Z抽的夹角,把它们分别加入步骤3.4计算出的平均值的X、Y、Z分量中,作为最后的滤波预测位置;
3.6、每帧都对所有骨骼节点重复一次以上步骤,保存此刻这20个节点的稳定位置。
4.根据权利要求3所述的一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,其特征在于:所述步骤4)中,依据步骤3中稳定的骨骼节点数据,求出与骨骼节点相连的18个对应人体全身各主要部位骨骼的骨骼向量,并计算这18个骨骼向量旋转连接处的两相邻骨骼向量的角度值,以及连接这个骨骼节点的两骨骼向量的向量积,其步骤包括:
4.1、根据步骤3中实时计算出的用户全身20个骨骼节点的位置,对应于用户不同骨骼所连接的两个节点做向量差,得到对应于用户全身18个骨骼的骨骼向量;
4.2、对相邻的骨骼向量通过Unity3D的Math库函数Angle计算其夹角值,表示该用户对应关节点连接的两个骨骼的夹角;
4.3、对人为规定的重要骨骼关节点通过Unity3D的Math库函数Cross计算连接该关节点的两骨骼向量的向量积,用来指示该用户该关节点处两段骨骼组成的平面的法线方向。
5.根据权利要求4所述的一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,其特征在于:所述步骤6)中,通过EWMA算法平滑同一骨骼关节位置的不同帧数下骨骼向量角度值和骨骼向量积角度值,其步骤包括:
6.1、计算并保存此刻此角的变化速率v,根据v计算出此刻此角对应的权重控制参数α,其中:
v=v此刻的速率-v前一帧的速率
α=λ(v)=(A-D)/[1+(V/C)B]+D,
其中,函数λ(v)为由先验方法拟合的四参数方程,A1、B1、C1、D1为常数;
6.2、把α带入权重调整函数f(x)中,作为此刻的调整函数,计算此刻此角对应的L帧数据中每帧数据占最终平滑角度值的权重;
f(x)=1.05*eα*x+1
其中α是随当前角度的变化速率实时变化的权重控制参数,x取0到L,f(0)到f(L)为此刻此角这L帧各自的权重;
6.3、统计此刻此角的这L帧数据,计算出此刻此角的平滑值,计算方法为:
其中,Angle为此角此刻的平滑值,Ai为此角最近第i帧的角度值,f(i)为第i帧对应的权重;
6.4、每帧都对所有骨骼角度和向量积角度重复一次以上步骤,保存此刻这14个骨骼向量角度值和11个骨骼向量积角度值的平滑值。
CN201810709702.5A 2018-07-02 2018-07-02 一种基于Kinect骨骼节点位置追踪的人体姿势比较方法 Active CN109064487B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810709702.5A CN109064487B (zh) 2018-07-02 2018-07-02 一种基于Kinect骨骼节点位置追踪的人体姿势比较方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810709702.5A CN109064487B (zh) 2018-07-02 2018-07-02 一种基于Kinect骨骼节点位置追踪的人体姿势比较方法

Publications (2)

Publication Number Publication Date
CN109064487A true CN109064487A (zh) 2018-12-21
CN109064487B CN109064487B (zh) 2021-08-06

Family

ID=64818345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810709702.5A Active CN109064487B (zh) 2018-07-02 2018-07-02 一种基于Kinect骨骼节点位置追踪的人体姿势比较方法

Country Status (1)

Country Link
CN (1) CN109064487B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109949341A (zh) * 2019-03-08 2019-06-28 广东省智能制造研究所 一种基于人体骨架结构化特征的行人目标跟踪方法
CN110083239A (zh) * 2019-04-19 2019-08-02 南京邮电大学 一种基于动态赋权和灰色预测下的骨骼抖动检测方法
CN110743160A (zh) * 2019-11-19 2020-02-04 卓谨信息科技(常州)有限公司 基于体感捕捉设备的实时步伐跟踪***及步伐生成方法
CN111506199A (zh) * 2020-05-06 2020-08-07 北京理工大学 基于Kinect的高精度无标记全身运动追踪***
CN111639612A (zh) * 2020-06-04 2020-09-08 浙江商汤科技开发有限公司 姿态矫正的方法、装置、电子设备及存储介质
CN111880643A (zh) * 2019-06-26 2020-11-03 广州凡拓数字创意科技股份有限公司 导航方法和装置
CN111899318A (zh) * 2020-08-13 2020-11-06 腾讯科技(深圳)有限公司 数据的处理方法、装置及计算机可读存储介质
CN113469018A (zh) * 2021-06-29 2021-10-01 中北大学 基于rgb与三维骨骼的多模态交互行为识别方法
CN117314976A (zh) * 2023-10-08 2023-12-29 玩出梦想(上海)科技有限公司 一种目标物跟踪方法及数据处理设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105252532A (zh) * 2015-11-24 2016-01-20 山东大学 动作捕捉机器人协同柔性姿态控制的方法
CN107180235A (zh) * 2017-06-01 2017-09-19 陕西科技大学 基于Kinect的人体动作识别算法
EP3298955A1 (en) * 2016-09-23 2018-03-28 Tata Consultancy Services Limited Method and system for determining postural balance of a person

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105252532A (zh) * 2015-11-24 2016-01-20 山东大学 动作捕捉机器人协同柔性姿态控制的方法
EP3298955A1 (en) * 2016-09-23 2018-03-28 Tata Consultancy Services Limited Method and system for determining postural balance of a person
CN107180235A (zh) * 2017-06-01 2017-09-19 陕西科技大学 基于Kinect的人体动作识别算法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MICHAEL ADJEISAH ET.AL: "Joint Filtering: Enhancing Gesture and Mouse Movement in Microsoft Kinect Application", 《2015 12TH INTERNATIONAL CONFERENCE ON FUZZY SYSTEMS AND KNOWLEDGE DISCOVERY (FSKD)》 *
吕金泽 等: "改进的人体运动检测方法", 《计算机工程与设计》 *
王利国 等: "改进的EWMA算法在骨骼节点跟踪滤波中的应用", 《计算机工程与设计》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109949341A (zh) * 2019-03-08 2019-06-28 广东省智能制造研究所 一种基于人体骨架结构化特征的行人目标跟踪方法
CN110083239B (zh) * 2019-04-19 2022-02-22 南京邮电大学 一种基于动态赋权和灰色预测下的骨骼抖动检测方法
CN110083239A (zh) * 2019-04-19 2019-08-02 南京邮电大学 一种基于动态赋权和灰色预测下的骨骼抖动检测方法
CN111880643A (zh) * 2019-06-26 2020-11-03 广州凡拓数字创意科技股份有限公司 导航方法和装置
CN110743160A (zh) * 2019-11-19 2020-02-04 卓谨信息科技(常州)有限公司 基于体感捕捉设备的实时步伐跟踪***及步伐生成方法
CN110743160B (zh) * 2019-11-19 2023-08-11 卓谨信息科技(常州)有限公司 基于体感捕捉设备的实时步伐跟踪***及步伐生成方法
CN111506199A (zh) * 2020-05-06 2020-08-07 北京理工大学 基于Kinect的高精度无标记全身运动追踪***
CN111639612A (zh) * 2020-06-04 2020-09-08 浙江商汤科技开发有限公司 姿态矫正的方法、装置、电子设备及存储介质
CN111899318A (zh) * 2020-08-13 2020-11-06 腾讯科技(深圳)有限公司 数据的处理方法、装置及计算机可读存储介质
CN111899318B (zh) * 2020-08-13 2023-08-25 腾讯科技(深圳)有限公司 数据的处理方法、装置及计算机可读存储介质
CN113469018A (zh) * 2021-06-29 2021-10-01 中北大学 基于rgb与三维骨骼的多模态交互行为识别方法
CN113469018B (zh) * 2021-06-29 2024-02-23 中北大学 基于rgb与三维骨骼的多模态交互行为识别方法
CN117314976A (zh) * 2023-10-08 2023-12-29 玩出梦想(上海)科技有限公司 一种目标物跟踪方法及数据处理设备
CN117314976B (zh) * 2023-10-08 2024-05-31 玩出梦想(上海)科技有限公司 一种目标物跟踪方法及数据处理设备

Also Published As

Publication number Publication date
CN109064487B (zh) 2021-08-06

Similar Documents

Publication Publication Date Title
CN109064487A (zh) 一种基于Kinect骨骼节点位置追踪的人体姿势比较方法
CN109003301B (zh) 一种基于OpenPose和Kinect的人体姿态估计方法及康复训练***
CN110570455B (zh) 一种面向房间vr的全身三维姿态跟踪方法
CN106527709B (zh) 一种虚拟场景调整方法及头戴式智能设备
EP2405419A2 (en) User input device and method for interaction with graphic images
CN113706699B (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN106873778A (zh) 一种应用的运行控制方法、装置和虚拟现实设备
US20200286286A1 (en) Tracking rigged polygon-mesh models of articulated objects
CN111596767A (zh) 一种基于虚拟现实的姿态捕获方法和装置
CN112083800A (zh) 基于自适应手指关节规则滤波的手势识别方法及***
CN107213636A (zh) 镜头移动方法、装置、存储介质和处理器
KR102622981B1 (ko) 딥러닝 기술을 이용한 모션 추적 시스템
US11951384B2 (en) System and method for virtual character animation using motion capture
CN110348370B (zh) 一种人体动作识别的增强现实***及方法
Zeng et al. PE-DLS: A novel method for performing real-time full-body motion reconstruction in VR based on Vive trackers
CN112149531B (zh) 一种行为识别中人体骨骼数据的建模方法
CN111507304B (zh) 自适应刚性先验模型训练方法、人脸跟踪方法及相关装置
CN115601505B (zh) 一种人体三维姿态还原方法、装置、电子设备及存储介质
CN113240044B (zh) 一种基于多Kinect的人体骨骼数据融合评价方法
CN113673494B (zh) 人体姿态标准运动行为匹配方法及***
CN115543096A (zh) 基于神经网络的动捕数据处理方法、装置及***
CN115223240A (zh) 基于动态时间规整算法的运动实时计数方法和***
CN111625098B (zh) 一种基于多通道信息融合的虚拟化身智能交互方法和装置
CN115205737A (zh) 基于Transformer模型的运动实时计数方法和***
CN114296539B (zh) 方向预测方法、虚拟实境装置及非暂态计算机可读取媒体

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant