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

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

Info

Publication number
CN109064487B
CN109064487B CN201810709702.5A CN201810709702A CN109064487B CN 109064487 B CN109064487 B CN 109064487B CN 201810709702 A CN201810709702 A CN 201810709702A CN 109064487 B CN109064487 B CN 109064487B
Authority
CN
China
Prior art keywords
angle
bone
data
value
frame
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.)
Active
Application number
CN201810709702.5A
Other languages
English (en)
Other versions
CN109064487A (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

Images

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,将KinectV2和笔记本的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;
Figure GDA0003089547240000041
其中,函数φ(v)为由先验方法拟合的四参数方程,A0、B0、C0、D0为常数, R0 2是相关系数;
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
偏移量:
Figure GDA0003089547240000051
其中,angle_x,angle_y,angle_z分别为偏移量与X、Y、Z轴的夹角,把它们分别加入步骤3.4计算出的平均值的X、Y、Z分量中,作为最后的滤波预测位置,v 0为节点的初速度值;
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前一帧的速率
Figure GDA0003089547240000061
其中,函数λ(v)为由先验方法拟合的四参数方程,A1、B1、C1、D1为常数, R1 2是相关系数;
6.2、把α带入权重调整函数f(x)中,作为此刻的调整函数,计算此刻此角对应的L帧数据中每帧数据占最终平滑角度值的权重;
f(x)=1.05*eα*x+1
其中α是随当前角度的变化速率实时变化的权重控制参数,x取0到L,f(0)到 f(L)为此刻此角这L帧各自的权重;
6.3、统计此刻此角的这L帧数据,计算出此刻此角的平滑值,计算方法为:
Figure GDA0003089547240000071
其中,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数组数据
Figure GDA0003089547240000091
Figure GDA0003089547240000101
步骤3,依据中位值平均滤波算法对步骤2中实时更新的骨骼节点数据进行抖动偏差处理,并加入偏移预测,之后得出稳定的骨骼节点数据,其步骤包括:
3.1、计算此刻此节点的位移速率v和加速度a;速率v和加速度a的计算方法为:
v=d/t,a=Δv/t
其中d为此节点最近两帧的位置,t为帧间间隔,△v是此节点最近两帧的速度差;
3.2、把位移速率v带入调节函数中,计算出此刻此节点的位移速率对应适合的帧数数据的数量M;
Figure GDA0003089547240000102
其中,函数φ(v)为由先验方法拟合的四参数方程,A0、B0、C0、D0为常数, R0 2是相关系数;
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
偏移量:
Figure GDA0003089547240000111
其中,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]后取平均值
Figure GDA0003089547240000123
,计算得此节点的滤波均值
Figure GDA0003089547240000123
=(5.9,-32.8,-15.55),根据此刻此节点的位移速率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的计算方法为:
Figure GDA0003089547240000121
偏移量计算:
Figure GDA0003089547240000122
其中,angle_x、angle_y、angle_z分别为偏移量与X、Y、Z轴的夹角,把它们分别加入步骤3.4计算出的平均值
Figure GDA0003089547240000123
的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前一帧的速率
Figure GDA0003089547240000141
其中,函数λ(v)为由先验方法拟合的四参数方程,A1、B1、C1、D1为常数, R1 2是相关系数;
6.2、把α带入权重调整函数f(x)中,作为此刻的调整函数,计算此刻此角对应的L帧数据中每帧数据占最终平滑角度值的权重;
Figure GDA0003089547240000152
其中α是随当前角度的变化速率实时变化的权重控制参数,x取0到L,f(0)到 f(L)为此刻此角这L帧各自的权重;
6.3、统计此刻此角的这L帧数据,计算出此刻此角的平滑值,计算方法为:
Figure GDA0003089547240000151
其中,Angle为此角此刻的平滑值,Ai为此角最近第i帧的角度值,f(i)为第i帧对应的权重;
6.4、每帧都对所有骨骼角度和向量积角度重复一次以上步骤,保存此刻这 14个骨骼向量角度值和11个骨骼向量积角度值的平滑值。
通过改进的EWMA算法平滑同一骨骼关节位置不同帧数下的骨骼向量角度和骨骼向量积角度,在骨骼角度和向量积角度的平滑计算中,骨骼向量角度的变化速率决定从当前帧开始往前共10帧,这10帧中每一帧的角度值占最终平滑角度值的权重,再统计计算出角度的最终平滑值,用于统计最后得分:
先计算并保存此刻此角的变化速率v,根据v计算出此刻此角对应的权重控制参数α,其中:
v=v此刻的速率-v前一帧的速率
Figure GDA0003089547240000161
其中,R1 2是相关系数,函数λ(v)为由先验方法拟合的四参数方程,A1、B1、 C1、D1为常数,再把权重控制参数α带入权重调整函数f(x)中,作为此刻的调整函数,计算此刻此角对应的10帧数据中每帧数据x占最终平滑角度值的权重f(x) (见附图10和附图11):
Figure GDA0003089547240000163
其中α是随当前角度的变化速率实时变化的权重控制参数,x取0到9,f(0) 到f(9)为此刻此角这10帧各自的权重,保存在数组Wight_Angle[10,i]中,表示此角最近10帧数据值各自的权重值,并计算每帧所占总权重的占比,保存在数组 Wight_Percentage[10,i]中,然后统计此刻此角的这10帧数据,计算出此刻此骨骼角的平滑值Smoothing_BoneAngle[i],或者此刻向量积角的平滑值 Smoothing_CrossAngle[j],计算方法为:
Figure GDA0003089547240000162
其中,Smoothing_BoneAngle[k]为角k此刻的平滑值,FrameAngle[i,k]为角 k最近第i帧的角度值,Wight_Percentage[10,i]为第i帧对应的权重占比,每帧都对所有骨骼角度和向量积角度每帧重复一次以上步骤,保存此刻这14个骨骼角度和11个骨骼向量积的平滑角度,最后把平滑的这25个角度值传入分数统计函数,计算当前得分,如下表2,其中帧数号为1~10,为10表示当前帧角度值, 1为最远帧角度值:
表2此刻此角不同帧数的权重对应关系
Figure GDA0003089547240000171
通过此方法,可以使角度变化速率越快时,当前帧的角度值所占比重就越大,既兼顾了平滑角度要用到的多帧数据,又保证了角度平滑结果的实时性。此刻角度的变化速率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 (3)

