基于OpenCV的视频监控与跟踪系统研究∗

2019-05-07 02:32邱鹏瑞
计算机与数字工程 2019年4期
关键词:高斯灰度阈值

邱鹏瑞

(1.昆明理工大学国土资源工程学院 昆明 650093)(2.昆明冶金高等专科学校 昆明 650033)

1 引言

随着视频数据录制传输技术的发展和人们对安全监控的需求,视频监控系统得到了长足的发展。视频监控有着许多优点,采集后的视频数据能够让人观测到监控环境中所发生的实时情况,能够有效观测并预防突发危险事件,同时视频数据易于存储传输的特性使得危险防范、取证成为可能[1]。传统视频监控系统,采用人工方式对监控视频进行持续监视,这样会耗费大量人力资源,而且长时间监视会导致值守人员出现注意力分散,重要情报及线索不能有效及时识别的情况[2]。为了解决诸如此类的问题,利用计算机视觉技术进行视频监测,根据视频数据的内容进行自动化判断异常情况并预警的相关技术成为研究的热点。目前,随着物联网和人工智能的发展,视频监控技术的需求也在不断扩大,经过不断的迭代升级,视频监测更加的智能化、标准化和专业化[3~4]。例如美国著名的 Ob⁃ject Video公司开发的智能监控系统可以实现警戒区的智能报警,瑞典的Axis公司研发的用于视频监控的智慧交通系统等都是当前技术条件下相对成熟的智能视频监控系统[5]。在我国,视频监测相关技术的研发不断发展,产生了诸如Anychat和黄金眼等智能安防监控产品,也诞生了海康威视和浙江大华等视频监控的领军公司[6]。本文研究主要基于OpenCV开源和跨平台技术,对OpenCV函数库中的图像处理与视觉算法进行研究,实现对视频中各帧图像进行预处理与自动分析判断,并对监测目标进行跟踪与检测,对核定目标基本行为阈值化最终判断是否发出预警信息。与传统监控系统相比,该系统可以实现无人值守智能化监控,并大大降低相关硬件配置和人工成本且部署复杂度较低。

2 系统架构

系统硬件由主机、视频采集摄像头、网络设备和存储介质组成。软件系统架构在主机上,通过摄像采集监控区域内的视频图像数据,并进行图像预处理,再利用OpenCV视觉处理库编写相关代码对采集的视频图像数据进行检测,检测到移动物体后在阈值范围进行判断,最后触发报警机制。视频图像显示在PC端由Visual Studio 2017编写的MFC人机交互界面之上,PC端可以实时查看视频监控及相关参数变化情况。系统架构如图1所示。

图1 系统架构

3 视频数据预处理

3.1 图像灰度化

通过把包含色彩数据的彩色图像中色彩数据去除,只保留有图像的亮度信息,这一处理过程就称为图像灰度化[7]。灰度化处理后图像依然能够保留原图的大部分信息,但对于后续的算法执行,时间复杂度和空间复杂度大大降低[8~9]。彩色图的像素转换为灰度图的像素,转换公式如下式所示,GRAY为灰度值,R为红色分量,G为绿色分量,B为蓝色分量。

灰度化的执行是由OpenCV对原始图像进行提取后将三通道的RGB彩图转为单通道灰度图,通过OpenCV提供的CvtColor颜色空间转换函数可完成图像灰度化[10]。

3.2 图像滤波

图像滤波是在进行图像处理时消除噪声的有效手段,本文采用中值滤波的方法对噪声进行滤除,其基本原理是在在目标像素周围选取一个移动式二维滑动模块,然后对模块中的像素点进行单调定向排序,把排序后的中间值作为目标像素的灰度值,通过滤波有效消除噪声和脉冲干扰,同时保留了图像的边缘像素信息[11]。接着进行先腐蚀后膨胀的开运算,即假设图像用f(s,t)表示,结构元素为b(x,y),f的定义域为Df,b的定义域为Db腐蚀公式表示为

具体操作时调用OpenCV的cvErode和cvDilate消除椒盐噪声和高斯噪声,最终提取的目标也较完整。

4 目标检测、跟踪与预警

