摘 要:随着科技的不断发展,安全性的要求也不断提高,为满足身份认证更快捷、安全的社会需求。使用Windows操作系统设计了一款集人脸检测、人脸识别、信息比对等多功能于一身的人脸身份认证系统。
系统配置了笔记本内置的usb摄像头,Visual Studio 2015以及Qt 5.6.3。使用Qt Quick技术可以快速的构建流畅的界面,而且具有动画等各种绚丽的效果。但它也有很多局限性,比如在网络访问、硬件操作、文件处理等方面,所以在很多时候我们需要混合使用C++和QML,比如使用QML构建界面,使用C++来实现非界面的业务逻辑等。这样也就涉及到了QML和C++之间的交互了。其实,QML的很多基本类型本来也是通过C++来实现的,比如Item对应QQuickItem类,Image对应QQuickImage类等。使用Opencv操作usb摄像头,实现摄像头实时预览;使用Opencv自带的训练数据初始化分类器,然后调用人脸检测函数得到图片中人脸的Rect;根据opencv检测到的实时人脸图片,与身份证照片进行特征匹配和相似度计算,根据相似度的大小确定一个阈值。
最终对系统进行了测试,基本实现本系统的主要功能。另外,在论文最后的总结中对人脸身份认证系统的改进与升级做了展望。
关键词:人脸识别系统;Dlib;点阵比对算法;OpenCV
目录
摘要
Abstract
1 引言-1
1.1 概述-1
1.2 国内外研究现状-1
1.3 本课题研究的主要内容-2
1.4 软硬件需求-2
1.5系统框架设计-3
2 人脸身份认证系统的基本内容-4
2.1 人脸检测与人脸识别的研究内容-4
2.1.2人脸检测与人脸识别的技术难题-4
2.1.3人脸身份认证系统的实用价值-5
2.2 OpenCV视觉库-5
2.2.1 OpenCV人脸检测-6
2.2.2 人脸检测的基本方法-6
2.2.3 AdaBost算法-7
2.2.4 LBP特征-7
2.2.5 LBP特征原理-7
2.2.6 MB-LBP-7
2.2.7 LBP特征的的匹配与使用-8
2.3 Dlib库-8
2.3.1 Dlib深度残差网络-8
图2.6 神经网络训练过程-9
图2.7 残差网络训练过程-10
图2.8 残差网络-11
2.4 QML概述-11
2.4.1 QML基础介绍-12
2.4.2 使用C++扩展QML-12
2.4.3 QML开发界面的优点-12
2.5 QML与C++混合编程-12
2.5.1 在QML中使用C++类和对象-13
2.6 OpenCV摄像头预览-14
3软件模块设计-14
3.1主界面控制模块-16
3.2 在QML中显示QImage-16
3.3 在QImage与CV::Mat的相互转化-17
3.4 人脸检测模块-18
3.4.1 设计人脸检测的类-18
3.4.2 处理所检测到的人脸-19
3.4.3 分类器人脸检测-19
3.5 特征提取-19
3.6 人脸比对模块-20
3.6.1 图像捕捉和预处理-20
3.6.2 特征点比对-22
4 系统测试-23
4.1发布系统-24
4.2功能测试-24
4.2.1人脸检测测试-24
4.2.2人脸抓取测试-24
4.2.3人脸识别测试-25
4.3识别准确率测试-26
4.3.1测试过程概述-26
4.3.2阈值确定-29
5 系统的不足与展望-30
6 结论-31
参 考 文 献-32
致 谢-33
附 录 -34