摘要:针对移动嵌入式应用,设计并实现了一种基于STM32的条状指纹实时采集与拼接系统。选用STM32F103RD作为主控器件,通过SPI接口以DMA方式获取AES1711传感器采集到的条状指纹,并采用快速算法拼接成完整的指纹图像。实验结果表明,本系统具有速度快、鲁棒性好、功耗低、性价比高的特点,可方便地应用在移动嵌入式设备中。
关键词:STM32;指纹采集;指纹拼接;指纹传感器
引言
指纹识别作为生物认证中可靠性较高、方便性较好、性价比较高的一种技术,已经得到了全面的应用。指纹采集是指纹识别的重要组成,其核心硬件就是指纹传感器。随着移动嵌入式设备自身体积越来越小,以及对成本和功耗的更高要求,指纹传感器也向着小型化方向发展。其中条状指纹传感器(也称为刮擦式传感器)具有体积小、价格低、无指纹残留等优点,在移动嵌入式领域得到越来越多的应用。条状指纹传感器是一种窄条形半导体传感器,无法一次性采集到完整的指纹图像,要求连续采集划过传感器表面的手指指纹,并对采集到的窄条状指纹图像序列进行拼接,从而形成完整的指纹图像。
本系统采用STM32F103RD处理器作为主控器件,采用AES1711条状指纹传感器作为采集设备,实现对指纹的实时采集和快速拼接,具有速度快、鲁棒性好、功耗低、性价比高的特点,可方便地应用在移动嵌入式系统中。此外,本系统兼顾考虑后续指纹识别的应用需求,无需增加硬件设备即可实现对采集到的指纹进行特征提取和识别。
1 系统硬件设计
1.1 条状传感器
AES1711是AuthenTec公司推出的第4代低成本、高性能条状指纹传感器,具有功耗低、鲁棒性高、耐用性好、体积小的特点,非常适合对体积要求较高的移动嵌入式应用。AuthenTec专有的TruePrint指纹成像技术可实现活体手指检测,同时可很好地适应干、湿指纹,最大支持50 cm/s的手指移动速率。传感器采用42脚BGA封装,具有大小为6.5 mm×0.41 mm、500 ppi解析度的128×8的像素阵列,传感器体积仅为12 mm×5.2 mm×1.76mm。AES1711在进行图像采集时功耗仅为23 mA,而在以250 ms进行指纹检测时的平均功耗更低至8μA。AES1711与主控数据通信可采用并行或SPI串行方式,方便灵活,可适应多种主控系统。
1.2 主控芯片
本系统采用ST公司STM32F103系列处理器作为主控芯片。STM32F103采用ARM 32位Cortex—M3内核,具有功耗低、体积小、性价比高的特点,最高工作频率为72 MHz,在存储器0等待周期访问时可达1.25 DMIPs/MHz。STM32F103具备12通道DMA控制器,可支持定时器、ADC、DAC、SDIO、I2S总线、SPI、I2C总线和UART的DMA操作。
考虑采用AES1711进行指纹采集得到的指纹图像为128×8像素阵列,限定拼接后的指纹高度最大为288像素,假设手指在采集过程中最大存在64像素的横向位移,则指纹图像缓存一共为288×(128+64)B=54 KB。采用SPI DMA模式进行数据传输时,需要开辟双缓存共128×8×2B=2 KB,因此系统缓存一共为56 KB。系统同时兼顾考虑后续指纹识别的需求,以500枚指纹容量作为设计目标,如模板文件为512 B,则需要250 KB的Flash ROM空间。综合考虑以上需求,选择STM32F103RD作为本系统的主控。STM32F103RD具有64 KB RAM和384 KB的Flash ROM空间,在满足本系统开销的同时,可满足小容量指纹识别系统的需求。系统工作在72 MHz,可满足实时采集和拼接的需求,同时也可满足后续指纹识别的需求。
1.3 系统连接
STM32F103RD和AES1711的连接如图1所示。STM32F103RD通过GPIO口实现对AES1711 的控制,AES1711采用SPI方式和STM32F103RD进行连接通信,使用两组SPI。其中一组为AES1711向STM32F103RD传送数据使用,该组SPI数据量较大,采用AES1711 Master方式,利用主控SPI2接口,用DMA方式进行。通过DMA方式,主控和AES1711之间最高可以实现12 Mbps的传输速率,在进行DMA数据传输时,STM32F103RD同时可进行如拼接等其他进程的处理,大幅度提高效率。另外一组SPI为STM32F103RD向AES1711传送指令使用,因为数据量较小,这里采用普通GPIO口进行模拟。
2 系统软件设计 2.1 软件总体设计
系统上电后,进行初始化,并进入低功耗等待阶段。在低功耗阶段,采用低速检测手指,即间隔一段较长时间发送一次手指检测指令,如果检测到有手指,则提高指纹采集的频率,进入指纹采集及拼接流程,否则继续等待一段时间后再次检测。软件总体流程如图2所示。
为提高指纹采集和拼接的效率,将指纹的帧采集和拼接作为两个线程进行并行处理。由于指纹的采集采用SPI的DMA方式进行,因此MCU可以以较少的时间来介入查询采集是否结束,大部分时间用在复杂度较高的拼接部分。指纹采集的第一帧因为还没有得到可以拼接的数据,而拼接的最后一帧不需要再进行指纹序列的采集,因此这两个部分的操作是相对独立的。而其他时刻,指纹的第N帧采集和第N-1帧的拼接是并行进行的。由于采用DMA方式进行数据传送,采集和拼接并行处理,需要两个指纹帧Buffer来存储采集到的指纹帧数据,其中一个供采集使用,另外一个供拼接使用,在进行完一次采集和拼接的并行操作后,对两个Buffer进行交换使用。
指纹采集的结束有两种条件,一种为手指离开传感器(即不再检测到指纹),另一种为达到设定的最大指纹有效高度(这里设为288像素,可包含较大指纹有效面积)。当达到上述条件的任何一个时,可判断指纹采集结束。指纹采集和拼接完成后,对拼接完成后的指纹图像进行有效性判断,如果为有效指纹图像,则进行输出,否则放弃并给出出错提醒。
2.2 指纹拼接
由于环境的差异,采集到的指纹序列可能引入一定的噪声。为了消除噪声带来的差异,需要对指纹序列进行2D高斯滤波,模板为:
滤波后的指纹序列,根据灰度纹理信息进行匹配搜索,由于采集环境的差异,需进行一定处理以适应灰度值差异。这里采用MAD准则对第N帧和第N-1帧进行匹配,具体如下:
式中H和W分别为灰度匹配区的像素高度和宽度,PN(i,j)为第N帧指纹在(i,j)处的灰度值,PN-1(i+u,j+v)为第N-1帧指纹经过(u,v)位移后在(i,j)处的灰度值,pmeanN和pmeanN-1为第N帧和第N-1帧的图像灰度平均值。为了节约存储空间,第N-1帧指纹序列从目标指纹图像缓存中提取。指纹拼接流程如图3所示。
实际使用中,手指在划过传感器时,大部分情况下滑动方向是单调一致的,且速度差异不大,因此指纹各帧之间的运动趋势具有很强的相关性。为提高指纹拼接的速度,可以采用运动估计来获取初始参考点的位置,从而达到提高搜索效率的目的。具体实施时,如第N-1帧搜索到最佳匹配位置后,将该位置相对原点的位移(Vx,Vy)记为运动矢量,作为第N帧的搜索起点。匹配搜索时,利用单调一致性,可以采用八邻域模板进行搜索,即搜索参考点的8个邻域,取MAD最小的点作为匹配点再次进行搜索。若本次搜索最佳匹配点为参考点,则搜索结束,若搜索范围超过8,则也认为搜索结束。八邻域搜索模板如图4所示。
2.3 指纹有效性和后处理
指纹采集和拼接结束后,需要对指纹图像进行有效性判断,AES1711采集到的指纹图像宽度较窄(128像素),如果指纹高度较小,则这枚采集到的指纹图像包含的特征信息量很少,后续的指纹特征提取和识别就不能很好地进行,因此当采集到的指纹高度小于一定值时,则认为指纹图像无效。这里定义指纹最小高度为192,即拼接后的指纹高度低于192像素,则视为无效图像进行丢弃处理。
目标指纹图像的后处理根据需要进行,如应用为指纹识别,因其自身带图像前处理,则采集和拼接过程中可不进行后处理,如应用为指纹采集,则可加入指纹后处理。后处理在完成整枚图像的采集和拼接后进行,主要包括去噪、规定化、均衡化处理等。
3 实验结果
在搭建好的硬件平台上进行实验,实验结果表明,本系统能完成实时采集和拼接,同时对干、湿指纹具有较好的适应性。STM32F103RD工作在72 MHz时,手指以45~50 cm/s的速率划过AES1711表面,系统能较好地完成拼接。其中两枚指纹经拼接结果如图5所示。
结语
由STM32F103RD和AES1711构成的指纹采集和拼接系统,具有体积小、速度快、鲁棒性好、功耗低、性价比高的特点,可以满足实时嵌入式系统的需求,特别是对成本和体积要求比较严格的移动嵌入式系统。 |