首页 理论教育实验设计:人体动作识别视频特征提取技术探究

实验设计:人体动作识别视频特征提取技术探究

【摘要】:如图5.2所示显示了实验中获取的“走”和“挥手”两类视频片段和前景序列。图5.2“走”和“挥手”的视频片段及实验中获取的前景序列“走、慢跑、跑”的视频,人从画面一端进入,从画面的另一端出去,有自然的分段,每段一般为15~35帧;“拳击、挥手、拍手”3类视频没有自然的分段,实验中按每30帧一段进行了划分。由此,提出的视频特征属于第5.3.1节所述的第2类特征。

1.实验素材与视频处理软件

实验对象是固定摄像头下单人运动视频录像,选用Christian Schuldt等制作的行为视频作素材[146]。该视频数据库称为KTH行为数据库,包括6种行为,分别是走、慢跑、跑、拳击、挥手和拍手。每类行为视频分别由25人,在4类不同的背景下录制。第1类是静态稳定的背景;第2类摄像头是固定的,但是镜头不断地拉近与拉远,录像范围变大变小;第3类录像中人穿了不同的衣服;第4类整个画面的光照不断变化。视频25帧/s,每帧120×160像素

openCV是由Intel公司资助的开源计算机视觉函数库。它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。openCV的功能包括处理图像、视频和各种动态数据结构的操作,也包括相关的分析与识别算法,如对光流、运动分割、跟踪的分析以及HMM模型等。视频前期处理采用openCV的基础功能实现。

2.获取前景序列段

从视频文件中提取出运动前景序列是第一步工作。首先,对视频帧进行高斯平滑,以清除每帧中的细小噪声,而保留每帧的灰度分布特征。之后,对不同类型的视频采用不同方法提取前景。减背景技术是固定摄像头录像中取出运动前景的最直观的技术[121]。在实验视频中,“走、慢跑、跑”的视频一般是人从画面一端开始运动,从画面的另一端出去。实验中采用帧差累积法动态生成与更新背景,再采用减背景技术获取运动的前景帧序列;实验视频中的“拳击、挥手、拍手”3类视频是人站在画面中进行的,主要是手臂运动,如果采用帧差累积来生成与更新背景,减背景后只能获取手臂的运动,躯干部分没有了。注意到实验视频的背景以淡灰色为主,且大部分进行表演的人穿着深色衣服,所以对后3类视频简单地采用了固定颜色域值对视频帧进行分割。最后,对得到的前景序列进行形态学腐蚀和膨胀以平滑前景的边缘和填补小的空洞,这样获得了待处理的前景帧序列。如图5.2所示显示了实验中获取的“走”和“挥手”两类视频片段和前景序列。可以看出人的肤色与背景很接近,获得的前景帧中人脸与手等裸露的部分缺失了,但基本的人形是完整的。

图5.2 “走”和“挥手”的视频片段及实验中获取的前景序列

“走、慢跑、跑”的视频,人从画面一端进入,从画面的另一端出去,有自然的分段,每段一般为15~35帧;“拳击、挥手、拍手”3类视频没有自然的分段,实验中按每30帧一段进行了划分。由于实验中获取的前景技术较粗糙,一些视频无法获取较完整的人形,不能采用,这样最终获得的实验视频前景片段为640段,其中:走,36段;跑,46段;慢跑,44段;挥手,229段;拍手,131段;拳击,154段。

3.提取特征数据

对获取的每一前景帧,实验中提取人形在横和纵两个方向上不同区域的宽度及宽度内部的空档宽度(纵向即为高度)。首先找出人形的左右和上下边界线,形成人形矩形;将矩形在横竖两个方向分别均匀划分为若干区间;对每个横向区间,找出最宽的一行像素,取其宽度,并取得这一行中内部空档(背景区域)的累计宽度,为适应远景和近景的变化,将得到的宽度与当前矩形的高度相比,得到相对人高度的值,下面指的宽度均是指此相对宽度;纵向数据按相似的方法获取;为了反映人整体运动的方向与速度,找出每帧人形的质心坐标x和y。以横竖两个方向分别划分为5个区间为例,其示意图如图5.3所示。因为每个区间有最大宽度和最大宽度中的空档宽度两个数据,再加上质心坐标,每一帧获取的特征数据个数为:5×2+5×2+2=22。

图5.3 将一前景帧分成5行5列示意图

