基于EmguCV的网络摄像智能搜索系统的设计

2013-01-15 09:00薛宇城戴未然卢捍华张潇磊
常州工学院学报 2013年3期
关键词:控件人脸人脸识别

薛宇城,戴未然,卢捍华,张潇磊

(1.南京邮电大学通信与信息工程学院,江苏 南京 210003;2.南京航空航天大学自动化学院,江苏 南京 210016;3.南京邮电大学物联网学院,江苏 南京210003;4.南邮-福富实验室,江苏 南京 210003)

基于网络摄像的监控系统在社会中已经得到广泛的应用[1],并具有可寻址可操作的优异特性。[2-3]然而,目前大部分监控系统只能进行视频录制,功能较为单一。[4-7]为了更有效地利用这些摄像头,相关部门越来越需要对相关人员进行识别、搜索与跟踪,[8-9]于是如何将人脸检测和跟踪技术与网络摄像相结合,实现对公共场合的人脸智能识别和搜索,成为当今学术界研究的重点。本文提出了一种利用EmguCV库中的Detect函数对检测到的人脸图像与图像数据库中已存储图像进行比较,实现对图像数据库中已存人脸图像的识别和自动搜索系统,较好地解决了在装有网络摄像头的公共场合对有关人员进行搜寻的问题。[10-11]

1 智能搜索系统的工作原理

1.1 设计思想

OpenCV与EmguCV是当前使用最广泛的两类函数库,在C#环境下利用EmguCV函数库进行人脸识别检测,同时,人脸信息搜索需要数据库信息的支持,因此,需要先建立人脸图像数据库。

1.2 工作流程

首先开启网络摄像头抓取实时图像,利用EmguCV图像处理库进行人脸识别。若处于学习状态下,将检测到的人脸信息与姓名信息存入数据库中。若处于搜索状态下,并检测到人脸存在,将检测到的人脸图像与之前保存在数据库中的人脸图像进行比对,如比对成功,将搜索到的人物名字显示在面板中,搜索成功。系统工作流程框图如图1所示。

图1 智能搜索系统工作原理框图

2 智能搜索系统的软件设计

2.1 网络摄像头的调用

网络摄像头的工具开发包中有ipcamax控件,该控件封装了网络摄像头的基本方法,为了能够在VS C#中调用网络摄像头,可通过以下步骤来实现:

1)VS自带的软件工具depends.exe找到注册控件缺少的dll文件ddisp.dll和ijl15.dll,并将其与ipcamax.ocx文件拷入同一路径下。

2)在cmd窗口使用cd命令进入该路径,并使用 regsvr32 ipcamax.ocx 进行注册。[2]

3)在VS C#的工具箱空白处右击,执行“选择项—选择工具箱项—com组件选项卡”,选择axremote control控件加入工具箱,工具箱中就会出现该网络摄像头的控件。

经过以上操作,就可以在窗体上添加控件。在对控件设定好参数后,便可以在程序中获取网络摄像头的实时图像。网络摄像头的成功调用扩大了监控区域,同时利用摄像头自带的接口函数完成如抓取图片、录像等重要的实用功能。

2.2 人脸图像数据库的建立与维护

为了进行智能化的搜索,必须先建立系统的人脸图像数据库,该数据库应能进行增加及删除。数据库信息具体如下:

在oracle数据库中新建一张3列的表,第一列存放全球唯一标识符guid,第二列、第三列分别采用string类型和blob类型存放姓名信息和人脸图片。程序中建立相应的oracle数据库的类DataBase,类中写入连接数据库的findAddressInfos函数、增加数据库人脸信息的updateAddress函数与删除数据库人脸信息的deleteAddress函数。

检测到人脸信息后,需将其保存到数据库中。首先将暂存在变量中的人脸图像转化成数组,然后调用DataBase类中updateaddress函数可存入oracle数据库中,函数采用sql语句的insert方法实现,同时将用户输入的人名信息存入数据库表的第二列,并生成全球唯一标识符guid存入该行第一列。若需要删除指定的图片信息时,从数据库中读出已存储的人脸信息,将图片显示在listview控件中,鼠标选取需要删除的图片,通过listview的selecteditems方法,获取选中的图片对应的guid值,再调用deleteAddress函数对数据库中该guid值对应的信息行进行删除,这样,数据库可以不断地完善与更新,人脸信息的搜索工作可以开始。

2.3 人脸的快速比对搜索

2.3.1 数据库信息读取

调用DataBase类中的数据库findAddressInfos连接函数,由于之前保存在数据库中的图片为blob格式,转换为Image类型后将所有人物脸部信息与人物姓名分别保存到链表List<Image<Gray,byte>>learnedFaces和List<string>learnedPeople中,完成人脸搜索的信息初始化工作。

2.3.2 人脸识别检测

