随着人们生活水平的提高以及安全防范意识的加强,视频监控系统得到了广泛应用。目前的监控多以PC机为主,只能起到简单的视频记录功能,同时需要配备专人监视屏幕。对于一些少有人出入的重要场所,通过人工方式对屏幕监控是一件麻烦的事情,而且PC机还需要配备大容量的硬盘来保存所有视频图像,硬盘使用量极大。针对这种情况,本文设计了一个无人值守的监控系统。系统在无人进入监视范围时不保存视频图像,当有人进入监视范围时才启动视频记录程序,同时自动快速捕获人脸,利用模式识别与图像处理技术对人脸特征进行分析,提取其特征量并与人脸库中的特征量进行匹配,判断是否为非法人员,如果是则进行报警,并通过网络提醒远程监控中心注意监视。对于平时很少有人出现的场合,利用该监控系统可以减少数据容量,减少监控人员,而且不会担心错过监视对象。本系统是在原有一代产品的基础上对硬件电路设计及软件算法上进行了改进。实践证明系统的反应速度、识别处理速度等都有了较大提高。
1 系统概述
摄像机在主控系统的控制下工作,在没有移动目标进入的情况下,摄像机的数据不存储。当拍摄到有人进入后,主控系统立即控制摄像机对非法进入指定区域的人体进行跟踪,并在跟踪过程当中对人脸定位并快速准确地获取其面部图像,同时启动录像功能;然后通过一系列的数字图像处理方法对面部图像进行分析、处理,确定是否为非法入侵,如果是则启动报警系统。利用多个这样的子系统可组成一个监控网络,各个子系统通过网络与监控中心连接。因各个子系统具有智能监控功能,所以监控中心只配备一个值守人员即可监控20个以上的监控点,大大减少了人员的使用。
2 系统硬件组成
由于该系统处理的数据量较大,且要求实时性强,故采用DSP和FPGA相结合的方法,加上图像数据采集芯片以及存储芯片,构成核心图像处理单元。同时配备有本地报警模块、网络传输等,从而构成了一个完整的监控系统。系统组成框图如图1所示。与原有系统相比,本系统作了如下改进:把原来只作为数据缓冲处理的FPGA设计为主控芯片,控制数据的输入调理和输出报警,而把DSP解放出来,专门用作图像处理及传输。这样可以提高数据的处理速度,从而提高系统的反应速度。
2.1 系统主要芯片的选用
(1)图像采集芯片采用TVP5150。TVP5150是具备超低功耗、支持NTSC/PAL/SECAM等格式的高性能视频解码器。在正常工作时,它的功耗仅115 mW,通过设置内部寄存器,可以将模拟图像信号转换为YUV4:2:2格式的ITU-R BT.656数字信号,并直接送到DM642进行处理。
(2)为提供系统的快速反应能力,图像处理芯片的选择尤为关键,综合各方面的因素,DSP选用TI公司专用多媒体芯片TMS320DM642(简称“DM642”)。DM642基于C64x内核,可在720 MHz时钟频率下工作,每个指令周期可并行8条32 bit指令,能达到5 760 MIPS的峰值计算速度[6]。DM642采用了2级缓存结构(L1和L2),大大提高了程序的运行速度。片内64 bit的EMIF(External Memory Interface)接口可以与SDRAM、Flash等存储器进行无缝连接,极大地方便了大量数据的搬移。此外,DM642还拥有3个专用的视频端口(VP0~VP2),用于接收、处理视频和音频数据,系统功能扩展十分方便。此外,DM642自带的EMAC口以及从EMTF口扩展出来的ATA口,还为处理完成后产生的海量数据提供了存储通道[5]。DM642需要外加SDRAM(4 M64 bit),用于存放程序和缓存数字视频,以及FLASH(4 M8 bit),用于存放固化程序,以便进行ROM引导。
(3)FPGA负责实现系统的逻辑、输出控制以及内部缓存的时序控制。为实现图像的实时采集和处理,需要视频采集和图像处理并行工作。采集到的图像数据送到DSP前的缓存接口设计是关键,设计的优劣直接影响到系统的反应速度。要提高数据缓存读取速度,可利用FPGA内部资源构建高速双口RAM作为内部缓存,使数据帧处理交替进行,从而实现数据采集与处理同时进行,其内部结构如图2的虚线框内所示。采集到的数字视频信号先经过滤波处理,之后送入逻辑单元A,A负责产生时钟及数据逻辑控制。输入的视频数据信号在A的控制下,进入到缓冲器寄存器B和C,在控制单元D的控制下,送到双口RAM。为了实现实时图像采集和处理,使得FPGA对图像数据的缓冲和DSP对图像数据的读取同步进行,将RAM分成相等的2块,即RAM1和RAM2。在系统工作的过程中,一块用于缓冲图像数据,FPGA分类缓冲后的图像信号写入该存储区;另一块则由DSP用于对图像数据的读取,DSP可以直接对这个存储区的数据进行运算。该缓存结构的另一特点是FPGA和DSP对双口RAM的寻址是来回切换的。因为DSP读取RAM的速度大于FPGA写RAM的速度,所以切换信号仅由FPGA发出。当FPGA分类缓冲数据写满RAM1时,FPGA向DSP发出一个中断信号,此时DSP读取RAM1中的数据,同时FPGA的缓冲数据写入RAM2。当RAM2中数据写满时,FPGA再向DSP发出中断信号,DSP读取RAM2中的数据,同时FPGA的缓冲数据RAM1。如此交替实现图像数据读写同时进行,从而提高了数据处理的速度。
FPGA的选择较为关键,内部RAM的资源决定系统的反应速度。在原有一代系统中选用的FPGA资源较少,不足以存储一帧图像,因此数据的读写只能分块进行,需要控制逻辑较为复杂,同时也降低了整个系统的速度。对于一帧720×576的图像,共有414 720像素,每个像素8 bit,即共有414 KB的数据。因此可选用Altera公司的CycloneIII系列产品EP3C120。Cyclone III系列的FPGA采用65 nm技术,具有低功耗、低成本和高性能特点, EP3C120内部拥有120K个逻辑单元(LE),4 Mbit嵌入式存储器,288个嵌入式18×18乘法器,可以满足一帧图像的存储,在处理数据时可按照奇偶帧分别进行读写。
2.2 系统工作过程
系统上电或复位后,首先完成FPGA芯片的配置、对TVP5150进行的初始化以及DSP启动引导及其外围芯片的初始化工作,之后便开始进行图像采集。利用FPGA模拟I2C口对系统中的其他芯片进行控制,从摄像头采集到的摸拟视频信号经过视频解码器转换为数字视频信号,经预处理后送入DM642的视频通道(VP端口)。在检测到有人进入监视区域时,启动录像功能,DM642将接收到的数字视频信号和数字音频信号用MPEG4标准编码压缩,并通过以太网传送到监控中心。同时捕捉人脸图像并进行身份识别,如有异常则启动报警程序。
3 系统软件组成
对于本系统来说,系统软件主要包括3部分:运动目标检测、人脸的检测定位、人脸匹配。其中人脸的检测定位尤为关键,是正确识别的前提。因为图像的拍摄受到各种因素的干扰,如亮度、人物移动速度、表情、着装等,这些因素如果在检测时不能得到有效处理,势必会影响后期的匹配,造成识别率下降。因此,如何将人脸从背景中检测出来,并进行适当的处理、分割,是关系到识别成败的关键环节,需要着重进行处理。
3.1 运动目标检测
对于运动目标的检测,常用的方法有背景差值法、图像差分法、光流分割法和模式匹配法。由于光流分割和模式匹配等方法数据计算量较大,无法满足实时检测的要求。背景差值法计算简单、速度快且检测准确,但需要在背景静止时检测有效,对于背景变化的场合不适合。对于背景变化的场合,可以采用图像差分法,即通过检测图像序列相邻两帧对应像素点之间灰度值的变化确定移动的物体。设图像定义f(x,y,i),其中(x,y)为图像的位置坐标,i、j为图像帧数,T为设定的阈值,则帧f(x,y,i)与帧f(x,y,j)之间的变化可用如下的二值差分图像表示:
式中取值为1和0的像素分别对应于前景(运动目标区域)和背景(非运动区域)。
对于缓慢移动的物体,图像差分的变化量很小,有可能会被滤波器滤掉,解决方法是通过累积差分法ADP[2](AccumulaTIve Difference Picture)。该法不仅可以用于可靠检测缓慢移动的物体,还可用于估计物体移动速度的大小和方向以及物体尺度的大小。获得累积差分图像的过程如下:将图像序列的每一帧图像与参考图像进行比较,当差值大于某一阈值时就在累积差分图像中加1,这样,在第i帧图像上的累积差分图像ADP(x,y,i)为:
通过判断灰度值的变化,即可判断出移动物体及其方向。
针对本系统,可以先利用背景差值法确定是否有移动目标进入监视区。如有则启动录像功能,结合图像差分法,经过一系列检测检出运动目标,并启动跟踪程序。具体程序如图3所示。
3.2 人脸的检测定位
在检测出运动的目标之后,要判断目标为人体还是其他动物,这可以通过目标的尺寸及目标的空间特征(如宽高比等)来区分。在确定为人体目标之后,就要确定出人脸的区域。确定人脸区域的方法有多种,本系统采集的是彩色图像,可以根据肤色进行判别。利用肤色提取色彩信息的方法已被广泛应用在计算机视觉研究领域中。肤色是人脸的重要信息,不依赖于面部的细节特征,对于旋转、表情等变化情况都能适用,具有相对的稳定性并且和大多数背景物体的颜色相区别。与其他人脸检测方法相比,肤色的判断在速度上具有明显优势。因此,将其作为人脸检测的其他方法的预处理,可以在很大程度上减小人脸检测的搜索范围,降低误报率,进而大大提高人脸检测算法的整体性能。
人脸检测过程如下:对于彩色图像首先进行肤色检测;在检测出肤色区域后,需要进行区域分隔及形态学运算,通过形态学处理可以过滤由于噪音或者其他原因引起的一些较小的不可能为人脸的类肤色区域,减少候选区域和提高检测速度,降低误判的可能性;之后根据它们在色度上的相似性和空间上的相关性分割出可能的人脸区域,同时利用区域的几何特征及灰度特征验证是否为人脸,以排除其他色彩类似肤色的物体。
用肤色来检测人脸,要先确定肤色模型。基本的肤色模型有3种:RGB模型、HIS模型和YCbCr模型。这里选用YCbCr模型,原因是图形采集输出的格式为YUV,而YUV格式和YCbCr格式在数学上具有一致性,同时对于后期的数据进行MPEG压缩也很方便。人脸检测的程序流程如图4所示。具体过程分析如下:
(1)肤色判断
可采用Anil K.Jain的Cb、Cr椭圆聚类方法[7]进行肤色分割,得到肤色区域在CbCr空间中近似于椭圆,可用如下公式表示:
若该值小于1,则表示落在椭圆内,是肤色,否则不为肤色。对确定的肤色区域进行平滑、连通、合并处理,构成一个候选区域,待进一步分析以判断是否为人脸区域。
(2)区域分割与处理
在确定肤色区域之后,需要根据它们在色度上的相似性和空间上的相关性分割出可能的人脸区域,再利用区域的几何特征或灰度特征进行是否是人脸的验证,以排除其他色彩类似肤色的物体。本文采用Sobel算子[-1,-2,-1;0,0,0;1,2,1]来完成边缘的检测。经过一系列处理分割出肤色区域,并进行形态学开、闭运算,以消除噪声或空洞对特征分析的影响。
(3)特征分析
人脸候选区域分割完毕后,需对每一个区域进行分析,以判断该区域是否是人脸。为了提高检测速度,可以忽略人脸的面部特征,而主要检查人脸候选区域的形状、结构、比例及灰度分布等。若符合人脸的这些特点,则认为该区域代表一个人脸。根据人脸的几何规则及颜色聚类的特点,如果一个区域满足2个条件:(a)高度/宽度比例范围介于1.2与2.0之间;(b)该区域内的像素平均灰度值与距该区域上部达10像素以上的区域的平均灰度值之差介于0.2~0.6之间。符合这两个条件,则可认为该区域代表人脸。
(4)人脸区域验证
对于初步检测的人脸区域,还需要进行验证才能确定是否为真正的人脸。对于人脸的验证,一般有3种方法:(1)基于先验知识的方法;(2)基于局部特征的方法;(3)基于模板的人脸检测方法。基于先验知识的方法识别率不高,如果图像背景中存在类人脸区域,则必然会导致误检测。基于模板的方法数据量运算大,不能满足实时性要求。本系统采用的是基于局部特征的方法。
在人脸的特征中,最明显的特征就是眼睛,因此可把人眼作为验证的主要依据,同时配合嘴唇或鼻子进行验证。首先要找到眼睛的位置,在灰度图像下,眼睛的特征最为明显,通过设定适当的阈值很容易确定出人眼的可能区域。通过计算这两个区域的中心距离D,在该距离中心点的位置下方找到嘴部位置,长度为L。当D/L满足:1 3.3 人脸识别 人脸的识别算法有多种,不同的算法各有优缺点。本文主要借鉴d性图匹配技术来完成人脸的识别。d性图匹配是一种基于几何特征和对灰度分布信息进行小波纹理分析相结合的识别算法。由于该算法较好地利用了人脸的结构和灰度分布信息,而且还具有自动精确定位面部特征点的功能,因而具有良好的识别效果。在FERET测试中,该技术的若干指标名列前茅。其缺点是运算量大,实现稍复杂。通过对该算法进行改进,配合一定的代码优化措施,可以满足实时检测要求。 在人脸识别时,首先要进行人脸特征提取。主要采用恰当的小波分解,得到高频分量和低频分量,其中的高频分量主要表示人脸的细节,低频分量表示人脸的基本特征,对人脸的表情反应比较迟钝,只提取低频分量,这样可以提高准确率和运算速度。对提取的人脸特征,利用支持向量机(SVM)分类器识别人脸,和系统自建的人脸库进行匹配,以确定是否为非法入侵者,是否启动报警系统和通知小区监控中心。算法流程如图6所示。 本文设计的人脸检测系统,利用运动目标检测方法,大大缓解了硬盘数据存储的压力,同时提高了系统的智能化程度。利用肤色判断与特征分析来确定人脸,可以提高系统的检测速度。针对肤色判断受光照影响很大的问题,本系统在原有系统的基础上增加了补光措施光,减少了光照的影响,提高了检出的准确率。通过摄像头输入720×576的彩色图片,检出的人脸在拥有300人的自建人脸库中识别,平均用时0.9 s,识别率达93%以上,可以满足安防监控的要求,具有较高的实用价值。 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)