《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于人脸识别的应用程序登录助手设计
基于人脸识别的应用程序登录助手设计
2014年微型机与应用第12期
文成玉,金 欣,董 良
成都信息工程学院,四川 成都
摘要: 为了提高移动智能终端中应用程序登录过程的快捷性和安全性,设计了一种基于人脸识别技术的应用程序自动登录方法。通过事先注册人脸特征信息,并与应用程序及其登录信息关联,这些关联信息经加密后以本地文件存放;当启动应用程序时,只要通过了人脸特征信息认证,就能自动提取并填写登录信息。应用表明,该方法增强了应用程序登录过程的便捷性和安全性。
Abstract:
Key words :

  摘  要: 为了提高移动智能终端中应用程序登录过程的快捷性和安全性,设计了一种基于人脸识别技术的应用程序自动登录方法。通过事先注册人脸特征信息,并与应用程序及其登录信息关联,这些关联信息经加密后以本地文件存放;当启动应用程序时,只要通过了人脸特征信息认证,就能自动提取并填写登录信息。应用表明,该方法增强了应用程序登录过程的便捷性和安全性。

  关键词: 人脸识别;人脸特征信息;应用程序登录

  智能手机和平板电脑等移动智能设备日益普及,系统处理数据的能力也越来越强,以前很多在PC上的应用,如登录邮件系统、网上银行等,都移植到这些移动智能设备上,极大地满足了人们随时随地使用这些服务的需求。但是,每次登录这些应用程序都需要输入账号/用户名、密码(甚至第二个密码)等,这就需要用户准确地记忆数量众多的各种应用程序的登录信息。如果设置的用户名和密码又都是比较复杂的字符串序列,虽然安全性高,但用户要完全准确地记忆这些信息是比较困难的。此外,智能手机这类设备的虚拟键盘相对比较小,输入这些信息速度较慢,容易被人偷窥造成泄密。如果选择应用程序自动登录,在这类设备遗失后,更容易造成安全隐患,尤其是手机银行、网上支付等这类账户。

  如何帮助用户便捷地登录各类应用程序,同时保证登录信息的安全性,是一个有待解决的问题。目前关于应用程序自动登录的方法[1-5]中,采用集中帐号管理或其他方式实现应用程序自动登录,部分解决了该问题,但本身的便捷性及安全性不够理想。

  人脸识别技术是利用计算机基于人的脸部特征进行人脸图像分析,并从中提取出所蕴涵的有效身份特征信息用以识别人的身份的技术。经过多年的发展,已经有了多种比较成熟的人脸识别算法,使该技术开始从理论探讨进入适用阶段。如今,各种移动智能终端都具有分辨率较高的视频装置,能够很容易采集到这些设备使用者的高质量的面部图像信息;同时,设备的数据处理和存储能力都有了非常大的提高,可以满足图像识别过程对系统资源的需要。因此,将人脸识别技术应用到这类设备是一种必然。

  本文采用基于本地视频的人脸识别认证方式提取并自动填写用户登录信息来解决上述问题,使应用程序的登录过程更便捷、更安全。

  1 应用程序登录助手设计

  1.1 基本功能及结构设计

  基于人脸识别的应用程序登录助手的基本功能是:通过设备的摄像装置获取使用者的面部图像信息,经过图像检测处理,与事先注册的人脸特征信息进行比较;在通过人脸特征信息认证后,根据用户信息和待登录应用程序的信息提取出唯一的登录信息,并依次填充到该应用程序登录界面的相应位置,登录应用程序。

  根据上述基本功能,将应用程序登录助手分为以下功能模块:图像采集与处理、人脸信息注册与检索、应用程序与登录信息关联注册及检索和登录信息提取与填充。这些模块的子模块划分以及模块/子模块间的关系如图1所示。