本检测采用的人脸识别算法为特征脸方法,从统计的观点,寻找人脸图像分布的基本元素,即人脸图像样本集协方差矩阵的特征向量,以此近似地表征人脸图像。这些特征向量称为特征脸(Eigenface)。首先获取网络摄像头的图像数据,并用控件的capture方法将网络摄像头的图像截取下来。人脸检测程序主要完成加载分类器、加载待检测图像及检测与表示等功能,EmguCV中提供的用于检测图像的函数是Detect方法,该函数对某目标物体(本系统中是人脸)训练的级联分类器在图像中找到包含目标物体的矩形区域,并将这些区域作为序列矩形框返回。

2.3.3 人脸比对检测

在进行搜索任务时,若摄像头检测到有人脸出现,则将该人脸信息保存到MCvAvgComp类型的变量face[i]中,并与存储在数据库中的人脸信息通过EmguCV自带函数recognize进行比较,recognize函数主要算法是比较当前的脸部信息与List<Image<Gray,byte> > learnedFaces链表中的所有人脸图像的欧氏距离,若欧氏距离在阈值内,读取欧氏距离差值最小的那张图片的人脸信息,显示在右边方框中,若不存在,则表明数据库中没有该人信息。

3 实验结果与分析

本系统程序在Visual Studio 2010下编译连接,并在实际环境中进行了测试。检测人脸采用EmguCV自带的正面人脸分类器haarcascade_frontalface_alt_tree.xml,经过实验,能够较好地识别到人脸的正面与侧面,如图2、图3所示。

图2 正脸识别

图3 侧脸识别

在建立数据库之前,需要在摄像头范围内检测到人的脸部信息,之后将检测到的信息存入oracle数据库中,数据库信息如图4所示,其中ID为guid且各不相同,IDCARD保存人名,NUM采用blob格式存储图片。但一定情况下会存在人脸的漏检和非人脸的误检,可见对于人脸在平面内有一定旋转的情况还存在不足,但随着强分类器个数的增加,这种情况可以得到很大的改善。

图4 人脸信息数据库

为了更好地完善数据库信息,应根据需求删除数据库中指定的人脸信息,本程序能够弹出数据库信息窗口,该窗口提供可视化操作,从数据库中读出所有已经存储的人脸信息,并将图片和姓名信息显示在面板上,根据需求用鼠标选中,点删除即可从数据库中删除。弹出已存储的人脸信息如图5所示,选中第一排部分照片删除后信息如图6所示。

图5 人脸数据库信息删除操作前的信息

图6 人脸数据库信息删除操作后的信息

当数据库的信息完善之后完成后,打开人脸检测系统,发现能够识别到之前已存储的人物,并且能够将名字在右侧显示出来,如图7所示。测试表明,利用EmguCV开发的智能搜索系统,不但实现了人脸的自动搜索和人脸图像的识别与比对,而且系统效率高、识别效果好。

图7 正确搜索到已经存储信息的人物

4 结语

系统基于EmguCV图像库的强大功能,结合现有的、分布广泛的网络摄像头,实现了已知人脸图像的服务器数据库存储与调用,以及人脸图片的智能化比对搜索功能,数据库信息的存储方便了信息的实时调用,较大程度地改进了现有单一的人脸识别系统。该系统功能强大,可靠性高,具有较强的图像处理能力及广泛的应用前景。

[1]严严,章毓晋.基于视频的人脸识别研究进展[J].计算机学报,2009(5):30-40.

[2]王燕,曹银杰.基于EmguCV的数字相机图像采集[J].电子科技,2012(4):31-32.

[3]信师国,刘庆磊,刘全宾.网络视频监控系统现状和发展趋势[J].信息技术与信息化,2010(1):23-25.

[4]常丹华,杨冬冬,韩夏.OpenCV在智能监控方面的应用研究[J].电视技术,2009(9):101-103.

[5]孙统义,李林.基于OpenCV的红外运动目标检测方法及实现[J].信息化研究,2010(11):12-16.

[6]陈尧,袁继敏,程江珂.基于OpenCV的监控系统设计[J].计算机安全技术,2010(6):117-118.

[7]潘晶晶.网络视频实时监控系统的设计与实现[D].北京:北京邮电大学,2010.

[8]吴巾一,周德龙.人脸识别方法综述[J].计算机应用研究,2009(9):3205-3209.

[9]肖冰,王映辉.人脸识别研究综述[J].计算机应用研究,2005(8):1-5.

[10]贾川.浅谈人脸识别技术在智能视频监控中的应用与发展趋势[J].中国安防,2010(3):83-86.

[11]侯鲲,隆嘉,王赫宁.人脸识别技术的现状和发展趋势[J].科协论坛,2010(11):43-44.

猜你喜欢
控件人脸人脸识别
人脸识别 等
有特点的人脸
一起学画人脸
揭开人脸识别的神秘面纱
人脸识别技术的基本原理与应用
三国漫——人脸解锁
关于.net控件数组的探讨
ASP.NET服务器端验证控件的使用
长得象人脸的十种动物
基于K-L变换和平均近邻法的人脸识别