面向多区域视频监控的运动目标检测系统
2015-05-10林培杰郑柏春陈志聪吴丽君程树英
林培杰,郑柏春,陈志聪,吴丽君,程树英
(1.福州大学 物理与信息工程学院,福建 福州 350116;2.福州大学 微纳器件与太阳能电池研究所,福建 福州 350116)
1 引 言
传统的视频监控系统,需要监控人员注意力高度集中于监控屏幕,其视力负担很大。长时间工作后,监控人员的注意力也将大大降低,极有可能错过重要信息而导致严重后果。因此,该方案的实际工作效率不高。在一些特定应用中需对运动目标进行自动检测和报警,现有的许多运动目标检测算法通常在PC平台上实现,成本高,难以普及;随着嵌入式处理的发展,基于DSP、FPGA或者两者结合进行视频处理的运用越来越广泛,实时性也得到了很大的提高。为了充分利用FPGA的并行处理、良好的时序控制及可重构等特性,本文选择了FPGA作为系统的实现平台[1-3]。
目前,运动检测的研究重点集中在目标提取的正确率和背景模型的健壮性上,忽视了检测系统的应用场景。在某些复杂的应用环境(如生产车间),感兴趣的目标有时分布在摄像头视野的不同区域,需要对多个区域分别进行检测,并且能对目标区域进行实时调整,而传统的监控系统不具备这些功能。Object Video公司2012年提出了能够在GIS中划定区域并映射到监控画面的特定区域目标检测与识别系统,这一系统基于云计算实现,需要较大的投入。西安电子科技大学2007年提出了基于FPGA的运动目标检测系统[4],该系统只支持一个检测区域的划定,且区域坐标需要通过串口输入,使用并不方便。
本文以FPGA为平台,对传统的运动目标检测算法进行改进,提出了背景动态更新的检测算法,在FPGA上实现了该算法。系统具有较好的实时性,并且实现了分区域检测功能,基于视频输入为640×480的分辨率,针对一般的场景应用,初始设置了4个检测区域。检测区域的个数、大小、位置可通过简单的按键操作设定。具有较高的实用价值。
2 背景动态更新算法介绍
目前,在运动检测方面常用的算法有光流法、帧间差分法和背景差分法[5-7]。光流法的特点是计算复杂性高,资源消耗量大,适合移动摄像头的运动检测;帧间差分法帧间差分法运算简单,资源消耗少,易于实现实时检测。但是帧间差分法存在“轮廓”、“快动”、“缓动”等问题,容易造成误报;背景差分法在复杂场景下会造成判别错误,使检测系统无法正常工作[8-9]。
针对背景差分法存在的缺陷,并结合帧间差分法的优势,本文提出背景动态更新的算法。基本原理是同时采用帧差法和背景差法,帧差法的检测结果作为背景更新的依据。当系统的帧间差分计算模块连续N帧时间未检测到运动目标时,认为当前画面中没有物体在运动,并用当前画面作为背景替代原先存储在背景缓存中的背景,实现背景的动态更新。N的值可以根据具体应用场合运动目标的出现频率而设定。算法流程如图1所示。
图1 背景动态更新算法流程图Fig.1 Flow chart of dynamic background update algorithm
本算法由于具有背景动态更新功能,能自适应光线的变化。同时,对于运动到画面中然后静止的物体,正确的反应应该是发出一次报警后将该物体视为背景。传统的背景差分算法会持续报警,而本算法会在连续报警N帧后将该物体视为背景。另外,算法运算复杂度低,可以在小规模的FPGA芯片上实现。
算法效果图如图2所示,第1幅图代表在视频区域中划定了一个检测区域;第2幅、第3幅图表示在该区域中背景发生变化时,区域边框进行闪烁表示;第4幅图表示,经过一定时间之后,根据算法,该区域背景已经更新,因此对应的边框不再闪烁,说明算法工作效果良好。
图2 背景动态更新算法效果图Fig.2 Result picture by dynamic background update algorithm
3 系统设计
本系统基于Spartan-3ADSP S3D1800A 的FPGA开发板实现,摄像头采用OV7670CMOS摄像头。系统结构如图3所示。从摄像头读取的视频信号经过位拼接后形成完整的YUV像素数据,通过多端口存储器控制器(Multi-Port Memory Controller,简称 MPMC)存入DDR2内存芯片中,并按VGA的时序要求从DDR2中读出数据。从DDR2中读出的数据经过色彩空间转换和滤波后,和窗口闪烁图像叠加,最后进入VGA信号生成模块,输出视频信号。
图3 系统结构图Fig.3 System structure diagram
同时,运动检测模块读取视频灰度信息,进行目标检测,同时判断按键设置好的窗口坐标,并根据检测结果控制窗口的闪烁。而窗口控制模块则依据按键的设置决定窗口的位置,大小及个数。
3.1 图像采集模块
图像采集采用OV7670摄像头模块,用类似IIC的串行摄像头控制总线(Serial Camera Control Bus,SCCB)对其进行初始化。将摄像头配置成30帧/s逐行显示,640×480像素的YUV422输出,每个像素由16位数据组成,高8位为Y信号,低8位为U/V信号。在YUV422格式的视频信号中,Y信号每个时钟都会采样,而U和V信号则是间隔采样。由于该摄像头模块的数据引脚只有8位,因此需要用二倍频的像素时钟对8位的引脚进行时分复用输出,FPGA接受到像素信号后,将两个8位的数据拼接成一个16位的完整的像素信号。图4为摄像头配置时序图,从图中的配置有效信号Config_Done变为高电平可以看出摄像头配置成功。图5为摄像头数据输出时序图,从图中可以看出在数据有效信号den有效之后,YUV数据正常输出。数据输出后采用采用MPMC IP核发送至外部DDR进行数据的缓存。
图4 OV7670摄像头配置时序图Fig.4 Configuration timing diagram of OV7670camera
图5 摄像头数据输出时序图Fig.5 Data output timing of camera
3.2 色彩空间转换及显示模块
本系统采用的运动目标检测算法是对图像的灰度进行检测。为了得到图像的灰度,也就是YUV信号的Y分量,需要将摄像头配置成YUV422输出的模式。而VGA显示只能采用RGB888信号。因此需要对像素数据进行色彩空间的转换。常用的色彩空间转换公式为[10]:
式(1)中的参数根据不同标准有所差异,由于VGA逻辑要在27.125MHz的时钟频率下运行,为了符合时钟要求,减小延时,实现实时检测,需要设计高效的矩阵运算电路。本系统的色彩空间转换模块采用5级流水结构,具体电路如图6所示。在这种结构下,两个寄存器之间最长的路径延时为一个乘法器的延时,在电路结构上最大地提高了运算速度,每一个时钟周期完成一次矩阵运算。
3.3 图像滤波
图6 5级流水结构矩阵运算器Fig.6 5levels pipeline structure matrix operator
经过空间转换后,数据信号进行图像滤波,去除部分像素噪声。系统采用快速中值滤波器进行实现,该算法需要两个模块矩阵滤波窗口和排序模块。
3.3.1 矩阵滤波窗口实现
要获得一个像素区域的所有值需要设计一个3×3的像素缓存单元。根据图像数据的串行传输的特点,数据是一行接着一行的,而一个像素周围的像素的灰度值不都是在同一行上,因此需要将该像素所在行以及邻近的两行的像素灰度值保存起来。传统的做法是通过三个FIFO来对数据进行缓存,但是FIFO在控制时序上比较复杂,同时在FPGA内部的移位寄存器具有抽头输出的功能,正好适合本文的设计要求,因此本文采用移位寄存器来设计。
串行数据通过移位寄存器后,可利用多个抽头转化成并行数据。本文中,由于视频的分辨率是640×480,所以需要将图像2行的1 280个8 bit灰度值数据存入寄存器。寄存器内部的数据经通过两个抽头taps0x、taps1x分割成两行数据,这两行数据与寄存器输入数据共同组成并行数据输出。但是此时的数据并不是同步的,需要对输入的数据通过像素的使能进行同步。数据输出后暂时存储起来,这样经过3次读取后,可以得到3组并行数据,这3组并行数据即为3×3的滤波窗口。该部分的基本原理如图7所示。
图7 3×3滤波窗口生成过程Fig.7 3×3filter window generation process
3.3.2 排序模块的实现
得到3×3滤波窗口后,需要将窗口内部的9个数据进行大小的比较,由于需要进行7次的排序操作,所以本文采用模块复用的思想,牺牲速度来节约面积资源。复用模块的设计思想是,使用冒泡排序算法对3个灰度值进行排序。其算法过程是对所有的数据元素进行遍历,一次进行2个数据的比较,如果大小顺序不符合升序(降序)的要求则将两个数据位置调换,直至无需再对调位置为止。排序得到的数据与时钟进行同步处理后,即可得到基本的排序模块。根据快速中值滤波器的原理,先后进行3次的行排序,再进行3次的列排序,最后右对角线进行最后排序,所得的数据即为3×3滤波窗口的中值。
经测试,前端输出的视频图像上存在一些偏绿色的噪点,如图8(a)图像,这些噪点会影响后期对边沿检测的处理。通过中值滤波器可以抑制噪点的存在,处理后的效果图如图8(b)图像。
3.4 运动检测模块
运动检测模块是本系统的核心,它采用的是前面所介绍的背景动态更新的算法。模块结构如图9所示。
图8 快速中值滤波器处理效果图Fig.8 Result picture by fast median filter
在进行运动检测时,将640×480的图像分成32×32块,每块的大小为20×15个像素。这样做有两个好处:(1)提取块的均值,能抑制像素噪声对检测结果的影响。(2)大大减小了需要存贮的数据量,使得FPGA上的Block RAM能满足存储空间的需求。但是这种方法以检测精度的降低为代价。
图9 运动目标检测模块结构图Fig.9 Structure diagram of moving object detection module
模块中有两个RAM,用片上Block RAM实现,分别存储上一帧和背景图像的块均值。每个块均值都是一个8bit的无符号数,一帧图像共1 024个块。因此这两个RAM的位宽为8bit,寻址空间为1K。
每计算出当前帧一个块的均值,就将其和上一帧对应块的均值进行比较。当连续2 048帧(约68s)未检测到运动目标,就将背景RAM的写使能(wren)信号拉高一帧,进行背景的更新。同时,当前帧块均值和背景块均值进行比较,对检测到的运动目标进行区域判定,将判定结果提供给后端图像显示电路。
3.5 检测区域控制模块
本系统最多支持对4个区域进行分别检测和报警。用两个寄存器分别对像素的行和列计数,这样相当于计算出当前像素在图像上的“坐标”。而每个窗口的位置信息(上,下,左,右四条边)分别存储在4个寄存器中。在进行背景差分法运算的同时,将像素的“坐标”和窗口的位置进行对比,得到当前求帧差的像素在哪个窗口内。如果检测到的运动像素位于窗口x内,则将窗口x内的运动点计数器加一,若运动点计数器的值大于一定的阈值,我们就认为窗口x中检测到运动目标,该窗口发出闪烁信号,并与现有视频叠加送至VGA显示器显示[11]。
为了控制区域的使能、位置以及大小,系统提供了六个按键对检测区域进行设定,设定的结果可以随时被更改。这六个按键可以实现窗口选择、模式选择和上下左右调整等功能。
4 系统验证
系统硬件实物图如图10所示。
图10 系统硬件实物图Fig.10 System hardware chart
图11 运动目标检测Chipscope波形图Fig.11 Chipscope waveforms of moving object detection
图11是“运动目标出现在区域0后静止不动”这一事件对应的Chipscope波形图。图中各个信号都有对应的注释。从图中可以看到,在该行中,每20个时钟周期,当前块的一个块均值就会被计算出来。随后依据第2节中的算法分别计算其帧差值及背景差值。由于该目标进入区域0后静止,帧差delta_f的绝对值很小,帧差法检测不到目标,如果一帧结束时帧差法都没有检测到目标,就将该帧视为静止帧。背景差delta_b出现大于阈值(本次试验设为25)的值,背景差法检测到目标,并且根据win0_in为高电平判断出目标在区域0内。win0_sum统计目标块个数。图中系统依据帧差法的判定,将当前帧视为静止帧,fram_cnt加一,当fram_cnt等于2047,背景就会更新。
图12是系统的现场测试图,图中开启了4个检测区域,4个区域颜色各不相同,大小和位置可以通过按键设置。从图中可以看出,运动目标进入某个窗口后,该窗口就会由固定的颜色转变为黑白交替地闪烁,以提醒监控空者在对应的区域发现了运动目标。如果运动目标在某个窗口中停止运动,系统仍然能够继续报警,直到将该目标归入背景。经测试,系统能正确地实现背景动态跟新算法,实现多区域运动目标检测功能。
图12 系统现场调试图Fig.12 System debugging chart
本系统的FPGA资源消耗情况如表1所示。
表1 FPGA资源消耗表Tab.1 FPGA resource consumption table
从表中可以看到,系统只使用了1个Block RAM用来存储块均值。由于采用了基于块均值的计算方法,系统需要的存储空间很小。一个Block RAM 的存储空间为18kb,片上84个Block RAM的存储空间总和为1 512kb,而一帧图像的大小为2457.6kb。可见,如果不采用块均值的存储方式,片上的存储空间是无法满足要求的。
从Slice,LUT和Flip Flops等其他资源的消耗情况来看,本系统消耗的资源很少,容易在小规模低成本的FPGA上实现,并且易于集成入其他复杂的系统中。
在系统各个模块延时方面,其中图像数据缓存延时在1帧以内;中值滤波延时为5个时钟;其他模块的延时就是输入输出的寄存器各延时1个时钟。系统中图像的采集和检测是同时进行的,在一帧图像内完成,采集图像的同时记录各个检测区域运动点的个数,在一帧结束的时候确定运动点的个数,以及哪几个窗口有运动目标,然后在下一帧让运动窗口进入闪烁状态。
5 结 论
本系统采用背景动态更新的运动检测算法,构建了具有多区域运动目标检测功能的视频监控系统,最多支持4个检测区域。该系统能动态更新背景,较好地适应背景的变化。检测区域的大小,位置和数量可以方便地配置,实现了640×480,30帧/s视频信号的分区域实时检测。该系统消耗较少的逻辑资源,可以在小规模的FPGA芯片上实现,适用于社区安防监控或生产安全监控等不同的场合。
[1] 郭永彩,苏渝维,高潮.基于FPGA的红外图像实时采集系统设计与实现[J].仪器仪表学报,2011,32(3):515-519.Guo Y C,Su Y W,Gao C.Design and implementation of real time infrared image collection system based on FPGA[J].Chinese Journal of Scientific Instrument,2011,32(3):515-519.(in chinese)
[2] Tomasz K,Marek G.Real-time implementation of moving object detection in video surveillance systems using FPGA [J].Computer Science,2011,12(1):149-162.
[3] 周建英,吴小培,张超.基于滑动窗的混合高斯模型运动目标检测方法[J].电子与信息学报,2013,35(7):1650-1655.Zhou J Y,Wu X P,Zhang C,et al.A moving object detection method based on sliding window gaussian mixture model[J].Journal of Electronics &Information Technology,2013,35(7):1650-1656.(in chinese)
[4] 祝利勇.基于FPGA的视频运动目标检测系统[D].西安:西安电子科技大学,2007.Zhu L Y.A video moving object detection system based on FPGA[D].Xian:Xidian University,2007.
[5] Lipton A J,Fujiyoshi H.Patil R S.Moving target classification and tracking from real-time video [J].IEEE Workshop Application of Computer Vision,1998,17(9):8-14.
[6] Barron J L,Fleet D J,Beauchemin S S.Performance of optical flow techniques[J].International J.Computer Vision,1994,12(1):42-77.
[7] Jain R.Difference and accumulative difference pictures in dynamic sceneanalysis[J].Image and Vision Computing,1984,2(2):99-108.
[8] 吴君钦,刘昊,罗勇.静态背景下的运动目标检测算法[J].液晶与显示,2012,27(5):682-686.Wu J Q,Liu H,Luo Y.Algorithm of moving object detection in static background[J].Chinese Journal of Liquid Crystals and Displays,2012,27(5):682-686.(in chinese)
[9] 刘翔,周桢.基于分块背景建模的运动目标检测技术[J].液晶与显示,2011,26(6):831-835.Liu X,Zhou Z.Moving objectives detecting technology based on block processing of background model establishment[J].Chinese Journal of Liquid Crystals and Displays,2011,26(6):831-835.(in chinese)
[10] Hoang V,Pham C.Efficient LUT-based truncated multiplier and its application in RGB to YCbCr Color space conversion[J].IEICE Transactions on Fundamentals of Electronics,Communications and Computer Sciences,2012,95(6):999-1006.
[11] 郑争兵.基于FPGA的 VGA波形显示系统设计与实现[J].液晶与显示,2014,29(1):88-93.Zheng Z B.Design and implementation of VGA waveform display system based on FPGA[J].Chinese Journal of Liquid Crystals and Displays,2014,29(1):88-93.(in chinese)