摘 要: 随着指纹识别技术日渐成熟以及指纹采集设备价格大幅下降,使得普及指纹身份验证系统的时 机变得越来越成熟。作者在目前的指纹自动识别技术的基础上对指纹处理算法做出了较大的
改进, 使算法非常实用可靠。本文正是在此技术前提下介绍了用MCS-51和Motorola DSP56311 构建主从式指纹自动识别系统的技术要点。
关键词:指纹特征码,特征码匹配,MCS-51,Motorola DSP56311, HI08接口
引言
目前生物识别技术发展迅速,特别是被誉为三大生物识别技术之一的指纹识别技术越来越先进。将指纹自动识别技术应用到各种需要身份验证的系统或者嵌入到原有的大量安保系统,会大大提高系统的安全性。作者对目前的指纹自动识别算法做了大量的研究和改进工作,使得指纹识别的误识率和拒识率降到很低(大约0.005%),而匹配速度却较快,达到了实用化的程度。本文论述了使用Motorola
DSP56311和MCS-51设计主从式结构的嵌入式指纹自动识别系统的技术原理和要点。
基于动态全局特征的图元结构匹配算法
特征码提取算法有两种:全局特征点的提取算法和细节特征点提取算法。全局特征点是指指纹图象的奇异点,也即中心点和三角点;细节特征点提取算法为了减少计算量,仅仅提取脊线末梢(端点)与脊线分支点这两种关键点,通常在嵌入式应用场合利用这两种特征点可以很好的识别指纹。指纹特征码的匹配就是要计算这两种特征点的匹配程度。嵌入式指纹自动识别系统采用了一种基于动态全局特征的图元结构匹配算法。该特征码匹配算法则是在D.K.Isenor等人提出的一种用图匹配来对两幅指纹图像进行匹配的方法和Andrew
K.Hrechak等人用结构匹配来做指纹识别的算法基础上,提出了一种基于动态全局特征的结构匹配算法,该算法已经在Matlab中验证通过,匹配效果非常好。下面简要的说明该匹配算法的原理。
该匹配算法思想是综合利用全局特征点和细节特征点,利用某种准则,将指纹特征点分布图划分为互相独立的若干个三角形(图元)。每个三角顶点为端点或者分支点,分别求取端点处的切线方向(指纹线延伸方向)和分支点的三个分支方向,由这些方向相对值可以确定该图元的形状,再求取图元(三角形)中心相对于奇异点的距离和方向。利用这些数据构造匹配变量:
Vi={图元基本信息,图元位置信息}; i=0,1,2,3……
其中图元基本信息A={端点1类型,以端点1为顶点的夹角,端点2类型,以端点2为顶点的夹角,端点3类型,以端点3为顶点的夹角};
图元位置信息B={图元中心点到奇异的距离,图元中心点相对于奇异点的方向};
注意:图元基本信息中端点的先后次序与它们与中心点的远近相对应,即最近的端点放在最前面,最远的端点放在最后面。从匹配变量可以看出,图元基本信息只与图元本身形状有关,而与位置和图元大小无关;图元位置信息则与图元位置相关而与图元形状无关。这样做的理由是:在指纹图象面积有限的情况下,两个相似但不相同的图元(极端情况下形状完全相同,但大小不同),其相邻的图元形状形状将会有很大的差别,这样在其他的图元匹配时这个图元将会被剔除。
这种图元结构匹配算法至少可以在三个方面提高和改善匹配的效果:
首先,各特征点的匹配转化为图元的的匹配,也即是逐点的匹配转化为少数有限的几个图元的匹配,计算量将大大的缩减。
其次,能明显的降低指纹匹配的拒识率和误识率,一方面各图元的相互独立,局部的干扰不会扩散到相邻的图元,可以将因为伪特征点的掺入和真实特征点的丢失对匹配造成的影响降到最低限度;另一方面每一个特征点均存在于多个不同的图元中,在某个图元中匹配失败并不意味这该图元上的特征点立即失效,而是可以在其他图元中继续起作用的,这样就最大限度的使用了所有的特征点信息,从而间接的降低了拒决识别和错误识别的概率。
再次,由于这种匹配方法只利用了图元到奇异点的粗略距离,而对其绝对坐标位置和方向没有严格要求,只要奇异点(只与指纹特征有关)计算比较准确,则对指纹图象的畸变,平移和旋转仍然具有很好的鲁棒性。
嵌入式指纹自动识别系统的组成框图
嵌入式指纹自动识别系统设计的目标是既能够做独立模块使用,又能够做从控设备使用。故应该有两种运行模式:主控模式和从控模式。在主控模式下,系统独立运行,用户指纹识别算法采用1:N的匹配方式,用户指纹数据和操作记录数据都存放在FLASH中,MCS-51中实现了一个简单的嵌入式数据库管理系统,提供添加,删除,修改用户指纹,查询和导入导出操作记录以及清空数据库等操作;在从控模式下,该系统可作为其他系统的外设,系统不使用本地指纹库,指纹自动识别算法采用1:1的匹配方式,参考指纹数据来源于外部系统。基本的硬件组成框图如下图所示:
图1 指纹自动识别系统硬件组成框图(略)
从图中可以看出,系统设计的关键点除了指纹处理算法在DSP56311中的实现外,硬件设计部分要求MCS-51单片机和Motorola
DSP56311之间的接口设计应能够保证数据的可靠方便的传输。下面将分别讲述该系统在这两方面所采取的处理方法。
指纹识别处理的流程图以及各种算法选取
系统的工作模式不同,采取的指纹自动识别算法也有所不同。主控方式下,指纹库容量小,往往要求快速准确的匹配,算法的侧重点主要是计算指纹图象的细节特征点数据;而从控方式下,指纹库容量通常很大,这时用于指纹分类检索的全局特征数据的计算非常重要。两种工作模式下的指纹处理算法的流程基本相同,如下图示:
图2 指纹自动识别算法处理流程(略)
指纹图象增强算法利用Gabor滤波器具有最佳时域和频域连接分辨率的特点和其良好的带通性,能够处理质量很差的指纹图象,使系统的拒识率很低。二值化处理算法采用了基于方向图的动态阀值二值化算法,能够有效的减少伪特征点的产生和真实特征点的退化和丢失。指纹图象的细化算法则采用了经典的Hildtch图象细化算法,该算法满足收敛性、连接性、拓扑性、保持性、细化性、中轴性、快速性的等要求。全局特征点的计算方法采用了一种改进的利用Poincare
Index值求取算法,该算法具有较好的抗干扰性;细节点的计算采用了基于脊线跟踪的指纹图细节提取算法。指纹特征码匹配算法则采用了前述的基于动态全局特征的图元结构匹配算法。
Motorola DSP56311的HI08接口模块的配置
由于指纹自动识别算法计算量较大,从运算速度快,接口方便等要求考虑,系统中采用了Motorola公司的DSP56311实现指纹识别算法。DSP56311与MCS-51单片机通过DSP56311中的可编程的HI08接口控制模块来接口。
DSP56311数字信号处理器和HI08接口特点
Motorola DSP56311是DSP56300系列的一款24位可编程DSP,与其他DSP一样,也是每个时钟周期执行一条指令。当使用一个内部的150MHz时钟时,DSP的处理速度能够达到150MIPS。DSP56311片内集成了DSP56300内核,EFCOP(增强型的滤波协处理器)和丰富的外设接口。DSP56300内核包含一个24位的ALU(算术逻辑单元),两个24位的AGU(地址产生单元),一个24位的PCU(编程控制单元),一个32KB的程序存储器(P)和两个48KB的数据存储器(X和Y)。外设接口包括HI08接口,增强型同步串行口(ESSI)和异步串行口(SCI),可以与一片或者多片工业标准的编码器或者其他的DSP,微处理器和外设(常用的是A/D和D/A芯片)等接口。EFCOP则能够与内核处理器并行操作,使得DSP性能和执行效率大大的提高,如果在使用滤波应用的场合使用EFCOP,处理速度将达到255MIPS。显然,如此快的运算速度,加上片内有容量高达128K字的存储器,使它很适合高端多通道通信领域的应用,如无线通信信号处理,多路语音/数据/FAX处理和视频处理等。
HI08接口配置和数据传输过程
HI08(host interface)接口是一个字节宽度的全双工,双缓冲并行端口,它能够直接连接到主处理器的数据总线上。HI08接口控制模块是一个从设备,它与DSP内核和主处理器时钟异步运行。它实际上分为两个部分:与主处理器接口部分和与DSP接口部分,其中与DSP内核的接口部分的8个寄存器被直接映射到内部的X数据存储器中,可以使用软件查询,中断驱动或者内核DMA方式与DSP内核握手通信;与主处理器的接口的寄存器则被映射到外部的主机总线地址空间的8个连续位置上,充当主处理器的一个I/O映射外设。DSP56311既可以与Motorola
HC11,Hitachi H8,8051系列,Thomson P6 系列处理器直接进行无缝连接,也可以使用有很少接口逻辑与ISA总线的Motorola
68K系列,Intel X86系列处理器接口。这些处理器的接口总线类型可分为两种:一种是复用型总线(即地址与数据线复用),如8051系列处理器,另一种则是非复用型总线(地址总线与数据总线完全独立),如HC11系列处理器。这两种接口类型的运行模式配置和数据传输区别比较大,因此需要根据与DSP接口的处理器类型对HI08模块进行编程配置。
HI08接口模块的工作模式,端口属性,以及与DSP内核和MCS-51之间的数据传输方式等的配置信息是在引导程序中根据HPCR寄存器的各位的设置来实现的,HPCR定义如下:
高字节:
(略)
低字节:
(略)
其中高字节主要设置HI08接口信号的极性和外接总线的类型,低字节则主要设置与端口信号有关的使能标志。MCS-51数据线和地址线(P0端口)复用,地址锁存信号(ALE)高电平有效,读写选通信号(RD(P3.6脚)和WR(P3.7脚))独立,且为低电平有效,两个外部中断信号输入脚(P3.2(INT0信号)和P3.3(INT1信号))低电平有效【7】。故高字节应依次设置为:HMUX=1(地址和数据总线复用),HASP=0(地址锁存信号),HDDS=1(数据读写双向缓冲),HDSP=0(数据读写选通信号低电平有效),HRP=0(请求接收/发送数据的中断信号低电平有效),其他HAP,HCSP,HROD均可设置为0。低字节设置则为:HEN置1允许HI08端口外接主处理器(MCS-51),HREN置1将HI08接口的HREQ/HTRQ和HACK/HRRQ分别配置成HTRQ信号和HRRQ信号,由于MCS-51使用8位寻址,故HCSEN,HA9EN,HA8EN均置0,
HGEN=1允许HI08接口未使用的引脚可以做GPIO信号使用,在本系统中并不需要很多GPIO口,故HAEN在本系统中应设置为HGEN=0禁止此功能。
系统的数据传输采用中断方式, 故首先要分别将HI08与DSP内核和MCS-51两边的中断允许标志位HCR[HTIE],HCR[HRIE]和ICR[TREQ],ICR[RREQ]置1。本系统中MCS-51单片机需要向DSP56311发送各种命令或者指纹匹配所需要的特征模板数据;DSP56311则需要向MCS-51单片机返回各种命令的处理结果或者从采集的原始图象中提取的指纹特征码数据。
从MCS-51单片机向DSP56311发送数据的过程是:首先开中断,设置ICR[TREQ]=1,HCR[HRIE]=1;然后单片机将数据写入HI08接口的寄存器TXH:TXM:TXL中,写入数据的过程中自动将ISR[TXDE]清零;当HSR[HRDF]=0时,寄存器TXH:TXM:TXL中的数据将被传送到数据接收寄存器HRX中,并自动将ISR[TXDE]和HSR[HRDF]都置1;ISR[TXDE]和HSR[HRDF]都为1将会产生两个中断信号,一个是请求DSP内核接收数据的中断信号,内核将跳到该中断对应的中断处理例程中执行读取HRX中数据的操作,另一个是请求单片机继续传送数据的中断信号(对应HRRQ引脚信号)。同理,DSP56311向MCS-51单片机发送数据的过程是:内核首先中断,HCR[HTIE]=1,ICR[RREQ]=1;然后将数据写入HTX寄存器,并自动将HSR[HTDE]清零;当ISR[RXDF]=0时HRX中的数据将自动被写入RXH:RXM:RXL中,并自动将HSR[HTDE]和ISR[RXDF]都置1;HSR[HTDE]和ISR[RXDF]都为1将会产生两个中断信号,一个是请求内核传送数据的中断,内核将跳到该中断处理例程中执行其他的操作,另一个则是请求MCS-51单片机接收数据的中断信号(对应HTRQ引脚信号);单片机检测到该中断信号将会从HI08接口的寄存器RXH:RXM:RXL中读取数据,数据读出后将自动将ISR[RXDF]清零。由于DSP的工作频率(100MHz以上)比单片机的工作频率(1MHz)快得多,系统通过HI08接口的双缓冲中断通信过程还可以进一步做优化处理,即单片机不必在每次发送和接收数据时先去检测是否有中断信号来,而可以直接读写HI08接口寄存器的数据,这样做不仅不会降低系统数据传输的可靠性,而且还可以提高单片机和DSP之间的数据交换速度。
图3 MCS-51MotorolaDSP56311接口示意图(略)
DSP56311通过HI08接口与MCS-51的连线示意图:
小结与补充:
嵌入式指纹自动识别系统采用了目前较先进的指纹自动识别算法,并做了一些重大的改进,特别是使用基于图元匹配的思想,使指纹识别的拒识率和误识率很低,匹配速度非常快,特别适合大容量指纹库的应用。系统设计完成后经实际应用测试,指纹自动识别既快又准,完全可以实用。
|