摘要:文章介绍了以凌阳SPCE061A为核心的一种新型指纹识别系统,该系统结构简单,可靠性强,操作方便,可广泛应用于需要指纹识别的各种场合。详细介绍了系统的总体设计方案,以及指纹采样算法,最后介绍了软件设计方法及流程图。
1 引言
指纹是指手指末端正面皮肤上凸凹不平产生的纹路。尽管指纹只是人体皮肤的一小部分,但是,它蕴涵大量的信息。这些皮肤的纹路在图案、断点和交叉点上是各不相同的,在信息处理中将它们称作“特征”,依靠特征的唯一性,就可以把用户同他的指纹对应起来,通过比较输入的指纹特征和预先保存的合法指纹特征,就可以验证用户的真实身份。
以前的各种指纹识别系统属于光学识别系统,由于光不能穿透皮肤表层,所以只能够扫描手指皮肤的表面,或者扫描到死性皮肤层,但不能深入真皮层。在这种情况下,手指表面的干净程度,直接影响到识别的效果。如果,用户手指上粘了较多的灰尘,可能就会出现识别出错的情况。并且,如果人们按照手指,做一个指纹手模,也可能通过识别系统,对于用户而言,使用起来不是很安全和稳定。
本系统采用了凌阳SPCE061A单片机作为控制核心,SPCE061A不仅仅是具有单片机的控制功能,它还是一款运算能力很强的DSP芯片;对于指纹的采集,本系统采用了富士通公司的新型指纹传感器MBF300,这种电容传感器发出的电子信号可以穿过手指的表面和死性皮肤层,达到手指皮肤的真皮层,直接读取指纹图案,从而大大提高了该系统的安全性。
2 系统设计
SPCE061A的指纹识别系统总体设计方案如图1所示。
图1 指纹识别系统总体设计方案
本系统采用凌阳公司的SPCE061A单片机,它是将控制功能、数据处理功能以及数字信号处理(DSP)功能集于一身的一种新型单片机。它的CPU采用凌阳最新推出的16位微处理芯片,工作频率可达到40MHz。它的指令系统提供了16位乘法运算指令和内积运算指令,可以对指纹模板进行高速的DSP处理。它的内部采用总线结构,减少了各个功能部件之间的连线,提高了可靠性和抗干扰能力。它的结构采用模块化,易于系统的扩展。它的中断处理能力较强,适用于各种实时控制领域。它的地址线达到22根,可以扩展4M空间的程序和数据存储器,适合指纹识别系统对存储器容量较大的要求。它的低功耗和低电压工作模式也使它特别适合于电池供电的指纹识别系统。
MBF300是富士通开发出的一种微型指纹传感器,系统利用MBF300将采样指纹模板输入到单片机中进行比较分析。它是利用手指在传感器表面滑动进行指纹的采样,所以被称为扫描型传感器。
键盘和LCD都是I/O设备。键盘可以让用户修改信息和输入ID号,增强该系统的安全性;LCD采用CHIPS65545,用于显示界面信息,为防电磁干扰和信号衰减,LCD连接线必须作一些特殊处理。
3 MBF300传感器的基本原理及特点
电容式传感器可以将物体、图形、文字等具有二维的图象转换成电信号。MBF300属于电容式传感器。它由一个2维金属电极阵列构成。一端为固定极板,而人的手指皮肤则作为活动极板。当手指置于感应器上时,一个微细的信号从驱动环耦合到手指真皮表层上,并随着指纹的纹脊和纹谷的变化而变化。感应器侦测这种细微变化,对感应信号放大,经模数转换后,从而最终形成精确的指纹图象。
3.1 MBF300传感器的基本原理
MBF300电容式传感器的基本原理如图2所示。
图2 MBF300传感器的基本原理图
S是固定极板,H为活动极板,即用户的手指指纹。当活动极板因被测参数的改变而引起移动时,两极板间的距离d发生变化,从而改变了两极板之间的电容量。设两极板相互覆盖的有效面积为A(M2),两极板间的距离为d(M),板极间介质的介电常数为ε(F·m-1),在忽略板极边缘影响的条件下,其静态电容量C(F)为:
3.2
MBF300传感器的特点
MBF300表面保护膜异常坚硬,使得该传感器经久耐用。它的工作电压为2.8V~5V,所以可以利用电池进行供电。它具有256*32像素感应矩阵,使得指纹的特征采样数据更精确。它的总线接口分别支持USB1.1、增强型8位微处理器接口和SPI串行接口。SPCE061A利用
USB接口芯片PDIUSBD12和MBF300指纹传感器进行通信。
4软件设计
4.1指纹识别算法
人类的指纹由紧密相邻的凹凸纹路构成,根据公式3-2,通过对每个像素点上利用标准参考放电电流,便可检测到指纹的纹路状况,具体算法分为四部分。
4.1.1指纹识别预处理算法
指纹识别预处理的目的是使指纹图像更清晰,边缘更明显,以便提取指纹的特征点进行识别。本文采取极值滤波和改进的平滑滤波进行噪声消除,使图像不失真;采取拉普拉斯锐化对指纹进行纹线增强,突出边缘信息,为背景分离算法提供方便。
4.1.2背景分离
采用迭代阀值的方法对指纹图像进行阀值分割。在图像处理中,反复地用一种运算直至条件满足而得到输出图像的方法称为迭代。迭代阀值方法如下:
①设定初始灰度阈值T(如令T=127),指指纹图像的灰度值分为两组R1和R2。
②计算两组的平均灰度值u1和u2。
③重新设定新的灰度阈值T。新的T定义为:T=(u1+u2)/2。
④依据新的T对指纹图像进行阀值分割。
这种方法是以自适应的阀值对指纹图像进行二值化处理。实验结果表明,该方法比设定固定阀值进行处理更有普遍意义,且行之有效。
4.1.3 特征点提取
采用脊跟踪法,其基本思想是直接对图象进行脊线跟踪,在跟踪过程中检测和提取特征点。
4.1.4分类算法
指纹被分成5大类:拱类、做环类、右环类、尖拱类和旋涡类,预先使用全局特征排序,可以加速指纹的匹配服务。
4.2程序流程
当系统处于空闲状态时,SPCE061A利用P_SystemClock单元写入CPUCLK STOP控制字,使系统从运行状态转入睡眠状态,关闭系统时钟(PLL振荡器)。当用户有指纹或按键输入时, 系统接收到唤醒信号后接通PLL振荡器,同时CPU会响应唤醒事件的处理并进行初始化。利用IRQ3_KEY为触键唤醒源,利用FIQ为MBF300指纹传感器输入唤醒源。下面是程序流程图3和IRQ3_KEY唤醒程序的部分代码。
图3 程序流程图
R1=0x0000; //设置A口为带下拉电阻的输入口
[P_IOA_Attrib]=R1; //设置3个属性向量
[P_IOA_Dir]=R1;
[P_IOA_Data]=R1; //中断设置(允许IRQ3_KEY触键中断)
INT OFF; //关中断
R1=0x0080; //设置中断标置
[P_Int_Ctrl]=R1;
INT IRQ; //开中断
//读P_IOA_Latch单元,以锁存IOA[0~7]的数据,用于触键唤醒
R1=[P_IOA_Latch]; //锁存A口低8位的数据
//将P_SystemClock(写)7013H单元的第0~2位置为“111”,使系统进入睡眠状态,
R1=0x0007; //系统进入睡眠状态
[P_SystemClock]=R1;
//IRQ3子程序(端口A的触键唤醒源被触发后,调用IRQ3 中断服务子程序):
.TEXT
.PUBLIC _IRQ3
_IRQ3:
R1 = 0x0100; //比较是否为L_IRQ3_Ext1中断
TEST R1,[P_INT_Ctrl];
JNZ L_IRQ3_Ext1; //是,则进入;否,进行下面的判断
R1 = 0x0200;
TEST R1,[P_INT_Ctrl]; //是否为L_IRQ3_Ext2中断
JNZ L_IRQ3_Ext2; //是,进入该中断;否,执行下面的程序
L_IRQ3_KeyChange_WakeUp: //不是上面的两种中断则一定为键唤醒中断
R1 = 0x0080; //清除IRQ3触键中断请求
[P_INT_Clear]= R1;
:
(处理系统被唤醒后的任务)
:
RETI
L_IRQ3_Ext2:
[P_INT_Clear] = R1; //清除IRQ3_EXT2中断请求
RETI
L_IRQ3_Ext1:
[P_INT_Clear] = R1; //清除IRQ3_EXT1中断请求
RETI
相对于其它指纹识别系统控制核心大多数是DSP运算能力强,但控制能力差的缺点,本系统最大的创新点是控制核心采用了既具有单片机的控制功能,又具有强大的DSP运算能力于一体的16位SOC芯片SPCE061A,使本系统在进行简单的扩展后即可以在指纹锁、无钥汽车、PDA设备、大型门禁系统等各种需要指纹控制的领域进行广泛的应用。
参考文献
[1]罗亚非等,凌阳16位单片机应用基础[M].北京:北京航空航天大学出版社,2003
[2] 彭宣戈,一种嵌入式Internet接口系统[J].微计算机信息,2005,2 8-9
[3]孙传友,孙晓斌.测控系统原理与设计[M].北京:北京航空航天大学出版社,2002
[4] 杨西明,朱琪,单片机编程与应用[M].北京:机械工业出版社,2004