您的当前位置:首页正文

基于NiosⅡ的人脸识别系统设计

来源:帮我找美食网
啊髑擞穗 矿 i #o匹n i ring lp  ARTS& AP显 应P LlCATI ON用S W疆_● AP【本文献信息】孟南南,王正彦.基于Nios II的人脸识别系统设计[J].电视技术,2013,37(5) 基于Nios II的人脸识别系统设计 孟南南,王正彦 (青岛大学自动化工程学院,山东青岛266071) 【摘要】本设计实现了基于Nios II的人脸识别系统,利用Quartus II软件的SOPC Builder搭建了一个SOPC系统,基于Verilog 语言设计了硬件电路,基于C语言设计了应用程序,识别算法采用经典的主成分分析方法,测试结果显示该系统具有较高的识 别准确率,有利于人脸识别系统的大规模推广和应用。 【关键词】Nios II;人脸识别;SOPC;FPGA;主成分分析 【中图分类号】TN492 【文献标志码】A Design of Face Recognition System Based on Nios II MENG Nannan,WANG Zhengyan (College ofAutomation Engineering,Qingdao University,Shandong Qigdn ̄o 266071,China) 【Abstract】The face recognition system based on Nios II is designed in this paper.It uses SOPC Builder of Quartus II to establish a SOPC system. And the hardware circuit is designed by the Verilog HDL.C language is used to design the application program.The recognition algorithm is the clas— sical Principal Component Analysis.The test result shows that this system has higher identification accuracy,and makes for the large-scale spread and application. 【Key words】Nios II;face recognition;SOPC;FPGA;principal component analysis 人脸识别技术是目前比较热门的生物特征识别技术, 路搭建,最终在Nios II软核中应用主成分分析算法实现 是比较分析人脸视觉特征信息、进行身份鉴别的计算机技 了人脸识别。 术,此项技术多用于身份识别方面。不同个体之间存在较 大差异而对于同一个体其特征则比较稳定,这是能够进行 人脸识别的主要依据。人脸识别具有广泛的应用前景,在 1 系统硬件设计 本系统所使用的硬件设备是友晶公司的DE2—70开 发板、TRDB—LTM液晶显示屏和TRDB—D5M摄像头模 智能门禁、公共安全等领域都将发挥重要的作用…。 基于PC机的人脸识别系统成本较高,且占用大量的 块,开发板上集成了系统所需的SSRAM芯片和SDRAM 空间资源,本设计是基于Nios II的人脸识别系统,可将整 芯片,还有若干控制按键等,图1为本系统总体设计框图。 个系统合理的放置在一片FPGA芯片中,通过添加适当的 外围电路,就可以完全实现整个识别过程,因此选择芯片 FPGA !j6 :::::::::::::…NIOS llSSRAM控制器 …一一 程序 工 SSRA 和外围设备的最佳组合可使其成本大大降低,并能够充分 利用资源,同时系统可集中在一块电路板上,体积小,能够 节省大量空间资源。 PIo控制器 芯片 人脸识别主要包括基于统计特征的方法、基于相关 匹配的方法、基于神经网络的方法、基于几何特征的方法。 主成分分析(Principal Component Analysis,PCA)是一种掌 握事物主要特征的统计分析方法,它可以从多元事物中解 曝光设  :I 数据采集控制器l 笠撞毽 SDRAM CMoS 芯片 摄像头 模块 析出主要影响因素,揭示事物本质、简化复杂问题。主成 分分析方法可以有效地找出数据中“最主要”的元素和结 簇. 液U晶M屏 图1 系统总体框图 构,去除噪声和冗余,将原有的复杂数据降维,揭示隐藏在 复杂数据背后的简单结构。其优点是简单,而且无参数限 正交变换,被认为是最成功的鉴别分析方法之一_2 J。 I2 C配置器用来调整CMOS摄像头模块的参数,使之 来控制摄像头的图像摄取;格式转换模块用来将摄像头拍 制,可应用于各个场合。该算法是图像压缩中的一种最优 能够按照设定的分辨率和尺寸拍摄图片;数据采集模块用 本系统利用FPGA开发板实现了人脸识别的硬件电 摄到的RAW格式的图像数据转换为RGB格式,以便进 投稿网址h ̄p://www.VideoE.cnl《电视技术》第37卷第5期(总第406期) 71 PA &AP莲 一穗鞠擞黛 tde o吐n 4t nt ef| 步处理;SDRAM控制器用来控制SDRAM中数据的读 量。求出 A的特征值A 和正交归一化特征向量 ,根 写。SOPC模块设置有Nios II、SSRAM控制器、PIO控制 据特征值的贡献率选取前P个最大特征值及其对应的特 器、数据采集控制器 ],其中数据采集控制器是用户自 征向量。贡献率是指选取的特征值的和与所有特征值的 定义组件,用来控制数据采集模块,通过其发出start和 和之比,即 stop信号来控制图像数据的采集。SSRAM控制器用来控 制程序存储器SSRAM芯片中数据的读写。系统设置 SW9键控制图像数据的流向,当SW9键打到ON时,LTM .P .A = A ≥0 (5) 控制器发出的读数据信号送给RD1,图像数据会由 一SDRAM芯片输出,通过SDRAM控制器和LTM控制器在 LTM显示屏上显示出来,当SW9键打到OFF时,Nios II 般取o=99%,也就是使训练样本在前P个特征 向量集上的投影有99%的能量。 求出原协方差矩阵的特征向量 1 控制数据采集控制器发出读数据信号送给RD2,图像数据 就会由SDRAM芯片输出,通过SDRAM控制器传人SOPC H = √A l, ,i=1,2,…,P (6) 系统进行识别处理,另外每次拨动SW9键时,会产生复位 脉冲,使硬件电路部分复位,避免拍摄图像割裂,这样就可 以看到待识别的图像原貌 ]。 则“特征脸”空间为 w=( l,lf2,…,H ) (7) 第六步:将每一副人脸与平均脸的差值矢量投影到 “特征脸”空间,即 =W di,i:1,2,…,100 2.2识别阶段 (8) 2 系统软件设计 PCA算法在人脸识别系统中的应用原理主要包括训 练阶段和识别阶段[8 ]。 2.1训练阶段 第一步:将待识别的人脸图像J1与平均脸的差值投 影到特征脸空间,得到其特征向量表示 =W (F一 ) (9) 第一步:假设有100个训练样本,且全部为灰度图,每 个样本大小为M X N(M、N为行列数)。 写出训练样本矩阵 =第二步:采用欧氏距离来计算 与每个人脸的距离 =( l, 2,…, ) ,i=1,2,…,100 (1) ,lI 一 lI , =1,2,…,100 (10) 其中,向量 为第i个图像的每一列向量堆叠成的一个 M xN维列向量,也就是把矩阵向量化,如第i个图像矩 第三步:本设计中是通过比较欧氏距离得出最小的 而对应的 也就是样本库中的图像序号,即识别结果。 基于上述原理,本系统的软件设计流程图如图2所 示。由于硬件系统中SSRAM容量有限,无法在Nios II的 『1 2 3] 阵为ll 4 5 6 l,则 为[1 4 7 2 5 8 3 6 9]~。 7 8 9J 应用程序中进行大量样本处理过程,采用了如下处理方 法:用MATLAB编程实现基于PCA算法的样本图像训练 过程,并将提取到的特征数据输出到文本中,在Nios II应 第二步:计算平均脸。 志 1 1 00 d = 一 ,i=1,2,…,100 (2) 用程序中以头文件方式调用此数据。 凄人样本数据 NA'ILAB 生成样本数据矩阵 第三步:计算差值脸,计算每一张人脸与平均脸的差值。 (3) 、 读人待测人脸数据 识矧 数据类型转换 第四步:构建协方差矩阵。 1 100 1 计算平均脸和差值脸 ‘ l 计算差值脸 C 志 d7 其中:A=(d1,d ,…,d10o)。 征脸空间。 (4) 生成协方差矩阵 并求特征值和特征向量 训练得到特征脸空间 将样本投影得到参考矩阵 输出样本处理数据到文本 I l 差值脸对特征脸空间投影 计算与各样本投影的距离 判断最小距离 第五步:求协方差矩阵的特征值和特征向量,构造特 协方差矩阵的维数为(M XⅣ)X(M XN),其维数比 』 识别结果输出 较大,计算量很大,所以采用奇异值分解定理,通过求解 A A的特征值和特征向量来获得AA 的特征值和特征向 图2人脸识别系统流程图 72 《电视技术》第37卷第5期(总第4o6期)I投稿网址http://www.VideoE.ca 嘲稠魏嘲 tdt o nBi ||ri g ARTS&AP&AP霞 PLlCATlONS 耱● 实现训练功能的MATLAB主要语句为: imgmean=mean(imgdata,2);//计算平均脸 { sumtemp[i]+=(Object[j]一reference[j Mnum+i]) fori=1:4 {(0bject[j]一reference[j Mnum+i]); minus(:,i)=imgdata(:,i)一imgmean;//计算差值脸 } end sumtemp[i]=sqrt(sumtemp[i]); //求欧氏距离 COWX=minus minus; //计算协方差矩阵 if(sumtemp[i]<distnace) [v d]=eig(COVX); //求A A的特征值和特征向量 { dl=diag(d); which:i: dsort:flipud(d1); distance=sumtemp[i]; vs0r【=fliplr(v./4); } dsum=sum(dsort); } dsum—extract=0; if(which==O1 P=0; 一 (”与目标匹配的是:1号\n”); while(dsum_extract/dsum<0.99) else if(which==1、 P=P+1; //求P值 prinff(”与目标匹配的是:2号\n”); dsum extract=sum(dsoa(1:P)); else if(which==2) end prinff(”与目标匹配的是:3号\n”); base=minus vs0rt(:,1:p)¥diag(dsort(1:p). (一1/2)); else if(which==3) //求A A的特征向量 prinff(”与目标匹配的是:4号\n”); reference=base minus;//求样本库中每一副人脸图像与平均脸 printf(” ¥ { \n”); 的差值到特征脸空间的投影 return 0; ird=fopen( D:\text\sam411.doe , W ); } fprinff(fid, %f, ,imgmean ); //输出平均脸空间数据到 文本 3 系统测试及结果分析 sta=fclose(rid): 3.1硬件平台 ifdl=fopen( D:\text\base411.doc , W,); fprinff(fidl, %f, ,base ); //输出特征脸空间数据到文本 图3为本系统硬件平台,图中标明了所用到的3大 stal=fclose(fid1): 模块。 ird2=fopen( D:\text\ref411.doe , W ); fprinff(rid2, %f, ,reference ); //输出投影数据到文本 sta2=fclose(rid2); 实现识别功能的c程序主要语句: int calculate(alt_u8 Matirx) //人脸识别算法 const int Mnum=4,Nsize=19200; int i,j,P=3,which=99; double distance=60OOO,imgObject[Nsize],Object[3]; for(i=0;i<Nsize;i++) 图3硬件平台 { 3.2人脸识别测试 imgObject[i]=(double)Matirx[i]; 测试方法:上电后将硬件电路下载至FPGA中,LTM for(i=0;i<Nsize;i++) 显示器上出现摄像头拍摄到的图像,用SW9键来控制取 imgObject[i]一=meanVector[i]; 像。当取像时LTM显示器上不显示任何图像,同时取像 multiMatrix(imgObject,base,1,Nsize,P,Object); //求投影 数据与样本比较将结果输出到Nios II的显示窗口。在程 printf(” ); 序中需要设定一个距离阈值,当光照的强度不一样时这个 pfintf(”水牛术}}女 水牛 ¥}}\n”); 值是不一样的,且变化比较大。当实验条件(拍照时的光 ofr(i=O;i<Mnum;i++) 照和角度)与程序运行的参数比较接近的时候,图像的识 { double sumtemp[4]:{0.0,0.0,0.0,0.0}; 别准确率较高;反之浮动较大。 ofr(j=O;j<P;j++) 由于硬件资源有限,这里只加入了4副样本图片进行 系统测试,系统测试所用到的图像如图4所示,编号分别 投稿网址http://www.VideoE.cnI《电视技术》第37卷第5期(总第406期) 73 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top