001.jpg

  (1)图像采集与处理模块:完成从设备的视频摄像装置采集人脸图像以及采用人脸识别算法从中提取人脸特征信息。

  (2)人脸信息注册与检索模块:在注册过程中,将人脸特征信息写入人脸特征信息注册文件,并生成用户ID;在提取登录信息过程中,根据人脸特征信息检索人脸特征信息注册文件,完成人脸信息认证。

  (3)应用程序与登录信息关联注册及检索模块:在注册过程中,将用户的应用程序与登录信息关联数据以及用户ID写入应用程序与登录信息关联数据文件;在提取登录信息过程中,根据用户认证信息检索出与用户ID和应用程序相关联的登录信息。

  (4)登录信息提取与填充模块:将检索到的登录信息提取出来并自动填写到应用程序登录界面的相应位置。

  1.2 运行过程分析

  功能运行分为注册过程和提取登录信息两个过程。

  1.2.1 注册过程

  启动注册过程后,自动启动视频装置:(1)从视频装置获取的人脸图像,经过图像识别算法处理后生成人脸特征数据;(2)用上述人脸特征数据与人脸信息注册文件中已注册的人脸特征数据进行比对,检查是否为已经注册的用户。如果没有检测到人脸信息注册文件或该文件中没有匹配的人脸特征数据,表示该用户没有注册,这时自动按规则生成一个用户标识与人脸特征数据关联并写入人脸信息注册文件,如果该文件不存在,需要首先创建;(3)完成用户注册后,才能够进行应用程序与登录信息的关联注册。从设备的操作系统中获取应用程序安装信息,人工选择应用程序,然后根据其安装信息生成应用程序标识用来唯一标识该应用程序;之后,将用户标识、应用程序标识、登录应用程序需要的帐号/用户名、密码1和密码2以非明文形式写入应用程序与登录信息关联数据文件(简称登录信息关联文件),如果该文件不存在,要首先创建该文件。在一个设备中可以有多个用户注册,一个用户可以注册多个应用程序与登录信息的关联数据。注册功能流程如图2所示。

002.jpg

  由于应用程序标识是根据应用程序的安装信息生成的,具有唯一性,因而如果重新安装了某个应用程序,这时可能需要在登录助手中删除原来的注册信息并重新注册,以保证应用程序标识的唯一性。因此,登录助手提供对用户本人的应用程序与登录信息的关联数据进行管理的功能。

  此外,应用程序的登录信息设置了3个字段:用户名、密码1和密码2,但并不是所有的应用程序都需要,如:有的应用程序登录只需要输入一个密码,而不需要用户名,而有的则需要用户名、密码,甚至第2个密码。因而,在登录信息关联文件中写入登录信息时,必须保证每个字段都存在,没有内容的写入特殊字符。

  1.2.2 提取登录信息过程

  当用户启动应用程序登录界面并选中用户名或密码字段对应的文本框时,自动触发以后台进程运行登录助手,并启动设备的视频装置:(1)从视频装置获取人脸图像,经过图像识别算法处理后生成人脸特征数据;(2)用上述人脸特征数据与人脸信息注册文件中已注册的人脸特征数据进行比对,检查是否为已经注册的用户。如果用户已注册,从中取出用户标识(表示通过人脸信息认证),之后获取成为应用程序标识;(3)根据用户标识和应用程序标识检索登录信息关联文件,如果检索到多条关联数据,表明该用户在这个应用程序中有多条登录帐户信息,如:邮件程序中一个用户可以用不同的帐号登录,这时需要提示用户手工选择其中一条作为登录信息;若只有一条关联数据,则不进行提示,直接读出登录信息;(4)根据获取的登录界面文本框的位置,自动将用户名、密码1、密码2依次填入其中,如果这3个字段中的某个字段值为特殊字符,表示登录界面中没有该字段。例如,如果帐户/用户名字段的值为特殊字符,表示应用程序的登录界面中不需要输入用户名,直接输入密码即可,如某些手机银行软件。字段“密码2”根据需要选用,如某些手机股票软件需要输入两个密码,如果该字段为特殊字符,则表示不需要第2个密码。此外,如果用户是非注册用户,或者是注册用户但没有该应用程序的关联数据,这时都需要登录助手启动其他的输入法,使用户能输入信息。因此,登录助手中还需要设置一个操作系统中已存在的文字输入法,作为解决上述问题的方案。提取登录信息功能流程如图3所示。

