APP下载

智能视频内容分析系统设计与实现

2021-12-17盛仲飙

电脑知识与技术 2021年33期

盛仲飙

摘要:智能视频内容分析系统已经在许多领域得到了广泛的应用,已经成为智能化处理的一个热点。该系统的主要任务是对于一段给定的视频,检测出其中的运动物体,再从众多的运动物体中识别出满足特定要求的物体,最后完成对识别出的运动物体的跟踪。针对背景减去法和帧差法的缺点,采用背景减去法与帧差法相结合的方法进行目标检测;采用基于kalman滤波器的Camshift跟踪算法进行跟踪。该系统有效地提高了跟踪的准确度和运行速度,真正实现视频监控的智能化。

关键词:运动目标检测;运动目标识别;Camshift算法;kalman滤波器

中图分类号:TP311    文献标识码:A

文章编号:1009-3044(2021)33-0083-03

开放科学(资源服务)标识码(OSID):

Design and Implementation of Intelligent Video Content Analysis System

SHENG Zhong-biao

(School of Computer Science and Technology, Weinan Normal University, Weinan 714019, China)

Abstract: Intelligent video content analysis system has been widely used in many fields and has become a focus in the intelligent processing. The main task of the system is to detect the moving objects in a given video, and then to identify to objects that meet the specific requirements from a number of moving objects, and finally to complete the tracking of the identified moving objects. Aiming at the shortcomings of background subtraction and frame difference method, background subtraction and frame difference method are combined to detect the target. The system adopts Camshift tracking algorithm based on Kalman filter for tracking. The system improves the tracking accuracy and running speed effectively, and realizes the intelligentization of video surveillance.

Key words: moving target detection; moving target tracking; Camshift algorithm; kalman filter

1 前言

伴隨着人们安全意识的不断提高,摄像头等视频采集设备数量不断增加,人们对视频处理的需求也越来越高。生活中,视频监控无处不在,在交通、银行、生产生活、公共安全等各个领域都得到了广泛的应用,视频监控已经成为安全防护中不可或缺的重要组成部分[1]。然而,目前的视频监控平台并不能实现真正意义上的监控,只是做到了对当时场景的录制以及视频的存储。面对海量的视频数据,要想从中找到有价值的信息将会消耗大量的人力、物力与财力。

本文所研究内容是对于一段给定的视频,检测出其中的运动物体,然后从众多的运动物体中识别出满足特定要求的物体,最后实现对该物体的跟踪。从而实现视频监控的真正智能化。

2 系统概要设计

首先对从视频中提取的每一帧图像进行预处理,其次,利用背景减去法和帧差法相结合的方法检测出视频中的运动物体,然后,利用基于颜色的识别与基于模板的识别这两种方法从众多的运动物体中筛选出特定颜色的车,最后利用基于kalman滤波器的Camshift跟踪算法完成对识别出来的车进行跟踪[2]。

(1)图像预处理模块主要是对视频序列的每一帧图像进行一些处理,为后续工作做铺垫;

(2)运动目标检测模块主要是检测出视频中运动的人、车、动物等;

(3)运动目标跟踪模块主要是实现对检测并识别出来的特定颜色的车的跟踪;

(4)运动目标识别模块主要是从上一步检测到的众多运动目标中识别出特定颜色的车。

3 系统详细设计

3.1 图像预处理模块

该模块主要用到了图像灰度化、图像滤波、图像二值化、形态学滤波等方法。

(1)图像灰度化

去除彩色图像中的彩色信息,使图像只含有亮度信息。灰度图像包含的信息量较少,计算方便简单,更容易实现实时处理。具体函数:cvCvtColor()。

(2)图像去噪

图像去噪是为了减少图像上的噪声或者失真。具体函数:cvSmooth()。

(3)图像二值化

采用阈值法,即:设置一个合适的阈值,并用此阈值将图像分为背景和目标两部分,在实际中,常用255表示背景,用0表示目标。具体函数:cvAdaptiveThreshold()。

(4)形态学处理

采用函数:cvMorphologyEx()对图像进行形态学处理。

3.2 运动目标检测模块设计

3.2.1背景减去法

首先,可通过均值法来获得背景模型,其次,计算当前图像与背景图像的差值,设置合适阈值,将差值与该阈值做比较,如果差值大于设定的阈值,则认为是前景点,否则认为是背景点,最后利用公式(1)更新背景模型[3]。

[backk+1x,y=1-a×backkx,y+imagek(x,y)]  (1)

3.2.2帧差法

帧差法就是将相邻两帧图像对应的像素点进行减法运算,设置合适的阈值,并将得到的差值与该阈值做比较,如果差值大于设定的阈值,则认为是前景点,否则认为是背景点[4]。

3.2.3背景减去法与帧差法相结合的方法

该运动目标检测算法的具体实现过程:首先利用前20帧图像通过均值法得到背景模型,之后的每一帧图像减去背景图像,从而获得前景图像fore_image1,并且利用当前帧更新背景模型。其次,将当前帧与前一帧相减得到前景图像fore_image2, 最后将前景图像fore_image1与fore_image2进行与操作,得到最终的前景图像。利用cvfindcontours()函数提取每个运动物体的轮廓。

3.3 运动目标识别模块设计

3.3.1 基于颜色的识别

首先将源图像中需要判断颜色的图像块转化为HSV图像,这样可以避免光照等因素的干扰。其次,将该HSV图像分解为色调(H),饱和度(S),亮度(V)这三个通道。最后判断图像块中每个点的这三个通道的值是否在指定颜色所对应的范围之内,如果有50%以上的点在范围之内,则认为图像块为指定颜色。

3.3.2 基于模板的识别[5]

