发明内容
本发明的目的是针对背景技术的不足设计一种基于人体全局特征直方图熵的动作检测方法,从而达到提高人体动作识别精确度、简化模板匹配步骤、缩短运算时间的目的。
本发明一种基于人体全局特征直方图熵的动作检测方法的技术方案分为建库和识别两个步骤。建库阶段:首先采集视频,选择出一段完整动作的视频,再依次分割出该段视频每一帧中各个运动人体的完整图像,再求出该图像的直方图向量,然后对直方图向量进行归一化处理,再求出归一化后各类相邻图像的均值向量,按顺序链接各均值向量,得到一个均值向量维度×均值向量个数的矩阵,再求该矩阵的熵,得到一熵向量,然后对该熵向量归一化处理,最后对归一化后的熵向量定义,完成建立人体动作特征模板库;识别阶段:首先采集视频,再根据建库的方法求出一段视频的熵向量,再归一化处理,然后与模板库进行匹配,找出最模板库中最匹配的经归一化处理的熵向量,其对应的定义为该段视频的动作类型。
本发明的具体步骤如下:
步骤1:采集建立人体动作特征模板库的视频图像;
步骤1-1:使用摄像头采集包含运动人体的视频,并对视频进行分段,每段包含一个动作的完整过程,然后根据每段视频的动作对该段视频定义;
步骤1-2:选取一段视频,利用高斯模型从该段视频的每一帧中依次分割出若干尺寸尽可能小的子图像,每个子图像包含一个尽可能完整的人体形象;
步骤2:计算子图像直方图向量;
步骤2-1:根据子图像中各像素灰度值大小判断该像素是否为子图像的背景,如果是,则对该像素重新赋值得到人体剪影图像。
步骤2-2:将人体剪影图像等分为若干各方形区域;
步骤2-3:对每个方形区域进行与人体轮廓信息相关的直方图统计;
步骤2-4:将各区域统计的直方图进行拼接,形成表示该人体剪影图像的全局直方图;
步骤2-5:对该全局直方图进行归一化处理,得到全局直方图向量;
步骤3:对得到的全局直方图向量进行k-means聚类,并对同一类全局直方图向量标相同的编号;
步骤4:将全局直方图向量按照其对应的视频帧播放顺序排列,计算相邻且编号相同的全局直方图向量的均值得到一均值向量,并对应替换计算前编号相同的若干全局直方图向量,如这些编号序列具有周期性,则只选取其中的两个周期;
步骤5:计算熵向量;
步骤5-1:将得到的所有均值向量的每个相同位置处的分量横向链接,组成一个a×b的矩阵,其中a为均值向量的维度,b为均值向量的个数;
步骤5-2:对该矩阵的每一行求熵,得到一个熵向量;
步骤5-3:将该熵向量进行归一化处理,得到一直方图熵向量,然后根据最初选取视频段的定义对该直方图熵向量进行定义;
步骤5-4:重复上述步骤得到若干定义的直方图熵向量,从而建立人体动作特征模板库;
步骤6:特征识别
步骤6-1:采集视频并选取该视频的一小段进行处理;
步骤6-2:采用与建立人体动作特征模板库相同的方法处理选取的小段视频,得到该段视频的直方图熵向量;
步骤6-3:将得到的待测视频直方图熵向量与人体动作特征模板库中进行匹配,选择出模板库中与之最匹配的直方图熵向量,其定义则为待测视频中的任务动作类型。
其中步骤2-1判断子图像中像素灰度值在-3σ~3σ之间则对该像素赋值为225。
步骤2-3对每个方形区域进行梯度直方图统计。
步骤3的具体步骤的为:
步骤3-1:从所有全局直方图向量中,随机选取若干全局直方图向量作为中心向量;
步骤3-2:分别计算剩余全局直方图向量与各中心向量的卡方距离,并将其与之距离最近的中心向量归为一类;
步骤3-3:重新计算每个分类中的中心向量;
步骤3-4:重复步3-2、3-3直至新确定的中心向量与原中心向量相等或变化小于规定阈值;
步骤3-5:对同一类的全局直方图向量标相同的编号。
本发明通过建库和识别两个阶段完成对视频中人体动作的识别,建库阶段:首先采集视频,选择出一段完整动作的视频,再依次分割出该段视频每一帧中各个运动人体的完整图像,再求出该图像的直方图向量,然后对直方图向量进行归一化处理,再求出归一化后各类相邻图像的均值向量,按顺序链接各均值向量,得到一个均值向量维度×均值向量个数的矩阵,再求该矩阵的熵,得到一熵向量,然后对该熵向量归一化处理,最后对归一化后的熵向量定义,完成建立人体动作特征模板库;识别阶段:首先采集视频,再根据建库的方法求出一段视频的熵向量,再归一化处理,然后与模板库进行匹配,找出最模板库中最匹配的经归一化处理的熵向量,其对应的定义为该段视频的动作类型。从而具有提高人体动作识别精确度、简化模板匹配步骤、缩短运算时间的效果。
具体实施方式
本实施例以标准人体运动数据库为例,如KHT数据库、Weizmann数据库、UCF sports数据库,在Visual Stdio2010平台下,结合OpenCV标准库,使用C++编程进行处理仿真,并得到实验数据;本发明的实施流程图如图1所示。
步骤1、采集建立人体动作特征模板库的视频图像
标准人体运动数据库中的视频背景比较简单,动作类型十分明显,有利于运动人体子图像的提取。
将运动人体从视频帧的背景中分离出来,形成运动人体子图像序列,并将所有子图像中的背景像素灰度值赋为255。该子图像的尺寸m×n尽可能小,且能够将单个运动人体包含在内,示意图如图2所示:
步骤2、计算子图像直方图向量
将运动人体子图像序列的每一帧转换成直方图向量,具体如下:
2-1:将分离出来的运动人体子图像分割成若干个尺寸大小不同的块,本实施例如图3所示划分为3×3的9个区域;
2-2:对每一个块进行直方图的统计,此处计算梯度的方向直方图,把梯度范围0°~360°平均分成8份,即0°~45°、45°~90°、…、315°~360°,每份作为直方图的横坐标,如图4所示;
2-3:将这14个小块的局部直方图链接起来,形成一个更长全局直方图,用这个全局直方图表征单个的运动人体子图像,如图4所示,局部直方图的维度是8,全局直方图的维度是112;
2-4:对这个112维的全局直方图向量使用L1范数进行归一化,如图5所示,于是,视频中的每一帧运动图像转换成了一个直方图向量x。
步骤3、对训练样本进行k-means聚类
3-1:依据上述的步骤1与步骤2,计算大量训练视频中每一帧运动图像的直方图向量X,得到N个样本,X={x1,x2,x3,…,xN},示意图如图6所示;本实施例从各个标准数据库中各取一半的视频作为训练视频,另一半视频作为待测视频;
3-2:对所有的直方图向量X={x1,x2,x3,…,xN}进行k-means聚类处理,聚成50个聚类中心(Z1,Z2,Z3,…,Z50),聚类时,采用卡方距离χ2(x,Zi)计算样本x与聚类中心Zi的距离,卡方距离的计算公式, M为高维向量x1与x2的维度,此处M=112;
3-3:按照基数排序的排序规则,从正整数1至50对这50个聚类中心(Z1,Z2,Z3,…,Z50)进行编号,排序优先级从聚类中心的低维到高维;
3-4:对每一个直方图向量进行量化,即给各个直方图向量进行编号,编号取自直方图向量所属聚类中心的编号,如图7(a)、图7(b)。
步骤4、计算相邻且携带相同标签的直方图向量的均值
在训练视频中,计算具有相同标签的相邻直方图向量xj的均值 其中Ni为相邻且具有相同标签的直方图向量xj的个数,i为这些直方图向量xj共同的标签。这些参与当前均值计算的运动图像整体,用直方图均值向量表征,如图7(a)、图7(b)所示。
同一类型的人体动作执行速度有快有慢,如图7所示,图中的运动子图像序列提取自Weizmann视频数据库,(a)是Daria一个周期的跑步动作,(b)是Denis一个周期的跑步动作,虽然同样是跑步行为,显然Denis运动要快一些,完成一个周期的跑步动作,Denis只需要14帧,而Daria需要17帧。通过计算“具有相同标签的相邻直方图向量”的均值,使得同一动作类型的图像序列具有相同或相近的标签序列,克服这种因执行速度的差异所造成的影响,简化后续的匹配工作。如图7所示,Daria一个跑步周期的标签序列是21、21、49、49、49、49、36、36、21、21、21、49、49、49、49、36、36,Denis一个跑步周期的标签序列是21、21、49、49、36、36、36、21、21、49、49、49、36、36,通过求均值后的压缩,这两个标签序列都变成了21、49、36、21、49、36,这样便减少了数据量,同时也更加容易匹配;
步骤5、计算熵向量
5-1:在同一个运动子图像序列中,将所有直方图均值向量在相同位置处的分量链接起来,构成新的向量并归一化,如图8所示,新向量的个数等于直方图均值向量的维度112;
5-2:计算每个新向量的熵S,其中N'表示新向量的维度,即每个运动图像序列中直方图均值向量的个数,当为0时,取
5-3:将所有新向量的熵S链接起来,构成一个熵向量S,如图9所示,本实施例中熵向量的维度等于直方图向量的维度112;
5-4:将熵向量S使用L1范数进行归一化,即根据最初选取视频段的定义对该归一化后的熵向量进行定义;
5-5:,重复上述步骤得到若干定义的熵向量,建立人体动作特征模板库完成。
步骤6、特征识别
6-1:从实际的摄像头中取出的一小段运动视频,作为待测样本,或者在各个标准人体运动数据库中,每个人的运动图像序列取一半作为训练视频,另一半作为待测视频,以检验该方法的有效性;
6-2:根据步骤1到步骤5,对这些训练视频进行训练,得到大量的训练样本S(即表征运动视频的熵向量);
6-3:根据步骤1到步骤2,计算待测视频每一帧运动图像的直方图向量x;
6-4:计算待测视频每帧直方图向量x到50个聚类中心(Z1,Z2,Z3,…,Z50)的卡方距离
6-5:寻求这k个χ2(x,Zi)距离中最小且小于某一阈值threshold的卡方距离χ2(x,Zj),χ2(x,Zj)=minχ2(x,Zi),χ2(x,Zj)<threshold,其中1≤i≤50,threshold为给定的阈值;该卡方距离对应的聚类中心Zj的编号j,即该帧直方图向量x的标签j;若没有聚类中心Zi满足上述给定的条件,则令直方图向量x的标签为0;
6-6:根据步骤4,在待测视频中,计算相邻且携带相同标签的直方图的均值
6-7:根据步骤5,计算待测视频的熵向量S,然后对其归一化处理得到直方图熵向量;
6-8:使用最近邻法或SVM,将得到的待测视频熵向量与人体动作特征模板库中进行匹配,选择出模板库中与之最匹配的熵向量,其定义这位待测视频中的任务动作类型。