一种基于计算机的虚拟乒乓球运动控制方法及系统
技术领域
本发明设计计算机应用领域,更具体地说,涉及一种基于计算机的虚拟乒乓球运动控制方法及系统。
背景技术
随着计算机应用技术的飞速发展,人们可以在计算机上进行虚拟乒乓球运动。目前在计算机上进行乒乓球运动的实现方式主要有如下两种:
用计算机键盘、鼠标来操作。其中键盘用来控制打什么类型的球,一个按键对应一个打球类型;鼠标用来控制打球的力度,和方向、控制力度时,显示器上会有一个表示力度的条状图形,当鼠标按键被按下时,此次打球的力度就选择为条状图形所处位置标识的力度;鼠标左右移动的方向代表着打球的方向。
使用带有重力传感器、陀螺仪、及少数按键的手柄。重力传感器用于判断打球时挥拍运动的加速度,陀螺仪用于判断运动的方向,少数按键用于表示打球是什么类型。手柄的运动加速度、方向、按键信息通过蓝牙功能传入到终端计算机,供乒乓球运动项目软件使用。
使用计算机键盘、鼠标来操作打乒乓球,其本身只是使用了人的手,且是用来按鼠标和键盘,和真实乒乓球运动来说,相差甚远,如果按这种方式来实现运动项目,那么所有的运动项目毫无差异,所以,这种实现方式,只能算是一种乒乓球游戏的实现方式。
使用重力传感器、陀螺仪、及少数按键实现的乒乓球项目中,虽然得到了打球时挥动球拍的加速度,运动方向,和打球的类型,但是这里面有很大的缺陷,两个最大的缺陷是,一、没有人的空间位置信息;二、打球的类型是由按键给出的,和真实中人挥拍动作毫无关系。由于其本身固有的两个缺陷,所以在乒乓球项目中也就有了一些无法避免的缺陷:一、由于无空间位置信息,所以打球时只要挥动了手柄,就表示打到球了,但真实打球时,挥拍并不一定就打得到球;其二、按下一个按键,代表一个打球动作类型,比如扣球,但真实的打球动作类型是由手挥拍的运动轨迹决定的,而不是想要什么球型,按什么键那么简单;其三、将手柄放在蓝牙信号覆盖范围的任何地方打球,甚至人背对着显示器都可以打球,这明显是有悖常理的。所以从运动健身的角度来说,使用重力传感器、陀螺仪、以及少数按键实现的乒乓球项目,并不是真正的乒乓球运动健身项目,也只能算是个游戏项目。
因此,需要一种能更真实反映人的空间位置信息和挥拍动作、能准确的计算出挥拍是是否真的击到了球、以及能根据挥拍的动作和速度可以判断出击球动作类型的方案,来克服现有技术中存在的上述缺陷。
发明内容
本发明所要解决的技术问题在于,针对现有虚拟乒乓球运动中不能真实的反映人的空间位置信息和挥拍动作、不能判断是否真的击到了球、不能根据球拍动作判断击球类型的问题,提供一种基于计算机的虚拟乒乓球运动控制方法及系统。
本发明解决其技术问题所采用的方案是:在人体上设置两个跟踪点,第一跟踪点代表人体的头部或躯干的空间位置信息,第二跟踪点代表人体的手部球拍的空间位置信息;不断地采集上述两个跟踪点的空间位置信息;根据采集的上述两个跟踪点的空间位置信息进行计算;根据上述计算结果控制显示系统所显示的虚拟乒乓球运动的过程。
本发明提供了一种基于计算机的虚拟乒乓球控制方法,包括如下步骤:
S1)在人体上设置两个跟踪点,第一跟踪点代表人体的头部或躯干的空间位置信息,第二跟踪点代表人体的手部球拍的空间位置信息;
S2)不断地采集上述两个跟踪点的空间位置信息;
S3)根据采集的上述两个跟踪点的空间位置信息进行计算;
S4)根据上述计算结果控制显示系统所显示的虚拟乒乓球运动的过程。
在本发明所述的基于计算机的虚拟乒乓球控制方法中,步骤S2采集到的每个跟踪点对应的一组数据点都表示为三元组(X,Y,Z),其中X代表数据点在X轴的位置,且X值增大表示跟踪点位置右移;Y代表数据点在Y轴的位置,且Y值增大表示跟踪点位置上移;Z代表数据点在Z轴的位置,且Z值增大表示数据点前移,坐标原点为采集硬件的中心,称这个坐标系为基于采集硬件的坐标系。采集硬件每秒对每个跟踪点采集30个此三元组表示的空间位置数据。
在本发明所述的基于计算机的虚拟乒乓球运动控制方法中,所述步骤S3包括:在显示系统中的虚拟乒乓球桌上建立一个虚拟坐标系,选取水平向右方向为虚拟坐标系的X轴方向,竖直向上方向为虚拟坐标系的Y轴方向,垂直于显示系统屏幕向里的方向为虚拟坐标Z轴方向,虚拟坐标系的原点在虚拟乒乓球桌的中心。可见这个虚拟坐标系和基于采集硬件的坐标系是完全一致的,即相同的方向,相同的数值大小。只是一个用于描述跟踪点的位置,一个用于将跟踪点位置数据表现在显示系统上,此外虚拟坐标系还用于描述乒乓球的空间位置。有了这两个坐标系后,本发明所使用的跟踪点空间位置数据,就可以直接用到虚拟坐标中,在虚拟坐标系中球拍的空间位置数据,运动速度数据,挥拍用力数据都和基于采集硬件的坐标系中对应数据是一模一样的。
在本发明所述的基于计算机的虚拟乒乓球控制方法中,步骤S3进一步包括:将用于反映人的空间位置信息的跟踪点和用于反映球拍的空间位置信息的跟踪点分别标记为A点和B点。A点的空间位置数据为(xA1,yA1,zA1),(xA2,yA2,zA2),……,(xAi,yAi,zAi),……,其中(xAi,yAi,zAi)代表着A点在第i时刻的空间位置;B点的空间位置数据为(xB1,yB1,zB1),(xB2,yB2,zB2),……,(xBi,yBi,zBi),……,其中(xBi,yBi,zBi)代表着B点在第i时刻的空间位置。在本发明中,将A点用于反映人的位置,B点用于反映乒乓球拍的运动。对A点数据的处理方式比较简单:直接把基于采集硬件的坐标系的数据值,也即采集硬件采集到的数据值映射到虚拟坐标系中,因虚拟坐标系和基于采集硬件的坐标系是完全一致的,即相同的方向,相同的数值大小,故映射到虚拟坐标系的数据值和采集到的数据值是一样的,除此映射处理过程之外对A点不需要其他更多的分析。B点的使用方式比较复杂,这里详细阐述本发明中是怎么使用B点,也就是人手持的乒乓球拍位置数据点使用方式。为了描述上的方便,将B点的空间位置数据重新改写为:(x1,y1,z1),(x2,y2,z2),......,(xi,yi,zi),......,其中(xi,yi,zi)代表着第i时刻,乒乓球拍的空间位置坐标。有了球拍在各个时刻的空间位置坐标,可以进一步求出球拍的运动信息,如速度,加速度,挥拍的力度等。具体计算各个数据的公式为:
第i时刻的速度公式:在X轴上的速度:vix=(xi-xi-1)/t、在Y轴上的速度:viy viy=(vi-vi-1)/t、在Z轴上的速度:viz=(vi-vi-1)/t,其中t=1/30s;
第i时刻的加速度公式:在X轴的加速度:aix=(vix-v(i-1)x)/t、在Y轴上的加速度:aiy=(viy-v(i-1)y)/t、在Z轴上的加速度:aiz=(viz-v(i-1)z)/t,其中t=1/30s;
有了各个时刻各个方向上的加速度,就可以对对应时刻对应方向上的用力情况做出分析:在X轴方向上的用力:fix=aix×k、在Y轴方向上的用力:fiy=aiy×k、在Z轴方向上的用力:fiz=aiz×k,k是一个比例系数。
在步骤S4中,还包括判断是否有挥拍动作以及是否打击到乒乓球。
在前面的阐述中,已经阐明了在某时刻挥拍速度在三个坐标轴上的分速度,它们分别是v
ix、v
iy、v
iz,以及在使用的力度在三个坐标轴上的分力度,它们分别是f
ix、f
iy、f
iz。在本发明中,将挥拍打球动作分为平推球、向上挑球、右边扣球、左边扣球、大力扣球、右边削球、左边削球这几个打球动作。判断是否有挥拍打球动作,是看球拍运动的速度:若三个方向上分速度的合速度达到给定的阈值v
0、即
则判定有了挥拍动作,记录下该时刻球拍所处的空间位置坐标(x
b,y
b,z
b),此后、当合速度小于给定的阈值v
0、即
判定挥拍动作结束,记录下该时刻球拍的空间位置坐标(x
e,y
e,z
e);若三个方向上分速度的合速度达到给定的阈值v
0,则没有挥拍动作,此次动作结束。
要判断球拍是否打到球,在这里需要注意到两个方面是:一、由于采集硬件每秒只采集30个位置坐标,而人挥拍的各个位置是连续的,所以这些坐标不可能完全和球拍的位置一模一样;同样道理,球的位置数据也是基于计算机时钟,每隔一定时间计算一次的,也不可能和真正球运动时位置一模一样;二、球和球拍都是有大小的,而本发明所使用的空间位置数据都只是点的坐标信息。所以在计算球拍与球相交时,需要注意考虑这两个问题。
在本发明中,球的位置是由计算机计算出来的,虽然不是完全和真实的球的连续位置一模一样,但是由于计算的数据点足够多,所以可以当作连续位置来使用;而球拍的位置秒钟只有30个数据,那么当进行像大力扣球这样的动作时,整个动作下来,只有几个数据点,且每个数据点之间的距离比较大,球可能在某个时刻经过两个点之间,而球拍也经过这个位置,即球拍击到了球,但是因为采集来的只有几个点而没有中间点,就漏过了球拍与球相交的情况。这时就不能简单的看这几个点是否与球相交来判断球拍是否打到球。本发明解决这种快速挥拍时,球拍位置数据点少的方法是采用线性插值的方法:判断球拍的挥拍开始点(xb,yb,zb)和挥拍结束点(xe,ye,ze)之间所有相邻两点的空间距离是否在预定的距离之内,若大于预定距离,则在相邻的球拍位置点之间均匀地插入多个点,以作为所述球拍的位置点,即将相邻的两个点连成线段,再在每条线段上都均匀的选取多个点,让选取出来的点,和原先传上来的点一起描述球拍的空间位置。
插值处理之后,就要判断此次挥拍有没有打到球,也即球拍与球是否相交。由于实际中的乒乓球是具有大小的球体,其最主要的特征是球的半径,标记为r,球拍也是有大小的,本发明中将球拍看成一个圆形的平面,主要要考虑的因素也是球拍的半径,标记为R。判断某时刻球拍是否打到球,就是判断该时刻球是否与球拍相交,本发明采用两个步骤来判断球是否与球拍相交。第一步,计算球位置点到球拍所在平面的距离,若这个距离小于球的半径r,则计算第二步,否则之间判断球和球拍不会相交;第二步,计算球位置点到球拍位置点的距离,若此距离小于R,则判断球与拍相交,否则判断球与球拍不相交。若球和球拍不相交,即球拍没有击到球,此次动作结束。
在球拍和球相交之后,也即球拍打到球后,步骤S4还需要判断挥拍动作,以及打到球后,该挥拍对球的运动产生怎么样的影响。
下述几种类型的挥拍动作可以通过速度判断,也可通过位移判断,还可通过速度加位移判断。
A、平推球:平推球的特点是,球拍在上下,左右方向上的位移较小,而在Z轴方向上的位移较大,因此,当|xb-xe|<dx,|yb-yd|<dy,且|zb-ze|>dz,其中dx、dy、dz为预先给定的阈值,则判断此次击球动作为平推球。在本发明中平推球主要对球在Z轴方向上的速度影响较大,依据击球时刻,在Z轴方向上的用力fiz,给球一个在Z轴方向上的初速度,该速度与fiz成正比,在X,Y轴上的初速度直接赋零值。也可以通过速度判断是否为平推球,计算在X轴、Y轴、Z轴方向的速度,如果其在Z轴方向上的速度较大,且在X轴、Y轴方向的速度几乎为零,则也认为是平推球。
B、向上挑球:向上挑球的特点是,球拍在X轴方向上的速度非常小,几乎为零,而在Y轴正方向上有较明显的速度,因此,当|vix|<v0、|viz|<v1、|viy|>v′0;其中v0、v1和v′0为预先给定的阈值,则判断此次击球动作为向上挑球。在本发明中向上挑球主要对球在Y轴和Z轴方向上的速度影响较大,因此,依据击球时刻,在Y轴、Z轴方向上的用力fiy、fiz;给球在Y轴,Z轴上分别赋予一个同该轴方向上用力成正比的速度,而对于X轴方向的速度直接赋予零值(力度也可以和速度成正比)。也可以通过速度判断是否为向上挑球,判断方法与平推球类似。
C、右边扣球:右边扣球也就是右手杀球动作,该动作的特征是,向下,向前,向右的速度都比较大,除了速度之外,右边扣球还有另一个明显的特征是,球拍是从右往左运动,挥拍动作开始点在挥拍动作结束点的右边,依据此事实,在本发明中,当击球时|vix|>v0、|viy|>v1、|viz|>v2,且xb-xe>0;其中:v0、v1、v2为预先给定的阈值,即击球时三个方向都有较大的速度,且球拍是从右往左运动,则判断此次击球是右边扣球。使用右边扣球动作打球时,当球被击打到球后,球迅速向前下降,且有向左偏移的运动,因此,在本发明中,当右边扣球动作击打到球后,对球速度的赋值与此动作时在三个方向上的用力成正比,比例是预先给定的。
D、左边扣球:左边扣球的特征和右边扣球的特征相似,速度比较大,只是挥拍动作开始点在挥拍动作结束点的左边,依据此事实,在本发明中,当击球时|vix|>v0、|viy|>v1、|viz|>v2,且xb-xe<0,即击球时三个方向都有较大的速度,且球拍是从左往右运动,则判断此次击球是左边扣球。左边扣球后,对球速度的赋值方式和右边扣球完全相同。
E、右边削球:右边削球的特征是,球拍有向前、向左、向下的运动,但是速度比右边扣球要小,因此依据挥拍开始和结束位置,以及击球时速度,就可以判断是否有右边削球动作发生,即当检测到xb-xe>0、yb-ye>0、zb-ze<0且v′0>|vix|>v0、v′1>|viy|>v1、v′2>|viz|>v2,其中v′0、v0、v′1、v1、v′2、v2为预先给定的阈值,则判断此次击球动作为右边削球。右边削球动作发生后,依据击球时刻三个方向上的用力情况,对球在三个方向上分别赋予一个与对应方向上的用力情况成正比的速度,且给球一个自旋转速度,该速度的大小与球击时三个方向作用力的合力的绝对值成正比。
F、左边削球:左边削球的特征是,球拍有向前、向右、向下的运动,但是速度比左边扣球要小,因此依据挥拍开始和结束位置,以及击球时速度,就可以判断是否有左边削球动作发生,即当检测到xb-xe<0、yb-ye>0、zb-ze<0且v′0>|vix|>v0、v′1>|viy|>v1、v′2>|viz|>v2,其中v′0、v0、v′1、v1、v′2、v2为预先给定的阈值,则判断此次击球动作为左边削球。左边削球动作发生后,依据击球时刻三个方向上的用力情况,对球在三个方向上分别赋予一个与对应方向上的用力情况成正比的速度,且给球一个自旋转速度,该速度的大小与球击时三个方向作用力的合力的绝对值成正比。
G、大力扣球:大力扣球的特征是,球拍从上往下迅速下降,略微有向前运动。依据此特征,当检测到zb-ze<0、yb-ye>0且|viy|>v0;其中:v0为预先给定的阈值,则判断此次击球动作为大力扣球。在本发明中,当大力扣球动作发生后,球在Y,Z轴上将获得一个与对应轴上用力情况成正比的速度,且在Y轴上的比例,要比在Z轴上的比例要大。
从上面的阐述中,可以看出,在本发明中,右边扣球与右边削球,左边扣球与左边削球极为相似,但是扣球速度的绝对值要大于削球速度的绝对值,以此区分扣球和削球动作。
最后,将人的空间位置数据、经计算得出的击球动作类型、球被击后的速度和方向输出反映到虚拟乒乓球运动场地的虚拟目标、球拍和球上,使得虚拟的乒乓球运动场地的虚拟目标作出与现实中人一样的打球动作,产生一样的打球效果。
以上阐述的都是接球过程,还有发球动作。真实打球的时候,在发球时需要向上抛球,在采集硬件前,同样需要一个上抛动作,可以上扬手中的乒乓球拍,根据乒乓球拍上升过程中的速度,决定抛出的球的高度;然后可以像现实中打球一样,将球打出去,在这个抛弃、打球的发球过程,会一直计算球拍的位置和球的位置,若两者位置相交,则球被击中了,击中后,球就会按被击的情况做出运动动作。至此,一个完整的发球过程结束了。
在本发明中,主要阐述的是人打球动作、以及打球效果如何在显示器上显示出来。至于球打出场的判断和球没有过网的判断并非本发明的重点,具有人工智能的虚拟人如何接发球也不是本发明的重点。
提供一种基于计算机的虚拟乒乓球运动控制系统,包括:
基于视频的点数据采集单元:用于对人体身上和球拍上设置的跟踪点各个时刻的空间位置点数据进行采集,将采集到的代表人体空间位置信息的点数据和代表球拍空间位置的点数据送入计算单元;
计算单元:用于对球拍空间位置点数据进行加工处理,计算不同时刻的速度、加速度,进而计算不同时刻的力度;对人体空间位置点数据进行映射处理,将球拍不同时刻的速度、力度、球拍空间位置点数据和映射处理后的人体空间点数据送入挥拍计算单元;
挥拍计算单元:用于根据球拍速度数据判断是否有挥拍动作,并记录下挥拍开始点和结束点的空间位置信息,将挥拍开始点、结束点的空间位置信息和计算单元传入的数据一起送入插值单元;
插值单元:用于对球拍空间位置点数据进行插值,将插值后的球拍空间数据和挥拍计算单元传入的数据一起送入相交计算单元;
相交计算单元:用于判断球拍与球是否相交,将插值单元传入的数据送入挥拍动作类型判断单元;
挥拍动作类型判断单元:用于根据挥拍动作的开始点,结束点位置,以及击打到球时刻的球拍速度,判断此次击球的动作类型,依据挥拍动作的类型,以及挥拍动作的力度,给球被击后的速度和方向,将此挥拍动作类型、球被击后的速度和方向送入输出单元;
输出单元:用于将映射处理后的人体空间位置数据、经计算得出的挥拍动作类型、球被击后的速度和方向显示到显示系统。
其中,插值首先判断需不需要插值,也即判断球拍的挥拍开始点(xb,yb,zb)和挥拍结束点(xe,ye,ze)之间所有相邻两点的空间距离是否在预定的距离之内,若大于预定距离,则在相邻的球拍位置点之间均匀地插入多个点,然后将插值后的球拍空间数据和挥拍计算单元传入的数据一起送入相交计算单元,将若不需要插值,则直接将挥拍计算单元传入的数据送入相交计算单元。将若挥拍计算单元经过计算发现没有挥拍动作,也即接球失败,此时不需要进一步考虑,直接到输出单元显示接球失败;若相交计算单元经过计算发现球拍和球没有相交,也即球拍没有打击到球,此时不需要进一步考虑,直接到输出单元显示接球失败。
启动终端计算机,现实中的人正对显示器和采集硬件,进入虚拟乒乓球运动项目,在显示器上显示一个乒乓球比赛场地和乒乓球桌,靠近显示器外面有一个动画人物,代表着现实中进行乒乓球项目的人,现实中的人的空间位置变化和打球动作都会在此动画人物中体现;靠近显示器里面还有另外一个动画人物,是虚拟的具有人工智能的机器人物,现实中的人通过把空间位置和打球动作作用到靠近显示器外面的动画人物就可以和机器人物打球了。
实施本发明的基于计算机的虚拟乒乓球运动控制方法及系统,具有以下有益效果:能更真实反映出人体动作和挥拍动作,能够准确地计算出是否真的击到了球,并且能够真实的反映击球的动作类型。
附图说明
图1是本发明一较佳实施例提供的一种基于计算机的虚拟乒乓球运动控制方法的流程图;
图2是本发明一较佳实施例提供的一种基于计算机的虚拟乒乓球运动控制方法的基于采集硬件的坐标系示意图;
图3是本发明一较佳实施例提供的一种基于计算机的虚拟乒乓球运动控制方法的虚拟坐标系示意图;
图4是本发明一较佳实施例提供的一种基于计算机的虚拟乒乓球运动控制方法的插值方法示意图;
图5是本发明一较佳实施例提供的一种基于计算机的虚拟乒乓球运动控制系统的结构示意图;
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1是本发明一较佳实施例提供的一种基于计算机的虚拟乒乓球运动控制方法的流程图。如图1所示,包括以下步骤:
S1)在人体上设置两个跟踪点,第一跟踪点代表人体的头部或躯干的空间位置信息,第二跟踪点代表人体的手部球拍的空间位置信息;
S2)不断地采集上述两个跟踪点的空间位置信息;
S3)根据采集的上述两个跟踪点的空间位置信息进行计算;
S4)根据上述计算结果控制显示系统所显示的虚拟乒乓球运动的过程。
需要说明的是,本发明中设置跟踪点,并对其空间位置数据进行采集的过程可以通过多种方法实现。在一个实施例中,跟踪点可以为具有高反光特性的材料,由红外发射装置向其发射红外光,再通过视频采集跟踪点不同时刻的空间位置数据,进行后续的处理。
图2是本发明一较佳实施例提供的一种基于计算机的虚拟乒乓球运动控制方法的基于采集硬件的坐标系示意图。如图2所示:基于采集硬件坐标系是以采集硬件为坐标原点的坐标系,步骤S2采集到的每个跟踪点对应的一组数据点都表示为三元组(X,Y,Z),其中X代表数据点在X轴的位置,且X值增大表示跟踪点位置右移;Y代表数据点在Y轴的位置,且Y值增大表示跟踪点位置上移;Z代表数据点在Z轴的位置,且Z值增大表示数据点前移。
步骤S3包括:在显示器中的虚拟乒乓球桌上建立一个虚拟的坐标系,选取水平向右方向为虚拟坐标系的X轴方向,竖直向上方向为虚拟坐标系的Y轴方向,垂直于显示器屏幕向里的方向为虚拟坐标Z轴方向,虚拟坐标系的原点在虚拟乒乓球桌的中心。
图3是本发明一较佳实施例提供的一种基于计算机的虚拟乒乓球运动控制方法的虚拟坐标系示意图。如图(3)所示,细型线条是乒乓球桌的示意图,粗型黑色线条是虚拟坐标系的坐标轴。可见这个虚拟坐标系和摄像头坐标系是完全一致的即相同的方向,相同的数值大小,只是一个用于描述跟踪点的位置,一个用于将跟踪点位置数据表现在显示器上,此外虚拟坐标系还用于描述乒乓球的空间位置。有了这两个坐标系后,本发明所使用的跟踪点空间位置数据,就可以直接用到虚拟坐标中,在虚拟坐标系中球拍的空间位置数据,运动速度数据,挥拍用力数据都和摄像头坐标系中对应数据是一模一样的。
在本发明所述的基于计算机的虚拟乒乓球控制方法中,步骤S3进一步包括:将用于反映人的空间位置信息的跟踪点和用于反映球拍的空间位置信息的跟踪点分别标记为A点和B点。A点的空间位置数据为(xA1,yA1,zA1),(xA2,yA2,zA2),......,(xAi,yAi,zAi),......,其中(xAi,yAi,zAi)代表着A点在第i时刻的空间位置;B点的空间位置数据为(xB1,yB1,zB1),(xB2,yB2,zB2),......,(xBi,yBi,zBi),......,其中(xBi,yBi,zBi)代表着B点在第i时刻的空间位置。在本发明中,将A点用于反映人的位置,B点用于反映乒乓球拍的运动。对A点数据的处理方式比较简单:直接把基于采集硬件的坐标系的数据值,也即采集硬件采集到的数据值映射到虚拟坐标系中,因虚拟坐标系和基于采集硬件的坐标系是完全一致的,即相同的方向,相同的数值大小,故映射到虚拟坐标系的数据值和采集到的数据值是一样的,除此映射处理过程之外对A点不需要其他更多的分析。B点的使用方式比较复杂,这里详细阐述本发明中是怎么使用B点,也就是人手持的乒乓球拍位置数据点使用方式。为了描述上的方便,将B点的空间位置数据重新改写为:(x1,y1,z1),(x2,y2,z2),......,(xi,yi,zi),......,其中(xi,yi,zi)代表着第i时刻,乒乓球拍的空间位置坐标。有了球拍在各个时刻的空间位置坐标,可以进一步求出球拍的运动信息,如速度,加速度,挥拍的力度等。具体计算各个数据的公式为:
第i时刻的速度公式:在X轴上的速度:vix=(xi-xi-1)/t、在Y轴上的速度:viy viy=(vi-vi-1)/t、在Z轴上的速度:viz=(vi-vi-1)/t,其中t=1/30s;
第i时刻的加速度公式:在X轴的加速度:aix=(vix-v(i-1)x)/t、在Y轴上的加速度:aiy=(viy-v(i-1)y)/t、在Z轴上的加速度:aiz=(viz-v(i-1)z)/t,其中t=1/30s;
有了各个时刻各个方向上的加速度,就可以对对应时刻对应方向上的用力情况做出分析:在X轴方向上的用力:fix=aix×k、在Y轴方向上的用力:fiy=aiy×k、在Z轴方向上的用力:fiz=aiz×k,k是一个比例系数。
在步骤S4中,还包括判断是否有挥拍动作以及是否打击到乒乓球。
在前面的阐述中,已经阐明了在某时刻挥拍速度在三个坐标轴上的分速度,它们分别是v
ix、v
iy、v
iz,以及在使用的力度在三个坐标轴上的分力度,它们分别是f
ix、f
iy、f
iz。在本发明中,将挥拍打球动作分为平推球、向上挑球、右边扣球、左边扣球、大力扣球、右边削球、左边削球这几个打球动作。判断是否有挥拍打球动作,是看球拍运动的速度,若三个方向上分速度的合速度达到给定的阈值v
0、即
则判定有了挥拍动作,记录下该时刻球拍所处的空间位置坐标(x
b,y
b,z
b),此后、当合速度小于给定的阈值v
0、即
判定挥拍动作结束,记录下该时刻球拍的空间位置坐标(x
e,y
e,z
e);若三个方向上分速度的合速度达到给定的阈值v
0,则没有挥拍动作,此次动作结束。
要判断球拍是否打到球,在这里需要注意到两个方面是:一、由于采集硬件每秒只采集30个位置坐标,而人挥拍的各个位置是连续的,所以这些坐标不可能完全和球拍的位置一模一样;同样道理,球的位置数据也是基于计算机时钟,每隔一定时间计算一次的,也不可能和真正球运动时位置一模一样;二、球和球拍都是有大小的,而本发明所使用的空间位置数据都只是点的坐标信息。所以在计算球拍与球相交时,需要注意考虑这两个问题。
在本发明中,球的位置是由计算机计算出来的,虽然不是完全和真实的球的连续位置一模一样,但是由于计算的数据点足够多,所以可以当作连续位置来使用;而球拍的位置秒钟只有30个数据,那么当进行像大力扣球这样的动作时,整个动作下来,只有几个数据点,且每个数据点之间的距离比较大,球可能在某个时刻经过两个点之间,而球拍也经过这个位置,即球拍击到了球,但是因为采集来的只有几个点而没有中间点,就漏过了球拍与球相交的情况。这时就不能简单的看这几个点是否与球相交来判断球拍是否打到球。本发明解决这种快速挥拍时,球拍位置数据点少的方法是采用线性插值的方法:判断球拍的挥拍开始点(xb,yb,zb)和挥拍结束点(xe,ye,ze)之间所有相邻两点的空间距离是否在预定的距离之内,若大于预定距离,则在相邻的球拍位置点之间均匀地插入多个点,以作为所述球拍的位置点,即将相邻的两个点连成线段,再在每条线段上都均匀的选取多个点,让选取出来的点,和原先传上来的点一起描述球拍的空间位置。
图4是本发明一较佳实施例提供的一种基于计算机的虚拟乒乓球运动控制方法的插值方法示意图。如图4所示,实点是采集硬件传上来的点,由于速度快,这些点之间的距离很大,球可能在某时刻经过两个实点之间,而球拍也经过这个位置,但如果仅考虑实点位置,则漏过了球拍和球相交的情况,通过在实点之间插入虚点,在实点和虚点处都考虑球拍是否与球相交,就避免了出现漏点的情况。
有了挥拍动作之后,就要判断此次挥拍有没有打到球,也即球拍与球是否相交。由于实际中的乒乓球是具有大小的球体,其最主要的特征是球的半径,标记为r,球拍也是有大小的,本发明中将球拍看成一个圆形的平面,主要要考虑的因素也是球拍的半径,标记为R。判断某时刻球拍是否打到球,就是判断该时刻球是否与球拍相交,本发明采用两个步骤来判断球是否与球拍相交。第一步,计算球位置点到球拍所在平面的距离,若这个距离小于球的半径r,则计算第二步,否则之间判断球和球拍不会相交;第二步,计算球位置点到球拍位置点的距离,若此距离小于R,则判断球与拍相交,否则判断球与球拍不相交。若球和球拍不相交,即球拍没有击到球,此次动作结束。
在球拍和球相交之后,也即球拍打到球后,步骤S4还需要判断挥拍动作,以及打到球后,该挥拍对球的运动产生怎么样的影响。
下述几种类型的动作可以通过速度判断,也可通过位移判断,还可通过速度加位移判断。
A、平推球:平推球的特点是,球拍在上下,左右方向上的位移较小,而在Z轴方向上的位移较大,因此,当|xb-xe|<dx,|yb-yd|<dy,且|zb-ze|>dz,其中dx、dy、dz为预先给定的阈值,则判断此次击球动作为平推球。在本发明中平推球主要对球在Z轴方向上的速度影响较大,依据击球时刻,在Z轴方向上的用力fiz,给球一个在Z轴方向上的初速度,该速度与fiz成正比,在X,Y轴上的初速度直接赋零值。也可以通过速度判断是否为平推球,计算在X轴、Y轴、Z轴方向的速度,如果其在Z轴方向上的速度较大,且在X轴、Y轴方向的速度几乎为零,则也认为是平推球。
B、向上挑球:向上挑球的特点是,球拍在X轴方向上的速度非常小,几乎为零,而在Y轴正方向上有较明显的速度,因此,当|vix|<v0、|viz|<v1、|viy|>v′0;其中v0、v1和v′0为预先给定的阈值,则判断此次击球动作为向上挑球。在本发明中向上挑球主要对球在Y轴和Z轴方向上的速度影响较大,因此,依据击球时刻,在Y轴、Z轴方向上的用力fiy、fiz;给球在Y轴,Z轴上分别赋予一个同该轴方向上用力成正比的速度,而对于X轴方向的速度直接赋予零值(力度也可以和速度成正比)。也可以通过速度判断是否为向上挑球,判断方法与平推球类似。
C、右边扣球:右边扣球也就是右手杀球动作,该动作的特征是,向下,向前,向右的速度都比较大,除了速度之外,右边扣球还有另一个明显的特征是,球拍是从右往左运动,挥拍动作开始点在挥拍动作结束点的右边,依据此事实,在本发明中,当击球时|vix|>v0、|viy|>v1、|viz|>v2,且xb-xe>0;其中:v0、v1、v2为预先给定的阈值,即击球时三个方向都有较大的速度,且球拍是从右往左运动,则判断此次击球是右边扣球。使用右边扣球动作打球时,当球被击打到球后,球迅速向前下降,且有向左偏移的运动,因此,在本发明中,当右边扣球动作击打到球后,对球速度的赋值与此动作时在三个方向上的用力成正比,比例是预先给定的。
D、左边扣球:左边扣球的特征和右边扣球的特征相似,速度比较大,只是挥拍动作开始点在挥拍动作结束点的左边,依据此事实,在本发明中,当击球时|vix|>v0、|viy|>v1、|viz|>v2,且xb-xe<0,即击球时三个方向都有较大的速度,且球拍是从左往右运动,则判断此次击球是左边扣球。左边扣球后,对球速度的赋值方式和右边扣球完全相同。
E、右边削球:右边削球的特征是,球拍有向前、向左、向下的运动,但是速度比右边扣球要小,因此依据挥拍开始和结束位置,以及击球时速度,就可以判断是否有右边削球动作发生,即当检测到xb-xe>0、yb-ye>0、zb-ze<0且v′0>|vix|>v0、v′1>|viy|>v1、v′2>|viz|>v2,其中v′0、v0、v′1、v1、v′2、v2为预先给定的阈值,则判断此次击球动作为右边削球。右边削球动作发生后,依据击球时刻三个方向上的用力情况,对球在三个方向上分别赋予一个与对应方向上的用力情况成正比的速度,且给球一个自旋转速度,该速度的大小与球击时三个方向作用力的合力的绝对值成正比。
F、左边削球:左边削球的特征是,球拍有向前、向右、向下的运动,但是速度比左边扣球要小,因此依据挥拍开始和结束位置,以及击球时速度,就可以判断是否有左边削球动作发生,即当检测到xb-xe<0、yb-ye>0、zb-ze<0且v′0>|vix|>v0、v′1>|viy|>v1、v′2>|viz|>v2,其中v′0、v0、v′1、v1、v′2、v2为预先给定的阈值,则判断此次击球动作为左边削球。左边削球动作发生后,依据击球时刻三个方向上的用力情况,对球在三个方向上分别赋予一个与对应方向上的用力情况成正比的速度,且给球一个自旋转速度,该速度的大小与球击时三个方向作用力的合力的绝对值成正比。
G、大力扣球:大力扣球的特征是,球拍从上往下迅速下降,略微有向前运动。依据此特征,当检测到zb-ze<0、yb-ye>0且|viy|>v0;其中:v0为预先给定的阈值,则判断此次击球动作为大力扣球。在本发明中,当大力扣球动作发生后,球在Y,Z轴上将获得一个与对应轴上用力情况成正比的速度,且在Y轴上的比例,要比在Z轴上的比例要大。
图5是本发明实施例提供的一种基于计算机的虚拟乒乓球运动控制系统的结构示意图。如图5所示,基于视频的点数据采集单元51、计算单元52、挥拍计算单元53、插值单元54、相交计算单元55、动作类型判断单元56和输出单元57。
基于视频的点数据采集单元51对人体身上和球拍上设置的跟踪点各个时刻的空间位置点数据进行采集,将采集到的人体空间位置点数据和球拍空间位置点数据送入计算单元52;计算单元52用于对基于视频的点数据采集单元51传入的球拍空间位置点数据进行加工处理,计算不同时刻的速度、加速度,进而计算不同时刻的力度,对基于视频的点数据采集单元51传入的人体空间位置点数据进行映射处理,将球拍不同时刻的速度和力度、球拍空间位置点数据和映射处理后的人体空间点数据送入挥拍计算单元53;挥拍计算单元53根据球拍速度数据判断是否有挥拍动作,若判断有挥拍动作,记录下挥拍开始点和结束点的空间位置信息,并将挥拍开始点、结束点的空间位置信息和计算单元52传入的数据一起送入插值单元54;插值单元54首先判断需不需要插值,若需要插值,则对球拍空间位置点数据进行插值,将插值后的球拍空间数据和挥拍计算单元53传入的数据一起送入相交计算单元55;相交计算单元55用于判断球拍与球是否相交,若相交,即球拍击打到乒乓球,则将插值单元54传入的数据送入挥拍动作类型判断单元56;挥拍动作类型判断单元56根据相交计算单元55传入的挥拍动作的开始点,结束点位置,以及击打到球时刻的球拍速度,判断此次击球的动作类型,依据挥拍动作的类型,以及挥拍动作的力度,给球被击后的速度和方向,将此挥拍动作类型、球被击后的速度和方向送入输出单元57;输出单元57用于将映射处理后的人体空间位置数据、经计算得出的挥拍动作类型、球被击后的速度和方向显示到显示系统。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。