整个过程分为三步:创建样本、训练Haar分类器、利用Haar分类器判断是否为车。

(1)创建样本

样本包含正样本和负样本,其中正样本为不同车在不同角度拍摄的照片,负样本为周围背景环境的照片且不能包含车的特征。所有样本被归一化为20×20。

v為正样本创建描述文件,命令如下:dir \b >positive.txt

再将bmp改为bmp 1 0 0 20 20。

利用OpenCV自带的opencv_createsamples.exe为正样本创建向量文件,命令如下:opencv_createsamples.exe –info postive.txt –vec postive.vec -num 2000 -w 20 -h 20

v 为负样本创建集合文件

命令如下:dir \b >negative.txt

(2)训练Haar分类器

利用OpenCV自带的opencv_haartraining.exe来训练Haar分类器。命令为:opencv_haartraining.exe –data cascade -vec postive.vec -bg negative.txt -npos 2000 -nneg 6000 -w 20 -h 20 -mem 1000 -nstages 18 –mode  ALL –nonsym。

(3)利用Haar分类器判断是否为车

首先使用函数cvLoad()加载已经训练好的分类器mode.xml,其次对图像进行直方图均衡化并归一化到同样大小,然后使用函数 cvHaarDetectObjects()来寻找与训练目标相似的物体(如:本系统中的车),如果该函数返回的CvSeq序列的长度不为0,则认为有车存在,否则认为没有车存在。

3.4 运动目标跟踪模块设计

3.4.1 Camshift算法

Camshift算法的基本原理是利用目标的颜色直方图来寻找目标在图像序列中出现的位置和大小。在搜索之前,利用目标的当前位置和大小来初始化搜索窗口,计算搜索窗口的质心,并将窗口的中心移到质心处,不断迭代,直至窗口的中心与计算得到的质心的差值小于一定阈值,此时就找到目标在当前图像中的位置和大小,重复以上过程实现目标的连续跟踪[6]。

3.4.2 基于kalman滤波器的跟踪算法

kalman 滤波器可以根据目标上一次出现的位置以及跟踪模型精确地预测目标将要出现的位置,主要分为两个阶段[7][8]:

(1)预测阶段,即:用前面得到的信息来修正跟踪模型,并预测出目标在下一帧图像中将要出现的位置

(2)校正阶段,即:利用匹配法得到目标位置的测量值,并与由上一次测量值预测出的预测值进行调整。

3.4.3 基于kalman滤波器的Camshift跟踪算法

基于kalman滤波器的Camshift跟踪算法的基本过程如下:

(1)假设在第i帧图像中检测并识别出特定颜色的车,利用该车的当前位置来初始化kalman滤波器,并为该车建立运动模型。

(2)利用kalman滤波器根据该车在第i帧图像中的位置预测出该车在下一帧图像(即第i+1帧图像)中可能出现的位置,具体函数为cvKalmanPredict()。

(3)在第i+1帧图像,根据该车的预测位置来设置搜索范围以及搜索窗口,利用Camshift算法在该指定搜索范围内查找该特定颜色的车是否出现以及出现的具体位置。

(4)利用步骤3得到的该车的实际位置来纠正kalman滤波器,具体函数为cvKalmanCorrect()。

(5)重复上述步骤2、3、4直到视频结束。

3.5 用户界面设计

4 系统实现

本系统所采用的环境是VS2013、OpenCV、QT5.3。配置OpenCV库的目的是在程序中调用其中的图像处理函数等。

(1)选择“选择视频”按钮,选择要分析处理的视频。

(2)在特征栏选择要检测跟踪的车的颜色,在功能选择区中点击开始跟踪按钮后,视频将会开始播放,此时信息栏的备注信息将显示“the video is played”,表示视频正在播放中;当点击重新开始播放按钮后,视频将会从头开始播放。界面如图3。

(3)在视频播放过程中,进行运动目标检测,并判断运动的物体是否是特定颜色的车。在某一时刻检测并识别出视频中要跟踪的特定颜色的车后,开始跟踪该车,并用红色方框将该车标记出来,且红色方框的大小会随着该车大小的改变而发生改变。例如:当车辆开向远方时,车辆在视频中将会逐渐变小,那么红色方框也会随着逐渐变小。此时信息栏的备注信息将显示“Tracking target appears !”,表示红色的车已经被检测并识别出来,并且处于跟踪状态中。界面如图4:

5 结论

智能视频内容分析系统的主要任务是对于给定的一段视频,检测出其中的运动物体,并从众多的运动物体中识别出红色车,最终实现对红色车的跟踪。本系统达到了预期的效果,并具有较好的鲁棒性与准确度。

参考文献:

[1] 潘晶晶.网络视频实时监控系统的设计与实现[D].北京:北京邮电大学,2010.

[2] 赵光磊.视频监控中运动车辆的检测研究[D].石家庄:河北科技大学,2014.

[3] 喻旭勇.基于视频的车辆检测与跟踪算法研究[D].上海:东华大学,2013.

[4] 严驰.视频运动目标检测算法综述[J].科教导刊-电子版(中旬),2015(10):130.

[5] 詹群峰.基于OpenCV的視频道路车辆检测与跟踪[D].厦门:厦门大学,2009.

[6] 陈艺.改进Camshift算法的多行人目标跟踪方法[J].导航定位学报,2019,7(4):30-36.

[7] 梁娟,项俊,侯建华.基于Camshift和Kalman滤波的自动跟踪算法[J].微型机与应用,2011,30(24):28-31.

[8] 徐磊.Camshift与Kalman滤波相结合的跟踪技术研究[D].南京:南京理工大学,2012.

【通联编辑:梁书】