基于FPGA的指纹识别系统设计第一章绪论1.1设计背景生物识别技术是利用人的胜物特征进行身份认证的技术,人的指纹就是生物特征之一。此外,生物特征还包括虹膜、视网膜、声音和脸部热谱图等。指纹识别是生物识别技术中最为成熟的,其唯一性、稳定性,一直都被视为身份鉴别的可靠手段之一。由于最早的指纹识别技术仅仅依靠人工对比,工作效率低下、比对正确率低、对比对人员的要求高,从而使得指纹识别技术无法得到广泛应用。但随着计算机的出现及其运算速度的迅速提高,使指纹对比鉴定的应用发生了革命性的变化。使用计算机管理指纹数据库,极大提高了指纹对比的速度,同时由于计算机比对算法的不断改进提高,使指纹比对误识率已降到了10-6以下,不仅可以满足刑侦方面的需要,而且迅速进入了更多的应用领域。随着光学技术和光学仪器加工工艺的进步,各种采集指纹图案进行身份认证的系统和设备中需要配备的高清晰、无畸变光学采集仪也达到了很高水平,确保可以生成高质量的指纹图像。计算机运算速度的提高和计算机小型化的进展,使采用微机甚至单片机也可以进行指纹对比运算成为可能。现代电子集成制造技术使得我们可以生产出相当小的指纹图像读取设备和指纹识别模块。其成本下降得也很快,大大加快了指纹识别技术的推广速度。同时人们对消费类产品的要求越来越趋向于小型化,并且对可携带设备的安全性要求也与日俱增。传统的PC、MCU、或者DSP的处理平台移动性比较差,体积比较大,无法满足人们日益增长的需求。所以,设计一套体积比较小、速度更快的嵌入式指纹识别系统是非常有意义的。而本设计正是为了这一目的,选用具有高集成度、低功耗、短开发周期的FPGA来完成此项设计,以实现系统的ASIC为研究背景,具有很强的现实意义和广阔的市场空间。本系统采用xilinx公司Spartan3E系列FPGA作为核心控制器件,这款器件采用90ns的先进工艺,最大容量50万门,可支持32位的RISC处理器,具有128Mbit并行Flash,足以满足设计的要求。该项目利用嵌入式软核实现系统的管理,利用硬件实现识别算法,保证了系统功能的完整性与识别的正确性。而识别算法我们采用美国FBI推荐的特征点匹配算法来实现指纹的识别,更保证了系统的实现。1.2课题目标和研究内容1.2.1课题目标:以FPGA作为核心控制器件,实现指纹图像的采集、存储、处理和比对等,完成对指纹图像的有效识别。1.2.2研究内容:本系统采用xilinx公司Spartan3E系列FPGA作为核心控制芯片,通过富士通公司的MBF200指纹传感器实现对指纹图象的采集,利用SPI接口传输到FPGA进行数据的存储,利用内嵌的MicroBlaze处理器对指纹图象进行灰度滤波、二值化、二值去噪、细化等预处理,得到清晰的指纹图象,再从清晰的指纹图象中提取指纹特征点并存入指纹数据库作为建档模版。指纹比对时,采用同样的方法,得到比对模版,然后将比对模版与建档模版利用指纹识别算法进行比对,得出比对结果。该项目利用嵌入式软核实现系统的管理,利用硬件实现识别算法,保证了系统功能的完整性与识别的正确性。该识别系统可用于门禁、考勤、证件管理等很多方面,具有很广泛的应用前景。1.3研究意义生物识别技术越来越多地被应用于身份验证领域。指纹因其惟一性、终生不变性和较低的识别成本而成为目前使用最广泛的生物识别技术,在罪犯识别、社会保险、电子商务、信息安全等领域得到广泛的应用。便携式的指纹识别技术对我们的生活也具有深远的意义。例如,今后警察可在一个犯罪高发区截住一名嫌疑人,要求其提供指纹而不是身份证或汽车驾照。此人则将其右手的第一、二或第三个手指置于一个与无线PDA相连的传感器上,可以迅速将嫌疑人与以前的犯罪记录进行对比确认。这种识别技术对于被盗的手机用户也有好处。手机开机时要求用户通过一个快速的认证过程,用户将其手指划过传感器,如果通过认证则授权使用手机的各项功能。如果不是授权用户,手机便继续保持锁住。如果连续几次认证无法通过,则手机会删除存储器中的关键信息然后关机。在语音邮件的应用中,当拨出一个语音邮件号码后,用户只需将手指划过传感器便可令系统识别。有了指纹识别后,便无需使用邮箱密码或个人识别号码。在今后的汽车应用中,用户可输入家庭成员指纹样本,经鉴权才能驾驶。注册过程十分简单:每个授权驾驶的成员将其手指置于传感器上,并将汽车的各种参数按个人爱好进行设置,然后将这些设置存入车载的电脑存储器中。当驾驶者进入汽车时,他/她将手指置于传感器上,启动识别过程。不到一秒钟,电脑将检测到的指纹模板与存储的模板进行比较,并建立一个与驾驶者相符的相关设置。指纹模板和匹配软件保存在汽车内的一个嵌入式模块中。当指纹匹配成功时,汽车便按已编程设定的内部参数来控制后视镜、汽车座椅、无线基站以及车内空气环境。此外,还可控制驾驶速度,如果驾驶者仅为十来岁的孩子,则将速度限制在每小时55公里。这些功能的实现具有非常多的用处。可见,指纹识别技术的应用可以使我们的生活更加方便快捷,更加安全。同时本项目重点研究基于FPGA的指纹识别系统,利用FPGA高集成度化,低功耗,短开发周期等优点,实现系统的ASIC,具有更加深远的意义和广阔的市场商机。第二章系统总体设计2.1硬件框图及各模块介绍:系统采用xilinx公司Spartan-3E系列FPGA作为核心的控制和运算芯片,数据采集模块由富士通公司的MBF200电容式指纹传感器来完成,MBF200指纹传感器可以完成指纹图像的采集并用其自带的A/D转换器将指纹图像转换成数字信号,利用SPI接口传送至FPGA进行存储。由FPGA处理采集来的数据,由于FPGA内部存储空间太小,无法存储一张完整的指纹图像,所以将指纹数据暂时存储在SDRAM中。当处理图像数据时,FPGA通过读取SDRAM的指纹数据,并在其逻辑单元中进行滤波、灰度归一化、二值化、细化和特征值提取等操作,从而获得重要的指纹图像信息。系统操作时首先利用键盘选择指纹存储模式,将获得的指纹图像信息存储到FLASH中作为指纹数据库,然后切换到指纹识别模式,再利用上述方法获得指纹图像信息。通过FPGA调用指纹数据库中的数据,寻找与之匹配的指纹信息,最后将比对结果在LCD中显示。本系统还可利用RS232与计算机进行通讯,可以方便扩展,使得系统可以应用到更多的领域。系统框图如下图1。MBF200FLASHSDRAMKEYBORDFPGALCDRS232图1系统框图2.2项目关键技术及创新性:2.2.1传感器的选择目前,市面上存在很多种类的指纹传感器,应用最广泛的有光学、电容、电磁波、压力、微电机和热学指纹传感器。而本系统采用美国富士通公司的MBF200电容指纹采集传感器来实现对指纹图像的采集,该款指纹传感器采用标准的CMOS技术,含有8位A/D转换器,工作在3.3V~5V的宽电压范围,能自动检测是否有指纹到达传感器,并实现在线采集,它的最大优点是在保证指纹图像高分辨率(500dpi)的同时大大减少了传感器的尺寸。利用此传感器可以完全满足系统的设计任务。2.2.2指纹图像的预处理图像预处理的主要步骤包括:灰度值归一化、图像分割、滤波、图像增强、二值化、细化等。预处理的目的是改善输入指纹图像的质量,以提高特征提取的准确性。原始指纹图像一般存在噪声污染、脊线断裂或脊线模糊等问题,需要进行图像增强(使用滤波技术)以改善质量。由于指纹特征仅包含在脊线的形状结构中,所以,通过归一化、二值化和细化把深浅不一、宽度不同的脊线变成灰度相同、单像素宽的细脊线,以便于特征提取。(1)图像归一化归一化处理是对原始指纹灰度图像上每一象素点的一种操作,人为改变它的灰度值,消除指纹录入传感器表面的残留噪音以及手指按压力差异对指纹图像的影响,把图像分为ww的子块,对于每一子块求其灰度均值Mi和方差Vi。子块灰度均值和方差的计算按如下公式:111(,)wwxyMiIxyww(1)2111[(,)]wwxyViIxyMiww(2)其中I(x,y)为子块中象素(x,y)的灰度值,子块归一化的目的是调整均值和方差到一个期望的范围,如果用G(i,j)表示(x,y)点的归一化后的值,那么第I个子块归一化后灰度值为:200200((,)),(ij(,)((,))ijVarIijMiIMMViGijVarIijMiMMVi若,);,若I(,);(3)如果:200((,))VarIijMiMMVi,则把灰度值为200((,))VarIijMiMVi全部归0作为背景处理,这样可以有效地去除传感器表面残留纹印引入的噪声。其中0M,0Var均为期望的均值和方差,M为实验后得到的门槛值,(,)IijMi为像素点的灰度幅度,经比率调制后,加到期望的均值上。使得原来方差大的点归一化后幅度更大,反之相反;而灰度值大或者小于均值的点,归一化后继续大或小于期望均值,而且归一化为点操作,不会改变指纹的纹理结构。(2)图像分割在采集到指纹图像后,首先要进行指纹图像分割,即把图像分割为指纹区与非指纹区,目的是割除白背景区和背景区,保留前景区,尽可能保留模糊区中能恢复的部分,以便后续处理能够集中于有效区域,这不仅能提高特征提取的精确度,还能大大减少指纹预处理的时间。目前常用的指纹图像分割的一般方法是:一种是基于图像灰度特性的灰度均值分割,这种分割容易把有效部分割除掉,而把用力重的模糊不清的区域保留;另一种是基于灰度方差的阈值分割,这种单一分割方法不适合低对比度的图像;第三种是基于指纹纹理的方向性,利用方向图对指纹图像进行分割。这种方法的分割效果依赖于所求点方向图及块方向图的可靠性,对图像灰度的对比度的高低并不敏感。但是对于指纹不连续、单一灰度等难以正确估计的区域及中心、三角附近,方向变化剧烈的区域,方向图分割则难以取得令人满意的效果。我们将指纹图像分为前景区、背景区、模糊区和白背景区,其中白背景区是指指纹图像中不含指纹纹线的边界区域,这类区域也是应该包括在割除的区域,所以为了能正确划分这4类区域,更准确地割去白背景区和背景区,并保留前景区和模糊区中可恢复的区域,把整个分割过程分为3级,分割的基本单元为88大小不相交叠的块。第一级分割为白背景区分割,第二级分割为模糊区分割,第三级分割为背景区分割,白背景区灰度均值很低,而且由于没有纹线峰和谷的变化,方差也很小,因此白背景区的判断采用:(1)块灰度均值:151500(8,8)88ijIimjnmean(2)块灰度方差1515200((8,8))var88ijIimjnmeaniance第一级分割的判决为:当mean小于预定义的阈值T1且variance也小于预定义的阈值T2即同时满足上述两个条件时,该块为白背景块,删除掉。第二级分割的判决区域为1级分割后保留下来的非白背景区域,其目的是找出模糊区,其判决方法为:设定特征量:1212,ttcontrastZcontrastmeannn其中1n:表示块中灰度值大于或等于块灰度均值的点数;2n:表示块中灰度小于块灰度均值的点数;1t:块中灰度值大于或等于块灰度均值的所有点灰度之和;2t:块中灰度值小于块灰度均值的所有点灰度值之和。当Z小于预定义的阈值T3时说明该块为墨迹很浓,峰和谷被墨迹粘连混淆的区域应去除。第三级分割设定特征量1varmeancontrastiance,当对比度contrast1的值小于预定义的阈值T时,将其设定为背景区域;否则,作为前景区域,保留其灰度值,以作后续处理。(3)指纹图像二值化二值化,就是把灰度图像转变为黑白相间的二值图像,通过设定一个全局阈值对增强后的指纹图像转变为用0、1两种灰度表示,0代表脊线,为黑象素,作为前景。1代表谷线,作为白象素。处理方式如下:1;(,)(,)0;(,)fijTfijfijT脊线谷线由于采集到的指纹图像不同区域深浅不一,如对整幅图像使用同一阈值进行二值分割,会造成大量有用信息的丢失。这里我们使用自适应局部阈值二值化的思想,既将图像分割成多个小块,