苏 获,刘晓东
(1.武汉邮电科学研究院 湖北 武汉 430027;2.武汉虹旭信息技术有限责任公司 湖北 武汉 430027)
基于OpenCV的智能视频监控告警系统的研究
苏 获1,2,刘晓东1,2
(1.武汉邮电科学研究院 湖北 武汉 430027;2.武汉虹旭信息技术有限责任公司 湖北 武汉 430027)
针对智能视频监控告警功能进行研究,通过OpenCV、C++及相关算法来更有效地进行图像识别,达到智能捕获可疑异常情况及告警功能。该系统包括图像采集模块,图像预处理模块,运动检测模块,人脸检测,人脸识别模块,短信模块等。通过对以上模块的研究与实验,达到了设计要求。
智能视频监控;短信告警;OpenCV;人脸识别;C++
随着社会的高速发展,物质水平的提高及我国大规模人口流动的现状,安全防范意识逐渐被提上日程。近年来,有关安全问题的报导也层出不穷,人们开始愈发关注自身及其财产安全。并且,计算机应用的发展也给安防带来了新一轮的生机,视频监控作为安防的一种重要手段越来越多的被社会所认可。智能监控作为新时代科技的产物,更加具有使用的价值及研究的意义。
该系统将基于传统的视频监控系统,研究如何让他更智能。利用C++[1]、OpenCV计算机视觉库[2]及PCA(主成分分析算法)来完成运动目标的检测、人脸的识别,可疑人物的判断;利用GSM短信模块结合AT命令来完成在发现异常情况以后,实现短信告警功能。
图1 系统组成框图Fig.1 Structure diagram of the system
的图像数据后,进行数据的分析处理。检测是否有运动目标,识别人脸[3],并与事先录入的人脸库进行比对,判断是否为人脸库中的人脸。若不是,则判断为陌生人,将启动GSM模块发送告警短信。文章后面会进行详细讨论。
GSM短信模块:短信猫、破解的上网卡都能完成发送短信的任务。利用串口结合AT指令直接操作短信猫或者上网卡发送告警短信。
用户手机:用来接收告警短信。
视频数据采集端:高清摄像头。根据需求的不同,采集端与接收端可以采用不同的连接方式。若是远距离监控,可以通过无线或者有线方式连接互联网进行采集端与接收端间数据的传输。若有特殊需求,也可将视频采集端与接收端集成在一个机器内,由于本文研究重点是监控智能化,就不详细叙述了。
视频数据接收处理端:处理器。当接收到由采集端传来
2.1流程图
接收端在接收到由采集端发送过来的图像数据以后,并不是马上进行运动物体检测及人脸校验,而是先将图像进行预处理,消除噪声干扰,具体包括二值化图像、中值滤波、向下采样去噪、直方图均衡化、边缘检测处理等,后面会有效果的展示及对比。
图2 接收端程序流程图Fig.2 Flow diagram of the receiver
因为异常的图像往往都是突然发生了变化的图像,所以我们感兴趣的图像应该是有过变化的图片,这样可以大大降低系统处理的时间。并且,现代社会中,异常的图像绝大部分都是人的行为导致的,故判断人脸的出现也是可以选择性加入的。所以,执行完图像预处理后,就需要判断两点:1)判断当前图像是否与前一图像不同,即发生了变化。2)判断图像中是否有人脸的出现。
为了更加人性化,系统加入白名单功能。判断完人脸后,需要比对人脸库,这个人脸库就类似于白名单。若图像中出现库中人脸,应该自动排除,不做处理。而出现库以外的人脸,就应当进行告警操作,通知GSM模块发出告警短信。
2.2运动物体检测
运动物体检测究其根本是将后一帧与前一帧的图像进行对比,找出两帧中明显不同的地方,如果能找到则表示两幅图像变化了,即发现运动。过程如下所述,首先对前后两帧图像做帧差处理,此时图像中会将两帧中不同的地方显示出来,而相同的地方为黑色。
再将得到的结果进行二值化处理,为了能提出一些低于或高于一定值的像素,所以采用二值化的方式。如果src(x,y)>threshold(阈值),dst(x,y)=Max;否则dst(x,y)=0。具体到我们的应用中,可以理解为超过阈值的点为黑色,而低于阈值的点为白色。
此时,我们也许会发现,结果图像中有许多的噪声。为了去噪并减少图像上的噪声和失真,采用平滑处理,平滑操作种类挺多。这里,我们采取中值模糊,将每个像素以领域(以当前像素为中心的正方形区域)像素的中值代替。
最后,用寻找轮廓的方式找出所有运动的地方。如果找到,则认为存在运动物体。反之,则图像中没有运动物体。
2.3人脸检测
2.3.1原理
人脸检测是利用分类器筛选不同特征完成的。该分类器的训练方法较为复杂,需要使用大量训练样本的haar特征来进行训练,这些样本被分为待检测目标样本(正样本)和任意干扰图像(负样本),且不管正样本还是负样本都要转换成同一尺寸,然后获得一个级联的boosted分类器,可以叫做强分类器。
得到分类器以后,我们就可以用它来检测图象中的人脸了。大致原理如下,当发现人脸时,分类器会给出提示结果为1,反之,结果为0。当然,为了更加有效的在整幅图象中寻找目标,我们可以以挪动搜索窗口的方式来对图像中每个位置检测。并且可以通过改变分类器检测窗口尺寸来更精确地搜索出不同大小的人脸。
另外,为了使检验结果更加准确,可以将用于人脸检测的强分类器串联起来,对等待检测的窗口进行逐步筛选排除。每到达一个分类器,符合条件的子窗口会进入下一个分类器,而不符合条件的子窗口则会被丢弃。分类器的筛选能力也是由弱到强,即位于前面的分类器拥有的harr-like矩形特征数目少,而位于后面的较多,检测能力则会越来越强。
2.3.2几种边缘检测的比较
为了加快人脸检测的速率,需要在图片边缘检测的过程中,将一些边缘较少或较多的图象区域消除,因为这些地方一般没有检测的目标。下面将对目前比较常用的Canny、Laplace、Sobel边缘检测[5]进行比较。
以下图像是将同一张图像由左到右分别进行Canny、Laplace、Sobel边缘检测后的结果:
图3 边缘检测比较Fig.3 Diagram of the compare for the edge detection
Canny边缘检测的原理是检测出图像中所有灰度值变化最大的点(具体就是在X和Y方向求一阶导数),而且这些点连接起来就构成了若干条线,这些线条就可以称为图像的边缘。因为Canny算法是以独立边的候选像素拼接成轮廓为原理的,所以需要有阈值机制去进行筛选,分别是上限阈值和下限阈值。假如一个像素的梯度大于上限阈值,会被以为是边缘像素,假如低于下限阈值,会被丢弃。如果介于两个值中间,惟有当这个像素连接高于上限阈值的像素时,才被认可。
Laplace算子是沿着二维坐标轴的横轴和纵轴的二次导数之和,那么说明如果周围是更高值的点会使其和最大,相反,附近若是更低值的点将会使其和负值最大。基于这个想法,拉普拉斯算子可作为边缘检测的工具。当我们逼近类似边缘的不连续地方时,一阶导数会快速增长,而穿过这些不连续地方时导数又会快速减小。所以一阶导数会在此范围内有局部极值。这样,局部最大值就位于二阶导数为0的地方。
Sobel算子结合了高斯平滑与微分求导,用来对图像灰度函数的近似梯度进行计算,因而求出变化最大的点,依此检测图像中的边缘。
由对比结果图可以看出Canny边缘检测出来的结果较为清晰,棱角分明,拥有低错误率、高定位性等优点,故能很好的应用于人脸检测之中。
2.4主成分分析算法
利用主成分分析算法(PCA)来实现比对人脸的工作,判别出近似脸的功能。
采用这种算法的原因如下,通常图象都有着庞大的数据量,这其中很多数据其实对我们的研究是没有实际意义的。所以,我们为消减其数据量而采用了主成分分析算法来压缩数据,然后用压缩后的图像进行图像识别的进一步应用。
具体说来,对于一个训练集,s个样例,特征是n维,那么它可以建立一个s*n的矩阵,作为样本。求这个样本的协方差矩阵,获得一个n*n的协方差矩阵,然后求得这个协方差矩阵的特征值和特征向量,有n个特征值和特征向量,我们根据特征值的大小,取前m(m 遵从上述思想,程序中我们可以分为训练阶段、识别阶段来进行PCA人脸识别。训练阶段中,我们需要对采集到的样例进行处理,构成对应的子空间,并依次将样例投影于子空间中,变换为降维后的投影矩阵。识别过程中,需要判别的样本会被投影到这个子空间中,获得降维后的人脸样本。这样,我们就能很方便的通过双方的投影矩阵,计算出待识别的人脸样本与每个参与训练的人脸样本之间的距离 ηi(i= 1,2...n),其中n为训练样本的总数。 如果∀i,ηi≥θ(θ为我们预先给定的阈值),则被以为输入图象中含有未知人脸。 如果ωk=min{ηi},ωk<θ,则认为第 k个训练样本为输入人脸。 2.5识别结果与分析 当摄像头捕捉到图片后,系统会分别进行运动检测和人脸检测。为方便对比,图4左边为摄像头捕捉到的原始图像,右边为进行人脸检测后标注出来的图像。左下角显示运动检测的结果。由图可以看出,程序能完全识别出运动目标和人脸目标。 图4 运动检测和人脸检测效果图Fig.4 The diagram of the motion detection and the face detection 发现运动目标与人脸后,进入人脸匹配的环节。PCA识别的效果如下。图5(a)为训练样本图像,图5(b)为用于测试的人脸图像。将(b)中人脸与(a)中测试样本分别投影到子空间后,计算距离如下图,根据最小距离,得出了匹配图像,结果如图5(c)。 图5 人脸匹配效果图Fig.5 The diagram of faces matching 本系统采用发送短信的方式实现告警功能。使用短消息告警主要是看中它有可靠性高、迅速、价格低廉等特点。 短信编码的格式相对较多,目前主流的模式为PDU模式,因为所有手机都支持PDU模式,不像Block模式和Text模式市场占有率小。PDU模式能够支持全部字符集[6],故选用PDU模式结合AT指令来发送短信。 例如:编辑告警短信—“发现异常情况,请注意”。只需输入相应的AT命令(AT+CMGS=37)后,输入如下PDU即可:“0031000D91685128178680F10008001653D173B05F025E386 0C551B5FF0C8BF76CE8610F3002”。 鉴于视频监控的广泛应用,更加智能化的视频监控是需要提升的一个重要方面。为了达到此目的,文中分析研究了使其智能化的方法,阐述了采用C++[7]和OpenCV实现运动检测、人脸检测识别的方法,结合短信告警功能,让监控更加具有实时性。系统实现了图像采集模块、图像预处理模块、运动检测模块、人脸检测定位模块、人脸识别模块、短信模块等,具有一定的应用前景。但人脸识别算法仍有不足之处,如在较复杂的环境,人脸表情,角度,姿态,遮挡等复杂因素对识别结果都会产生影响。因此,提高效率及准确率仍然是一个需要突破的难点,是需要进一步研究的方向。 [1]候俊杰.深入浅出MFC[M].武汉:华中科技大学出版社,2001. [2]于仕琪,刘瑞祯.OpenCV教程:基础篇[M].北京:北京航空航天大学出版社,2008. [3]王洋.基于OpenCV的人脸检测方法研究[D].鞍山:辽宁科技大学,2011. [4]刘子源,蒋承志.基于OpenCV和Harr特征分类器的图像人脸检测[J].辽宁科技大学学报,2011,8,34(4):126-128. [5]于仕琪,刘瑞祯.学习OpenCV[M].北京:清华大学出版社,2009. [6]蒋丽娟.基于GSM的LED显示屏远程控制设计[D].苏州:苏州大学,2013. [7]任安虎,房彬,魏新建.人脸识别的智能门禁控制系统[J].电子设计工程,2013(12):1013-1018. The study of intelligent-monitoring and alarm system based on OpenCV SU Huo1,2,LIU Xiao-dong1,2 The paper studied the function of intelligent-monitoring and alarm system.Using OpenCV,C++and correlated algorithm to recognize images efficiently,the function of finding suspicious situation and alarm has been achieved.The system have function modules as follows.Images acquisition module,images preprocessing module,motion detection module,faces detection module,faces recognition module,SMS module,etc.Through studies and experiments to these modules,design requirements have been reached. intelligent monitoring;SMS alarm;OpenCV;face recognition;C++ TN919.8 A 1674-6236(2016)03-0026-03 2015-03-19稿件编号:201503266 苏 获(1990—),男,湖北武汉人,硕士。研究方向:计算机通信技术。3 短消息模块
4 结束语
(1.Wuhan Research Institute of Posts and Telecommunications,Wuhan 430027,China;2.Wuhan Hongxu Information Technology Co.,Ltd,Wuhan 430027,China)