具体实施方式
参照图1,本发明的具体实现步骤如下:
步骤一,获取整个人体运动识别训练样本集X和测试样本集T。
(1a)从WEIZMANN人体数据库提取本发明试验所需的样本集,下载地址为http://www.wisdom.weizmann.ac.il/~vision/SpaceTimeActions.html;图2给出了数据库中的部分序列图像;
(1b)将WEIZMANN数据库中的视频按照8:1的比例构建训练样本集X和测试样本集T。
步骤二,对训练样本集X中视频,检测视频中的时空兴趣点。
(2a)对原始视频采用二维Gauss滤波器进行降噪,得到滤波后的视频数据L:
L=I*g,
其中,I表示原始视频数据,L表示滤波后的视频数据,g为高斯平滑核,g的计算公式为:
其中,x,y为像素坐标,σ为空间维度的尺度参数;
(2b)在时间维度上进行一维Gabor滤波,得到视频数据L在时间维度上的响应数据R,
其中,hev和hod是Gabor滤波器的一组正交对,其定义公式如下:
其中,ω=4/τ,t=2τ,τ为时间维度的尺度参数;
(2c)设定响应数据R的阈值将响应数据R大于阈值的点记为时空兴趣点。
步骤三,根据Fischler和Elschlager提出的图结构模型,将人体划分为头部、左上肢、左下肢、右上肢和右下肢部位。
步骤四,提取人体各部位的运动特征。
(4a)在各人体部位中,以时空兴趣点为中心,提取宽度为3*3、长度为19的视频时空块C;
(4b)对时空块C采用高斯平滑滤波进行去噪,并计算时空块中每一层图像的梯度G;
(4c)计算G中的最大梯度Gm,并记录Gm的大小r和方向θ;
(4d)在极坐标之内,显示时空块中所有最大梯度Gm的大小r和方向θ;
(4e)对于方向θ,选择每30度作为一个区域,总共划分12个区域,分别统计每个区域内方向θ的个数nθ(i);
(4f)对于大小r,按照大小r值的大小划分为5个直方图区域,分别统计每个区域中大小r的个数nr(j);
(4g)计算每个区域内大小r和方向θ分布个数的百分比dr(j)和dθ(i):
dr(j)=nr(j)/nr,
dθ(i)=nθ(i)/nθ,
其中,j表示大小r的第j区域,j=1,...,5,
nr(j)为第j区域中大小r的个数;nr为全部大小r的个数,
i表示方向θ的第i区域,i=1,...,12,
nθ(i)为第i区域内方向θ的个数;nθ为全部方向θ的个数;
(4h)将梯度的大小r和方向θ的百分比dr(j)和dθ(i)级联作为该时空块的统计梯度特征gi;
(4i)将时空块的统计梯度特征gi作为该部位的运动特征fi=gi;若某一部位包括多个时空块,则将所有时空块的统计梯度特征gi的均值作为该部位的运动特征其中,N表示部位中时空块的个数。
步骤五,计算视频中人体的重心G=(x0,y0)。
(5a)背景剪除:将视频的图像序列和背景图片进行差分处理,使用阈值法得到前景图像区域和背景图像区域,将前景图像区域的像素设为0,背景图像区域的像素设为1,获得原图像序列的前景二值图像m;
(5b)使用形态学中膨胀腐蚀的方法,对原图像序列的前景二值图像v填补坑洞,修补缺失部分,获得理想的前景二值图像m';
(5c)利用光栅扫描法从前景二值图像m'中,获得人体的边界像素点坐标(xi,yi);
(5d)利用人体边界像素点坐标(xi,yi),计算人体重心坐标G(x0,y0):
其中Nb为构成人体边缘的所有像素的个数,(xi,yi)为人体边界像素点坐标。
步骤六,计算视频样本中人体运动的速度特征
其中,vi'为即时速度, x0(i),y0(i)为当前帧的人体重心坐标,x0(i-1),y0(i-1)为前一帧的人体重心坐标,x0(i+1),y0(i+1)为后一帧的人体重心坐标。
步骤七,将人体运动的各部位的运动特征fi和速度特征进行级联,得到人体运动的最终特征,对于没有时空兴趣点的部位,用零补齐。
步骤八,按照上述步骤二至步骤七,分别将训练样本集X和测试样本集T中的所有运动视频提取特征,获得训练样本特征集X'和测试样本特征集T'。
步骤九,利用SVM算法对训练样本特征集X'进行训练学习,对输入测试样本特征集T'进行分类。
(9a)将训练数据先采用“leave-one-out”的方法进行交叉验证,选取交叉验证实验中分类准确率最高的参数作为最优参数;
(9b)将最优参数和训练样本特征集X'用于SVM训练分类器;
(9c)将测试样本特征集T'输入已经训练好的分类器,得到各类运动的预测标签L';
(9d)根据测试样本特征集T'的预测标签L'和真实标签L得出每一类的分类准确率,并画出混淆矩阵。
1.实验条件
实验所需的样本集来源于WEIZMANN数据库,包括bend,jack,jump,pjump,side,wave1,wave2,run,walk,skip十类运动视频,整个人体运动识别的样本有90个,其中各类运动样本各有9个,样本的大小均为144×180像素。图2给出了数据库中的部分序列图像。
硬件平台为:IntelCore2DuoCPUE65502.33GHZ、2GBRAM。软件平台为MATLABR2009a。
2.对比实验
本发明使用的对比实验方法是J.C.Niebles和李飞飞博士在文章“J.C.NieblesandL.Fei-Fei,“Ahierarchicalmodelofshapeandappearanceforhumanactionclassification,”IEEEConferenceonComputerVisionandPatternRecognition,2007.”中提出的基于形状和表观模型的人体运动识别方法。首先提取训练样本基于形状的特征,然后训练一个判别性分类器,最后通过计算测试样本特征和分类器中模型的相似性来实现分类。
3.实验内容与结果分析
仿真一,使用本发明对WEIZMANN数据库中动作wave1的第一个视频样本进行时空兴趣点的检测,检测结果如图3所示,图3中白点即为检测出的时空兴趣点。
从图3可以看出,本发明的方法能将人体运动时的时空兴趣点精确地检测出,且具备良好的表征能力。
仿真二,使用本发明对仿真一中的视频样本提取人体右上肢的时空块,时空块的横向展开图,如图4所示。
从图4中可以看出,本发明的方法能精确提取出时空块,且具备精确表征人体部位运动的能力。
仿真三,使用本发明计算仿真二中时空块各层的最大梯度,并将最大梯度的大小和方向在极坐标系中显示,结果如图5所示。
从图5中可以看出,本发明的方法能良好地表征人体部位的运动特征,且特征具有判别性。
仿真四,使用本发明对WEIZMANN数据库进行人体运动识别的仿真实验,步骤如下:
1)对WEIZMANN数据库在上述实验条件中进行训练样本和测试样本的划分;
2)对训练样本集X和测试样本集T进行特征提取,得到训练样本特征集X'和测试样本特征集T';
3)利用SVM算法对训练样本特征集X'训练,之后将测试样本特征集T'输入分类器得到各类运动的预测标签L';
4)根据测试样本特征集T'的预测标签L'和真实标签L,得出总的分类准确率为100%,并画出混淆矩阵,如图6所示。
从图6的混淆矩阵可以看出,经过调整参数,所有运动都能得到有效地识别,且分类准确率100%,高于对比实验中李飞飞博士的72.8%。
综上,本发明提出的人体运动识别方法有效可行,且提出的特征提取方法能准确的表征人体运动姿态,特征的表征能力强,较传统的图像描述方法维度低,在学习训练阶段能有效缩减时间和数据计算量,且有效地提高了人体运动识别的正确率。