RFID卡内信息的检测、读取、处理由CRFIDCtrl、IRfid-Handler、CRfidResultSet 以及CChildView 协作完成。CChildView是系统的主线程,用来控制视频图像的获取、RFID 信息的检测、人脸检测和人脸识别等线程的同步与互斥。IRfidHandler 是一个抽象类,声明了抽象方法OnRfidDetected(),这个方法用于定义RFID 被检测到之后需要执行的动作,继承类需要重写这个方法。CRFIDCtrl 为RFID 读取设备控制类,BeginRead()、EndRead()分别用于启动和停止RFID 读取线程,ReadThread()是读取线程的定义,通过计算机的串口,得到RFID卡卡号。ReadThread()会调用HandleRead()方法,HandleRead()方法调用了OnRfidDetected(),CChildView 继承了抽象类IRfidHandler,重写了这个方法,来获取RFID卡的卡号对应的姓名信息,从人脸数据库中寻找相应人脸图片,同时启动人脸检测线程。CRfidResultSet 是RFID 卡号与姓名信息的缓存类,用来缓存检测到的RFID卡号以及对应的姓名。OnRfidDetected()方法中就是通过调用这个类的MapIDtoName()将卡号映射到持卡人姓名。这四个类之间的协作关系如图5 所示。
4.3 人脸检测Adaboost 算法实现
人脸检测的过程就是对大量候选区域进行二类分类的过程。每一个区域的二类分类(通过/拒绝)由级联分类器完成。在级联分类器进行判断时,它依次使用它包含的强分类器对候选矩形区域进行判断。一旦候选者在某一层被拒绝,该次分类过程结束。
强分类器使用它所包含的所有弱分类器对候选者进行运算,并累计赞成票。每票根据弱分类器分类准确率拥有不同的权值。当累计票的累计权值超过事先训练的阈值,候选者将通过该层强分类器;否则将被拒绝。每一个弱分类器在对候选区域进行运算时,使用它所拥有的一个Haar 特征对候选区域进行计算,所得的特征值与弱分类器的阈值(Threshold)进行比较。如果比较结果(大于/不大于)与弱分类器的符号方向(Parity)一致,则投赞成票并贡献出自己的权值,否则投出反对票。分类器结构如图6 所示。
4.4 人脸验证标准化LDA 算法实现
5 系统演示
图7、图8 为系统截图,图7 为持卡者通过的记录,图8 为冒充持卡者拒识的记录,记录中保留了持卡人的照片、打卡时间、人脸验证的结果。系统保存打卡记录以及图片,记录均可以精确到秒,系统界面左上方显示持卡人打卡时由人脸检测线程抓取到的人脸图片,右上方显示人脸数据库RFID 卡注册用户的样本图片。查询条件可以按照时间查询,查询可精确到分钟;可以按照人名查询,查询特定姓名的人的所有持卡经过记录图片。查询同时返回当时持卡人是否通过门禁系统的判别记录。系统在实际环境运行,进行了相应测试,运行平台以及性能相关参数如表1 所示。
6 结束语
本系统结合了RFID 射频识别技术与人脸数字图像识别技术实现了一个身份验证系统。系统在实践中具有实时性、安全性、有效性。系统可用作实际环境中的自动智能监控系统,在机场、世博场馆出入口等人员来往场所对出现在RFID 解读器范围内的身边卡进行识别并现场拍摄人脸图片进行身份验证,具有一定的商业和应用价值。
【想第一时间了解安防行业的重磅新闻吗?请立即关注中安网官方微信(微信号:cpscomcn)——安防行业第一人气微信,万千精彩,千万不要错过!!!
网友评论
共有0条评论 点击查看全部>>24小时阅读排行
本周阅读排行