一种徒手手势全自动跟踪的新方法

时间:2022-08-10 12:25:15

一种徒手手势全自动跟踪的新方法

摘 要:提出改进的Camshift算法跟踪手势,首先用Haar特征和单高斯肤色模型定位手掌手势,将手掌手势的外接矩形作为Camshift初始搜索窗口,从而实现全自动跟踪;用面向对象的思想将Camshfit算法封装成类,为每个手势建立一个类对象,从而实现双手手势跟踪;在跟踪过程中加入Kalman滤波算法预测手势位置,避免目标丢失问题。

关键词:手势跟踪;肤色模型;Haar特征;Camshfit;Kalman

中图分类号:TP391

手势跟踪是计算机视觉领域研究热点之一。人手是柔性物体,自由度大且手势变化多样,给跟踪带来很大困难。Camshift算法[1][4],具有速度快、鲁棒性好的优点,对跟踪目标的形变不敏感,可以应用在手势跟踪中。但Camshift有三个重要的缺点:(1)需手动初始化跟踪窗口,是一种半自动化的算法;(2)初始化窗口操作只能进行一次,意味着Camshift只能进行单目标跟踪;(3)由于没有预测机制,在目标被严重遮挡、受大面积相似背景颜色干扰或运动速度过快的情况下,易丢失跟踪目标。针对Camshift这三个缺点,本文提出了改进的算法。

1 手掌手势定位算法

1.1 基于Haar特征和Adaboost算法训练手掌手势分类器

Paul Viola和Michael Jones[2]提出了Haar特征和Adaboost算法。Haar特征包括五个基本矩形特征,如图1所示。前两个表示图像的边缘特征,中间两个表示线性特征,最后一个表示中心特征。

图1 Haar基本特征

Adaboost的中心思想是把多个弱分类器叠加成一个强分类器,再把多个强分类器级联起来,从而提高分类器的精度。本文采用200个正样本、1000个负样本、24*24的检测窗口,训练出一个手掌手势分类器。

图2 手掌手势正样本和负样本

1.2 单高斯肤色模型

研究表明,在YCbCr颜色空间中肤色的聚类性较好且服从正态分布。设肤色像素点在YcbCr颜色空间内服从正态分布N(M,C),M表示均值向量,C表示协方差矩阵,则:

其中,x=[Cb,Cr]T表示一个输入像素的色度向量,x代表的像素点是肤色点的概率为:

对于输入图像的每个像素点xi,计算出对应的肤色概率P(xi),归一化到[0,256]灰度级空间,即可得到肤色概率分布图。像素点值越大,是肤色的概率越高;反之,像素点值越小,是肤色的概率越低,如图3所示。

图3 肤色概率分布图

1.3 手掌手势定位算法

本文提出一种结合Haar特征和单高斯肤色模型的手掌检测方法:首先用训练好的Haar特征文件检测视频帧,得出候选手掌区域,其中可能包含误检区域;然后利用单高斯肤色模型,求出每个候选区域的肤色概率分布图;最后用Otsu算法二值化肤色概率分布图,计算每个候选区域中肤色面积的比例,若大于一个阈值(本文设为0.7),则判定为真实手掌区域;反之,则判定为误检的区域。若恰好有两个候选区域符合要求,则视为定位双手手掌手势成功。

2 结合Camshift和Kalman滤波的手势跟踪算法

2.1 Camshfit算法

利用目标的颜色分布进行跟踪,算法包括三个部分:

(1)Back Project算法:将图像的颜色空间从RGB转到HSV,提取H分量,计算H分量的直方图模型,用直方图模型中的统计值代替源像素点值,生成反向投影图;

(2)Mean Shift算法:设I(x,y)表示目标的反向投影图,计算零阶矩:M00=ΣxΣyI(x,y),计算一阶矩:M10=ΣxΣyx・I(x,y),M01=ΣxΣyy・I(x,y)。搜索窗口内反向投影图的质心为(xc,yc)=(M10/M00,M01/M00)。计算搜索窗口宽度w和长度l:,l=1.2w。将搜索窗口的中心移动到质心(xc,yc),重复以上步骤,直到满足收敛条件或移动距离小于设定的阈值。

(3)Camshift算法:将Mean Shift算法应用在视频流连续的帧中,把上一帧的跟踪结果窗口作为下一帧的初始化搜索窗口,不断迭代下去,从而实现连续的目标跟踪。

2.2 Kalman滤波算法

Kalman滤波是一个最优化自回归数据处理算法[3],中心思想是通过“预测―测量―修正”的方式不断估计系统的最优值,原理如下:

(1)预测方程:X′k=A・X′k-1+Wk P′k=A・P′k-1・AT+Q

(2)测量方程:Zk=H・Xk+Vk

其中,Xk表示状态向量,A表示状态转移矩阵,P′k表示误差协方差矩阵;Zk表示测量向量,H表示测量矩阵,Wk和Vk是协方差分别为Q和R的高斯白噪声。

(3)修正方程:Xk=X′k+Kk・(Zk-H・X′k) Pk=(I-Kk・H)・P′k

其中Kk表示Kalman增益系数:Kk=P′k・HT・(H・P′k・HT+R)-1

在实际使用时,需初始化状态转移矩阵A,测量矩阵H,状态向量Xk-1,误差协方差矩阵Pk-1。

2.3 本文算法流程

(1)应用2.3节中的手掌检测算法,定位两个手掌手势并得出其外接矩形坐标,假设为初始矩形1和初始矩形2,两个手势分别为目标1和目标2;

(2)将Camshift封装成类,为目标1和2建立两个Camshift类对象,对双手进行独立跟踪;

(3)分别初始化两个Camshift类对象的初始搜索窗口为初始矩形1和2,实现Camshift的全自动跟踪;

(4)将Kalman封装成类,分别为目标1和2建立两个Kalman类对象。使用Kalman滤波算法,首先要建立目标的运动方程。由于连续两帧时间间隔很短,可以把手势运动看成匀速运动。这样只需知道上一帧手势中心点坐标(xk-1,yk-1)和速度(vxk-1,vyk-1),就可得出预测公式和测量公式:

(5)FOR EACH FRAME IN VIDEO…DO:1)用Kalman预测目标1和2的中心点,设为K1和K2;2)设置Camshift搜索窗口的中心点为Kalman预测的目标中心点,即:Camshift类对象1的搜索窗口中心点为K1,Camshift类对象2的搜索窗口中心点为K2。搜索窗口的大小设为上一帧跟踪结果窗口的大小;3)运行Camshift算法,记录两个Camshift类对象跟踪结果窗口中心点坐标C1和C2,此坐标作为Kalman滤波的测量值,即:Z1=C1,Z2=C2;4)根据Kalman修正公式,用Z1和Z2修正Kalman预测结果。

(6)视频结束,跳出步骤(5)的循环,算法结束。

2.4 实验结果分析

实验软件环境:Win7,VS 2012和OpenCV 2.4.5;硬件环境:Intel Pentium CPU-2.3G,2G内存。视频分辨率为640*480,24FPS。如图5所示,手掌手势定位阶段,在16帧时成功定位双手手掌,其中有2帧误检,无漏检。结合单高斯肤色模型,手掌定位准确率为100%。跟踪阶段,蓝色点是上一帧中Kalman修正值,红色点是Kalman预测值,绿色点是Camshift的跟踪结果,即测量值。跟踪过程中没有出现目标丢失的情况,可以实现实时跟踪。

图5 实验结果图

3 结束语

针对Camshift半自动化、不能跟踪多目标、容易受到干扰而丢失目标的问题,本文提出了一种双手徒手手势全自动跟踪的新方法。用Haar检测和单高斯肤色模型算法检测手掌手势,作为Camshift跟踪的初始化输入,解决半自动问题;将Camshift封装成类使其可以进行多目标跟踪;在跟踪过程中加入Kalman滤波器对手势位置进行预测,解决目标易丢失问题。经验证,该方法鲁棒性好,时间复杂度低,能满足实时性要求。

参考文献:

[1]Bakowski,A,Jones,G.A.Video surveillance tracking using color region adjacency graphs.Seventh International Conference on Image Processing and Its application in 1999.

[2]Viola P,Jones M.Rapid object detection using a boosted cascade of simple features[C]//Computer Vision and Pattern Recognition,2001.CVPR 2001.Proceedings of the 2001 IEEE Computer Society Conference on.IEEE,2001,1:511-518.

[3]Kalman R E.A new approach to linear filtering and prediction problems[J].Journal of basic Engineering,1960(01):35-45.

[4]唐文平.基于Camshift的手势识别跟踪系统[D].西安电子科技大学,2012.

作者简介:王海鹏(1989-),男,安徽宿州人,研究生在读,研究方向:计算机多媒体;叶福川(1983-),男,四川达州人,研究生在读,研究生方向:网络教育;尹治本(1954-),男,云南腾冲人,教授,研究生,研究方向:数字视频图像处理。

作者单位:西南交通大学 信息科学与技术学院,成都 610031;西南民族大学 现代教育技术中心,成都 610041

上一篇:小学数学一题多解之我见 下一篇:基于Retinex理论的图像增强算法研究