4.1 目标检测

视频监控中的目标检测指的是运动目标的检测,运动目标的检测是视频监控智能化的基础,具有鲁棒的检测结果才能实现有效的跟踪。本文利用高斯混合背景差分法来进行运动目标检测,背景差分法又叫背景消减法,顾名思义就是提取背景后用背景与当前的帧做减法,检测有位移的物体[12~13]。高斯混合背景差分就是对背景中每个像素点用K个状态来描述其呈现的颜色,每个状态都与一个高斯分布函数一一对应,高斯分布函数的相关参数发生变化会导致背景模型变化更新。其原理可用以下表达式(4)~(11)表示:

以上公式中的 f(Xt=x)为高斯混合模型的概率密度函数,η(x,μi,t,∑i,t)表示 K 维的像素点颜色分布,μi,t表示第i维t时刻的高斯分布均值,∑i,t表示第i维t时刻高斯分布的协方差。每个η(xt,μt,∑t)贡献度用 ωi,t来描述,K 个 ωi,t值的和为1。式(5)的n值为图像帧通道数,T为权值阈值,取值0.7。式(6)Ii,t为第i维t时刻当前帧亮度,α为学习率。式(10)σi,t为高斯背景模型的标准差。本文在编程实现时,调用OpenCV的cvCreateI⁃mage函数来建立当前帧,背景帧和前景帧,之后用CvtColor函数进行灰度化,再结合AbsDiff函数和Threshold函数功能及高斯混合背景差分算法进行目标检测。具体实验结果如图2所示。结果表明,通过高斯混合背景差分提取运动目标并进行于阈值二值处理后能较好的与背景分离,运动目标检测有效。

图2 高斯混合背景差分运动目标检测

4.2 目标跟踪与预警

目标完成检测后,采用Camshift进行目标跟踪并结合卡尔曼滤波完成目标运动预判报警功能。Camshift首先获取图像颜色直方图,并进行反向投影,根据颜色概率分布计算像素点偏移量,并经过迭代后接近目标质心[14]。卡尔曼滤波对运动目标位置预测首先对滤波器初始化,并赋予位置、速度和加速度,然后计算当前时刻预测值与实测值之差,通过差值与下一时刻的实测值得到最优估计值从而实现目标位置预测。通过卡尔曼滤波有效预测运动目标的移动位置能够提高跟踪算法实时性[15]。具体算法实现使用OpenCV的cvFindcon⁃tours函数对运动目标轮廓进行标定,然后用CvRect函数生成矩形窗口对目标实时跟踪。对运动目标进行成功检测与跟踪后,在设定时间阈值范围外发出预警,在运行窗体界面显示相关信息并触发音效报警信号。实现效果如图3所示。

图3 目标跟踪与预警

5 结语

本文调研分析了当前视频监控系统采用人工方式对监控视频进行监视所存在的问题,联系拓展视频监控的实际需求,对视频监控相关的图像处理方法与机器视觉算法进行研究,重点阐述了视频数据预处理中的图像灰度化和图像滤波操作,并在此基础上通过高斯混合背景差分提取运动目标,进行阈值二值处理实现与背景分离,目标完成检测后,本文采用Camshift进行目标跟踪并结合卡尔曼滤波完成目标运动预判报警功能。系统采用OpenCV2.4.13开源函数库和Visual studio2017的MFC框架进行算法实现,最终实现对视频中各帧图像进行预处理与自动分析判断,并对被测运动目标进行跟踪,对运动目标在超出阈值范围发出预警信息。经实验验证,系统能有效检测运动目标完成报警功能。通过对系统核心架构的扩展今后还可以添加移动端预警服务、短消息、语音消息服务等。

猜你喜欢
高斯灰度阈值
航空滤光片阵列多光谱图像条带灰度调整算法
采用改进导重法的拓扑结构灰度单元过滤技术
改进的软硬阈值法及其在地震数据降噪中的研究
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
天津港智慧工作平台灰度发布系统和流程设计
改进小波阈值对热泵电机振动信号的去噪研究
Arduino小车巡线程序的灰度阈值优化方案
数学王子高斯
天才数学家——高斯