近年来,随着我国职业院校的不断发展,校园建筑面积和规模逐步扩大,校园的流动人口大量增加,治安形势错综复杂,做好校园的安保工作,仅靠简单的增加人力和物力,采取常规的防范措施已经很难适应新形势的需要。为了加强校园安全防范整体力量,有效保护校园与学生的财产安全,利用先进的科技手段建立一套功能完善、覆盖范围广泛的监控系统是维护学生正常学习、生活,创造平安校园的必要条件。
智能视频监控是综合利用图像处理、机器视觉和计算机视觉知识进行研究的一个新兴的研究方向和备受关注的前沿课题。与传统的模拟监控不同,智能监控系统能实时的对摄像机捕捉到的视频序列进行处理和分析,自动完成动态目标的检测、识别和跟踪,并在此基础上可以进一步对目标的行为进行分析和理解。本文构建的校园智能视频监控系统利用OpenCV实现了对视频图像中动态目标的行为快速有效地进行监控和分析,并实现了对动态目标的精确跟踪。
OpenCV是Intel公司开发的用于数字图像处理和计算机视觉的函数库[1]。它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV其源代码完全开放,运行速度快,由于具有良好的可移植性和统一的结构及其稳定性,因此可以缩短系统设计的开发周期,使系统运行更加稳定。
鉴于OpenCV的特点,它主要用于对视频图像进行一些高级处理,如人脸识别、动态跟踪、图像分割及人机互动等。
当动态目标出现在可视范围内,首先通过背景差分法将前景图像与背景图像分离,再对差值进行二值化判断,利用给定的阈值去除噪声等干扰后,从场景中检测出动态目标。与之前检测出的目标做特征比对,如果是新目标则加入到跟踪序列中,如果是旧目标则舍弃。目标跟踪阶段,对跟踪序列中的目标采用CamShift跟踪算法,提取目标特征信息,并获得其运动轨迹,对目标进行实时跟踪。其关键点在于目标的特征信息提取和匹配,这是决定目标跟踪效果的重大因素。
动态目标检测是校园智能视频监控系统的重要组成部分。动态目标检测的主要目的是从视频图像中实时的提取出动态目标并获得动态目标的特征信息,如色彩、形状、轮廓等[2]。动态目标提取的过程就是在连续的视频图像序列中寻找差异,并把由于目标运动和表现出来的差异提取出来。
动态目标检测常用的有四种常用方法:连续帧间差分法、背景差分法、光流法和运动能量法[3]。由于背景差分法具有实现简单,运算速度快,因此最常用。它通过当前帧图像与背景图像相减并提取出感兴趣区域来检测动态目标,固定场景下应用背景差分法进行动态目标检测,关键在于创建和维护一个可靠的背景。针对这种情况,背景模型应运而生。评价一个好的背景模型,应该从两个方面进行考虑:第一,背景模型对背景变化的响应速度要足够快;第二,背景模型对运动目标要有较强的抗干扰能力。
3.2.1 提取前景图像
假设环境温度不变,视频图像的背景也不变,当动态目标出现时.图像相应像素点的灰度值会发生明显的改变,利用图像减法就可以得到差分灰度图像[4]。差分灰度图像包含了动态目标信息,相对于背景图像又称之为前景图像。相减的结果中每一像素的值和一个预先设定的阈值相比较,若这个像素的值大于阈值,则认为这点是前景图像,否则是背景图像。假设利用图像平均法可得到当前背景图像BK(x,y),当前的输入图像为CK(x,y),则前景图像DK(x,y)可以表示为当前图像与背景图像差的绝对值即:DK(x,y)=|CK(x,y)-BK(x,y)|
3.2.2 差分图像二值化
选取T为阈值,对差分图像进行二值化[5]:
其中,EK为进行二值化后的图像,当差分图像中像素值大于某一给定的阈值T时,则认为该像素为前景像素,即认为该像素可能为目标上的一点,反之则认为是背景像素。
在OpenCV中,差分图像的二值化是由函数void cvTheshold实现的。
由于背景差分法受外界光线的变化、背景中含有轻微扰动的对象,如树枝、树叶的摇动等的影响,因此对前景图像还要进行一系列的图像处理。包括:平滑处理,形态学膨胀、腐蚀,二值化操作,轮廓提取等。但是并不是所有的轮廓都是由目标产生的,有些是目标的子轮廓或者是噪声产生的轮廓,因此必须对轮廓进行筛选,淘汰伪目标的轮廓,把目标轮廓筛选出来后加入到跟踪队列。
在校园智能视频监控系统中,动态目标跟踪起着承上启下的作用,它是利用图像处理和计算机视觉等相关技术对视频图像序列进行处理和分析,在连续的图像序列中找到动态目标的位置和相关信息,比如动态目标的速度、形状等。为了实现该功能,本文采用了OpenCV中的CamShift目标跟踪算法。它主要通过视频图像中动态目标的颜色信息来达到跟踪的目的。
3.3.1 CamShift算法简介
Gary R.Bradski提出的CamShift算法,是以颜色直方图为目标模式的目标跟踪算法,是对MeanShift算法的改良,可以有效地解决目标变形和部分遮挡的问题,而且运算效率很高。它的基本思想是将视频图像的所有帧做MeanShift运算,将上一帧的运算信息作为搜索窗口的初始值,并将初始值作为对下一帧图像运算的输入,进行迭代后实现对动态目标在每一帧图像序列中的连续跟踪。由于RGB颜色空间对光照亮度变化比较敏感,为了减少光照亮度变化对跟踪效果的影响,CamShift算法将图像由RGB颜色空间转化到HSV颜色模型,方便对动态目标特征的提取。
3.3.2 CamShift算法实现
在OpenCV库中,CvCamShiftTracker类就是用来实现CamShift算法的,使得进行二次开发变得很简单[7]。
其中,prob_image为目标直方图的反向投影;Window为初始搜索窗口;criteria为确定窗口搜索停止的准则;comp为生成的结果,包含收敛的搜索窗口坐标(comp→rect字段)与窗口内部所有像素点的和(comp→area字段);box为目标的最小矩形。如果非NULL,则包含目标的尺寸和方向。
利用该函数,在VC++2010开发环境下,就很容易实现CamShift算法跟踪动态目标。
本文设计的基于OpenCV的校园智能视频监控系统,由于其较低的计算复杂度和较高的鲁棒性,具有广阔的应用前景。采用了背景差分法作为动态目标检测的方法。检测是跟踪的前提,检测结果的精确性直接影响跟踪的可靠性。利用CamShift跟踪算法提取每个动态目标的颜色特征信息,实现对多个动态目标的精确跟踪,最后将动态目标的轮廓和运动轨迹描述出来。
该系统平台简单,大大缩短工作人员的开发周期,只需根据不同的需要进行简单的改进,就可以实现多种场合的不同应用。实验证明,系统运行稳定,检测结果真实可靠,具有较高的精确度。
[1]Gary Bradski,Adrian Kaehler.学习OpenCV[M].北京:清华大学出版社,2009.
[2]谭歆,武岳.基于OpenCV的运动目标检测方法研究与应用[J].视频应用与工程,2010,34(S1):184-187.
[3]尹俊超,刘直芳.基于OpenCV的运动目标检测与跟踪[J].计算机工程与设计,2011,32(8):2817-2820.
[4]林洪文,姚作,涂丹,李国辉.基于减背景技术的运动目标检测方法研究[J].国防科技大学学报,2003,25(3):66-69.
[5]侯宏录,李宁乌,刘迪迪,陈杰.智能视频监控中运动目标检测的研究[J].计算机技术与发展,2012,22(2):49-52.
[6]邹铁军,张书伟,蒋杰,闫保中.基于OpenCV的运动目标定位跟踪系统软件设计[J].智能计算机与应用,2012,2(3):60-63.
[7]李振伟,陈种,赵有.基于OpenCV的运动目标跟踪及其实现[J].科学计算及信息处理,2008,20:128-130.