笔记本人脸登录的若干关键技术的研究.docx
《笔记本人脸登录的若干关键技术的研究.docx》由会员分享,可在线阅读,更多相关《笔记本人脸登录的若干关键技术的研究.docx(12页珍藏版)》请在冰豆网上搜索。
笔记本人脸登录的若干关键技术的研究
笔记本自动人脸登录系统中若干关键技术的研究
学院:
计算机科学与技术学院
专业:
计算机科学与技术+自动化
负责人:
陆海
项目组成员:
黄杰卢定乾吕航宇邢海波
指导老师:
张永良
2010年11月
笔记本自动人脸登录系统中若干关键技术的研究
摘要
笔记本人脸登录其原理是在笔记本上内置一个摄像头,然后配合人脸识别软件,通过视频扫描来确认使用者的身份。
用户在进入windows登陆界面时,电脑将自动通过摄像头将用户传入人像识别系统,系统对人脸密码进行分析鉴定后,允许合法的身份进入电脑。
本文主要介绍我们项目组对笔记本自动人脸登录研究了的其中关键的一些技术:
人脸检测(FaceDetection)、人脸跟踪(FaceTracking)、人脸识别(FaceRecognition),并对各项技术进行了初步的研究。
人脸检测我们使用到了OpenCv的人脸库,并在MFC对话框下实现,初步实现了人脸的检测。
人脸跟踪是基于Camshift算法的OpenCv实现,可以对运动物体进行跟踪。
人脸识别可以验证登录者的合法性,从而控制登录权限。
关键字:
人脸登录人脸识别人脸跟踪人脸检测
目录
摘要2
第一章绪论4
1.1研究的目的和意义4
1.2研究的背景和现状5
第二章人脸检测6
2.1人脸检测简介6
2.2OPENCV简介7
2.3人脸检测方法7
2.4基于OpenCv的MFC对话框下的人脸检测9
第三章人脸跟踪实现12
3.1Camshift原理12
3.2算法过程14
第四章人脸识别实现15
4.1模板匹配算法15
4.2特征脸算法15
4.3模板匹配算法15
4.1基于Gabor特征的算法16
第五章总结与展望16
5.1总结16
5.2展望16
参考文献17
第1章绪论
1.1研究的目的和意义
信息时代的到来,使得信息安全越来越受到了人们的重视。
商务笔记本的指纹识别系统虽然安全,但是用起来还是很麻烦,用户每次都需要按一下指纹芯片,而且一旦手指脏了或者指纹芯片磨损了,这很有可能导致指纹注册失败,由于人脸识别具有直接,友好,方便的特点,使用者无任何心理障碍,具有易于为用户所接受的优点,因此为了便于商务用户使用,联想、方正、同方等商务笔记本(譬如方正S620、同方锋锐K411),纷纷采用了人脸识别技术。
内置人脸识别系统的同方锋锐K411
1.2研究的背景和现状
在安全级别上,人脸识别技术是利用对人脸结构的五点特征定位,并启动五级安全认证机制来核比人脸数据库而实现的。
在登陆过程中用户无须接触电脑,避免了错误输入信息,具有较高的安全性。
而且用户还可以进行自定义安全级别,满足不同用户对安全层次的不同需求。
人脸识别技术还可以实时监视用户状态,在用户离开监视范围预先设置的时间限定之后,笔记本将会自动锁定,假如有其他人试图进入笔记本,人像识别系统则会自动将对方在笔记本中一一记录下来,用户只需登录电脑系统,便可发现有人试图侵入自己的笔记本。
第2章人脸检测
2.1人脸检测简介
接下来要在对摄像头操作时,我们项目组的成员开始利用开放源代码的计算机视觉类库OPENCV(IntelOpenSourceComputerVisionLibrary)。
人脸检测是指使用计算机在动态的场景或复杂的背景中检测出人脸的存在,并确定所有人脸的位置与大小的过程。
人脸检测技术不仅是人脸识别、表情识别、人脸跟踪等技术的重要前提条件,同时在模式识别、人机交互、智能监控、视频检索等领域也引起了广泛的重视。
笔记本进行人脸登录的前提也就是要把人脸从复杂的背景下检测出来。
首先我们是在VC++6.0MFC下对bmp图片中的人脸进行检测,使用到了对图像的相似度计算,图像进行二值化,做出垂直直方图,和水平直方图,然后自动标记出人脸区域。
再经过边缘提取,标记眼睛,标记嘴巴,标记鼻子,这样就大致把一张人脸给检测出来了。
另一种方法是打开一张位图,进行光线补偿、皮肤颜色建模、膨胀、腐蚀、去掉假区域、再次膨胀、再次腐蚀、得到人脸区域、Cr匹配、Cb匹配、眼睛的色度匹配、眼睛的亮度匹配、眼睛的双重匹配、去掉假眼睛区域、膨胀眼睛区域、眼睛中心点、嘴的匹配。
腐蚀嘴部像素、去离散点、嘴巴中心点、勾勒人脸等算法,最终人脸被检测得到。
2.2OpenCv简介:
OPENCV它是由英特尔公司位于俄罗斯的研究实验室所开发,是一套可免费获得的由一些C函数和C++类所组成的库,用来实现一些常用的图像处理及计算机视觉算法。
OPENCV的源代码是完全开放的,而且源代码的编写简洁而又高效,特别是其中大部分的函数都已经过汇编最优化,OPENCV的代码执行效率是非常高的,所以近年来在国外的图像处理相关领域中被广泛地使用,成为一种流行的图像处理软件。
2.3人脸检测方法
正是看中了OPENCV强大大开源功能,减少了繁琐的函数设计,大大增强了代码的简洁性和可读性,我们选择了使用OpenCv作为我们研究课题的工具,我们使用的是OPENCV1.0版本和VC++6.0编译器。
对人脸进行检测的方法我们研究和用到了OPENCV中Adaboost算法和隐马尔可夫模型方法。
对于OPENCV中的Adaboost算法,它的核心是函数cvHaarDetectObjects()。
在OPENCV安装成功后,“……\OpenCV\samples\c”下有基于此方法的样例代码facedetect.c,经过我们项目组调试后,一致得出它是检测人脸效果能力最好的方法。
该程序使用了模式识别技术,调用了cvHaarDetectObjects()对输入的图像或视频进行人脸检测,Adaboost算法是Freund等提出的一种boost算法,它的目标是自动地从弱分类器空间中挑选出若干个弱分类器整合成一个强分类器。
后由Viola等提出了一种基于Haar型特征的Adaboost算法,并用这一算法学习瀑布型正面人脸检测器。
他们的方法是目前正确率最高的算法之一,而在速度上要远远快于几乎所有其它算法,已经达到实时效果,为人脸检测的实际应用提供了可能。
其瀑布型检测器的优秀性能在很大程度上要归功于Adaboost算法。
该程序fecedetect.c的运行效果非常好,人脸的检测精确度很高,能快速将人脸进行全出来。
另一种方法是隐马尔可夫模型方法,隐马尔科夫模型(HiddenMarkovModel,HMM)是用于描述信号统计特性的一组统计模型。
前提假设是模型可被定义为一个参数化的进程。
该进程的参数可通过精确的方法估计出来。
HMM使用马尔科夫链来模拟信号统计特征的变化,而这种变化又是间接地通过观察序列来描述的,因此,隐马尔科夫过程是一个双重的随机过程。
在HMM中,节点表示状态,有向边表示状态之间的转移,一个状态可以具有特征空间中的任意特征,对同一特征,不同状态表现出这一特征的概率不同。
由于HMM是一个统计模型,对于同一特征序列,可能会对应于许多状态序列,特征序列与状态序列之间的对应关系是非确定的。
这种模型对于状态序列来说是隐的,故称为隐马尔科夫模型。
Nefian等均各人脸从上到下划分为五个互有重叠的区域(头发、额头、眼、鼻、嘴)。
根据这个划分构造了一个包含五个状态的一维连续HMM用以表示人脸。
接着对各块进行KL变换,取每块若干最大的特征向量作为观测值对HMM进行训练。
此后,Nefian等还提出基于嵌入式HMM的人脸检测方法。
该方法同时考虑到人脸由左到右各个特征的自然顺序,使用二维HMM,并采用二维DCT变换的系数作为观察向量。
2.4基于OpenCv的MFC对话框下的人脸检测
我们项目组学习了多种检测方法,并在控制台应用程序下,MFC单文档下等各种平台下实现。
最终我们选择了MFC的对话框下进行人脸检测。
核心代码检测函数detect_and_draw,我们主要使用了上述提到的第一种方法,通过程序回调处理每一帧,对视频中的人脸用圆圈出来。
voiddetect_and_draw(IplImage*img)
{
staticCvMemStorage*storage=0;
staticCvHaarClassifierCascade*cascade=0;
Constchar*cascade_name;//="haarcascade_fronttalface_alt.xml";
cascade_name="C:
\\ProgramFiles\\OpenCV\\data\\haarcascades\\haarcascade_frontalface_alt2.xml";
cascade=(CvHaarClassifierCascade*)cvLoad(cascade_name,0,0,0);
storage=cvCreateMemStorage(0);
staticCvScalarcolors[]=
{
{{0,0,225}},
{{0,128,255}},
{{0,255,255}},
{{0,255,0}},
{{255,128,0}},
{{255,255,0}},
{{255,0,0}},
{{255,0,255}}
};
doublescale=1.3;
IplImage*gray=cvCreateImage(cvSize(img->width,img->height),8,1);
IplImage*small_img=cvCreateImage(cvSize(cvRound(img->width/scale),cvRound(img->height/scale)),8,1);
inti;
cvCvtColor(img,gray,CV_BGR2GRAY);
cvResize(gray,small_img,CV_INTER_LINEAR);
cvEqualizeHist(small_img,small_img);
cvClearMemStorage(storage);
if(cascade)
{
//doublet=(double)cvGetTickCount();
CvSeq*faces=cvHaarDetectObjects(small_img,cascade,storage,1.1,2,0/*CV_HAAR_DO_CAMNNY_PRUNING"*/,cvSize(30,30));
//t=(double)cvGetTickCount();
//printf("detectiontime=%gms\n",t/((double)cvGetTickFrequency()*10000));
for(i=0;i<(faces?
faces->total:
0);i++)
{
CvRect*r=(CvRect*)cvGetSeqElem(faces,i);
CvPointcenter;
intradius;
center.x=cvRound((r->x+r->width*0.5)*scale);
center.y=cvRound((r->y+r->height*0.5)*scale);
radius=cvRound((r->width+r->height)*0.25*scale);
cvCircle(img,center,radius,colors[i%8],3,8,0);
}
}
cvShowImage("result",img);
cvReleaseImage(&gray);
cvReleaseImage(&small_img);
//cvReleaseImage(&frame_copy);
}
以下是程序实现的人脸检测效果,可以对单人进行检测,也可以是多人进行检测。
1.单人检测2.多人检测
3.在黑暗情况下的检测效果
第3章人脸跟踪实现
3.1Camshift原理
camshift利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的中心位置。
分为三个部分:
1--色彩投影图(反向投影):
(1).RGB颜色空间对光照亮度变化较为敏感,为了减少此变化对跟踪效果的影响,首先将图像从RGB空间转换到HSV空间。
(2).然后对其中的H分量作直方图,在直方图中代表了不同H分量值出现的概率或者像素个数,就是说可以查找出H分量大小为h的概率或者像素个数,即得到了颜色概率查找表。
.将图像中每个像素的值用其颜色出现的概率对替换,就得到了颜色概率分布图。
这个过程就叫反向投影,颜色概率分布图是一个灰度图像。
2--meanshift
meanshift算法是一种密度函数梯度估计的非参数方法,通过迭代寻优找到概率分布的极值来定位目标。
算法过程为:
(1).在颜色概率分布图中选取搜索窗W
(2).计算零阶距:
计算一阶距:
计算搜索窗的质心:
(3).调整搜索窗大小
宽度为
;长度为1.2s;
(4).移动搜索窗的中心到质心,如果移动距离大于预设的固定阈值,则重复2)3)4),直到搜索窗的中心与质心间的移动距离小于预设的固定阈值,或者循环运算的次数达到某一最大值,停止计算。
关于meanshift的收敛性证明可以google相关文献。
3--camshift
将meanshift算法扩展到连续图像序列,就是camshift算法。
它将视频的所有帧做meanshift运算,并将上一帧的结果,即搜索窗的大小和中心,作为下一帧meanshift算法搜索窗的初始值。
如此迭代下去,就可以实现对目标的跟踪。
3.2算法过程
(1).初始化搜索窗
(2).计算搜索窗的颜色概率分布(反向投影)
(3).运行meanshift算法,获得搜索窗新的大小和位置。
(4).在下一帧视频图像中用(3)中的值重新初始化搜索窗的大小和位置,再跳转到
(2)继续进行。
camshift能有效解决目标变形和遮挡的问题,对系统资源要求不高,时间复杂度低,在简单背景下能够取得良好的跟踪效果。
但当背景较为复杂,或者有许多与目标颜色相似像素干扰的情况下,会导致跟踪失败。
因为它单纯的考虑颜色直方图,忽略了目标的空间分布特性,所以这种情况下需加入对跟踪目标的预测算法。
第四章人脸识别与比对
人脸的识别与匹配是笔记本人脸登录的关键技术,也是判断考验登录软件性能之处。
比对人脸方法有以下种:
4.1模板匹配算法(Correlationalgorithm)
通过获取人脸图像直接计算图像位置的向量之间的距离来衡量人脸图像是否相似。
简单的说就是获取人脸最基本、直观的特征(如耳朵,鼻子,脸型)来进行相似度的比较,是人脸识别的基准算法。
此算法识别速度快,占用系统内存小但是准确率低,不适宜高识别要求的系统。
4.2特征脸算法(Eigenfacealgorithm)
该算法由基于主成分分析(PCA)方法,在特征脸算法的基础上进行优化可以使算法更有效,是人脸图像对比测试时的基准识别算法。
4.3Fisherface算法
线性鉴别分析方法是从高维空间中提取出最具有分类能力的低维特征,投影后的特征数据,在低维空间里不同类别的样本尽可能分得开些,同时希望每个类别的样本尽可能密集,也就是说,样本类间离散度越大越好,而类内离散度越小越好。
4.4基于Gabor特征的算法
Eigenface和Fisherface算法采用图像中灰度进行特征分析。
而基于Gabor特征的算法可以从多个角度来对图像灰度进行分析,模拟哺乳动物皮质细胞区域剖面,并且对于光照的适应性比Eigenface和Fisherface算法好。
第5章总结与展望
5.1总结
人脸检测和识别技术是生物技术和计算机技术的复合应用。
有别于虹膜识别(IrisRecognition)、指纹识别(FingerprintRecognition),人脸识别对数据采集、分析和处理更灵活更直观。
随着个人、企业、国家对于安全要求的提高,基于人脸识别技术的身份认证系统的应用也越来越广泛。
本文通过研究和分析,初步阐述了如何实现基于人脸识别技术进行笔记本人脸登录的方法。
5.2展望
在进行项目研究的空余时间,我们在网上看到了有关Windows8人脸识别自动登录功能的介绍,我们项目组全体成员和微软一样一致认为,到2012年,计算机整合摄像头的普及将为windows8的人脸识别技术提供基础。
该技术可以检测到用户并自动登录其账户,在不久的将来,我们的操作系统将会为每台笔记本配备自动人脸登录操作。
参考文献:
1.基于人脸识别技术的身份认证系统实现简介夏振杰(上海交通大学中国上海200000)
2.基于MFC的OPENCV视频人脸检测肖贺北京邮电大学无线通信技术研究室,北京(100876)
3.人脸识别研究综述肖冰,王映辉陕西师范大学计算机科学学院,陕西西安710062)
4.基于OpenCv的计算机视觉技术实现陈胜勇刘盛等北京:
科学出版社,2008