基于DSP的指纹识别系统设计Word格式文档下载.docx
《基于DSP的指纹识别系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于DSP的指纹识别系统设计Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
TMSC5402;
identificationalgorithm
0引言
随着计算机与信息技术的不断发展,生物识别技术的应用越来越加广泛。
在各种生物识别技术中,指纹识别是日前生物检测学中研究最深入、应用最广泛、发展最成熟的最有前景的一种识别技术,它通过分析指纹的局部特征,从中抽取详尽的特征点,从而可靠地确认个人身份。
指纹识别的优点是指纹作为人体独一无二的特征,它的复杂度可以提供用于鉴别的足够特性,具有极高的安全性、实用性、可行性,是一种比较理想的身份认证技术。
在实际应用中,采集到的输入指纹图像往往是一幅含有大量噪声的灰度图像。
由于采样环境的不同,各种影响都会导致采集的指纹质量下降。
目前针对每一步的算法研究都比较多,而根据实际的需要,很多算法事实上存在着一定的缺陷。
比如指纹图像分割的算法如何合理选取阈值以适应各类指纹图像还需研究;
再如细节特征点提取后,通常会产生大量伪特征点,如何有效的减少这些伪特征点一直是算法的焦点问题。
指纹识别系统有着广泛的应用背景,目前,在通用PC机上基于WINDOWS操作系统的指纹识别软件和通过USB接口与PC机相连的指纹采集器在技术上已经很成熟。
但是,基于嵌入式系统特别是DSP系统的指纹识别技术,无论是在硬件设计还是算法软件方面都才刚刚起步,而在PC机上性能优秀的算法并不一定能简单地移植到DSP系统。
因此,研究基于DSP平台的指纹识别系统,对于拓展DSP的应用领域,让指纹识别向脱机使用发展以及提高系统灵活性、实时性都具有重大的意义,具有良好的市场前景。
1指纹识别系统的工作原理
指纹识别技术使用取像设备读取指纹图像,通过识别软件提取指纹图像中的特征数据,然后根据匹配算法得到的结果鉴别指纹所有人身份。
指纹识别系统由离线和在线两个部分组成,主要涉及指纹图像采集、图像预处理、特征提取、特征匹配等过程。
在系统的离线部分,用指纹采集仪采集指纹,提取出特征点,然后将特征点保存到数据库中,形成指纹模板库。
在系统的在线部分,用指纹采集仪采集指纹,提取出特征点,然后将这些细节点与保存在数据库中的模板特征点进行匹配,判断输入特征点与模板特征点是否来自同一个手指的指纹。
自动指纹识别系统框图如图1所示。
图1指纹识别流程
2总体硬件设计
指纹系统总体设计方案如图2所示。
该系统是由指纹采集仪、CPLD、SDRAM和Flash等硬件组成。
RS232用于数据传输,PC机可以通过该接口得到指纹特征数据;
Flash存储指纹信息库、LCD用的字符和DSP程序;
CPLD在DSP的控制下从取指器中取出图放入SDRAM中。
指纹图像采集部分:
系统利用软件查询方式来判断是否进行指纹的采集,当进行指纹采集时,指纹传感芯片按照设定的参数采集指纹并将模拟图像转换成数字图像,然后在DSP的控制下将数据存储在外部数据空间中,等待进行下一步的处理。
指纹图像识别部分:
该部分以DSP和数据存储器为核心,对采集到的指纹图像进行相应的处理,并控制LCD来显示指纹识别的结果。
程序与数据存储部分:
此部分由Falsh、SDRAM、DSP片内存储器构成。
Flash中存放的是系统的应用程序和指纹模板,系统上电后通过运行“BootLoader”功能将程序加载到DSP片内以加快程序运行的速度,SDRAM用于存放指纹图像并提供程序运行时所需要的临时数据空间。
全局逻辑控制部分:
此部分由CLPD来完成,实现以下3方面的功能:
1、对DSP的数据空间进行分时寻址;
2、产生系统中各个芯片的片选信号;
3、产生系统中各个芯片的读写信号。
图2基于TMSC5402指纹识别系统硬件框图
2.1存储空间的软硬件设计
本系统要访问的存储器有三个:
DSP内部DARAM(16K字,用于存放常量和变量的数据空间)、SDRAM和Flash。
因为5402有20根地址线可以用来对程序空间寻址,所以有1M字节的寻址空间,利用高地址线A19来区分Flash和SDRAM。
其中SRAM是BootLoader后程序运行的空间,这样就把Flash放在高地址上去了。
5402的数据寻址空间仅为64K,所以要进行分页扩展。
为了避免和DARAM的访问冲突,不能使用64K一页。
因为64K中低地址的16K实际上不能访问,所以定为32K一页。
分配一个I/O地址,而后通过I/O地址的译码对74LS273进行使能控制,最后锁存I/O的数据作数据页。
当对数据空间进行访问时,应分为以下几步:
①解析该地址,进行分割。
前(低)15位为页内地址,后(高)6位为页地址。
②判断页地址是否为0。
如果为0,则说明访问DARAM,直接使用访问数据的指令;
需要的16位地址就是前15位的地址、高位补零,并结束。
③把页地址用PORTW命令送到寄存器(所分配的I/O空间地址)里,页地址也就在SDRAM的高地址线上了。
④再使用访问数据的指令,需要的16位地址就是前15位的地址、高位补零。
对存储器的管理,需要编写一定量的程序。
可以设置一个全局变量存储页地址。
由于扩展页仅为32K,大于32K的数组是开辟不出来的,所以使用链表。
需要注意的是释放空间时,把相邻的未使用的空间尽量连接成一大块,同时需要一个接一个地把用过的堆栈拷贝到堆空间的尾部,使自己空间聚合成一个大块。
图3、图4分别为外部程序扩展和数据空间扩展示意图。
图3外部程序扩展图
图4数据空间扩展图
2.2RS232通信接口软硬件设计
该系统使用MAX3232连接DSP与PC机,通过软件控制分频比可获得通用的300baud~230kbaud的波特率。
MAX3110E内部UART与RS232收发器能够独立工作。
McBSP的时钟停止模式可以兼容SPI主-从协议。
所谓McBSP的时钟停止模式是指其时钟会在每次数据传输结束时停止,并在下次数据传输开始时立即启动或延半个周期再启动。
其接收器和发送器是同步的,即CLKX和FSX分别与CLKR和FSR相连;
在传输过程中,CLKX和FSX又分别用做SPI的移位时钟SCK和从方使能SS,可以是输出(主方),也可以输入(从方)。
其McBSP初始化编程应遵守以下几个步骤:
①将SPCR中的XRST、RRST置为0,处于复位状态。
②McBSP保持复位的状态下,设置有关的寄存器为需要的值。
由于SPI协议要求McBSP在移位输出数据之前,FSX信号必须由DXR->
XSR产生FSX,所以XCR寄存器中XDATALY位必须设置为1。
③设置SPCR->
GRST为1,采样率发生器退出复位状态,开始工作。
④等待两个时钟周期,以确保McBSP在初始化过程中内部能够正确地同步。
而后,配置MAX3110E的波特率和发送波形,发送数据时根据MAX3110E的数据手册拼装成一个16位的字进行发送。
接收通过DSP的Int0中断进行处理。
图5RS232通信接口设计
2.3总线控制和驱动
本系统中总线有两种:
数据总线和地址总线。
数据总线进行数据交换,地址总线进行寻址。
因为DSP的数据总线是3.3V的高电平逻辑值,可能出现不能驱动外部5V的逻辑电平的情况;
而且连接在动能力不足。
因此,需要对总线,特别是数据总线进行加强驱动能力的设计。
其中数据总线使用SN74LVTH16245来进行驱动向驱动;
地址总线是单向的,没有方向的控制,也没有使能的控制,使用SN74LVTH16244单向驱动器就可以了。
对于数据总线的控制,按照所逻辑合理使用了DSP_MSTRB。
DSP_IOSTRB、R/W就可以完成了。
2.4指纹图像的获取
采用Altera公司的MaxplusII软件进行VHDL语言编程。
按照一定的时序,把指纹图像放大SDRAM的固定地址中,这一部分调试有些麻烦,可以放在最后做,而图像的获取可使用CCS2.0下的file->
data->
load把图像文件放入指定的内存区域。
此图像文件为CCS数据文件,可以编写一段C程序把BMP文件转换成CCS文件。
另一种比较方便的方法是用DSP编写一个小程序,使用fopen()、fread()等函数把图像读入内存,然后使用file->
save保存成CCS文件。
图6总线控制和驱动
3软件设计
本系统软件设计是基于DSP的集成开发环境CCS2.0下设计的,软件实现包括两大部分:
一是完成指纹数据采集系统的初始化,一是完成指纹识别程序。
系统初始化程序包括:
VC5402内部寄存器初始化程序、接口程序设计、判断是否进行指纹采集的程序。
我们将在下节重点讨论识别程序算法及实现。
调用TMS320C5402编辑器将系统初始化及指纹识别程序编译生成HEX文件后烧写到系统的FLASH中,以便保证系统上电后能够正常自动加载。
3.1识别算法的实现
指纹识别算法是指纹识别的核心技术,本系统的指纹识别算法流程图,如图8所示先经过图像分割、滤波增强(包括规格化、计算方向图和方向滤波)、二值化、细化等指纹图像预处理后,再进行特征提取和特征匹配,最后输出结果。
图像分割是将指纹图像的前景区域和背景区域分割开来。
前景区域包括了指纹图像的脊和谷,为提高特征点提取的可靠性,要进行图像分割,去除背景区域。
规格化即是把指纹图像的对比度和灰度都调整到一个固定的级别上,为后续处理提供统一的规格。
方向信息是指纹图像的重要信息。
本文采用基于邻域灰度统计特征法获取指纹的点方向图,进而设计出了系统的滤波器模板,使指纹在切向平滑、在法向锐化,以消除指纹的误断。
二值化是将灰度指纹图像根据所选阈值将像素点转换为Q1的二值图像,从而增强了脊、谷的对比度。
之后对纹路又进行细化,细化的目地是删除纹线的边缘像素,使之只有一个像素宽度。
细化以后的指纹图像中的每条纹线都变为单像素宽的“点线”再经去噪,就可以见到清晰的点线图,为以后的特征提取作好了准备。
指纹特征提取算法可以简单的分为直接从灰度指纹图像提取特征和从细化二值指纹图像提取特征,本系统采用了细化二值图像提取特征的方法,该方法在得到可靠的细化二值图像后,提取出特征点相应的坐标位置、种类、方向等有用的信息。
我们采用了较典型的方法(邻域判定法),该方法用一个3x3的模板便可将端点和分义点提取出来,对于细化后的二值图像,对每个点值计算其交叉数。
点R的交叉数C定义在一个3x3的模板上。
模板如图8所示。
图7指纹算法识别流程图
图8特征提取模板
R是待检验点,如果R是端点,则它的8领域满足
如果M点是分义点,则它的8领域点满足
这样就可以找到特征点,并记录他们的类型和位置,求出特征点后,再根据平均纹线距离等信息对所得特征点进行有效性检验,去除伪特征点,保留真特征点。
然后以特征点的坐标(特征点的方向d,结合其邻域情况(邻域内的特征点数、相对位置、脊线上特征点所处位置的纹曲率、特征点邻域内的脊线纹密度等等),可以构成该指纹细节特征点的特征向量。
将所有的特征向量进行筛选后留下50到80个特征向量,构成指纹特征模板。
特征匹配是细节特征的匹配,依靠指纹本身决定的可靠参考坐标系,可以提高指纹的匹配的效率。
指纹中心处具有较高的不可定向性程度,其附近的纹线方向多变。
利用方向图和不可定性图设计和实现了指纹自动定位的快速算法。
该算法能够确定指纹中心点的位置和方向,自动定位率在90%以上。
对于用活体指纹采集输入的指纹,自动定位率更高。
用同样的方法,我们还可以准确提取指纹的下、中心及左、右二角点等形态特征与辅助定位信息。
对点模式匹配算法很多,我们使用的算法是通过在一定范围搜索参数空间,计算其匹配支持数。
当匹配支持数最大时,也就得到了所需要的结果。
算法步骤:
(1)分别读取两个细节点集合;
(2)分别计算他们的细节节点的模值,细节节点的方向,细节节点的弧度值radian;
(3)依据rack的大小按升序排列两个细节点集合;
(4)根据r,e,radian的值计算两细节点集合的匹配支持参数值supportvalue{m}{n};
(5)循环比较、supportvalue{m}{n}与阈值T的大小(本程序T=10),大于T则匹配度参数加上;
(6)匹配度=匹配度参数乘100再除以细节点数,如果大于70则超过70%的细节点匹配,认为两细节点匹配。
4系统调试方法
首先应对电路板作细致常规检查,防止短路和断路情况发生。
加电后,检查晶体是否振荡,复位是否正确可靠,而后用示波器检查5402输出时钟CLKOUT是否按照指定时钟模式工作。
在作完这些检查后,就可以进入系统硬件调试阶段。
在硬件仿真时,首先要配置目标系统存储器映像,这是通过设置仿真器命令文件实现。
可以在仿真调试软件目录下改写emuinit.cmd,使之每次启动仿真器时自动加载,也可以在启动仿真器后手动加载命令文件以初始化目标存储器映像。
一般而言,仿真器存储器映像与连接器存储器映像应一致。
对SDRAM调试基本思想是,首先对SDRAM两具单元初始化为两个不同值,而后调试主程序不断交替这两个单元数值。
具体方法是从一个单元读出数据写入另一个单元,由累加器作为传递单元。
使用Debugger软件,查看相应SDRAM单元,若确实将照设定交替变化,则表明该部分没有问题。
5总结
本文针对TMS320C5402型DSP的快速、高效的特点,采取了DSP集成开发环境下CCS2.0对指纹图像进行处理。
在实际应用环境中对系统进行了测试。
实验结果显示,系统录入指纹误识率小于0.1%,拒识率小于2%,总体结果令人满意,在保证可靠性和可行性的前提下,可采用性能更好的DSP,相信指纹识别效果会更好。
参考文献
[1]康华光,陈大钦.电子技术基础—模拟部分(第五版)[M].北京:
高等教育出版社,2005.
[2]杨强,谭礼俊.生物识别技术对比浅析[J].人众科技,2007,6
(1):
50-51.
[3]勒中鑫.数字图像信息处理[M].北京:
国防工业出版社.2003.
[4]陈宏,田捷.检验配准模式的指纹匹配算法[J].软件学报,2009,16(6):
11-18.
[5]赵鹏匕.基于TMS32C5402DSP的指纹识别系统研究[C].山西:
中北大学,2006.
[6]周立功.PDIUSBD12USB固件编程与驱动开发.北京:
北京航空航天大学出版社,2003.
[7]王崇文,赵德绅,王延才.指纹取像与指纹识别[J].计算机工程与应用,2008,7
(2):
91-94.
[8]戴明桢,周建江.TMS320VC5X结构、原理及应用.北京:
北京航天航空大学出版社,2001