003.jpg

  2 功能实现

  目前,移动智能终端设备中运行的操作系统有多种,本文的实现是基于Android平台、Java语言及OpenCV(Open Source Computer Vision)函数库。OpenCV是一种开源的计算机视觉函数库,实现了图像处理和计算机视觉方面的很多通用算法,如:常用的人脸识别方法[6]主成分分析PCA、线性判别分析LDA等。在Android平台下,利用JNI等技术可以调用OpenCV函数完成人脸识别的相关处理[7]。

  2.1 图像采集与处理

  利用摄像设备获取图像并进行人脸检测。这个过程需要使用OpenCV函数库中的相关功能来完成图像检测处理。

  (1)图像获取:从摄像装置获取图像,既可以使用Android系统内置的摄像头应用程序,也可以自己定义。这里使用前者来实现:首先创建一个请求图像或视频的intent,然后用startActivityForResult()方法启动摄像头intent,这样就可以在应用程序中接收从摄像头intent返回的数据。主要的函数调用:

  ①Intent(String action):创建指定类型的摄像头,这里指定的是MediaStore.ACTION_ IMAGE_CAPTURE,即向内置摄像头程序请求图像。

  ②startActivityForResult(Intent intent,int requestCode):执行定义的摄像头并获取图像。在注册时,需要将获取的图像显示在注册界面中;而在提取应用程序登录信息过程时,则不需要,直接将获取的图像存放到缓存中。

  (2)图像处理:获取图像后,首先需要将彩色图像转换为灰度图像,然后对图像进行直方图均衡化,最后利用分类器检测图像区域是否存在人脸特征,并作归一化处理。主要涉及OpenCV的以下函数调用:

  ①void cvCvtColor(const CvArr* src,CvArr* dst, int code):将彩色图像转换为灰度图像,其中参数code设置为CV_BGR2GRAY表示转换为灰度图。

  ②void cvEqualizeHist(const CvArr* src,CvArr* dst):对输入灰度图进行直方图均衡化处理,能对图像的细节部分起到明显的突出增强效果。

  ③cvHaarDetectObjects(…):使用人脸/人眼的Haar特征级联分类器进行相关目标区域的检测,找到包含人脸的矩形区域,并且将该区域作为一序列的矩形框返回。使用均衡化后的灰度图可以加快检测速度。

  2.2 人脸信息注册与检索

  根据图像采集与处理模块中检测到的人脸图像,调用cvCalcEigenObjects()函数进行PCA操作,计算输入目标的正交特征基向量和目标平均值,计算出的特征脸 (Eigenface)都存放在向量组成的数组中;再利用cvEigenDecomposite()函数将每一个训练图片投影在PCA 子空间上,最后得到处理后的人脸在低维子空间(即训练人脸特征信息的子空间)中的投影向量。

  在注册过程中,首先检查是否已存在该特征脸,若没有,则调用注册函数将信息写入人脸信息注册文件,并生成用户标识。对于提取登录信息过程,则调用人脸识别函数,检查是否是合法用户,若是则从人脸信息注册文件读出用户标识,传递给下一功能模块。

  (1)人脸特征信息注册:将计算机处理后的矩阵数据(即特征脸数据)写入以本地文件形式存放的数据库中。特征脸数据存放在OpenCV提供的结构体CvFileStorage中。注册时,先使用cvOpenFileStorage()函数以参数CV_

  STORAGE_READ打开人脸信息注册文件,再通过cvWrite()函数将内存中存放特征脸数据和相关信息的对象写入人脸信息文件,返回标识信息,实现人脸特征信息注册。

  (2)人脸特征识别:使用自定义函数int MoseNearestFace(float * pReconFace,float * pConfidence)计算待识别的人脸向量和数据库中的所有人脸向量的相似度,返回相似度最高的已注册人脸信息,则实现了人脸识别的过程。其中参数pReconFace是当前输入的人脸向量,参数pConfidence是相似度的数值表述。

  人脸识别方法的最大缺点是计算量大,识别速度慢。这里选用的特征脸(Eigenface)方法采用了PCA降维方法,有效减少了计算量,提高了识别速度。

  2.3 应用程序与登录信息关联注册及检索

  在注册过程中,从列表选择需要注册的应用程序,生成应用程序标识。之后将用户标识、应用程序标识及登录信息关联,生成关联数据并调用加密函数对数据加密,再写入登录信息关联文件。在提取登录信息过程中,根据用户认证成功返回的用户标识以及应用程序标识检索登录信息关联文件,若查找到结果,则需要调用解密函数,得到应用程序的登录信息,传递给下一操作。主要涉及以下函数调用:

  (1)生成应用程序标识函数:createAppID(String packageName,String label)。利用Android系统的PackageManager类,可以获取系统中已安装的应用程序包的信息,根据包名和标签,调用该函数生成应用程序标识,可以唯一标识该应用程序。

  (2)加/解密函数:考虑到登录信息的安全性,对关联数据内容采用AES算法进行加/解密,密钥长度为128 bit,完全可满足该文件中信息加密的安全需要[9]。

  ①加密函数:encrypt(byte[] key, byte[] src):用指定的密钥加密源数据。

  ②解密函数:decrypt(byte[] key, byte[] encrypted):用密钥解密数据。

  (3)读/写登录信息关联文件

  ①写入函数:bool writeRelatedeData(String fileName,String userid,AppInfo app),其中类AappInfo定义了应用程序的相关属性,包括:应用程序ID(appID),登录该应用程序的用户名(appUser)、 密码1(appPwd1)及密码2(appPwd2)。

  ②查找函数:AppInfo  findRelatedData(String fileName, String userid, String appID)。

  2.4 登录信息提取与填充

  从SDK1.5版本以后,Android系统开放了IMF(Input Method Framework)框架,使得开发人员可自行开发输入法;同时由于EditText控件可以自动获得焦点,则只要Activity中包含EditText控件,通过长按文本框,便会自动触发指定的应用程序。

  本文将应用程序登录助手看作一个输入法程序,通过设计一个继承Activity的子类LoginActivity便可实现触发。为了保证将检索的应用程序登录信息准确填写入EditText控件中,通常要求用户长按登录界面的第一个EditText控件,然后根据用户名、 密码1及密码2字段的值,按规则自动填入。这样就实现了登录信息的提取与自动填充,并触发应用程序登录操作。

  本文将人脸识别技术应用在应用程序自动登录中,既方便快捷,又增加了登录信息的安全性;同时给人一种科技感,增强了用户的使用乐趣。人脸识别技术必将成为未来信息技术的重要组成部分。但仍需要进一步改进,解决系统不能识别登录助手与其他输入法而需要手工切换等问题。

  参考文献

  [1] 陈鲁,王明宇.用于应用程序自动登录的方法和设备:中国,2008102223263[P].2008-09-17.

  [2] 陈雯.一种应用程序登录方法及登录管理系统:中国,201110172345[P].2011-10-19.

  [3] 吕中雷.移动终端及其应用程序登录方法:中国,201110251233[P].2011-12-14.

  [4] 岳风顺.一种应用程序登录方法及装置:中国,2012105664353[P].2012-12-21.

  [5] 范志超.一种自动登录用户账号的方法及系统:中国,2012105689539[P].2012-12-25.

  [6] 王伟,马建光.人脸识别常用方法及其发展现状[J].兵工自动化,2002,21(1):49-51.

  [7] 韩露,李祖枢,陈东义.一种Java与OpenCV结合实现的目标检测模块[J].计算机应用,2008,28(3):773-775.

  [8] 黎松,平西建,丁益洪.开放源代码的计算机视觉类库OpenCv的应用[J].计算机应用与软件,2005,22(8):134-136.

  [9] FERGUSON N,KELSEY J,LUCKS S,et al.Improved cryptanalysis of rijndael[A].Fast Software Encryption[C]:7thInternational Workshop,FSE 2000,in New York,USA,April,2000:P213-230.


此内容为AET网站原创,未经授权禁止转载。