《电子技术应用》

基于Camshift和Kalman滤波的自动跟踪算法

来源:微型机与应用2011年第24期 作者:梁 娟, 项 俊, 侯建华
2012/3/16 13:42:18

摘  要: 针对传统的Camshift算法在跟踪时需要手动定位目标,在颜色干扰、遮挡等复杂背景中容易跟丢目标的问题,提出了一种基于Camshift和Kalman滤波的自动跟踪算法。首先利用帧间差分法Canny边缘检测法分割出运动目标的完整区域,然后用提取出的目标区域初始化Camshift算法的初始搜索窗口,从而实现了目标的自动跟踪。当背景中存在相似颜色干扰或者目标被严重遮挡时,采用Kalman滤波与Camshift算法相结合的改进算法进行跟踪。实验结果表明,本文改进算法在目标被严重遮挡、颜色干扰等情况下仍能有效、稳健地跟踪。
关键词: 目标跟踪; Camshift算法; Kalman滤波; 帧间差分法; Canny边缘检测


    视频序列中运动目标的跟踪是计算机视觉领域的一个重要的研究课题,它已广泛应用于电子监控系统、智能交通管理、医学、军事等多个领域。近年来,国内外许多学者对该领域进行了大量的研究,并且提出了许多不同的跟踪方法,如基于模型的跟踪方法[1]、基于特征的跟踪方法[2]、基于区域的跟踪方法[3]和基于轮廓的跟踪方法[4]等。Camshift(Continuously Adaptive Mean Shift)算法是一种基于颜色特征匹配的跟踪方法,该算法原理简单,具有实时性、稳定性和较强的鲁棒性,在简单背景中有较好的跟踪效果。但传统的Camshift算法是一种半自动的跟踪算法,目标的初始大小和位置需要手动选择,而且在背景中存在相似颜色干扰、遮挡等情况下容易跟踪失败。
    本文针对Camshift 算法的这些不足,提出了一种基于Camshift和Kalman滤波的自动跟踪算法,采用帧间差分法和Canny边缘检测算法自动定位运动目标,当遇到遮挡和颜色干扰时,引入Kalman滤波器对运动目标的位置进行预测。实验验证了该改进算法对遮挡和颜色干扰的鲁棒性和有效性。
1 运动目标检测
    视频序列中的运动目标检测是目标跟踪和目标识别等高级处理的基础。本文结合区域检测和边缘检测的方法准确地分割和定位出运动目标。首先,利用帧间差分法得到目标的差分图像,对差分图像进行高斯滤波、二值化处理后采用Canny边缘检测算法得到目标的边缘轮廓信息,再进一步提取出目标的运动对象面,实现目标标定。在跟踪过程中,用提取出的运动目标初始化Camshift跟踪算法的初始搜索窗口的大小,从而实现自动跟踪。
1.1 帧间差分法
   帧间差分法是最简单的背景估计方法,它取上一帧视频图像作为当前帧的背景模型,在相邻两帧间根据基于像素的差分并且阈值化来提取出图像中的运动区域。该算法原理简单、实时性强,常常用于跟踪的前期处理过程。该算法首先通过计算第k帧图像和第k-1帧图像的像素差得到差分后的图像Dk;然后设置合适的二值化阈值T对Dk进行二值化处理,得到二值化后的差分图像Rk(x,y);最后对Rk(x,y)进行形态学滤波及连通性分析,得到目标运动区域。其中:

1.2 Canny边缘检测算法
    Canny边缘检测算子是Canny于1986年提出的一种基于最优化算法的边缘检测算子,该算子具有高精度定位的特点。Canny提出三个严格的检测标准评价边缘检测的质量,分别是:高信噪比准则、高定位精度准则和单一边缘响应准则。该算法的实现过程如下:
    (1)用高斯滤波器平滑图像;
    (2)用一阶偏导的有限差分计算梯度的幅值和方向;
    (3)对梯度幅值进行非极大值抑制;
    (4)用双阈值算法检测和连接边缘。
2 运动目标跟踪
    近年来,Camshift跟踪算法凭借其实时性和鲁棒性的特点被大量关注。该算法利用目标的颜色特征模型实现跟踪,由于颜色的相对稳定性,该算法可以解决部分遮挡及目标形变问题。在简单背景下,该算法有较好的跟踪效果,然而,在目标被严重遮挡及存在大面积相似颜色干扰等复杂背景下,该算法会导致跟踪失败。本文提出了一种基于Camshift和Kalman滤波的改进的跟踪算法来解决这些问题。