1.一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,其特征在于:包括以下步骤:
步骤1,将KinectV2和笔记本的USB3.0接口相连接,确保设备扫描得到的深度数据和彩色数据能够正常传输,通过KinectSDKWrapper脚本在Unity3D中对KinectV2识别并自动计算得到的骨骼节点数据进行接收并存储;
步骤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中实时更新的骨骼节点数据进行抖动偏差处理,并加入偏移预测,之后得出稳定的骨骼节点数据,其步骤包括:
3.1、计算此刻此节点的位移速率v和加速度a;速率v和加速度a的计算方法为:
v=d/t,a=Δv/t
其中d为此节点最近两帧的位置,t为帧间间隔,△v是此节点最近两帧的速度差;
3.2、把位移速率v带入调节函数中,计算出此刻此节点的位移速率对应适合的帧数数据的数量M;
Figure FDA0003089547230000021
其中,函数φ(v)为由先验方法拟合的四参数方程,A0、B0、C0、D0为常数,R0 2是相关系数;
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
偏移量:
Figure FDA0003089547230000022
其中,angle_x,angle_y,angle_z分别为偏移量与X、Y、Z轴的夹角,把它们分别加入步骤3.4计算出的平均值的X、Y、Z分量中,作为最后的滤波预测位置,v0是节点的初速度值;
3.6、每帧都对所有骨骼节点重复一次以上步骤,保存此刻这20个节点的稳定位置;
步骤4,依据步骤3中稳定的骨骼节点数据,求出与骨骼节点相连的18个对应人体全身各主要部位骨骼的骨骼向量,并计算这18个骨骼向量旋转连接处的两相邻骨骼向量的角度值,以及连接这个骨骼节点的两骨骼向量的向量积;
步骤5,利用步骤4得出的实时骨骼角度值和向量积,计算同一时刻两个用户的所有对应骨骼关节处骨骼向量所形成的角度的差值的绝对值,以及该骨骼关节处两段骨骼所组成的向量积的角度,通过动态帧数替换算法动态记录从现在时刻起往前N帧的每一帧中两用户的骨骼角度差值和骨骼向量积角度值;
步骤6,通过EWMA算法平滑同一骨骼关节位置的不同帧数下骨骼向量角度值和骨骼向量积角度值,用平滑后的骨骼向量角度值作差值和设定的阈值角度作比较,用平滑后的骨骼向量积角度值作差值和设定的阈值角度作比较,依据不同身体部位影响整体身体姿态的权重,给符合阈值约束的关节位置一个分数值并记录,然后统计当前分数总和并显示,即完成了两个用户基于Kinect骨骼节点位置追踪的人体姿势比较。
2.根据权利要求1所述的一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,其特征在于:所述步骤4中,依据步骤3中稳定的骨骼节点数据,求出与骨骼节点相连的18个对应人体全身各主要部位骨骼的骨骼向量,并计算这18个骨骼向量旋转连接处的两相邻骨骼向量的角度值,以及连接这个骨骼节点的两骨骼向量的向量积,其步骤包括:
4.1、根据步骤3中实时计算出的用户全身20个骨骼节点的位置,对应于用户不同骨骼所连接的两个节点做向量差,得到对应于用户全身18个骨骼的骨骼向量;
4.2、对相邻的骨骼向量通过Unity3D的Math库函数Angle计算其夹角值,表示该用户对应关节点连接的两个骨骼的夹角;
4.3、对人为规定的重要骨骼关节点通过Unity3D的Math库函数Cross计算连接该关节点的两骨骼向量的向量积,用来指示该用户该关节点处两段骨骼组成的平面的法线方向。
3.根据权利要求2所述的一种基于Kinect骨骼节点位置追踪的人体姿势比较方法,其特征在于:所述步骤6中,通过EWMA算法平滑同一骨骼关节位置的不同帧数下骨骼向量角度值和骨骼向量积角度值,其步骤包括:
6.1、计算并保存此刻此角的变化速率v,根据v计算出此刻此角对应的权重控制参数α,其中:
v=v此刻的速率-v前一帧的速率
Figure FDA0003089547230000041
其中,函数λ(v)为由先验方法拟合的四参数方程,A1、B1、C1、D1为常数,R1 2是相关系数;
6.2、把α带入权重调整函数f(x)中,作为此刻的调整函数,计算此刻此角对应的L帧数据中每帧数据占最终平滑角度值的权重;
f(x)=1.05*eα*x+1
其中α是随当前角度的变化速率实时变化的权重控制参数,x取0到L,f(0)到f(L)为此刻此角这L帧各自的权重;
6.3、统计此刻此角的这L帧数据,计算出此刻此角的平滑值,计算方法为:
Figure FDA0003089547230000042
其中,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 CN109064487A (zh) 2018-12-21
CN109064487B true 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)

