一种异常检测算法视频存储方案
2013-07-03吕金娜张志军
吕金娜,张志军
(1. 河南科技学院 信息工程学院,新乡 453003;2. 空军95824部队,北京 100195)
0 引言
视频存储是视频监控系统的关键技术,嵌入式视频监控系统中,数据存储技术一般的做法是把从嵌入式视频监控服务器端的视频数据存储在大容量的存储器中,但是在许多场合存储时间都会受到存储器大小的限制,从而会在存储终端增加存储器容量。其实一般被人们关注的存储视频往往是那些异常视频,基于这样的事实[1],本文提出一种基于缓冲区和异常检测机制的视频存储算法。
基于缓冲区与异常检测机制的视频存储算法是在视频图像中的场景出现异常时,才执行视频存储操作。这样大大节省硬盘空间,减少访问硬盘的频率,有效性地提高系统效率。
基本思想:利用异常检测机制,只有在场景中发生异常的情况下才进行视频存储,视频存储时引入缓冲区机制,根据异常检测精度的需求的不同设置缓冲区大小,存储异常视频帧前后某个阈值内的视频流,同时为可以满足以后视频回放的需求,一般用户只对异常发生时候的前后一段的内视频感兴趣。
1 基于异常检测算法视频存储方案
1.1 缓冲区机制
缓冲区技术实现的基本思想是:当用户要求在某个设备上进行读操作时,从系统中获得一个空的缓冲区,并将一个物理记录读到缓冲区中。当用户要求使用这些数据时,系统将根据用户要求,把当前需要的逻辑记录从缓冲区中取出并发送到用户进程存储中。缓冲区技术可以提高CPU和I/O设备的并行性,以及I/O设备之前的并行性[2],从而提高整个系统的效率。
在本算法中引入缓冲区机制,可以比较完整的存储异常产生时的视频信息,同时提高系统效率。具体的引入缓冲区机制的异常检测存储算法步骤如下:
1)申请一个缓冲区Buffer[n];//n为一个取定的素数;
2)对于缓冲区Buffer[n]接收第k帧采集的视频图像并把第k帧图像存放在Buffer[k%n];
3)当k%n=[n/2]时,调用异常检测算法进行异常检测;
4)如果第k帧图像被判定为异常,将缓冲区Buffer[n]的视频信息存储到硬盘中,否则第i
5)如果没有输入视频图像,则算法停止。
1.2 异常检测算法
运动检测的灵敏度、正确性和鲁棒性是嵌入式视频监控系统性能评价的关键指标[3,4],在传统的运动检测方法中一般使用单一的准则来判断是否发生异常情况,这必然导致灵敏度、正确性和鲁棒性指标相互冲突。该算法采用运动矢量与运动补偿技术。运动矢量是用来计算图像帧之间的变化,而运动补偿技术屏蔽因噪声或其它轻微变化产生的影响,从而降低误报率提高监控系统的鲁棒性。具体算法如下:
1)采用运动检测与加权运动补偿技术,获取变化的运动标量MSk与加权运动补偿后的残差信号能量 D iffEnergyk;
2)根据假定的运动矢量与残差信号能量的阈值:MSmin与DiffEnergymin,判断当前场景是否为正常,异常、可疑状态。
3)如果MSk≥MSmin且DiffEnergyk≥ D iffEnergymin,当前帧为异常帧,返回异常状态;
4)如果MSk<MSmin且DiffEnergyk< D iffEnergymin,当前帧为正常帧,返回正常状态;
5)如果MSk≥MSmin且 DiffEnergyk< D iffEnergymin,当前帧为可疑帧,进行连续运动分析,转到7);
6)如果MSk<MSmin且DiffEnergyk≥ D iffEnergymin,当前帧为可疑帧,进行连续运动分析,转到7);
其中MSk与DiffEnergyk的计算如下:
运动矢量刻画了图像中的运动信息。H.264标准的运动预测具有1/4像素精度,对运动矢量的计算比以往标准更为精细。因此,当有外来物体进入画面时,即运动缓慢,其运动趋势也可以立即在运动矢量集合中得到体现,有助于提高监控系统的灵敏度[5]。
在H.264编码标准中,运动估计补偿比以前的标准更加灵活有效,支持可变块大小的运动估计运动补偿模式[6]。设H.264编码流中的某一帧图像经过运动补偿预测后被划分为Np个图像块,利用SAD加权系数值最小作为匹配准则进行运动预测,对于左上端顶点位于s=(x,y)处、序号为 n p(1≤ np≤Np)、尺寸为 S izenp=M×N的图像块,设最终得到的运动矢
其中SAD值由下式得到:
其中, Yn为当前图像的亮度值,YR为参考图像的亮度值。Wnp是为了补偿光线变化的影响所引入的加权系数,定义如下:
可见运动标量MSk是图像运动块的距离之和。
为了降低计算复杂度,采用式(1)使用的SADnp值作为第 np个图像块的残差信号能量值,该值可以在运动预测过程中直接得到。于是第k帧图像的残差信号能量 D iffEnergyk可表示为: D iffEnergyk
2 实验与算法分析
视频监控异常检测涉及的异常变化种类繁多[7],对算法的性能和效率进行评估并不容易,本文根据异常检测算法的实时性和有效性,根据正确检测率RD和错误报警率RFA对本文算法与以下几种算法做比较,包括一般的运动异常检测、静止物体缓慢变化时的监控、背景变换情况下的检测和光线缓慢变化时背景的更新[8]。分析比较结果如表所示。其中:
KTP表示正确检出异常发生的情况;KFP表示错误检出的运动无力的情况;KFN表示存在异常但未检出的情况即漏检。
表1 各种异常检测算法效率评价
RD反映了异常检测的正确度,RFA反映了算法的精度,误报率越低精度越高,在这里,本文有加入算法平均时间TE和算法效率ηHE两个参数,因为在视频监控中实时性要求很高,尽量要设计简单执行效率的高的算法才能满足系统的整体性能。其中TE用算法复杂度来衡量,ηHE计算如下:
其中α、β、γ为RD、RFA和TE在评价中所占的权重。
本算法分析的测试实验是利用包含大约2000帧图像,由10个具有一定图像细节和运动的图像序列组成的视频流,异常情况有:物体进出镜头、物体的位移和形变、光线的变换,采用公式(5)到公式(7)计算公式对几种算法进行分析,结果如表1所示。其中正确检测率最高的是光线缓慢变化时背景的更新算法,但是它的误报率较高,因为此算法在背景中存在缓慢变化的物体时不断替换背景,一旦场景发生剧烈变化就产生持续报警,背景无法更新。背景变化情况下的检测误报率低,但是算法平均时间比较长,本文算法正确检测率高,虽然存在一定的误报率,不过也非常低,而且算法效率较高,算法平均时间短,能够嵌入式视频监控的实时性和高效性。
3 结论
为了提高视频监控系统中视频存储的效率,本文提出一种基于缓冲区与异常检测机制的视频存储算法。该算法有效节省视频监控系统存储负荷,并可以比较完整的存储异常视频信息。同时有利于用户回放视频的便捷性。通过实验分析,与目前算法相比,本算法具有高效性与较高的正确检测率。
[1] 吕金娜,周兵,张志军.嵌入式数字视频监控系统通用存储与检索方案[J].计算机工程与设计,2009,30(21):4864-4867.
[2] 宋丽华,张晓彤,王沁,郭艳飞.一种高效嵌入式协议栈缓冲区管理机制[J].小型微型计算机系统,2008,29(1):1-6.
[3] 武智霞,王化,王沛.基于H.264压缩域的运动目标检测算法[J].电子科技,2010,23(7):4-6.
[4] Peng Zhang, Yanning Zhang, Tony Thomas. Moving people tracking with detection by latent semantic analysis for visual surveillance applications. Multimedia Tools and Applications.2012.5(13).
[5] 吴国红.基于H.264视频流镜头边界检测的研究[D].武汉:武汉科技大学.2008.
[6] 王敬.基于压缩域的运动目标检测与跟踪算法研究[D].上海师范大学.2012.
[7] Ping-guang Cheng,Zeng Zheng. Moving Object Tracking in Intelligent Video Surveillance System. Proceedings of the International Conference on Information Engineering and Applications (IEA) 2012(2).
[8] 宋磊.视频监控若干关键技术的初步研究[D].北京:北京工业大学,2003.