本发明涉及一种智能门禁系统,具体涉及一种基于arm的智能门禁系统及其控制方法,属于通信终端技术领域。
背景技术:
随着智慧城市智慧生活的推进,在各类产品智能化的过程中,门禁产品作为一个古老的存在,也被大家提出了越来越多的要求,也在面临着智能化的趋势。当前的门禁产品多数还是采用了钥匙这类恒古以来的设计,少数智能化的门禁系统也都采用指纹,密码,证件等可被盗取的方式作为验证开门的方案,不仅有严重的安全隐患,而且繁琐不便携。
技术实现要素:
针对上述问题,本发明提供一种可远程监控的人脸识别智能门禁系统。
本发明为解决上述问题采取的技术方案是:本发明的基于arm的智能门禁系统,包括:web浏览器、用户交互服务器、视频服务器、核心控制服务器、嵌入式系统平台和数据库;
所述用户交互服务器分别与web浏览器和核心控制服务器建立通信连接,用于接收并处理用户通过web浏览器发起的请求,并将经过处理的用户请求发送给核心控制服务器,所述核心控制服务器与嵌入式系统平台建立通信连接,用于将其自身构造的二进制协议传达至特定的嵌入式系统平台,所述嵌入式系统平台包括摄像机和门禁嵌入式控制主机,所述摄像机用于拍摄实时监控画面,所述门禁嵌入式控制主机用于将监控画面推送至视频服务器以及控制门锁打开或关闭,所述视频服务器与web浏览器建立通信连接,用于向web浏览器传送实时监控画面数据;
所述数据库分别与用户交互服务器和核心控制服务器建立通信连接,用于管理数据库连接的创建和销毁。
基于arm的智能门禁系统的控制方法,包括以下步骤:
步骤a、添加新用户
用户进入到添加用户界面后,进行拍照,拍照完毕后,前端通过ajax将照片上传到服务器中,后台php服务器会调用事先写好的python脚本训练模型,训练完毕后,通过命名管道告诉核心服务器,核心服务器通知嵌入式系统平台,嵌入式系统平台自动将训练好的新模型下载到本地,用户添加成功。
步骤b、人脸检测
当有用户出现在摄像头前时,摄像机会采集照片,软件系统通过v4l2接口获取摄像机采集到的照片,交给图像格式处理接口,处理成显示格式显示到窗口上,再将其处理成可被opencv处理的格式,使用opencv进行人脸的检测,检测是否有人脸进入画面,如果:
是,进一步进行人脸的身份识别;否,则继续检测;
步骤c、人脸识别
嵌入式系统平台将人脸图像交付给人脸识别模型进行身份识别,识别成功后开门。
进一步地,所述步骤a中添加新用户的具体步骤为:
步骤a1、点击定时拍照按钮;
步骤a2、启动定时器,定时拍照,并禁止拍照和上传按钮;
步骤a3、拍照完成后,拍照按钮变为重拍,上传按钮使能,定时器结束;
步骤a4、点击重新拍照,则继续重复步骤a1~a3;
步骤a5、点击上传,向服务器发异步请求,获取绑定的锁列表;
步骤a6、获取锁列表成功后,弹出模态窗口,填写用户信息和该用户绑定的锁id;
步骤a7、点击添加用户后,禁止一切操作,将图像数组进行base64编码为字符串后,向服务器提交添加用户请求,并等待服务器响应结果;
步骤a8、结果返回后,清空所有照片。
再进一步地,所述步骤a2中定时拍照的具体方法是:摄像头以每秒20帧的速率采集照片并显示,每隔20帧照片取一帧进行人脸检测,若检测到人脸再进行进一步的识别,同时网络线程阻塞等待服务器指令,根据服务器的指令进行进一步的操作。
进一步地,上述基于arm的智能门禁系统的控制方法,还包括步骤d、摄像机拍摄实时监控视频画面,视频经过格式转换后,门禁嵌入式控制主机将监控画面推送至视频服务器,视频服务器与web浏览器建立通信连接,向web浏览器传送实时监控画面数据。
有益效果:
第一,本发明采用人脸识别技术,利用人体的生物特征来识别人的身份,有更强的唯一性和便携性;
第二,本发明的基于arm的智能门禁系统,具有远程监控功能,用户可以在手机或电脑上远程查看监控视频,更便于门禁管理;
第三,本发明的基于arm的智能门禁系统设置有数据库,负责管理数据库连接的创建或销毁,使用数据库连接池,所有的数据库连接使用链表进行管理,预先创建一定的数据库连接,允许一个连接被多次重复的使用,不必每次访问数据库都新创建连接,提升了性能,减少不必要的性能开销。
附图说明
图1本发明的基于arm的智能门禁系统的结构框图;
其中,1-web浏览器,2-用户交互服务器,3-视频服务器,4-核心控制服务器,5-嵌入式系统平台,51-摄像机,52-门禁嵌入式控制主机,6-数据库;
图2人脸检测和识别原理图;
图3定时拍照的工作原理图;
图4v4l2的系统架构图;
图5图像采集模块接口使用流程图;
图6人脸检测与识别流程图;
图7视频监控图像传输流程。
具体实施方式
具体实施方式1:结合图1:说明本实施方式,本实施的基于arm的智能门禁系统框图如图1所示,包括:web浏览器1、用户交互服务器2、视频服务器3、核心控制服务器4、嵌入式系统平台5和数据库6;
所述用户交互服务器2分别与web浏览器1和核心控制服务器4建立通信连接,用于接收并处理用户通过web浏览器1发起的请求,并将经过处理的用户请求发送给核心控制服务器4,所述核心控制服务器4与嵌入式系统平台5建立通信连接,用于将其自身构造的二进制协议传达至特定的嵌入式系统平台5,所述嵌入式系统平台5包括摄像机51和门禁嵌入式控制主机52,所述摄像机51用于拍摄实时监控画面,所述门禁嵌入式控制主机52用于将监控画面推送至视频服务器3以及控制门锁打开或关闭,所述视频服务器3与web浏览器1建立通信连接,用于向web浏览器1传送实时监控画面数据;
所述数据库6分别与用户交互服务器2和核心控制服务器4建立通信连接,用于管理数据库连接的创建和销毁。
嵌入式控制主机52用了搭载exynos四核处理器的tiny4412开发平台,摄像机51采用了logitechc270高清usb摄像头,作为图像采集的工具。
嵌入式硬件系统平台5作为系统的核心,它是软件运行的载体,arm核处理器具有功耗低,运算能力强大等优势,在这里我们选用了搭载exynos4412处理器的tiny4412开发板作为我们开发使用的硬件平台。exynos4412是一款cortex-a9四核处理器,它的运算能力极其强大,主频1.5ghz,甚至可流畅运行安卓系统,exynos4412的内部还集成了mali-400mp高性能图形引擎,可完美播放1080p大尺寸高清视频,开发板上同时还集成了丰富的片外资源,这些片内外资源,可充分满足我们软件系统在硬件平台流畅运行的需求。
logitechc270高清usb摄像头可直接使用v4l2接口进行编程,并支持yuyv4:2:2和mjpeg两种格式的图像采集。在这里我们通过v4l2接口调用它采集yuyv视频图像,通过格式转换为rgb后显示到qt图像界面上,再将其格式转为bgr后生成opencv可处理的数据格式进行图像的各类处理,识别。
工作原理:
用户web操作:当用户登录web网页发起请求后,该请求会与数据库交互或者通过js向用户交互服务器即php后台服务器提供的接口发起请求,php接口函数在对请求进行处理后,会生成一个json格式的控制集,由于用户交互服务器和核心控制服务器部署在一台机器上,所以生成的json格式的控制集通过命名管道传递给核心控制服务器。核心控制服务器使用cjson对管道中的json数据解析后,构造自己的二进制协议,并找到用户绑定的硬件平台,最终将该协议传达给硬件平台。视频服务器独立于其他两个服务器,当硬件平台登录视频服务器后,硬件平台就不停地向视频服务器推送实时的画面,这些画面被压缩为jpeg之后又被base64编码为字符串,视频服务器接收之后,会找到对应的用户是否登录了视频服务器,此时若web浏览器连接到视频服务器,视频服务器则会通过websocket协议主动开始对视频数据的推送,把画面传输过去,web浏览器上则显示出视频监控图像。
用户检测和识别:用户人脸检测和识别原理图如图2所示,当有用户出现在摄像头前时,usb摄像头会采集照片,软件系统通过v4l2接口获取摄像头采集到的照片,交给图像格式处理接口,处理成显示格式显示到窗口上,再将其处理成可被opencv处理的格式,使用opencv进行人脸的检测,检测是否有人脸,如果有再进一步进行人脸的身份识别,其中网络交互部分使用伯克利套接字开发完成。
嵌入式硬件系统平台5移植了嵌入式linux系统作为软件运行平台,使用qt开发了平台交互界面,并通过交叉编译将opencv库移植到嵌入式平台,实现了图像处理,人脸识别等部分的核心功能,以及使用伯克利套接字开发完成了网络交互的部分。
软件系统总体上可视为mvc设计,被划分为视图、逻辑、网络三层。由逻辑层完成各个任务的统一调度,包括图像采集,人脸识别等,网络层完成和服务器的数据传输,视图层负责ui显示。本系统采用任务驱动的开发形式,通过向线程池投递封装的任务,驱动程序的运行。
具体实施方式2:结合图3~图7说明本实施方式,本实施方式的基于arm的智能门禁系统的控制方法,包括以下步骤:
步骤a、添加新用户
用户进入到添加用户界面后,进行拍照,拍照完毕后,前端通过ajax将照片上传到服务器中,人脸识别模型的训练、预测算法都被opencv封装在了一个类中,opencv提供了多个人脸识别类,但是它们都有相同的接口,后台php服务器会调用事先写好的python脚本训练模型,训练完毕后,通过命名管道告诉核心服务器,核心服务器通知嵌入式系统平台5,嵌入式系统平台5自动将训练好的新模型下载到本地,用户添加成功,添加新用户具体流程如下:
步骤a1、点击定时拍照按钮;
步骤a2、启动定时器,定时拍照,并禁止拍照和上传按钮,定时拍照的工作原理图如图3所示,具体方法是:摄像头以每秒20帧的速率采集照片并显示,每隔20帧照片取一帧进行人脸检测,若检测到人脸再进行进一步的识别,同时网络线程阻塞等待服务器指令,根据服务器的指令进行进一步的操作;
步骤a3、拍照完成后,拍照按钮变为重拍,上传按钮使能,定时器结束;
步骤a4、点击重新拍照,则继续重复步骤a1~a3;
步骤a5、点击上传,向服务器发异步请求,获取绑定的锁列表;
步骤a6、获取锁列表成功后,弹出模态窗口,填写用户信息和该用户绑定的锁id;
步骤a7、点击添加用户后,禁止一切操作,将图像数组进行base64编码为字符串后,向服务器提交添加用户请求,并等待服务器响应结果;
步骤a8、结果返回后,清空所有照片。
预测模型训练脚本概要流程如下:
1.从上传目录灰度读取所有图片;
2.对所有图片进行人脸检测;
3.只要有一张检测人脸失败,都要报错;
4.截取图像人脸部分,保存到训练目录,删除上传目录所有图片;
5.从训练目录中循环灰度读取所有图片;
6.将图像和图像标签一一对应;
7.训练图像,将模型保存成xml文件。
步骤b、人脸检测
当有用户出现在摄像头前时,摄像机51会采集照片,软件系统通过v4l2接口获取摄像机51采集到的照片,交给图像格式处理接口,处理成显示格式显示到窗口上,再将其处理成可被opencv处理的格式,使用opencv进行人脸的检测,检测是否有人脸进入画面,如果:
是,进一步进行人脸的身份识别;否,则继续检测;
其中网络交互部分使用伯克利套接字开发完成;
图像采集部分使用v4l2进行编程,v4l2的系统架构图如图4所示,v4l2是内核中关于视频设备的驱框架,为应用层访问底层视频设备提供了一个统一的接口。v4l2主要支持三类设备:视频输入输出设备、vbi设备、radio设备。本发明使用它来驱动我们的usb摄像设备。
(1)v4l2主要使用的流程如下:
1.打开/dev/下的视频设备
2.检查和设置设备的属性
3.设置采集的缓冲帧格式,本系统设置帧格式为yuyv4:2:2
4.指定一种采集到图片帧数据输出方式,本系统使用内存映射方式
5.循环获取帧数据
6.关闭设备
(2)在本发明中,为了图像的采集,因此对v4l2接口进行二次封装,封装后的新模块就是我们此处要介绍的图像采集模块。图像采集模块接口使用流程如图5所示。
图像采集模块主要提供了以下几个接口:
initvideocap接口:
本接口主要是完成一些初始化工作,包括:
打开摄像设备
获取当前设备信息
枚举获取当前设备所支持的帧格式
设置我们想获取的帧格式
向设备申请缓冲区(4块)
完成内存映射
将申请的缓冲区放入采集队列
uninitvideocap
本接口完成反初始化操作,防止资源泄漏,包括:
取消内存映射,释放缓冲帧空间
关闭视频设备
startvideocap
本接口完成视频采集的启动工作,调用ioctl向设备驱动程序发送启动的控制指令。
stopvideocap
本接口完成视频采集的停止工作,调用ioctl向设备驱动程序发送停止的控制指令。
pushvideocap
本接口将从采集队列中取出的缓冲帧,重新放回采集队列。
popvideocap
本接口将采集好的帧数据从采集队列中放入我们申请好的堆空间中,将内存地址作为返回值返回出去。
getyuyv
由popvideocap接口返回的数据是一个v4l2接口定义的v4l2_buffer结构体,因此提供此接口,从该结构中获取缓冲帧数据在该结构体的其实位置,以获取真正采集到的yuyv视频帧数据。
(3)图像格式转换模块
由于我们从视频设备中采集到的视频数据是以yuyv4:2:2的格式打包的而qt框架只能在窗口中显示rgb格式图像,opencv处理的图像格式则是bgr。因此,我们需要一个模块完成这些图像格式间的互相转换,满足我们程序开发的需求即是图像转换模块。
图像格式转换模块,提供了以下接口:
1.convertyuyv422torgb
本接口提供了将yuyv4:2:2转换为rgb的功能,用于qt显示。
2.convertyuyv422tobgr
本接口提供了将yuyv4:2:2转换为bgr的功能,用于转opencv处理格式的中间接口。
3.yuyv422toiplimage
本接口提供了yuyv4:2:2转iplimage的接口,内部调用了转bgr的接口,先将图像转为了bgr,然后使用opencv的cvsetdata接口,将bgr的转为了toiplimage图像处理格式。
步骤c、人脸识别
在进行人脸识别时,首先使用图像样本训练出识别模型。为了可以进行识别训练,我们首先要对图像进行预处理,比如灰度化,直方均衡化等。运用步骤a中下载好的预测模型使用fisher脸来进行人脸识别。
人脸检测与识别流程图如图6所示。
进一步地,上述基于arm的智能门禁系统的控制方法,还包括步骤d、摄像机51拍摄实时监控视频画面,视频经过格式转换后,门禁嵌入式控制主机52将监控画面推送至视频服务器3,视频服务器3与web浏览器1建立通信连接,向web浏览器1传送实时监控画面数据,视频监控图像传输流程如图7所示。