仍以每帧横竖两个方向分别划分为5个区间为例,一段视频将产生22个序列。计算这22个序列的帧间差,即从序列的第2项开始,用每个值减去序列中的前一个值,得到的仍是22个序列值,只不过序列的长度少了1。这22个序列中的前20个序列中,正值表示此区域当前帧较上一帧变宽了,数据为负则表示当前帧较上一帧变窄了。因此序列反映了视频中人运动时横向、纵向各区域宽窄变化,同时内部空档的宽窄变化;最后2个序列,反映了人的质心位置的变化。

以这22个序列来表征和识别运动,可以采用隐马尔可夫模型或动态时间规划方法来进行,目前研究也证实了这些方法对视频识别的有效性[140]。由于时序匹配的存储量大,识别算法复杂,本节采用了更简单的模式识别方法。为适应模式识别方法,需将序列特征提取出来,降低数据的复杂度。对于每个序列,忽略其中的0,进行同号合并,形成反映变化拐点的序列,序列的合并方法示例如图5.4所示。合并后的序列最简洁地反映了视频段中此区域的变化情况和质心x与y的变化情况。

图5.4 序列合并方法示例

合并后的序列仍是时间序列,我们希望获取反映此序列特征的特征值。考虑到6项运动具有周期性,实验中计算出序列的两个主要特征值,一是序列的频率,序列长度与视频段时间的比值,反映宽窄变化频率;二是序列的时间平均方差,按式(5.1)计算。式中X是序列中任一值,式(5.1)表示序列中每个数值与整个序列的绝对值的平均值的差的平方和,再除以视频段时间,本书中称其为时间平均方差,请注意其与统计中方差的区别。以此时间平均方差反映序列中宽窄变化的时间平均幅度。

如果横竖两个方向分别划分为5个区间,则一段视频最终可获取22×2=44个特征值。用这44个值组成一个特征向量,向量分量按横向1~5区间特征、纵向1~5区间特征、质心特征顺序排列,其结构如下:

[rf 1,rd 1,rsf 1,rsd 1,…,cf 1,cd 1,csf 1,csd 1,…,xf,xd,yf,yd]

其中,rf 1表示第1行(横向第1区间)宽度变化的频率;rd 1表示第1行宽度变化的时间平均方差;rsf 1表示第1行空档变化的频繁;rsd 1表示第1行空档变化的时间平均方差;cf 1表示第1列高度变化的频率;……;xf表示质心X变化的频率;……;yd表示质心Y变化的时间平均方差。由此,提出的视频特征属于第5.3.1节所述的第2类特征。

4.模式识别软件

PCP(Pattern Classification Program)是一组有监督学习模式识别分类算法开源软件,适用于由多维向量表征的模式分类任务[149]。PCP实现的算法有线性参数分类、二次参数分类、线性判别式分类、k最近邻分类、神经网络分类以及支持向量机分类等,能够进行分类、交叉验证和主成分分析等。利用PCP进行分类识别,一般应先将数据集分成训练集和测试集两个子集;选择一种识别方法后一般先选择学习,以从训练集中学习到模式;在学习过程中有些算法的参数要确定和优化,PCP可以自动将训练集进行交叉检验(crossvalidate)得到一些优化的参数,另外有一些参数需要用户指定;学习得到的模式用来对测试集进行识别,得出识别精度及详细的识别结果。识别精度的计算方法如式(5.2)。

线性判别式模式识别方法设定一组线性判别函数,并利用训练样本计算线性判别函数的有关参数。PCP采用的是标准的最小二乘线性判别式分类算法。PCP的线性参数分类方法和二次参数分类方法采用的是正态分布贝叶斯分类器。PCP的支持向量机使用的是台湾大学林智仁副教授等开发设计的SVM模式识别与回归软件,Libsvm的程序[150]

5.实验项目设计

为验证提出特征对行为识别的有效性,分别做了5组实验:

(1)以一组特征数据为源,分别采用各类模式识别方法,测试数据的特性。

(2)分别采用5×5、10×10、15×15、20×20划分前景,测试划分粗细程度对识别精度的影响。

(3)考虑采用不同长度的视频分段对测试识别精度的影响。

(4)对特征数据集进行线性判别分析,测试特征数据的线性可分性能。

(5)利用第3.2节的特异数据挖掘算法测试数据集的类内与类间距离特性。

以下第5.3.3~5.3.6小节将分别阐述这5组实验内容、结果及结论,最后对整个实验进行总结。