1. 引言
新时期,随着城市化进程的加快,城市快速扩张,人群居住更为聚集,形成了越来越多的人口稠密地区,带来了大量的人、财、物集中流通,同时民众间明显的贫富差距也使各类侵财性案件持续高发,给人民群众带来了巨大损失。特别是入室盗窃案件,犯罪分子为了个人利益往往会不计后果,铤而走险,极易转化为入室抢劫甚至入室强奸、杀人等恶性案件,导致人们对个人安全的需求日益增强。由于人工方式检索进行视频排查效率低下,并且几乎不可能实现实时有效监控,因此本文设计了一种基于FPGA的小型安防监控系统来满足家用场景的安防需求。图1展示了被监控拍下的两起入室盗窃行为。
运动目标检测是智能安防视频监控中非常重要的一环,其主要目的是从一个场景或者视频中定位出目标的位置或者跟踪其运动轨迹,能及时对潜在的危险做出预警。当前主流的目标检测系统平台有CPU处理器、GPU处理器、AI智能芯片以及FPGA、DSP等。其中CPU处理数据时采用的是串行处理机制,因此实时检测处理性能较低;GPU处理器以及AI芯片主要依赖于构建复杂且庞大的深度学习框架来实现目标检测,处理性能好,响应速度快,缺点是系统功耗大、成本不菲;DSP处理器具有强大的运算速度,可实现目标检测算法中的矩阵乘法和卷积运算,但其指令是顺序执行的,且硬件结构固定,灵活性较差。基于此基础,可利用FPGA处理效率高、功效能耗低、内部资源丰富等优点设计一种针对于小型家用安防监控系统 [1] [2] [3] ,来实现对无人场所的安防功能。同时FPGA拥有并行处理方式和多级流水线处理机制,可以极大地提高安防系统的实时检测性能。
目前,运动目标检测算法主要有帧间差分法、背景差分法、卡尔曼滤波法和光流法。背景差分法的思想是用当前图像帧和背景帧作差,与阈值进行比较分割目标 [4] [5] ,缺点是背景图像不允许存在运动目标,且不能实时更新以适应环境的变化;卡尔曼滤波法利用上一帧的观测值对下一帧运动物体的位置进行预测,且涉及除法运算,对于毫无规律可言的非线性运动进行预测时,其精度表现差强人意 [6] ;光流法主要分析视频中物体在相邻帧中的位移,计算得出光流场并通过光流场的变化来检测运动目标,算法复杂度高,由于变化的光线会被错误地识别为光流,因此该方法对光线敏感,易受光照强度变化、噪声和背景扰动等因素的干扰 [7] [8] [9] ;帧间差分法直接对相邻的两帧或多帧图像进行差分,因此稳定性较好,即使在外部环境变化剧烈的情况下,仍能取得很好的效果,通过选取合适的阈值对差分后的图像二值化,从而检测出运动物体 [10] ,运算简单易于FPGA实现。
2. 算法思想
帧间差分法检测运动目标主要依赖于对相邻两帧图像进行差分,如果连续两帧图像之间产生明显的变化,那就证明视频中出现了运动目标时。因为视频中有运动目标的存在,所以将两帧图像对应相减,结果取绝对值,得到灰度查分图像,与设定阈值进行比较,来确定图像序列中有无运动目标。式(1)计算得到运动目标产生的像素灰度差的绝对值,再通过式(2)将差分图像像素值与设定的阈值进行比较,分割确定运动目标位置。
(1)
(2)
其中,gk(x, y)、gk−1(x, y)为相邻两帧灰度图像,d(x, y)为灰度差分图像,f(x, y)为帧间差分二值图像,1代表运动区域,0代表背景区域。T为阈值,若T选取得过大,则检测的目标可能出现较大的空洞甚至漏检;若T选取得过小,则将出现大量噪声。在此基础上,设计了图2所示的帧间差分实时检测算法 [1] [2] 。
Figure 2. Basic flow of inter-frame differential detection
图2. 帧间差分检测基本流程
3. 系统总体设计
Figure 3. Moving target detection FPGA implementation block diagram
图3. 运动目标检测FPGA实现框图
整个系统由OV5640图像采集模块、DDR3缓存控制模块、图像处理模块、HDMI显示模块4部分组成。整体可以划分为图像采集部分,图像处理部分,图像缓存与显示部分。系统框架如图3所示。
3.1. OV5642图像采集模块
OV5642摄像头模组采用2片图像传感器OV5640组装而成,拥有500W级像素。工作时由时钟控制感光阵列将图像信号转换成模拟信号,再经过A/D转换器转换成数字信号,通过寄存器配置输出格式为RGB565的图像数据。摄像头内部使用IIC总线驱动两线式SCCB接口,通过SCCB协议对OV5640摄像头进行寄存器地址的配置,并控制初始化的开始与结束。在初始化配置完毕后,摄像头在像素时钟的驱动下,开始采集图像数据,输出场同步信号VSYNC、行同步信号HREF,在二者同时有效时,将8位图像数据进行采集并进行图像位宽拼接成16位RGB图像再传输到其他模块进行处理。
3.2. DDR3缓存控制模块
在OV5642采集图像数据之后,需要存储数据进行差分运算,而FPGA内部存储空间有限,因此需要将数据存储到外部单元DDR3中 [11] 。为满足图像数据的缓存需求,采用外挂四块H5TQ2G63FFR芯片作为DDR3,存储总容量大小为4 GB,并且时钟周期为100 MHZ,与摄像头的时钟周期不同,因此需进行FIFO缓存设计,对其进行优化。
在低速处理高速数据流时,可以使用乒乓操作 [12] ,如图4所示,将DDR3的物理存储分区分为bank0、bank1,由于DDR3读写两侧时钟域并不相同,就需要使用两个异步FIFO来处理的图像数据,wr_ff、rd_ff控制两个bank的读与写,rd_end、wr_end表示某一个bank的读或写操作完成的信号。
当wr_ff到来时,将第一帧图像数据写入到bank0中,并拉高wr_end信号,此时下一帧数据就会被写入到bank1中。当bank1写入数据的时候,异步rd_ff控制bank0开始读出第一帧图像数据,读与写操作同时进行,就能处理好高速数据流。在读完bank0中的数据后,拉高rd_end信号,再切换到bank1读取新的一帧数据。bank0和bank1在两个异步FIFO的控制下不断进行读与写的切换,这样就实现了前一帧数据从DDR3读出时,可以刚好传输到帧差处理单元与当前帧数据作差分处理。
3.3. 图像处理模块
摄像头输出视频图像,送入灰度转换模块,进行灰度转换后分输出到帧差运算模块和DDR3缓存模块。帧差运算模块运用帧间差分算法思想,对摄像头输入的当前帧图像与DDR3中保存下来的前一帧图像进行差分运算。这样得到的差分图像与规定的阈值比较,大于阈值为运动目标,小于阈值为背景区域。腐蚀模块选用的是[111, 111, 111]T的矩阵运算单元,使用此运算单元对差分二值图像进行形态学滤波处理 [13] ,滤除小于结构单元的图像细节,使图像能更加平滑。目标检测模块是图像处理部分中最后一环,采用帧间差分理论,根据提前设定好的阈值大小在帧图像中识别运动目标,或者判断标记物体是不是另一个运动目标。不同运动目标位置关系分别有3种,为外离、相交、内含。在两个标记目标之间的距离大于或接近阈值,即外离与相交时,判定为同一个运动目标;而对于内含,两个目标距离小于阈值,可能就是同一个目标正在运动,判定为同一个运动目标。图5为整体工作流程。
Figure 5. Implementation flow of object detection algorithm
图5. 目标检测算法实现流程
3.4. HDMI显示模块
由于本系统不需要传输声音信号,且HDMI向下兼容DVI,因此显示模块使用rgb2dvi模块连接到HDMI连接器,代替HDMI编码芯片完成显示工作,模块完成24位RGB编码并输出TMDS差分信号。
在HDMI视频数据传输过程中,将24位的RGB888格式的图像,在编码和并串转换后,以TMDS数据输出至HDMI。rgb2dvi分为HDMI_Encoder和HDMI_Serializer两个子模块,前者用来实现8位/2位到10位的编码转换,后者用来实现这10位数据进行并串转换,最后通过OBUFDS转化成TMDS差分信号传输。
4. 实验结果
本文验证平台采用以Xilinx公司的XC7Z020-2CLG400I芯片为核心,400个引脚的FBGA封装的ZYNQ7020处理板卡。该板卡集成了两个ARM CortexTM-A9处理器,拥有85,000个逻辑单元,253个最大用户I/O等硬件资源。系统通过摄像头采集到的视频分辨率为640 × 480,帧率为60 fps。
表1是整个系统RTL设计在布局布线后的资源占用率统计,整体占用率低,满足系统设计时小型化的需求。
Table 1. FPGA resource usage statistics
表1. FPGA资源占用率统计
表2对比了CPU处理器和本检测系统的单次目标检测平均耗时。在处理连续200帧图像时,本系统单次目标检测时间平均约为26.428 ms,仅为CPU处理器的十二分之一,能够满足设计时对高速实时性能的要求。
Table 2. Comparison of detection efficiency of different platforms
表2. 不同平台检测效率比较
在实验室进行实际测试,将分割阈值设定为20。图6中可以看到玩偶被检测出来,系统准确检测到目标在区域内运动时的实时位置。
Figure 6. Moving target detection results
图6. 运动目标检测结果
5. 结论
本文设计的基于FPGA的小型家用安防监控系统,利用FPGA能够并行处理的优势,融合帧间差分法、基于距离阈值的目标分割算法,结合CMOS图像传感器、外部存储器和显示器,实现了运动目标的实时检测。整个系统设计体积小、功耗低、实时检测效率高,满足小型家用的需求。但本算法仍存在一定的缺陷,需要根据实际情况合理设定判定阈值,若目标过大或运动目标运动缓慢,则会出现检测不准确的情况,这些问题在以后的研究中需要进一步完善。
NOTES
*通讯作者。