发明内容
本发明的目的是提供一种识别羽毛球比赛视频中精彩镜头的方法,该方法在找出羽毛球比赛视频中所有的全场比赛镜头的前提下,进行羽毛球比赛视频的高级语义分析;在高级语义分析阶段,进行运动员的检测与跟踪,并分析运动员的动作、运动量以及每个回合的比赛时间;在此基础上通过综合分析,定义了镜头的精彩度,即以下四个因素的加权平均值:运动量、由运动员轮廓识别的救球次数、由运动员轮廓识别的扣球次数、由角点运动轨迹识别的扣球次数;精彩度的值越大,表明镜头越精彩;最后选出精彩度最大的几个镜头作为最精彩镜头;
为实现上述目的,本发明采用下述的技术方案,其特征在于包括以下步骤:
步骤一,运动员检测与识别:对原始羽毛球比赛视频进行处理,找到其中所有的全场比赛镜头,并进行运动员的检测与跟踪,提取运动员的轮廓;
步骤二,运动员轮廓分析:将步骤一提取的运动员轮廓用外切矩形框标出,通过判断所述矩形框对角线的斜率来识别可能的运动员扣球镜头与救球镜头,斜率大于一定的阈值判定为扣球镜头,斜率小于一定的阈值判定为救球镜头;
步骤三,运动员光流场分析:识别步骤一中获得的羽毛球比赛视频中全场比赛镜头视频帧的角点,对所述角点进行追踪,角点的运动轨迹形成一个光流场;
步骤四,光流场聚类分析:将步骤三中得到的光流场用线段标出,作为运动员的运动轨迹,将这些运动轨迹进行聚类,并计算每一类运动轨迹的平均斜率,若斜率大于一定的阈值,则认为对应视频帧中可能存在精彩的扣球镜头;
步骤五,比赛镜头的时间长度分析:利用镜头场景的变化来判断比赛回合,通过每一回合的视频帧数和帧率得出每个回合的时间;
步骤六,运动员运动量分析:计算步骤二中所述矩形框的中心点,由中心点的运动轨迹获得相邻几帧中运动员的位移量,作为相应的运动量;
步骤七,精彩镜头判断:利用一个镜头的四个特征来表示该镜头的精彩度,所述四个特征分别是:镜头的运动量d1、镜头救球的次数d2、镜头内由运动员轮廓识别的扣球次数d3、镜头内由角点识别的运动员的扣球次数d4,采用公式(1)对镜头的运动量d1进行归一化:
M=d1/frameWidth*10 (1)
其中,M表示归一化后的运动量,frameWidth表示视频帧的宽度;
利用公式(2)计算镜头的精彩度:
C=σ1M+σ2d2+σ3d3+σ4d4 (2)
其中,C表示镜头精彩度,σ1,σ2,σ3,σ4表示相应的加权系数,其和为1,根据所得到的镜头精彩度C确定比赛的精彩镜头。
本发明所提供的识别羽毛球比赛视频中精彩镜头的方法找出了羽毛球比赛视频中的精彩镜头;有关的测试结果表明,本方法找出的镜头大多是争夺比较激烈,扣球救球次数较多的镜头。
具体实施方式
前已述及,本发明在找出羽毛球比赛视频中所有的全场比赛镜头的前提下,进行羽毛球比赛视频的高级语义分析。在高级语义分析阶段,进行运动员的检测与跟踪,并分析运动员的动作、运动量以及每个回合的比赛时间;在此基础上,定义了镜头的精彩度,即以下四个因素的加权平均值:运动量、由运动员轮廓识别的救球次数、由运动员轮廓识别的扣球次数、由角点运动轨迹识别的扣球次数。精彩度的值越大,表明镜头越精彩。最后选出精彩度最大的几个镜头作为最精彩镜头。
下面说明本发明的实现方式。需要注意的是,以下仅是示例性的列举了本发明的一种实施方式:
步骤一:运动员的检测与识别。
在全局比赛场景中,场地的位置一般是固定不动的,只有运动员在场地运动。为此,若能从镜头中分割出运动员来,对视频的精彩镜头分析是有帮助的。在全局场景中,将运动员看做前景,其他都看作背景。若能将前景分离出来,便识别出了运动员。本发明采用背景减除法提取前景,就是用一帧减去前一帧(也可能是后几帧),然后将足够大的差别标为前景。这种方法常常能够捕捉到运动目标的边缘。由于像素值总会受到噪声和波动的影响,应该忽略很小的差异,标识较大的差别。本发明采用背景减除方法,通过两帧之间做差,然后将差值进行二值化,最后进行中值滤波,以消除小的噪声,最后分别出运动员目标,识别出的运动员轮廓如图1所示:
如果将运动员的轮廓用矩形框标出,结果如图2所示:
由运动员的矩形轮廓图得到启发,如果能算出轮廓的长宽比,往往能得到一些精彩事件,例如图3所示,当长宽比大于一定数值时,往往是精彩的救球镜头。检测中设定一个阈值,不同的视频此参数可以调节,阈值在1.5与3.0之间。
下面根据长宽比识别救球镜头。首先需要识别矩形框的个数,一般情况下,羽毛球比赛为单打或者双打,由此识别的矩形框的个数为2或者4。但是由于噪声的干扰,摄像机的运动,有时候矩形框框起来的目标不一定是运动员。所以只有当矩形框的个数为2或者4时,此时一般来说是运动员比赛的情形。识别出比赛镜头后,设定长宽比的阈值,实际应用的情形中设定宽度比长度的区间为1.7到3.0,由此识别精彩的救球镜头。
对于视频中的扣球镜头,运动员方框的轮廓也可辅助分析。当矩形框的个数为2或者4(单打或者双打)时,此时一般来说识别出了所有的运动员。通过设定长宽比的阈值来判断扣球镜头。在识别这类精彩的扣球镜头时,设定长度比宽度的区间为2.4到4.0,由此来识别可能的扣球镜头。
步骤二:运动员的检测与识别。
在处理羽毛球比赛视频时,视频中运动的运动员是关注的对象。如果能对运动员进行跟踪,则能够识别出运动员的运动规律。经典的跟踪运动物体的方法是跟踪视觉上重要的关键点,而不是整个物体。有很多的局部特征可以进行运动员的跟踪。很明显,如果上一帧是从一面很大的空白白色墙壁上选择一个点,那么很难从视频的下一帧中再次寻找到这个点。因为对于干净的空白墙壁上的点来说,这些点都是一样的或者相似的,不容易从随后的视频中跟踪到这个点。相反,如果选择的点具有独一无二的特征,从视频的下一帧中再找到这个点的概率就非常之大。因此,角点就是这样的一类点,它的特征是独一无二的,或者至少接近独一无二,并且可以与另一张图像上的点进行参数化的比较[1]。
如果一个点在两个正教的方向上都有明显的导数,则这点是更倾向于独一无二的。直观上讲,角点(非边缘)是一类含有足够信息且能从当前帧和下一帧中都能提取出来的点。最普遍使用的角点定义是由Harris提出的,定义的基础是图像灰度强度的二阶导数矩阵。考虑到图像所有的像素点,图像的二阶导数即形成一幅新的“二阶导数图像”,或者融合在一起形成一幅新的Hessian图像。这个术语源自于一个点的如公式(3)定义的二维Hessian矩阵:
对于Harris角点,使用每点周围小窗口的二阶导数图像的自相关矩阵。这个自相关矩阵的定义如公式(4)所示:
这里Wi,j是归一化的权重比例,但是通常被用作产生圆形窗口或高斯权重。Harris定义的角点位于图像二阶导数的自相关矩阵有两个最大特征值的地方,这在本质上表示以选择的角点为中心,周围存在至少两个不同方向的纹理(或者边缘),正如实际上来说,角点是由至少两个边缘相交于一点而产生。角点的这个定义还有另外一个优点。被跟踪的物体在移动过程中可能会旋转,找到同时对移动和旋转不变的量是非常重要的。只考虑自相关矩阵的特征值便能够达到这个目的。这两个最大特征值不仅可以判定一个点是否是一个好的可跟踪的特征点,同时也提供了对这个点进行识别的一个标识。
如图4所示,对羽毛球比赛视频帧提取角点,将角点用黑色符号标出。图中的角点代表了这幅图像的特征信息,而这些角点在下一帧中是容易跟踪到的。
光流是指当物体从视频场景中移动或者摄像机位移时图像中产生的相应移动变化的形式。这些变化被认为是图像中的每一个像素点有一个特定的速度矢量,这些矢量就形成了图像的光流场。如果图像中的每个像素都与速度关联,这样得到的就是稠密光流。稠密光流的方法需要使用某种插值方法在比较容易跟踪的像素之间进行插值以解决那些运动不明确的像素,所以稠密光流需要相当大的计算量。稀疏光流可以解决这个问题。稀疏光流的计算需要在被跟踪之前指定一组点,如果这些点是角点,那么跟踪就会相对稳定和可靠。在羽毛球比赛视频中,如果能够找到一帧中的角点,而后就可以采用稀疏光流在随后的视频帧中进行跟踪。
Lucas-Kanade(LK)算法是经典的稀疏光流跟踪算法。这种方法与图像金字塔一起,可以跟踪更快的运动。LK算法只需要每个感兴趣点周围小窗口的局部信息,所以它可以应用于稀疏内容。但是,使用小窗口的LK算法存在不足之处,较大的运动会将点移出这个小窗口,从而造成算法无法再找到这些点。金字塔的LK算法可以解决这个问题,即从图像金字塔的最高层(细节最少)开始向金字塔的低层(丰富的细节)进行跟踪。跟踪图像金字塔允许小窗口捕获较大的运动。
对于全局场景的画面,由于场地和其他物体一般来说是不动的,只有运动员在运动。由此,运用Lucas-Kanade光流法追踪运动的物体既可以得到运动员的运动轨迹。图5表示一段视频的前一帧,图6表示这段视频的相邻的后一帧。在后一帧追踪到的运动员的运动轨迹如图7中的黑色线条所示:
在全局场景中,将位置变化的角点单独找出后发现,这些角点在图中分别属于两个运动员(单打)或者四个运动员(双打),因此,很容易将这些角点聚为两类(单打比赛)或者四类(双打比赛),如图7所示。
本发明采用采用K均值聚类算法对提取的变化的角点进行聚类。具体算法如下:
输入:一帧图像中追寻到的所有角点。
输出:两个聚类中的角点。
1.设定要聚类的个数:2(单打比赛)或者4(双打比赛)。
2.将两帧中追踪到的运动的角点按坐标值进行聚类。
3.设定最大迭代次数为50。
4.首先任意选取亮点作为聚类中心点。
5.计算其他点和聚类中心点之间的距离,距离最近的归为一类。
6.计算各类中包含的点的平均距离。然后重复第五步,直到聚类中心不变或者达到最大迭代次数50次为止。
通过对提取的运动轨迹图发现,在图8中,位于下部的运动轨迹线聚类中,这些轨迹的算术平均斜率很大,而图8正是比较精彩的扣球镜头。由此得到启发,通过对所有追踪的运动的角点进行聚类后,算出每一类的运动轨迹的平均斜率,计算公式如公式(5)所示,即可设定一定的阈值进行扣球镜头的判定。在公式(5)中,xi代表同一个聚类中每一条运动轨迹的斜线的斜率,代表平均斜率。
本发明以2008年北京奥运会羽毛球比赛男单——鲍春来VS凯文(视频1)和2008年奥运会男单——林丹VS李宗伟(视频2)为分析素材,图9是本算法识别的一些精彩的扣球镜头的例子。
因为相邻的视频帧之间的变化很小,运动轨迹路线很短,运动的方向不容易进行判别。所以每隔几帧取一帧追踪运动的角点并判断运动的方向,这样从总体上把握运动的方向。通过设置比较小的斜率阈值,能够获得对于扣球镜头较高的查全率,但与之相对的是识别出来的镜头的查准率比较低。通过和运动员运动轮廓扣球镜头相结合,当角点识别判断出为扣球镜头的时候,如果通过运动员的轮廓识别判断这也是扣球镜头,则把所判定的视频帧作为精彩的扣球镜头。在具体实现时,运动员轮廓识别的长比宽的阈值设定为2.7-4之间(分别为阈值下限和阈值上限),角点识别的斜率的阈值设定为2.2(当判断出来的斜率的平均值大于2.2时,认为角点识别出了扣球镜头)。
步骤三:比赛回合的时间长度分析
对于羽毛球比赛来说,一个球是指某个运动员赢得一局中的一分。在一个全局比赛场景中,当场景由全局场景切换为其他场景时,往往意味着一个球的结束。而一个球持续的时间越长,意味着这一个球可能更精彩,因为运动员争夺这一分的时间比较长。由此得到的思想就是计算每一个全局镜头的时间长度,取时间长度相对较长的镜头作为精彩镜头。另外,时间较短的镜头也可能是精彩镜头。比如:发球后对方直接扣球得分。在时间较短的镜头中,有一些全景镜头不是拍摄的比赛,而是运动员在两球之间的间隙休息或者走动的场景。对于精彩镜头的识别需要排除这些干扰镜头。这些干扰镜头的时间都比较短。一种有效的排除这种干扰镜头的方法就是根据运动量进行判断。一般来说,当运动员比赛过程中,运动员处于不断运动的状态,相邻帧之间运动员的位置有明显的变化。而干扰镜头中,运动员处于静止或者运动比较缓慢的情况。
根据一个全场镜头的持续时间,将时间作为镜头的一个特征。镜头的时间特征采用公式(6)进行计算:
T=Fend-Fstart (6)
公式(5)中,Fend代表结束帧的编号,Fstart代表开始帧的编号,T代表时间长度(用一个镜头中帧的数量来表示)。由此得到所有镜头的时间长度,并作为镜头的一个特征写入到镜头相应的特征数组里面。按照镜头的时间长度进行排序,本发明选择的是堆排序,取前10段时间最长的镜头和后10段时间最短的镜头输出(不足10段镜头按实际镜头数取得)。在获取时间最短的镜头过程中,排除运动量小于1的干扰镜头情况。在时间比较长的镜头中,一般表现为双方的争夺比较激烈。在时间较短的镜头中,常常能够见到非常快的扣球镜头。
步骤四:运动员的运动量分析
运动员的运动量表示相邻帧中运动员移动的位移的大小。在比赛的过程中,当运动员的运动量比较大时,运动员通常跑动的比较多,往往意味着比赛双方在进行着激烈的较量。由此得到的思想就是计算运动员的运动量,运动量最大的镜头作为精彩镜头。算法步骤如下:
输入:所有的全场比赛镜头。
输出:运动量最大的几个镜头。
1.进行运动员检测,识别运动员所处的位置。识别出的每个运动物体用矩形框标出。当矩形框的个数为2(单打比赛)或者4(双打比赛)时,意味着此时一般是识别到了所有的运动员。
2.由于摄像机的拍摄角度一般来说是位于一方球员的后面,所以单打比赛的两个矩形框通常位于图像的上半部分和下半部分,而双打比赛的矩形框各有两个位于图像的上半部分和下半部分。如图10所示。计算出两个矩形框的中心点坐标,设中心点的坐标为(X,Y),则计算公式如公式(7)所示:
X=X0+1/2*width
Y=Y0+1/2*height (7)
公式(7)中,X0代表了矩形框左上顶点的X方向的坐标,Yo代表了矩形框左上顶点Y方向的坐标,width代表矩形框的宽度,height代表矩形框的高度。
3.分别计算矩形框的中心,即每个矩形框的对角线的交点的坐标(x,y)。根据坐标Y方向值的大小判断出矩形框是位于图像的上半部分还是下半部分。
4.如果是有两个矩形框,则每隔三帧计算位于图像上部的矩形框对角线的交点移动的距离d1,位于图像下部的矩形框对角线的交点移动的距离d2,然后将d1和d2取平均值d。
5.计算一个镜头中运动量d的平均值。如果是有四个矩形框,对于图像的上半部分来说,由于两个运动员的运动,所以在图像的上半部分两帧一共会有四个矩形框。计算下一帧的第一个矩形框相对于上一帧的两个矩形框的距离d1,d2,计算下一帧的第二个矩形框相对于上一帧的两个矩形框的距离d3,d4;对于图像的下半部分来说,同样的算法计算出d5,d6,d7,d8。将d1,d2,d3,……d8相加,然后除以8,作为平均移动距离d。
6.将镜头的运动量特征保存到镜头特征之中。将所有的运动量进行排序,选出运动量最大的10个镜头(如果不足10个镜头按实际镜头数取得)输出,作为运动量最大的精彩镜头。
步骤五:精彩镜头的判断
本专利选择一个镜头的四个特征来代表这个镜头进行综合判断,这四个特征分别是:镜头的运动量、镜头救球的次数、镜头内由运动员轮廓识别的扣球次数、镜头内由角点识别的运动员的扣球次数。上述四个因素分别记为d1,d2,d3,d4。其中,运动量d1是由像素点的距离来表示的,将其归一化为0-10的区间。归一化采用公式(8):
M=Di,j/frameWidth*10 (8)
在公式(8)中,M表示归一化后的运动量,Di,j表示相隔一定距离的帧之间以像素距离表示的运动量,frameWidth表示视频帧的宽度,因为要归一化为0-10的区间,所以在公式的最后要乘以10。
在识别救球和扣球的镜头过程中,如果是在同一个镜头内,每识别到一次救球或者扣球的动作就将相应的次数加一,最后作为两个因素加入到镜头的特征之中。定义镜头精彩度:
C=σ1M+σ2d2+σ3d3+σ4d4 (9)
其中,C表示镜头精彩度,M表示归一化后的镜头运动量,d2表示一个镜头内的救球次数,d3表示一个镜头内由运动员轮廓识别的镜头的扣球次数,d4表示一个镜头内由角点识别的运动员的扣球次数。σ1,σ2,σ3,σ4表示相应的加权系数,其和为1。公式的意义就是将镜头的四个特征进行加权平均,最后得到镜头的精彩度C。C值越大的镜头越精彩。