一种多区域视频监控入侵检测报警方法的研究
扫描二维码
随时随地手机看文章
智能视频监控技术是利用计算机视觉技术对监控场景的视频图像内容进行分析,自动检测监控画面中的异常情况,并警报和提供有用信息,从而能够更加有效地提醒安防人员及时处理非法入侵。
目前,智能视频监控技术中入侵检测算法常见的有帧间差分法、背景减法和光流法。它们从视频序列中检测运动目标来实现入侵报警功能。但是,这些算法集中于对一个视频场景中移动物体侦测的研究,而监控系统往往是多个区域同时监控。为此,给出了一种适用于多区域视频监控系统中智能入侵报警的实现方法。该方法采用混合高斯背景建模移动侦测算法、OpenCV、多线程等技术实现了对入侵目标的有效检测报警功能。
1 混合高斯背景建模移动侦测算法
混合高斯背景建模移动侦测算法属于减背景移动侦测算法的一种。减背景移动侦测算法是通过当前帧与背景图像差分来得到移动目标区域。这种算法对背景图像的要求是:1)不含运动目标;2)不断地更新以适应背景不断变化。构建背景图像的方法很多,混合高斯背景建模算法是其中典型的一种,该算法对外界环境不断变化的适应性较好。
1.1 混合高斯背景建模
对视频帧中的每一个像素定义K个状态,每个状态用一个高斯分布函数表示。这些状态中有一部分表示背景的像素值,而另一部分则表示前景的像素值。若每个像素点像素值用变量Xt表示,则其概率密度函数可用K个高斯分布函数描述,如式(1)所示:
1.2 混合高斯背景建模参数更新
当获得某一点t时刻像素值It时,首先利用序贯相似性检测算法检测所有高斯分布函数中那个与当前像素值It匹配,其步骤如下:
1)设定偏差门限T;
2)选取均值μi,t与像素值It最接近的高斯分布函数,并检测两者之差的绝对值是否小于Tσi,t-1,如果|It-μi,t-1|≤Tσi,t-1成立,则判定该高斯分布函数与当前像素值匹配,并按式(2)~式(4)更新相关参数;如果|It-μi,t-1|≤Tσi,t-1不成立,则判定无高斯分布函数与当前像素值匹配,并将权重最小的高斯分布函数以一个新的高斯分布函数替代。新的高斯分布函数均值μi,t为It,标准差σi,t为最大初始标准差,权重ωi,t为最小初始权重。
式中,α为模型学习率,用于控制权重ωi,t的修正速度;ρ为参数学习率,近似为ρ≈(α/ωi,t)。
3)其他高斯分布函数参数不变,只归一化它们的权重。
1.3 背景像素判断
混合高斯背景建模算法通过计算模型中每个高斯分布函数的ωi,t/σi的值来判断该高斯分布函数所表示的状态是否表示背景像素值。值越高,则越可能是背景像素。
2 混合高斯背景建模入侵检测
OpenCV是Intel公司支持的基于C/C++语言开发的图像处理和计算机视觉开源函数库。其中大部分函数是基于Intel处理器指令集的优化代码,能最大程度的发挥处理器的性能。
OpenCV具有强大的图像和矩阵运算能力,是计算机视觉、图像处理二次开发的理想工具。
OpenCV提供了混合高斯背景建模函数,其主要函数如下:
功能:利用一帧图像数据初始化混合高斯背景模型。
参数:first_frame为混合高斯背景建模第一帧图像数据;parameters为混合高斯背景建模初始化参数。
本文使用函数默认设置:状态数K=5,即混合高斯背景模型内含5个高斯分布,偏差门限T=2.5,模型学习率α,最大初始方差,背景点判定阈值ωi,t/σi>0.7。
功能:更新混合高斯背景模型。
参数:pFrame为更新高斯背景模型的视频流帧图像数据;bg_model为混合高斯背景模型指针,通过bg_model->background和bg_model->foreground即可获得背景和前景图像。
功能:释放高斯背景模型参数占用的内存。
前景图像再经形态学处理后,可检测出一定大小的移动区域,即判定有人入侵。结果如图1所示。
3 视频监控图像数据获取及转换
3.1 视频监控图像数据捕获
使用天敏公司的SDK-2500型视频监控卡自带函数库编程与使用VFW函数库编程获得的监控画质差别很大。使用自带函数库可充分发挥视频监控卡处理器的性能,监控画质高,显示分辨率可达720x576(PAL),而使用VFW函数库时,显示分辨率仅为320x240。两种方法所获监控画质比较如图1所示。为获得高分辨率监控画质,本文使用视频监控卡自带函数库开发视频监控系统软件。
视频监控卡自带函数库提供了两类捕获当前帧图像数据的函数。一类将图像数据以文件形式保存在磁盘上,另一类将图像数据复制到剪贴板上。由于剪贴板是Windows系统中单独预留出来的一块内存,由于内存读写速度是硬盘读写速度十倍以上,同时使用剪贴板也可避免对硬盘的反复读写,因此利用剪贴板捕获图像数据,代码如下:
参数说明:int n为视频监控卡卡号:LPBITMAPINFO lpBI为指BITMAPINFO结构的指针;void*pDIBBits为指向位图数据的指针。
3.2 DIB到IPLImage数据格式的转换
由于剪贴板捕获的图像数据格式为DIB,而OpenCV函数库中图像的基本格式为IPlImage*,因此,需要将DIB图像数据格式转为IPLImage*图像数据格式,其代码如下:
4 多区域实时移动侦测
32位Windows操作系统采用抢先式多任务方式运行应用程序。当一个程序运行后,操作系统就启动了一个进程。为了让进程完成一些工作,每个进程必须包含至少一线程。线程负责执行包含在进程地址空间中的代码,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等。
线程是系统分配CPU时间的基本实体,它也是代码执行的最小单位。实际上,同一时间只有一个线程在运行,由于每个线程划分的时间很小(20 ms左右),CPU通过分时在各个线程之间频繁地切换,使得系统看起来有多道程序在同时运行。
Windows提供了2种线程——辅助线程和用户界面线程。两种线程均为MFC库所支持。用户界面线程通常有窗口,因此,它具有自己的消息循环。辅助线程没有窗口,因此,它不需要处理消息。
用户界面线程用于响应用户操作和程序的其他控制,辅助线程用于多个区域视频图像的捕获,并利用移动侦测算法实现实时入侵报警功能。程序流程如图2所示。
5 实验结果
为了验证本文提出的多区域视频监控入侵检测报警方法的性能,实验采用两块SDK-2500型视频监控卡同时对室内、室外两个区域进行长时间的视频监控,监控视频帧率为30帧/秒。为捕获稳定的视频图像,在辅助线程内添加了100 ms的等待时间。随机抽取100次报警结果,其结果如表1所示。
从测试结果可以看出,本文方法室内误报率为1%,室外误报率为2%。根据保存的视频图像分析得知:室内误报警发生于开灯情况下,是因环境亮度急剧变化引起的;室外两次误报警均发生于刮风情况下,由于树枝大幅度摇摆造成的。
6 结束语
本文利用多线程技术实现了视频监控系统中多区域移动侦测入侵报警自动化。该方法利用视频监控卡自带函数库,充分发挥了视频监控卡处理器的性能,获得了较高的监控画质;该方法误报率较低,可广泛适用于各种视频监控系统中。