2.1 Camshift算法
    Camshift算法即连续自适应均值漂移算法,它是Meanshift算法的扩展。该算法根据目标的颜色概率分布信息实现运动目标跟踪。Camshift算法的处理过程由反向投影、Meanshift算法和Camshift算法三部分组成。
2.1.1反向投影
    首先将图像从RGB空间转换到HSV空间。HSV空间能精确地反映一些灰度信息和色彩信息,可以提高算法的稳定性。由于HSV颜色空间中的H分量能直观地反映物体颜色信息,且与亮度独立,因此选择图像的H分量统计目标的颜色直方图,得到颜色概率查找表。最后将图像中每个像素值用其颜色出现的概率替换,并将其得到的结果归一化到[0,255]之间,从而得到颜色概率分布图。色彩投影的流程如图1所示。原图图像、H分量的颜色直方图及对应的概率分布图如图2 所示。

2.1.2 Meanshift算法

 


    Meanshift算法[5]是一种非参数密度梯度估计算法,其实质是通过反复迭代搜索特征空间中样本点最密集的区域,搜索点沿着样本点密度增加的方向“漂移”到局部密度极大点,从而达到跟踪的目的。该算法因其原理简单、计算量小、实时性强被广泛应用于图像分割和跟踪等领域。该算法的实现过程如下:
    (1)设置搜索窗的初始大小和位置;
    (2)计算搜索窗的质心;
    (3)将该搜索窗的中心移至质心处;
    (4)重复步骤(2)和步骤(3),直至收敛或者搜索窗质心移动的距离小于事先设定的阈值。
    设I(x,y)是概率分布图中位于(x,y)处的像素值,x、y在整个搜索窗范围内取值。则有:

2.1.3  Camshift算法
    Camshift算法[6-7]是对视频序列中的所有帧作Meanshift运算,并且将得到的搜索窗的大小和中心作为下一帧meanshift算法搜索窗的初始值。如此迭代下去,实现对目标的跟踪。算法的具体流程如图3所示。

2.2 改进的Camshift算法
   传统的Camshift算法原理简单、计算量小、实时性强,能够有效地解决目标形变及部分遮挡等问题。然而,该算法在跟踪时需要手动选择初始搜索窗口的大小,是一种半自动的跟踪算法;同时,由于该算法在跟踪过程中没有利用目标的方向、速度等运动信息,当背景中存在大面积相似颜色干扰或者目标被严重遮挡时,该算法不能准确地跟踪目标,甚至导致跟踪失败。本文提出一种改进算法克服以上问题。首先,结合帧间差分法和Canny边缘检测算法,准确地提取出运动目标,根据提取出的运动目标初始化Camshift跟踪算法的初始搜索窗口,从而实现了自动跟踪。为了解决颜色干扰和严重遮挡的问题,本文引入Kalman滤波器,用Kalman滤波器预测Camshift算法中第K(K>2)帧搜索窗口的中心位置。具体的步骤为:先初始化Kalman滤波器,当帧数K>2时,用Kalman滤波器预测Camshift算法的搜索窗口位置;用Camshift算法计算目标的最优位置和大小;判断背景中是否存在颜色干扰或者目标被严重遮挡,若无,则直接用Camshift算法计算出的目标位置作为观测值去更新Kalman滤波器;若有,则搜索窗口的大小会自动变大或变小,此时用Camshift算法计算出的最优位置是不准确的,如果用该值作为观测值去更新Kalman滤波器,Kalman滤波器将不能有效准确地估计下一帧的目标位置,最终会导致跟踪丢失。此时,用Kalman滤波器的预测值代替Camshift算法计算出的目标位置作为观测值去更新Kalman滤波器。本文中,用?琢判断是否出现颜色干扰,用滤波器残差r(k)和遮挡率β判断目标是否被严重遮挡。α、r(k)、β的计算公式如下:

其中,Rect_currenct为Camshift算法计算得到的目标区域的大小,Rect_last为上一帧图像目标区域的大小, Rect_origin为初始搜索窗口的大小,x(k)、y(k)表示目标位置的观测值,x′(k)、y′(k)表示目标位置的预测值。在本文中,当?琢>2时,认为背景中存在大面积相似颜色干扰;当r(k)>10且?茁<0.3时,则认为目标被严重遮挡。该改进算法流程图如图4所示。

3 实验结果及分析
    为了验证算法的有效性,本文在Pentium(R) 4, 3.00 GHz CPU,1  GB内存,Windows XP操作系统的计算机上使用VS2005结合OPENCV函数库来编写程序。每帧图像的大小为320×240。
3.1 运动目标检测与定位实验结果
    图5显示了运动目标的提取结果,其中,图5(a)是原始图像序列中的一帧;图5(b)是经过帧间差分法、高斯滤波、二值化处理后结合Canny边缘检测算法得到的运动目标的边缘图像;图5(c)是提取出目标的运动对象面;图5(d)是运动目标的标定结果。从实验结果可以看出,帧间差分法结合Canny边缘检测的方法可以准确地提取出运动目标。

3.2 改进的Camshift算法实验结果
    为了验证改进的Camshift算法的有效性,本文将传统Camshift算法的跟踪效果与改进的Camshift算法跟踪效果进行比较,比较结果如图6和图7所示。

'

     图6为相似颜色干扰实验,视频序列的背景中有一个红色袋子与运动目标的颜色很相似。其中,图6(a)为传统Camshift算法的实验结果。从第110帧~第127帧,目标越来越靠近红色袋子,目标区域也逐渐扩大,将袋子误认为是目标导致目标定位不准确。第172帧目标离开袋子时,跟踪框仍停留在袋子上,最终导致跟踪失败。图6(b)为改进Camshift算法的实验结果。实验结果表明,改进的Camshift算法在背景中存在相似颜色干扰时仍能有效地跟踪目标。
  图7为遮挡实验,其中图7(a)为传统Camshift算法实验结果,图7(b)为改进的Camshift算法的实验结果。在图7(a)中的第161帧时,目标被部分遮挡,Camshift算法通过缩小目标区域的大小以消除目标被遮挡部分的影响,实现对目标的跟踪。在第190帧时,目标被完全遮挡,颜色信息完全消失,搜索窗口收缩到最小值并停留在一个局部小区域内。第280帧当目标再次出现时跟踪丢失。在图6(b)中的第190帧时,目标被严重遮挡,此时用本文改进算法进行跟踪并设置搜索窗口的大小为初始搜索窗的大小。第280帧时,目标重新出现,搜索窗口与目标联接,开始新的跟踪。实验结果表明,改进的Camshift算法对遮挡有较好的鲁棒性。
    本文提出了一种基于Kalman滤波与Camshift算法的改进的自动跟踪算法。实验表明,本文所提出的改进算法可以实时、准确、自动地跟踪目标,并且对干扰和遮挡有较好的鲁棒性。然而,本文是在背景静止、目标匀速运动的假设下完成的,如何提高算法在动态复杂背景及目标速度变化较大的情况下跟踪的稳定性,是需要进一步研究的内容。
参考文献
[1] KIM H K, KIM J D. Region-based shape descriptor  invariant to rotation, scale and translation[J]. Signal Processing: Image Communication, 2000,16(1-2):87-93.
[2] SCHOLKOPF B. Statistical learning and kernel methods[M].  Technology Report MSR_TR, 2002.
[3] BADENAS J, BOBER M, PLA F. Motion and intensitybased segmentation and its application to traffic monitoring[C].  Proceedings of ICIAP 1310,1997:502-509.
[4] LIN Y T, CHANG Y L. Tracking deformable objects with   the Active Contour Model[C]. Proceedings IEEE (ICMCS’ 1997), 1997:608-609.
[5] 周尚波, 胡鹏, 柳玉炯. 基于改进Mean-Shift与自适应Kalman滤波的视频目标跟踪[J]. 计算机应用, 2010,30
(6):1573-1576.
[6] 邬大鹏, 程卫平,于盛林. 基于帧间差分和运动估计的Camshift目标跟踪算法[J].光电工程, 2010,37(1):55-60. [7] 王江涛, 杨静宇. 遮挡情况下基于Kalman均值偏移的目标跟踪[J]. 系统仿真学报, 2007,19(18):4216-4220.

继续阅读>>