首页 > 范文大全 > 正文

基于Camshift算法的运动目标实时跟踪系统

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Camshift算法的运动目标实时跟踪系统范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:设计了一个基于camshift算法的摄像机对目标的实时跟踪系统。应用该算法检测到每帧图像中目标的尺寸和中心位置,得到的数据通过串口控制云台的转动,使目标物体始终在摄像头的视场范围内,以实现摄像机对目标的同步跟踪。系统运行结果表明,当运动目标的距离和速度在一定的范围内时,能够实现实时跟踪

关键词:目标跟踪;Camshift算法;摄像机;串口通信

中图分类号:TP391.4文献标识码:B文章编号:1004373X(2008)1911603

Real-time Tracking System for Motive Object Based on Camshift Algorithm

DONG Bei,XIE Qinlan,JIA Qian

(Department of Electronics and Information Engineering,South Central University for Nationalities,Wuhan,430074,China)

Abstract:The system is designed to realize the real-time tracking for motive object based on Camshift algorithm.By the algorithm,the centroid and size of the object are found in each frame.Then the data is transmitted by serial communication to control PTZ.So the system can track the object by camera to ensure it being inside of scene of camera all along.The results show that real-time tracking is efficient when the distance and the rate of movement of the object are in a certain range.

Keywords:object tracking;camshift algorithm;camera;serial communication

1 引 言

对视频序列中感兴趣的目标进行有效的跟踪是计算机视觉中重要的课题。它涉及到图像处理、模式识别、人工智能以及自适应控制等多个领域[1-6]。运动目标跟踪就是通过对摄像机拍摄到的序列图像进行分析研究,计算出运动目标在连续帧图像中的位移,给出运动目标速度、加速度等运动参数,从而达到改善运动目标运动环境的目的。近年来,基于Camshift(Continuously Adaptive Mean Shift)的跟踪算法[1-3,6]凭借其在实时性和鲁棒性方面良好的表现,正受到越来越多的关注。现阶段Camshift算法已经广泛应用到感知用户界面(Perceptual User Interface)中的人脸跟踪中,以及一些半自动的运动目标跟踪。针对复杂背景下的单目标跟踪,本文采用Camshift算法对目标进行实时跟踪,计算量小,实时性高,并用实验进行了验证。

2 Camshift算法

Camshift算法是一种非参数方法,它是通过聚类的方式搜寻运动目标的,利用区域内的颜色信息对目标进行跟踪。简单的说,Camshift算法利用目标的颜色特征在视频图像中找到运动目标所在的位置和大小,在下一帧视频图像中,用运动目标当前的位置和大小初始化搜寻窗口,重复这个过程就可以实现对目标的连续跟踪。在每次搜寻前将搜寻窗口的初始值设置为运动目标当前的位置和大小,由于搜寻窗口就在运动目标可能出现的区域附近进行搜寻,这样就可以节省大量的搜寻时间,使Camshift算法具有良好的实时性。同时,Camshift算法是通过颜色匹配找到运动目标;在运动目标运动的过程中,颜色信息变化不大,目标的运动在图像序列中具有很大的相似性,所以Camshift算法具有良好的鲁棒性。Camshift算法的流程图如图1所示[7,8]。

图1 Camshift算法的流程图

下面简述Camshift算法的实现过程。

设(x,y)为搜索窗口中的像素点,I(x,y)是投影图中对应(x,y)点的像素值。定义搜索窗口的零阶矩M00和一阶矩M10,M01如下[9,10]:

M00=∑x∑yI(x,y)

M10=∑x∑yxI(x,y)

M01=∑x∑yyI(x,y)

(1)

可以求得当前搜索窗口的质心位置为:

(xc,yc)=M10M00,M01M00

(2)

然后根据M00调整搜索窗口的大小,并将搜索窗口的中心移动到质心,如果移动距离大于预设的固定阈值,则重新计算调整后的窗口质心,直到窗口中心与质心间的移动距离小于预设的固定阈值,或者循环运算的次数达到最大值,则认为满足收敛条件,进入下一帧图像进行新的目标搜索。相对于当前帧,计算搜索窗口的二阶矩M20,M02,M11:

M20=∑x∑yx2I(x,y)

M02=∑x∑yy2I(x,y)

M11=∑x∑yxyI(x,y)

(3)

假设:

a=M20M00-x2c

b=2M11M00-xcyc

c=M02M00-y2c

(4)

那么下一帧中搜索窗口的长度(l)和宽度(w)分别为:

l=(a+c)+b2+(a-c)22w=(a+c)-b2+(a-c)22

(5)

当视频序列逐帧变化时,Camshift算法逐帧进行处理,这样就可以完成对运动目标的连续跟踪。

3 跟踪系统构成

基于Camshift算法的系统结构如图2所示。

(1) 将视频采集卡采集到的每一帧RGB视频图像都转化为HSV图像[7]。在常用的颜色空间中,HSV颜色空间较RGB颜色空间更接近人的视觉对颜色的感知能力,而且能够更准确地反映灰度信息和色彩信息,特别对图像中极亮和极暗的物体也能很好地反映出相应的信息。

(2) 若某像素的S分量(饱和度)和V分量(亮度)对H分量(色调)有较大干扰,则去除此像素,再通过H分量的色彩直方图反投影建立色彩概率分布图像。

(3) 由Camshift算法计算跟踪窗口的位置和大小,并把窗口的中心位置通过串口发送给单片机,由单片机来控制云台的转动。

(4) 云台在本系统中的作用是驱动摄像头的转动,由于摄像头固定在云台上,所以只要能够通过串口控制云台就可以实现摄像头的转动,从而改变视场的方向,捕捉运动目标。

图2 系统流程图

4 实验及结论

实验平台的硬件环境:Pentium Ⅳ 2.80 GHz PC,OK视频采集卡,摄像头分辨率为768×576;软件使用Visual C++6.0和OpenCV。通过串口发送控制指令到单片机,以控制云台转动。串口通信所选波特率为9 600 b/s,图像采集的帧率是25 f/s,运动目标与摄像头的距离为1~3 m,运动目标的运动速度控制在0.1~0.3 m/s。