STM32驱动K210人脸识别模块经验汇总
本次是基于HLK-KT210AI人脸识别模块和STM32单片机进行设计的人脸识别项目。主要是人脸识别功能的分析和使用。1模块连接本次使用了海凌科生产的DEMO板,但是由于板子的客观因素,TTL串口没有设计好,需要自行引线才行,故需了解好模块的引脚。串口TTL进行交叉通信,GND做共地处理。如图所示,芯片模组的2引脚是RXD,连接到USB-TTL调试器的TXD或者单片机的TXD,模组的3引脚是TXD,接USB-TTL调试器的RXD或者单片机的RXD,波特率设置为115200(出厂默认,后期可自行更改)进行调试。USB-C口可以直接调试和供电,故不再说明C口,因本设计是自己焊接的板子,所以C口用起来不合适。注意的是供电部分一定要接稳点电压,1A以上,保持电源稳定才行。
2上位机调试根据手册和官方给的串口调试软件扩展部分的指令,比较容易的进行测试。需要注意的是自己做指令进行验证的话需要CRC校验位,那么可以通过在线网址进行生成,模型和网址如下。
3根据手册和调试过程画的人脸录入和识别的流程4简单的STM32驱动验证本次仅仅只是个开头,做了人脸信息录入和识别的功能,其它功能以后有时间再去设计驱动,入门以后其实就不复杂了,框架基本已成,后面有时间会更新。
/***@说明由燃烧电子于2022年3月24日做的初始版本V1.0*@TELQ2772272579*@readme仅供参考*/#ifndef__HLK210_h#define__HLK210_h#include"stm32f10x.h"#include#include#include"Def_config.h"#include"delay.h"//#include"usart1.h"#defineHLK210_SendByteUSART1_SendByte//模组返回的消息类型说明#defineHLK210_CTROK0x00//操作成功#defineHLK210_CHECKEDFACE0x01//检测到人脸#defineHLK210_LIVINGBODY0x02//活体通过#defineHLK210_STRERROR0x03//存储操作错误#defineHLK210_STRFULL0x04//人脸库已满#defineHLK210_CHECKOUT0x05//检测超时#defineHLK210_IDERROR0x06//人脸编号ID不存在#defineHLK210_FORMERROR0x07//参数或格式错误#defineHLK210_OTHERERROR0x08//其他错误#defineHLK210_RAMERROR0x09//RAM中暂缓的模板不存在#defineHLK210_HAVEDFACE0x0A//此人脸已注册typedefenum{NORMAL,INPUTFACEID,CHECKFACEID,DELETEFACEID}ENUM_HLK210;#defineHLK210_NORMALANSWERLEN18//命令发出应答长度#defineHLK210_FACEANSWERLEN21//人脸录入时反馈字节长度#defineHLK210_RECOANSWERLEN22//人类识别时反馈字节长度#defineHLK210_USART_REC_LEN50typedefstructSaveData{charHLK210_Buffer[HLK210_USART_REC_LEN];charCmdDataLen;ENUM_JUDGEisGetData;//是否获取到GPS数据ENUM_JUDGEisParseData;//是否解析完成ENUM_JUDGEisUsefull;//信息是否有效ENUM_HLK210NowMode;charTimeCount;}_HLK210_Data;extern_HLK210_DataHLK210_Data;voidHLK210_ClearDate(void);voidHLK210_Receive_Byte(u8res);voidHLK210_InputFaceID(void);voidHLK210_CheckFaceID(void);#endif#include"HLK210.h"#include"bsp_i2c_gpio.h"#include"bsp_i2c_OLED.h"#include"delay.h"#include"usart3.h"unsignedcharHLK210_FaceStorageCmd[18]={0x5A,0x2C,0x00,0x00,0x00,0x12,0x03,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xE5};//人脸录入指令unsignedcharHLK210_FaceCheckCmd[18]={0x5A,0x2C,0x00,0x00,0x00,0x12,0x02,0x0C,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xA8};//人脸识别指令unsignedcharHLK210_FaceDelete[18]={0x5A,0x2C,0x00,0x00,0x00,0x12,0x0D,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0x1E};//人脸清空指令unsignedcharHLK210_LightOn[18]={0x5A,0x2C,0x00,0x00,0x00,0x12,0x12,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xAA,0x15};//开补光灯指令unsignedcharHLK210_RECEICV_BUFFER[HLK210_USART_REC_LEN];_HLK210_DataHLK210_Data;u8HLK210_point=0;voidHLK210_Receive_Byte(u8res)//将此函数放到串口中断函数里,res形参放串口接收值。{HLK210_RECEICV_BUFFER[HLK210_point++]=res;if(HLK210_point>1&&(HLK210_RECEICV_BUFFER[HLK210_point-2]==0x5a&&HLK210_RECEICV_BUFFER[HLK210_point-1]==0x2c)){HLK210_RECEICV_BUFFER[0]=HLK210_RECEICV_BUFFER[HLK210_point-2];HLK210_RECEICV_BUFFER[1]=HLK210_RECEICV_BUFFER[HLK210_point-1];HLK210_point=2;}if(HLK210_point>=HLK210_Data.CmdDataLen){HLK210_Data.isGetData=TRUE;memset(HLK210_Data.HLK210_Buffer,0,HLK210_USART_REC_LEN);//清空memcpy(HLK210_Data.HLK210_Buffer,HLK210_RECEICV_BUFFER,HLK210_point);//保存数据}if(HLK210_point>HLK210_USART_REC_LEN){HLK210_point=HLK210_USART_REC_LEN-1;}}voidHLK210_ClearDate(void){memset(HLK210_RECEICV_BUFFER,0,HLK210_USART_REC_LEN);//清空HLK210_point=0;HLK210_Data.CmdDataLen=HLK210_NORMALANSWERLEN;memset(HLK210_Data.HLK210_Buffer,0,HLK210_USART_REC_LEN);//清空HLK210_Data.isGetData=FALSE;HLK210_Data.isParseData=FALSE;HLK210_Data.isUsefull=FALSE;HLK210_Data.NowMode=NORMAL;HLK210_Data.TimeCount=0;}voidHLK210_Send_Cmd(u8*cmd){u8i=0;for(i=0;iu8i=0;HLK210_ClearDate();HLK210_Data.CmdDataLen=HLK210_NORMALANSWERLEN;HLK210_Data.NowMode=INPUTFACEID;HLK210_Send_Cmd(HLK210_LightOn);//开补光灯while(HLK210_Data.isGetData==FALSE);//等待接收完应答数据HLK210_Data.isGetData=FALSE;for(i=0;iUSART3_SendByte(HLK210_Data.HLK210_Buffer[i]);}HLK210_Data.CmdDataLen=HLK210_FACEANSWERLEN;//while(HLK210_Data.isGetData==FALSE);//等待接收完应答数据//HLK210_Data.isGetData=FALSE;//for(i=0;iu8i=0;HLK210_ClearDate();HLK210_Data.CmdDataLen=HLK210_NORMALANSWERLEN;HLK210_Data.NowMode=CHECKFACEID;HLK210_Send_Cmd(HLK210_LightOn);//开补光灯while(HLK210_Data.isGetData==FALSE);//等待接收完应答数据HLK210_Data.isGetData=FALSE;for(i=0;iUSART3_SendByte(HLK210_Data.HLK210_Buffer[i]);}HLK210_Data.CmdDataLen=HLK210_RECOANSWERLEN;}调用人脸识别方法(本次没有识别ID号,只是做了有没有识别成功的功能,后面再更新别的,数组19位存的就是有没有成功标识,成功位0,否则为其他值,常见为0x02:检测到人脸但未识别)voidProc_CVHK210(void){if(HLK210_Data.isGetData==TRUE&&HLK210_Data.NowMode==CHECKFACEID){HLK210_Data.isGetData=FALSE;HLK210_Data.TimeCount=0;//for(i=0;iLCD_Show.personNum=2;}if(HLK210_Data.HLK210_Buffer[6]==0x02&&HLK210_Data.HLK210_Buffer[7]==0x0D&&HLK210_Data.HLK210_Buffer[19]!=0X00){LCD_Show.personNum=1;}LCD_Display();}}调用超时检测方法,因没有人脸时需要更新屏幕显示为“无人”状态,故用定时器设定3秒时间,没有收到人脸数据时,设定为无人。if(TIM4_FlagStatus.Flag_1000MS==TRUE){HLK210_Data.TimeCount++;if(HLK210_Data.isGetData==FALSE&&HLK210_Data.TimeCount>2){LCD_Show.personNum=0;LCD_Display();HLK210_Data.TimeCount=3;}}串口1设定为和K210模块通信串口,调试过程进行串口3输出串口1接收到的人脸识别模块数据,以验证接收设计程序是否有问题。HLK210_InputFaceID();if(HLK210_Data.isGetData==TRUE&&HLK210_Data.NowMode==INPUTFACEID){HLK210_Data.isGetData=FALSE;for(i=0;iHLK210_CheckFaceID();}}if(HLK210_Data.isGetData==TRUE&&HLK210_Data.NowMode==CHECKFACEID){HLK210_Data.isGetData=FALSE;for(i=0;i人脸识别技术发展现状及未来发展趋势
限时免费提供人脸人体、分割抠图、OCR以及视频等共计140+项AI能力的调用【点此开通】
人脸识别,通常也称人像识别、面部识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术,主要用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术。
近年来,随着人工智能的发展以及国家经济发展、安全防卫的需要,我国人脸识别市场不断扩大,技术水平不断提升,在算法方面已取得世界领先地位。伴随着人工智能的持续发展,智能化时代的悄然到来,以人脸识别为代表的生物识别技术越来越普及。从安防、支付、金融到教育、医疗和交通,"刷脸"日渐成为常态,为人们的生产与生活带来了诸多智能、安全与便捷。
一、人脸识别技术发展背景
人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。除了安防、金融这两大领域外,人脸识别还在交通、教育、医疗、警务、电子商务等诸多场景实现了广泛应用,且呈现出显著应用价值。为了进一步把握人脸识别技术所带来的重大机遇,我国出台了一系列政策予以支撑。
2015年以来,我国相继出台了《关于银行业金融机构远程开立人民币账户的指导意见(征求意见稿)》、《安全防范视频监控人脸识别系统技术要求》、《信息安全技术网络人脸识别认证系统安全技术要求》等法律法规,为人脸识别技术的应用以及在金融、安防、医疗等领域的普及奠定了重要基础。
2017年,人工智能首次被写入全国政府报告;同年7月,国务院发布了《新一代人工智能发展规划》;12月,工信部出台了《促进新一代人工智能产业发展三年行动计划(2018-2020年)》,其中对人脸识别有效检出率、正确识别率的提升做出了明确要求。作为人工智能主要细分领域,人脸识别获得的国家政策支持显而易见。
2020年,《中国新一代人工智能发展报告2020》今天在浦江创新论坛发布。报告对过去一年中国人工智能发展的总体情况进行了系统回顾。报告分全球发展、创新环境、科技研发、产业化应用、人才培养、区域发展、人工智能治理七个章节,力图客观反映中国《新一代人工智能发展规划》的实施情况,揭示未来发展的新挑战和新趋势。
二、人脸识别技术发展历程
人脸识别最初在20世纪60年代已经有研究人员开始研究,真正进入初级的应用阶段是在90年代后期,发展至今其技术成熟度已经达到较高的程度。
1991年,特征脸(Eigenface)算法被应用在人脸识别,首次实现了自动检测人脸。这项技术是霍普金斯大学的希洛维奇(Sirovich)提出,再由麻省理工学院(MIT)"连接科学"的创始主任亚力克斯彭特兰(AlexPentland)发扬光大,彭特兰在2012年被《福布斯》评为"全球7个最强数据科学家之一",获此殊荣的还有谷歌创始人拉里佩奇。
2000年以后,NIST研究院又在FERET项目基础上做了延伸,先后发起两个新项目FRVT和FRGC,FRVT是评估技术可用性,测试算法系统性能,为采购技术的相关部门提供检测报告。FRGC则是面向市场上的公司和团队,联合其他部门的定制化需求,发布竞标比赛,FRVT负责对接评估,帮助不同部门完善人脸识别系统的个性化要求。
2010年,随着Facebook加入人脸识别功能,人脸识别开始走向个人。从支付到美颜,全球互联网公司纷纷跟进,2017年苹果iPhoneX首次发布人脸解锁功能,抢购一空同时引爆了市场,如今人脸识别已经应用在了方方面面,短视频、直播这些每天都会高频出现在我们身边。整个发展过程可以分为机械识别、半自动化识别、非接触式识别及互联网应用阶段。
与其他生物识别方式相比,人脸识别优势在于自然性、不被察觉性等特点。自然性即该识别方式同人类进行个体识别时所利用的生物特征相同。指纹识别、虹膜识别等均不具有自然性。不被察觉的特点使该识别方法不易使人抵触,而指纹识别或虹膜识别需利用电子压力传感器或红外线采集指纹、虹膜图像,在采集过程中体验感不佳。
目前人脸识别需要解决的难题是在不同场景、脸部遮挡等应用时如何保证识别率。此外,隐私性和安全性也是值得考虑的问题。人脸识别优势明显,未来将成为识别主导技术。
具体来说,相比指纹识别、虹膜识别等传统的生物识别方式,优点主要还集中在四点:非接触性、非侵扰性、硬件基础完善和采集快捷便利,可拓展性好。在复杂环境下,人脸识别精度问题得到解决后,预计人脸识别有望快速替代指纹识别成为市场大规模应用的主流识别技术。
三、人脸识别技术研发现状
人脸识别发展加快一方面来自于我国智能化社会建设的发展需求,另一方面来自于人脸识别技术的快速发展。尤其是近年来人工智能化的浪潮下,人脸识别行业受到了资本的青睐,为人脸识别技术的发展提供了重大机遇。根据SooPat数据显示,近年来我国人脸识别行业相关专利申请数量不断提高。
2018年,我国人脸识别行业专利申请量为3487项,较2017年略有提升,专利公开数量为5200项,同比增长93%。2019年1-2月,我国人脸识别专利公开量已经达到1174项,超过2014年全年水平。
四、我国人脸识别技术应用现状分析
2014年是我国人脸识别技术的转折点,使人脸识别技术从理论走向了应用,2018-2020年则是人脸识别技术全面应用的重要节点,"刷脸"时代正式到来。
目前,从我国人脸识别技术应用来看,主要集中在三大领域:考勤门禁、安防以及金融。
从具体应用来看,主要包含了公共安全领域的刑侦追逃、罪犯识别以及边防安全等;信息安全领域的政府职能领域的电子政务、户籍管理、社会福利和保险;商业企业领域的电子商务、电子货币和支付、考勤、市场营销;场所进出领域的军事机要部门、金融机构的门禁控制和进出管理等。除了公共安全领域,人脸识别也更多的被用到了金融行业。当下刷脸办卡、远程贷款、自主开户、刷脸支付已经开始在我们的生活中渗透。现在很多银行已经把人脸识别系统引入到自主设备中,在办卡时可以利用人脸识别技术将现场采集的照片与已存照片、身份证照片进行比对,确认之后,才可以进行自主开卡、业务变更、密码重置等业务,更加的安全高效。
同时在交通领域,行人闯红灯也步入了“刷脸”时代。中国式过马路曾经成为一时笑料,很多中国人在过马路的时候,不看红绿灯,凑够一群人就走的情况还是没能够得到改善。一直以来这种闯红灯的陋习很难被治理,但是人脸识别技术的发展让我们看到了转机。
现在已经有地区开始将人脸识别技术用于治理行人乱闯红灯了,在行人闯红灯时,自动识别抓拍系统会对闯红灯的市民进行抓拍,并将数据上传到大数据侦查实验中心,核实真实身份,并实时在电子大屏上对违法人员进行曝光。
五、人脸识别未来发展趋势
首先,人脸识别应用的最广泛领域便是安防行业,不仅给整个安防行业注入了新的生命活力,也进一步开拓了新的发展市场。作为安防市场未来的发展方向的智能视频分析,其中最重要的技术就是人脸识别。
其二,我国的三维测量技术近年来发展形势较好,而现今3D人脸识别算法正对2D投影的缺陷做了补充,此外对于其中的传统难点,包括人脸旋转、遮挡、相似度等在内的都有了很好的应对,这也成为了人脸识别技术的另一个最为重要的发展路线之一。
其三,大数据深度学习进一步提升了人脸识别的精确度,这也为2D人脸识别的应用作了一定的突破,将其应用于互联网金融行业当中,能够快速普及金融级应用。
其四,人脸识别技术由于其便利性、安全性,可在智能家居中用作门禁系统以及鉴权系统,因此智能家居与人脸识别技术的融合是未来发展的重点方向。智能家居中的人脸识别系统是结合嵌入式操作系统和嵌入式硬件平台建立的,加强了人脸识别技术与智能家居应用的结合度,具有概念新、实用性强等特点。
其五,人脸识别技术是未来基于大数据领域的重要发展方向。现如今公安部门都引入了大数据,这也弥补了传统技术的难点,通过人脸识别技术使得这些照片数据再度存储利用,能够大大提升公安信息化的管理和统筹,这将成为未来人脸识别的主要发展趋势。
在线免费体验百种AI能力:【点此跳转】
钉钉扫描下方二维码,进群免费对接百种AI能力
基于Matlab人脸识别(PCA算法)
摘要
随着科技的发展,人类社会的进步,传统身份识别由于容易遗失,容易被破解已不能起到身份识别作用。人们需要更加安全可靠的身份识别技术。而生物特征的独一无二,不易丢失和被复制的特性很好满足了身份识别的需要。同时随着计算机科学技术和生物医学的发展使得利用生物特征识别成为了可能。在生物特征识别领域,由于人脸识别的操作快速简单,结果直观,准确可靠,不需要人的配合等优点已成为人们关注的焦点。主成分分析(principalcomponentanalysis,PCA)通过提取高维度的人脸图像的主元,使得图像在低维度空间中被处理来降低了图像处理的难度。由于其有效的解决了图像空间维数过高的问题,已经成为人脸识别领域非常重要的理论。本文研究的就是基于PCA的人脸识别算法的实现。
本文按照完整人脸识别流程来分析基于PCA的人脸识别算法实现的性能。首先使用常用的人脸图像的获取方法获取人脸图像。本文为了更好的分析基于PCA人脸识别系统的性能选用了Orl人脸数据库。接下来是人脸图像预处理方法。由于Orl人脸图像质量较好,而且已经做过相应的预处理,所以本文试验中只使用灰度处理。接着使用PCA提取人脸特征,使用奇异值分解定理计算协方差矩阵的特征值和特征向量以及使用最近邻法分类器欧几里得距离来进行人脸判别分类。在实验中我们发现基于PCA的人脸识别系统的识别率很高,而且具有一定鲁棒性,所以基于PCA的人脸识别算法的实现的研究还是有意义。
关键词:人脸识别PCA算法奇异值分解定理欧几里得距离
AbstractWiththedevelopmentofscienceandtechnology,theprogressofhumansociety,thetraditionalidentificationiseasytolose,easytobecrackedandithasnotplayanidentifiablerole.Peopleneedamoresecureandreliableidentificationtechnology.Biometricisunique,easytoloseandreplicationcharacteristicsofgoodmeettheneedsoftheidentification.Withthedevelopmentofcomputerscienceandtechnologyandbiomedicalmakesuseofbiometricidentificationhasbecomepossible.Inthefieldofbiometricidentification,facerecognitionwiththeadvantagesofoperationisfastandsimple,theresultsareintuitive,accurateandreliable,donotneedco-ordination,hasbecomethefocusofattention.Theprincipalcomponentanalysis(PCA)toextracthighdimensionalfaceimageofthemainelement,makingtheimagesareprocessedinlow-dimensionalspaceanditreducesthedifficultyofimageprocessing.PCAsolveseffectivelytheproblemofhighdimensionimagespaceandithasbecomeaveryimportanttheoryinfacerecognitionfield.Thispaperisinthiscontextofwritingfrom.InaccordancewiththefullrecognitionprocesstoanalyzetheperformanceofPCA-basedfacerecognitionalgorithm.Thefirsttousethemethodofaccesstocommonlyusedfaceimagesforfaceimages.InordertobetteranalysisisbasedontheperformanceofthePCAfacerecognitionsystemselectedEssexfacedatabase.Nextisthefaceimagepreprocessingmethods.Essexfaceimagequalityisbetter,andhavedonetheappropriatepretreatment,usingonlygray-scaleprocessingofthistrial.ThenusethePCAforfacefeatureextractionusingsingularvaluedecompositiontheoremtocalculatethecovariancematrixoftheeigenvaluesandeigenvectors,andusetheEuclideandistanceofthenearestneighborclassifiertotheclassificationofhumanfacediscrimination.Intheexperiment,wefoundthatahighrecognitionrateofthePCA-basedfacerecognitionsystem,butwithacertainrobustness,thePCA-basedfacerecognitionalgorithmtoachievemeaningful.
Keywords:facerecognitionPCAalgorithmSVDEuclideandistance
随着社会和科技的发展,社会步伐的加快,人们对高效可靠的身份识别需求日益强烈。各种技术在科研和实际中都受到了很大的重视和发展。由于生物特征内在的稳定性和唯一性使其成为了作为身份识别的理想依据。人脸特征作为典型的生物特征外,还有隐蔽性好,易于被用户接受,不需要人的配合等优点。现已成为了身份识别领域研究的热点。PCA算法通过降低维度,提取主元素,减少了数据冗余,解决了图像纬度太高无法处理或处理很慢的特点,同时保持了原始图像的绝大部分信息。在人脸识别领域,很多先进的识别算法都是在其基础上的改进。所以研究基于PCA的人脸识别算法实现具有重要的理论和使用价值。
本文主要介绍基于PCA的人脸识别算法的实现,除第一章外,其余内容按照人脸识别的流程可分为人脸图像获取,人脸图像预处理,人脸特征提取和特征匹配四个部分。具体安排如下:
第一章主要介绍人脸识别的研究现状,人脸识别技术的主要难点及人脸识别流程。
第二章主要介绍常用的人脸图像预处理方法。
第三章主要介绍PCA算法,SVD定理,如何通过PCA和SVD提取人脸特征及如何使用最近邻法分类器欧几里得距离来进行判别分类。
1人脸识别系统概述1.1人脸识别的研究背景人脸识别的研究起源比较早,Galton在1888年和1910年就已在Nature杂志发表两篇关于如何使用人脸进行身份识别的论文。在他的文章,他使用一组数字表示相异的人脸侧面特征,同时还对人类本身的人脸识别能进行了研究分析。
自70年代以来,随着人工智能技术的兴起,人们发现许多对于人类而言可以轻易做到的事情,而让机器来实现却很难,如人脸图像的识别,语音识别,自然语言理解等。人们一直想做的事情就是让机器具有像人类一样的思考能力,以及识别事物、处理事物的能力,因此人们从多个角度来探求人类的思维机制、以及感知事物、处理事物的机制,并努力将这些机制用于实践,进行各种智能机器人的研制。人脸图像的机器识别研究就是在这种背景下兴起的。
同时,进行人脸图像识别研究也具有很大的使用价值。如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。现在己有实用的计算机自动指纹识别系统面世,但还没有通用成熟的人脸自动识别系统出现。与指纹图像不同的是,人脸图像受到诸多因素干扰,使得同一个人,在不同的环境下拍摄所得到的人脸图像不同,有时更会有很大的差别,给识别带来很大难度。因此在各种干扰条件下实现人脸图像的识别,也就更具有挑战性。
虽然人脸识别至今已取得了丰硕的研究成果。但是到目前为止,世界上还没有任何一个完善且应用范围较广的人脸识别系统问世。
1.2人脸识别的发展趋势随着社会的进步,人脸识别技术将成为一个重要的研究热点,同时也会被应用于各个方面。其未来主要的发展趋势如下:
1.2.1数据融合与方法综合多环境多领域多方法多数据的相互补充和完善。利用数据综合分析,总结研究出更好的人脸识别效果。
1.2.2动态人脸识别静态人脸识别技术局限性较大,而随着社会的发展,动态人脸识别技术的应用和需求将大大增加。
1.2.3三维人脸识别实际上的人脸是三维的,三维人脸可以比二维人脸提供更加完整的信息,而目前的人脸识别是建立在二维图像上的。随着三维技术的应用越来越广,三维人脸识别也将成为研究热点。
1.2.4复杂背景下人脸分割技术在复杂背景下快速有效检测和分割人脸技术还需进一步的研究。
1.2.5全自动人脸识别技术全自动人脸识别技术具体难点在于人脸是非刚体,无法得到准确完整的描述人脸特征。如何有效的表达人脸特征将是其研究的重点。
1.3人脸识别技术的主要难点人脸识别技术有着非常美好的发展前景,但是以下几个难点一直在制约着突破性的进展:
1.3.1复杂条件下关键点定位关键点定位为实际人脸识别系统的前端处理模块,此模块直接影响着人脸识别系统的性能。复杂条件下的关键点定位是目前人脸识别急需解决的问题之一。
1.3.2姿态问题现在人脸识别算法主要以正面姿态为研究对象。当人脸姿态非正面时,人脸的识别度将会骤然下降。如何提高人脸识别系统对姿态的识别度人脸识别中一个具有挑战性的任务。
1.3.3表情问题表情是人机交互不可或缺的部分,但它很难用精确的数学模型来表示。由于目前的计算机技术的限制,计算机还不能准确的定位这些面部特征点,也无法辨别面部肌肉的运动。而且,不同表情没有固定的界限,不同人的表情也会有不同。
1.3.4遮挡问题由于采集到的人脸图像不一定都是完整的,这会影响人脸特征提取与识别,也可能会导致人脸检测算法的失效。如何有效地排除遮挡物的影响有着非常重要的意义。
1.3.5光照问题光照问题在人脸识别中表现得十分明显。但光照处理技术远未达到实用的程度,还需要深入的研究。
以上列举了部分主要的技术难点,其他难点本文将不会涉及。
1.4人脸识别流程1.4.1人脸图像获取人脸图像获取是通过传感器,将获取到的人脸图像转换为计算机可处理的数字信号。这是人脸识别的第一步。获取人脸图像时,要尽量排除干扰因素,是获取的人脸图像能够达到要求。
1.4.2预处理预处理是为了除去噪声和对测量仪器或其他因素对人脸图像造成退化现象进行复原。通过定位和分割算法从获取的图像中分割出我们要处理的人脸部分。常用的人脸预处理有:灰度变化,二值化,直方图均衡,图像滤波,图像锐化和归一化处理。
1.4.3特征提取特征提取就是通过提取人脸图像中能够凸显与其他个体差异的本质特征,进而来实现身份识别。本文讲解如何使用PCA算法提取人脸特征,进而实现人脸识别。
1.4.4特征匹配特征匹配是将采集到的人脸图像的特征模版与系统中已存储的特征模版进行比对,并输出最佳匹配对象。
1.5本章小结本章简略讲述了人脸识别系统的研究背景、发展趋势、主要技术难点和系统流程。研究背景模块主要讲述人脸识别的研究概况及研究意义;发展趋势模块主要讲述人脸识别技术未来的走向;主要技术难点模块主要讲述人脸识别的主要技术难点以及今后的研究热点;系统流程模块主要讲述人脸识别系统的工作流程及原理。
2人脸图像处理的MATLAB实现2.1MATLAB简介由MathWork公司开发的MATLAB程序设计自由度大,程序的可移植性好。MATLAB推出了功能强大的适应于图像分析和处理的工具箱,常用的有图像处理工具箱、小波分析工具箱及数字信号处理工具箱。MATLAB图像处理工具箱支持索引图像、RGB图像、灰度图像、二进制图像并能操作BMP、JPG、TIF等多种图像格式文件。
2.2人脸图像常用预处理方法2.2.1灰度变化2.2.3直方图均衡
直方图均衡是将将各灰度级分量尽量均匀分布,从而来增强人脸图像的对比度。此外它还能减少光照对人脸图像的影响,使人脸特征提取变得容易,同时还提高了人脸图像的主观质量。其主要在于根据图像灰度分布和实际的需求选择合适的映射函数。选择函数可以连续平滑函数,也可以是分段函数。映射函数为分段函数时一般是基于想要突出人脸图像中某些灰度值物体的细节,又不想牺牲其他灰度值上的细节的考虑。这样可以是需要的细节灰度值区间得以拉伸,不需要的细节得以压缩。
2.2.4图像滤波现在消除噪声的方法有全局处理和局部算子两类。全局处理类的方法需要了解信号和噪声的统计模型。人脸图像预处理经常使用后一类方法。常用的有均值滤波器,高斯平滑滤波器,中值滤波器和边缘保持滤波器。
2.2.4.1均值滤波器
2.2.4.2中值滤波器
中值滤波是一种非线性滤波方法。它在平滑脉冲噪声方面非常有效,同时它可以保护像素尖锐的边缘。它用像素点邻域灰度值的中值来代替该像素点的灰度值。该方法在去除脉冲噪声,椒盐噪声的同时又能保留图像边缘细节,这是因为它不依赖于邻域内那些与典型值差别很大的值。中值滤波器在处理连续图像窗函数时与线性滤波器的工作方式类似,但滤波过程不再是加权运算。例如,取4*4窗函数,计算以点[i,j]为中心的窗函数的像素中值时,首先按强度值大小排列像素点,然后选择排序像素集的中间值作为点[i,j]的新值。
中值滤波在一定条件下,可以克服线性滤波器带来的图像细节模糊的缺点,而且对滤除脉冲干扰是最有效的。但对一些细节多,特别是线,尖点等细节多的图像不宜采用中值滤波。
2.2.5图像锐化2.2.6图像归一化2.3本章小结
本章主要介绍了人脸图像常用预处理方法。在人脸图像常用预处理方法一节中主要介绍了常用的消除噪音的方法等,分别为灰度变化,二值化,直方图修正,图像滤波和图像锐化。
3主成分分析PCA算法3.1算法说明3.2算法实现步骤
3.4实验结果本实验采用的人脸库为orl。其中包括40个人的人脸图像,每人10张不同表情的图像。本次试验将40个人的图像库中抽取40张图像(没人一张)作为测试样本,剩余的360张人脸图像作为样本库。
本实验主要包括四.m个文件以及两个文件夹,其中Distance.m用来计算欧氏距离;PCA.m用来提取一张图像的前n维特征值,Quantization.m用来将矩阵向量化,show.m为主函数,包括界面等部分,orl为样本库,test为测试样本集。
实验结果如下:
打开一个测试样本,并检索出样本库中与该图像最相似的图像Fig1左上图为测试样本,左下图为平均脸,中间的图为检索出的结果所对应的降维后的图像,即PCA脸,右边图为样本库中最相似的图像,从上到下,从左到右依次排列
3.5本章小结在本章主要讲解PCA基本理论和PCA在人脸识别中应用。在第一节中主要讲解了PCA基础理论,使用PCA进行数据分析的优点和PCA方法在计算机视觉领域的应用。在第二节中主要讲解了如何进行基于PCA的人脸识别。
结论基于MATLAB数字图像处理与识别系统其实是一个范围很大的应用系统,关于“人脸识别”,在了解了人脸识别的各种方法后。选择了图像直方图差值比较进行了实现。该方法能较好地实现人脸的分类,但对人脸图像的要求较高,目前仅是采用Orl的标准人脸库中的图像来进行测试,因此能获得较高的识别率。而在现实生活中采集到的人脸图像则会受到很多因素的影响,识别率就未必能达到要求了。若要进一步提高识别率和适用范围,则还需要结合其它算法,如PCA、神经网络等。
本文研究的是基于PCA的人脸识别算法的实现。人脸特征提取算法为PCA算法,分类方法采用的是最小距离分类法。通过实验发现在无光照变换,正面姿态,少量遮挡情况下,基于PCA的人脸识别系统的识别率很高,而且反应很迅速。当然也存在着一些问题,例如本文对图像的光照变化,其他姿态没有进行考虑,但实际中这是无法忽略的问题,有可能会导致人脸识别识别率减小。
为了进一步提高基于PCA的人脸识别系统的性能和适应性,我们可以通过以下几个方面进行改进:
改进图像获取方法:我们可以通过使用人脸检测和跟踪算法,在图像获取的时候,动态跟踪和检测人脸,只采集最佳姿态下的人脸图像。这在一定程度可以解决姿态所引起的问题,但也同时对系统的检测和跟踪人脸的反应时间提出较严格的要求。如果反应时间较长,对于快速移动的人脸可能错过采集最佳姿态的图像,而导致系统无法识别人脸。
改进人脸识别特征提取算法:基于PCA的人脸识别虽考虑了人脸图像间的差异,但是不能区分这种差异是由光照,发型变更或背景导致,还是人脸的内在差异,因此特征脸的识别方法在理论上存在一定的缺陷。究其原因是人脸图像中所有像素都处于同等地位,在角度,光照,尺寸和表情变换可能会导致性能急剧恶化。采用同一个人的训练样本的平均来计算人脸图像类间散布矩阵可在一定程度上补偿这个缺点。同时也可以对输入的人脸图像做规范化处理,主要包括对人脸图像做均值方差归一化,人脸尺寸归一化。另外还可以在计算特征脸的同时利用K-L变换计算特征眼睛和特征嘴,然后将这些局部特征向量加权进行匹配,可能会得到更好的结果。我们也可以将人脸进行差异化分类,可分为脸间差异和脸内差异。脸内差异表示同一个人脸的各种可能变形。脸间差异表示不同人的本质差异。在实际中,人脸图像的差异为两者之和。若脸内差异大于脸间差异,则认为两个人脸图像属于一个人的可能性较大。
改进人脸识别的分类器:最近邻法分类器属于一种线性分类器。在实际中可以利用神经网络这类学习能力强的非线性分类器对高维人脸识别可能会取得更好的效果。
综合不同的人脸识别方法:在目前,仅仅单独采用一种现有的人脸识别方法一般都不会取得很好的识别效果。各种技术和方法都有自己不同的适应环境和各自的特点。如果我们想进一步提高人脸识别系统的识别率,可以考虑使用数据融合理论,将不同的方法综合起来,相互补充,来取得很好的人脸识别效果。这也是为人脸识别的研究趋势之一。