Families Citing this family (9)

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

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
Joint Filtering: Enhancing Gesture and Mouse Movement in Microsoft Kinect Application;Michael Adjeisah et.al;《2015 12th International Conference on Fuzzy Systems and Knowledge Discovery (FSKD)》;20151231;第2528-2532页 *
改进的EWMA算法在骨骼节点跟踪滤波中的应用;王利国 等;《计算机工程与设计》;20160331;第37卷(第3期);第837-841页 *
改进的人体运动检测方法;吕金泽 等;《计算机工程与设计》;20190930;第40卷(第9期);第2460-2465页 *

Also Published As

Publication number Publication date
CN109064487A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
CN109064487B (zh) 一种基于Kinect骨骼节点位置追踪的人体姿势比较方法
US10657696B2 (en) Virtual reality system using multiple force arrays for a solver
US11928765B2 (en) Animation implementation method and apparatus, electronic device, and storage medium
CN110827383B (zh) 三维模型的姿态模拟方法、装置、存储介质和电子设备
CN112001989B (zh) 虚拟对象的控制方法及装置、存储介质、电子装置
KR100678373B1 (ko) 그래픽 영상들과의 상호 작용을 위한 사용자 입력 장치 및 방법
WO2010095191A1 (ja) 情報処理装置および情報処理方法
CN110076772A (zh) 一种机械臂的抓取方法及装置
CN112198959A (zh) 虚拟现实交互方法、装置及系统
US9669300B2 (en) Motion detection for existing portable devices
CN111596767B (zh) 一种基于虚拟现实的姿态捕获方法和装置
CN110163938B (zh) 动画的控制方法、装置、存储介质和电子装置
JP7561770B2 (ja) アニメキャラクタの変更
US11951384B2 (en) System and method for virtual character animation using motion capture
CN107213636A (zh) 镜头移动方法、装置、存储介质和处理器
US9934607B2 (en) Real-time goal space steering for data-driven character animation
CN114565705A (zh) 一种虚拟人物的仿真、直播方法、装置、设备及存储介质
CN114296539B (zh) 方向预测方法、虚拟实境装置及非暂态计算机可读取媒体
CN113496168A (zh) 手语数据采集方法、设备、存储介质
CN113240044B (zh) 一种基于多Kinect的人体骨骼数据融合评价方法
Dang et al. Imitation learning-based algorithm for drone cinematography system
CN115223240A (zh) 基于动态时间规整算法的运动实时计数方法和系统
JP7005788B2 (ja) スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム
CN117893651A (zh) 实时数据处理方法及装置
CN117576163A (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