资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,一、序言:,随着,21,世纪的到来,电子设备变得越来越普遍,人身份的识别也变得越来越重要,比如说我们的银行卡和身份证都要经过电子设备才能被访问,而他们的密码普遍使用数字的形式,这存在着很大的隐患,因而人们一直努力创造一种独一无二的识别方式,比如说现在已有的人脸识别、指纹识别、虹膜识别、掌纹识别等,他们使用人体这些独一无二的特征来识别每个人的身份;就像我们学校对老师的考勤就是用的是指纹识别,门禁系统,它使用的是数字和字母识别。,二、指纹识别的发展:,指纹应用可以追溯到几千年以前,但指纹学成为一门学科,却只有百余年的历史。指纹应用可以分为三个时期。,第一时期:摸索时期;据考证,我国已经发现,6,千多年前的陶器上留下的指纹。中国是运用指纹最早的国家之一,古代军队就设有箕斗花名册。罪犯的供词也以捺印指纹为证。,第二时期:指纹科学化时期;这一时期是从,17,世纪,80,年代开始的。,1684,年,英国医学博士格留第一次对指纹做了分类。,第三时期:现代化、自动化时期;这一时期是从上世纪,60,年代开始的。随着现代科学技术的发展,指纹应用迅速地实现了现代化和自动化,例如,指纹的电子计算机应用,使储存、查对、鉴定开始走向自动化和半自动化的轨道。,三、几种生物特征身份认证技术的比较,鉴定方法,广泛性,独特性,持久性,采集性,性能,接受性,防伪性,人脸,高,低,中,高,低,高,低,指纹,中,高,高,中,高,中,高,掌形,中,中,中,高,中,中,中,掌纹,中,中,中,中,中,中,高,虹膜,高,高,高,中,高,低,高,视网膜,高,高,中,低,高,低,高,签名,低,低,低,高,低,高,低,语音,中,低,低,中,低,高,低,热成像,高,高,低,高,中,高,高,b),指纹识别的缺点,1,、某些人或某些群体的指纹指纹特征少,难成像;,2,、过去因为在犯罪记录中使用指纹,使得某些人害怕“将指纹记录在案”。,3,、实际上现在的指纹鉴别技术都可以不存储任何含有指纹图像的数据,而只是存储从指纹中得到的加密的指纹特征数据;,4,、每一次使用指纹时都会在指纹采集头上留下用户的指纹印痕,而这些指纹痕迹存在被用来复制指纹的可能性。,五、指纹识别系统原理,-,验证,图例,登记,验证,输入,出示指纹,计算特征值,保存,ID,与特征值,取出相应的指纹特征值,比较俩个指纹特征值,用户,ID,指纹库,1,指纹特征值,指纹特征值,比对,2,3,4,5,6,1,4,5,2,6,3,(,5,)实战演练,(,6,)实验,总结,(,3,)指纹,匹配,指纹识别流程:,(,4,)实验,操作及结果,(,2,)图像,预处理,(,1,)指纹,采集,(1),、指纹采集,灰度处理,灰度处理,灰度处理,(2),、图像预处理,图像预处理的任务是准确可靠地找到图像特征,以保证后续的指纹匹配或分类,并能对较模糊的指纹图像有较强的鲁棒性(,其是系统的健壮性,它是在异常和危险情况下系统生存的关键),。,图像预处理主要有五个步骤:,灰度图滤波去噪,二值化,二值图像去噪,指纹的细化,细化后的图像去噪,(a),灰度图滤波去噪:目的是,对输入的噪声较多的灰度图像进行滤波处理,去除图像中的叉连、断点及模糊不清的部分,得到一幅较清晰的灰度图像。,图,1,:方向图滤波去噪效果,(b),二值化:把灰度图像变成一幅二值指纹图像。,图,2,:二值化后的效果,(c),二值化图像去噪:由于灰度去噪的不完全性及二值化的指纹图像还需要进行一次去噪操作,得到清晰的二值指纹图像。,图,3,:二值化去噪后的效果,(d),细化:把清晰的二值指纹图像通过细化变为点线图,即指纹图中的脊线都以点线的方式表示。,图,4,:细化后的效果,(e),细化后的去噪:由于前面滤波去噪的不完全性及细化算法本身可能引入的噪音,因此,细化后的指纹图还需进行一次滤波操作,以得到一幅清晰的点线图。,图,5,:细化去噪后的效果,(3),、指纹匹配,目前流行的自动指纹识别系统大多采用基于细节点的表述方式,这种方法是模仿人工指纹匹配,在指纹图像上确定细节特征的位置,然后通过比较特征之间的相互关系来确定指纹是否匹配。,对于细化后的点线指纹图,主要有四种伪结构。,a),因为脊线断裂产生的错误端点;,b),因为脊线的错误连接产生了伪分歧点;,c),因为脊线的错误断开,产生了伪端点;,d),在对非平滑脊线进行细化后产生的短枝。,1,、提取细节特征,定义,:,(,a,)脊线间的平均距离为,;,(,b,)细节特征的方向:从端点出发,沿脊线跟踪,个像素,用一元线性回归,求出这些点的拟合直线,该直线的方向就是所求特征端点的方向。,(,c,)特征点的距离为,d,(欧式距离)。,(,d,)特征点的结构数为,N,。,用,3x3,的模板逐点对细化后的指纹图像的脊线进行检测,就可以初步选出所有的细节特征,记录下这些细节特征的类型和位置坐标,以便于下一步的剪枝处理。,如图所示,为基于细节点的细节特征提取示例图,2,、去除伪特征点,(,1,)消除图像的边缘效应;,(,2,)删除图像的模糊部分带来的伪特征点;,(,3,)删除因脊线断裂造成的伪特征点;,(,4,)删除短枝和桥形伪特征点。,(,a,)细节特征剪枝前(,b,)细节特征剪枝后,去除伪特征点前后比较,图为两幅图像匹配的示例,(,a,)和(,b,)为原始指纹图像,它们来自同一手指,(,c,)和(,d,)为细化匹配的指纹图像,。,(4),实验操作及结果,如右图直接进入,MATLAB,界面,运行主函数,点击,run,进入如右图菜单,根据菜单即可进行实验,其实验结果如右图,(,5,)实战演练,(6),实验总结及分析,a),实验证明,对于受到各种原因影响而得到的质量较差的指纹图像,通过本实验改进的,gabor,滤波器对其进行增强,可看到增强效果明显。,主要受到的影响因素有三个:,1,)压力度;,2,)用力方向;,3,)所用指纹提取原料的均匀度;,b),通过前面的实验可以看到,这套预处理算法对质量较差指纹图像的处理效果很好,而且处理速度快,具有很强的鲁棒性(其是系统的健壮性,它是在异常和危险情况下系统生存的关键)和实用性。配合去孔、细化、去短枝等算法,达到预处理的目的,为以后的特征提取、匹配等打下了坚实的基础。,c),尽管本实验的算法被证明是有效的,但还是有些不足之处,对于下一阶段的研究我们还需要做到以下几个方面:,(,1,)对于质量较差的指纹图像,如何有效可靠地提取细节特征,也就是寻找更好的图像预处理算法;,(,2,)基于点模式的细节匹配算法,应进一步减少其计算的复杂程度;,(,3,)找出一种更有效的指纹表述方式,适用于小面积指纹传感器所采集的图像。,分析:,根据所查资料可得:各种生物识别技术都具有其自身的特点和优势,而指纹识别技术只是生物识别技术的一种,自动指纹识别技术的一个发展方向是利用生物识别技术的特点将指纹和其他生物识别技术相结合,实现互补也就是多模生物识别技术。如把指纹识别技术和脸型结合,将脸型识别结果作为一种检索,从而实现辨识模式下的指纹识别,这样识别的速度将得到显著提高。随着科学技术的发展,未来我们的身份验证会变得更加具有唯一性、准确性、安全性。,基于,DSP,的自动指纹识别系统是基于图像处理、模式识别理论和,DSP,信号处理器的基础上设计的软硬件结合的系统,该系统是个对实时性要求较高的图像信号处理系统。,根据,DSP,系统的设计要求采用了基于,DSP,处理器的嵌入式统设计方法。系统整体架构如下图所示。,扩展:基于,DSP,的自动指纹识别系统,硬件分析图:,从图中可以看出,它由图像采集模块、图像处理模块、识别,DSP,模块、存储模块、电源管理模块和总线接口等组成。各部分相互协调工作来完成指纹图像的采集、存储、处理、控制和输出等功能,CPLD XC9572,DSP,TMS320VC,5410,电源管理模块,模式选择开关,SRAM,FLASH,指仪传感器,缓冲器,液晶显示模块和控制键盘,六、附录:,clear;,clc;,close all;,global immagine n_bands h_bands n_arcs h_radius h_lato n_sectors matrice num_disk,n_bands=4;,h_bands=20;,n_arcs=16;,h_radius=12;,h_lato=h_radius+(n_bands*h_bands*2)+16;,if mod(h_lato,2)=0,h_lato=h_lato-1;,end,n_sectors=n_bands*n_arcs;,matrice=zeros(h_lato);,for ii=1:(h_lato*h_lato),matrice(ii)=whichsector(ii);,end,num_disk=8;,%1-add database,%0-recognition,%ok=0;,chos=0;,possibility=7;,%,定义一个数组,sss,长度为,100,;,sss=cell(100,1);,messaggio=Insert the number of set:each set determins a class.This set should include a number of images for each person,with some variations in expression and in the lighting.;,while chos=possibility,chos=menu(,指纹识别系统,选择图片并加入数据库中,为指纹识别选择图片,信息,删除数据库,.,显示指纹图片,伽柏变换的图形,退出,);,%Calculate FingerCode and Add to Database,img=imrotate(img,180/(num_disk*2);,fingerprint=double(img);,BinarizedPrint,XofCenter,YofCenter=centralizing(fingerprint,0);,CroppedPrint=cropping(XofCenter,YofCenter,fingerprint);,NormalizedPrint,vector=sector_norm(CroppedPrint,0);,for(angle=0:1:num_disk-1),gabor=gabor2d_sub(angle,num_disk);,ComponentPrint=conv2fft(NormalizedPrint,gabor,same);,disk,vector=sector_norm(ComponentPrint,1);,finger_code2angle+1=vector(1:n_sectors);,end,%FingerCode added to database,%,手指编号增加到数据库,if(exist(fp_database.dat)=2)%exist,检查变量或函数是否被定义 返回,0,是没有定义 返回,1,是存在定义在,workspace,里面,load(fp_database.dat,-mat);,fp_number=fp_number+1;,datafp_number,1=finger_code1;,datafp_number,2=finger_code2;,save(fp_database.dat,data,fp_number,-append);,else,fp_number=1;,datafp_number,1=finger_code1;,datafp_number,2=finger_code2;,save(fp_database.dat,data,fp_number);,end,if(exist(www.dat)=2)%exist,检查变量或函数是否被定义 返回,0,是没有定义 返回,1,是存在定义在,workspace,里面,load(www.dat,-mat);,%,把,namefile,保存在,sss,数组里,fp_number,为它的行号,sssfp_number=namefile;,save(www.dat,sss,-append);,else,save(www.dat,sss);,end,message=strcat(FingerCode was succesfully added to database.Fingerprint no.,num2str(fp_number);,msgbox(message,FingerCode DataBase,help);,end,%,指纹识别,if chos=2,clc;,close all;,selezionato=0;,while selezionato=0,namefile,pathname=uigetfile(*.bmp;*.tif;*.tiff;*.jpg;*.jpeg;*.gif;*.png,IMAGE Files(*.bmp,*.tif,*.tiff,*.jpg,*.jpeg,*.gif,,*,.png),Chose GrayScale Image);,if namefile=0,img,map=imread(strcat(pathname,namefile);,selezionato=1;,else,disp(Select a grayscale image);,end,if(any(namefile=0)&(isgray(img),disp(Select a grayscale image);,selezionato=0;,end,end,%,计算手指的编码并加入到数据库,if chos=1,clc;,close all;,selezionato=0;,while selezionato=0,namefile,pathname=uigetfile(*.bmp;*.tif;*.tiff;*.jpg;*.jpeg;*.gif;*.png,IMAGE Files(*.bmp,*.tif,*.tiff,*.jpg,*.jpeg,*.gif;*.png),Chose GrayScale Image);,if namefile=0,img,map=imread(strcat(pathname,namefile);,selezionato=1;,else,disp(,请选择图片,);,end,if(any(namefile=0)&(isgray(img),disp(,请选择图片,);,selezionato=0;,end,end,%double,函数,-,将符号矩阵转化为浮点型数值,immagine=double(img);,if isa(img,uint8),graylevmax=28-1;,end,if isa(img,uint16),graylevmax=216-1;,end,if isa(img,uint32),graylevmax=232-1;,end,fingerprint=immagine;,N=h_lato;,待续,
展开阅读全文