1、基 于 STM32 的指纹识别系统设计与实现杨 磊,张文超,秦会斌(杭州电子科技大学 新型电子器件与应用研究所,浙江 杭州 310018)摘要:针对目前 “嵌入式指纹识别系统在性价比及指纹算法的效率和准确性上存在不足 ”的问题,介绍了一种基于 STM32 芯片及FPS200 指纹传感器实现嵌入式指纹识别系统的设计方法 。在算法方面,采用了求方向场信息以提高指纹 Gabor 滤波增强效果和图像识别准确性,使用了初匹配和全局匹配的方法以提高识别效率 。研究结果表明,该系统识别准确性高,识别效率较高,总体性能达到要求 。关键词:指纹识别; STM32;指纹传感器;识别算法中图分类号: TP273.5
2、; TP216 文献标志码: A 文章编号: 1001-4551( 2011) 12-1531-05Design and implementation of fingerprint verificationsystem based on STM32YANG Lei, ZHANG Wen-chao, QIN Hui-bin( Institute of Electron Device & Application, Hangzhou Dianzi University, Hangzhou 310018, China)Abstract: Aiming at the shortcomings of pr
3、ice, efficiency and accuracy of fingerprint algorithm in the embedded fingerprint identificationsystem at present, an embedded fingerprint recognition design method based on STM32 and FPS200 fingerprint sensor was introduced. Inthe algorithm, Gabor filter enhancement and image recognition accuracy w
4、ere improved by seeking the fingerprint orientation fieldinformation, and recognition efficiency was enhanced by initial match and global similarity method. The results indicate that the systemidentification has high accuracy, high efficiency, overall performance meet the requirements.Key words: fin
5、gerprint recognition; STM32; fingerprint sensor; recognition algorithm收稿日期: 2011- 06- 10作者简介:杨磊( 1986-),男,陕西渭南人,主要从事新型电子器件设计与应用方面的研究 . E- mail: 通信联系人:秦会斌,男,教授,博士生导师 . E- mail: 0 引 言指纹识别是根据每个人指纹的不变性和唯一性进行身份识别的一门技术 。随着社会的发展,嵌入式的指纹识别技术越来越受到市场的青睐,成为近年研发的重点,但目前的嵌入式指纹算法大多在实时性和准确度上还存在不足,需要进一步优化算法,以实现准确高效的指
6、纹识别 。本研究设计 、实现一种基于 STM32 芯片的指纹识别系统,通过指纹传感器采集指纹数据,指纹算法处理指纹数据实现指纹识别,同时结合 VC+平台建立人机交互界面对指纹图像数据显示 。该设计使用STM32 作为主控芯片,以提高系统的性价比,同时通过编程对比目前存在的大多数指纹算法,考虑嵌入式指纹识别系统对实时性和准确性的要求,对现有指纹图像的增强和匹配算法进行改进和优化,以提高指纹识别系统的性能 。1 系统硬件设计1.1 结构组成及特点本研究采用 ARM cortex-M3 内核的 32 位处理器STM32F-103ZET61作为主控制器,该芯片内部采用哈佛结构 、其中集成有 64 KB
7、 的 RAM 和 512 KB 的FLASH,运算速度快,并且具有体积小和低功耗的特第 28 卷第 12 期2011 年 12 月Vol. 28 No.12Dec. 2011机 电 工 程Journal of Mechanical & Electrical Engineering点 ,在嵌入式图像处理方面具有较高的应用前景 。指纹识别系统结构功能图如图 1 所示 。系统硬件主要包括:指纹采集模块 、SPI 接口模块 、指纹数据存储模块( SRAM) 、指纹程序存储模块( FLASH) 、UART 模块 、指纹图像算法处理模块 、处理结果显示模块等 。具体工作流程如下:系统通过 USB 供给 5
8、V 稳压电源,通过内部电路转换成 3.3 V 稳压电源,系统上电后,通过 STM32 给传感器的各个寄存器初始化,指纹传感器 FPS2002采集指纹图像,通过 SPI 接口和 STM32最小系统进行通信,将采集到的指纹数据发送到STM32,进而保存指纹图像到 SRAM,通过各种算法实现对指纹图像信号的预处理 、提取特征点和图像匹配,最后实现指纹识别功能 。另外 STM32 和主机之间通过异步串口通信把指纹图像数据传送到 PC 机,显示图像,由于一幅图像的数据量就是 76.8 KB,主控芯片内部 RAM 容量不能满足存储和处理图像数据的要求,所以本设计外扩 SRAM 来存储指纹数据 。系统设计的
9、程序放在 FLASH 中3,指纹特征数据模板也放在FLASH 中,以便在使用过程中删除和添加,并显示指纹识别结果,主控制器采用 JTAG 接口,通过 J-link 进行仿真调试,通过 IAR-for ARM 实现程序的设计 。1.2 指纹采集电路设计指纹图像的采集对系统实现其识别功能至关重要,一幅采集质量较好的指纹图像有利于后续对指纹图像的算法处理,减少算法的复杂程度,提高系统指纹识别的功能 。指纹传感器 FPS200 是 Veridicom 公司的一款新型指纹传感器,具有 500 dpi 的分辨率,片内集成 300256 的传感器阵列, 256 级的灰度图像和 8 位的像素数据,并且支持 M
10、CU、SPI 和 USB 3 种接口模式,这里采用比较简单的 SPI 接口模式,供给 3.3 V 稳压电源,系统指纹采集硬件电路如图 2 所示 。STM32 的 MODE1 接 VCC、MODE0 接 GND,使其工作在 SPI 模式且为主模式,指纹传感器 FPS200 工作在 SPI 从模式 。这样 STM32 通过 PB1215 管脚与FPS200 的 SPI 接口的 4 个管脚相连 。FPS200 根据STM32 由 SPI 接口发送过来的写寄存器的命令 、地址和指令数据执行相关操作,并将采集到的指纹数据经由该 SPI 接口传回 STM32 作进一步处理 。1.3 数据处理以及与上位机的
11、通信本研究接收到的指纹数据通过异步串口管脚PA9 和 PA10 与 3.3 V 转换芯片 MAX3232 相连外接串口线同 PC 机进行通信,接收和发送数据, STM32 作为下位机通过 SPI 接口方式采集指纹数据,并将数据保存在外扩的 SRAM 中,当采集完一幅指纹图像后,把该指纹数据发送给上位机, PC 机接收数据,并通过VC 编程把接收的指纹数据转换成 256 级灰度图像并显示和保存该指纹图像 。PC 机的 VC 通过串口发送命令给 STM32,主控芯片接收命令判断有效,开始采集指纹图像 。限于篇幅, STM32 最小系统的硬件部分在这里不做详述 。2 系统软件设计2.1 指纹采集程序
12、设计程序设计关键是编程实 现 SPI 通信模式 下STM32 和指纹传感器 FPS200 的通信操作,其采集程序流程图如图 3 所示 。图 1 系统硬件框图图 2 指纹采集系统原理图 图 3 指纹采集程序设计流程机 电 工 程 第 28 卷1532 FPS200 有 19 个寄存器,用来控制指纹数据采集过程中的状态和行为,这里介绍几个比较重要的寄存器的初始化:( 1)初始化 CTRLB,使能芯片的 ENABLE 位使其处于工作状态, XTALSE 位选择内部 12 M 晶振,同时使能指纹自动检测,通过判断 RDY 位的状态决定指纹图像数据的读取 。( 2)初 始 CTRLA, 这 里 可 以
13、选 择 GETROW、GETIMG 和 GETSUB 这 3 种存取模式的 1 种作为存取模式,本研究给 CTRLA 写入 0x02,即选择 GETIMG模式来获取整幅图像 。( 3)初始化 DTR、DCR 和 PGC,它们影响采集图片的质量, DTR 是放电时间寄存器,影响着图像背景亮暗程度; DCR 是电容放电寄存器,对图像的前景区和背景区的亮暗程度有一定影响; PGC 是可编程增益寄存器,对图片的前景和背景的影响较大 。经实验选择 DTR=0x38, DCR=0x01, PGC0x0C 时图像效果最佳 。2.2 指纹算法设计指纹识别算法是指纹识别过程中重要的部分,算法的好坏直接决定指纹识
14、别的精确性和可靠性 。该算法的 3 个重要部分是指纹图像预处理 、特征点提取和特征匹配 。指纹预处理又包括图像场的计算 、分割 、均衡化 、平滑 、增强 、二值化 、细化等部分 。本研究的指纹识别算法流程如图 4 所示,下面对算法各部分作简要介绍 。2.2.1 图像场的计算图像场计算包括图像的强度场 、梯度场 、方向场以及频率场计算 。首先本研究采用 Sobel 算子求指纹图像灰度函数4,再分别沿 x 和 y 方向偏导 Ax( x, y)和 Ay( x, y),计算该指纹图像的梯度场,因为梯度场可以较好地分割指纹图像 。Sobel 算子表示方式如下:x 方向为-1 0 1-2 0 2-1 01
15、; y 方向为1 0 10 0 2-1 -2 -1。其次,根据方向场计算公式5可得:Vx( x, y) =i+w2u=i-w2j+w2u=j-w22Ax( u, v) Ay( u, v) ( 1)Vy( x, y) =i+w2u=i-w2j+w2u=j-w2( A2x( u, v) -A2y( u, v) ( 2)则有方向场的大小就是:( x, y) =1/2tan-1(Vx( x, y)Vy( x, y) ( 3)2.2.2 指纹图像的分割图像分割的目的是将指纹前景区域和背景区域分割开来 。因前景区域和背景区域在灰度和梯度上存在差异,故均采用阈值分割方法处理 。分割阈值的确定:根据灰度直方图
16、分析可知,指纹图像前景和背景在灰度直方图中体现为两个峰值,故取前景和背景两峰值间峰谷处的谷值灰度作为分割阈值即可有效分割指纹图像 。梯度场计算的必要性:当前景和背景很难找到合适的灰度值作为分割阈值来对指纹图像进行有效分割处理时,可以根据梯度场的不同,指纹前景梯度场值较高(黑白相间),而背景梯度场值较低,通过对梯度场值的运算,找到合适的阈值,就能很容易地实现对指纹图像的分割 。2.2.3 指纹图像均衡化指纹图像均衡化的目的是使图像在各种灰度场强上均匀分布相等的点数,通过均衡化使得图像对比度得到增强 。指纹图像为 F( x, y),由均衡化离散的转换公式为:Fgrey( x, y) =FmaxA0
17、F( x, y)u=0Hu( x, y) ( 4)式中: Hu( x, y) 第 u 级灰度的像素个数, A0图像面积, Fmax图像的最大灰度值,即为 255。均衡化后,使得源指纹图像的灰度概率密度得到均匀的分布,扩展了像素点灰度的取值范围,增强了图像的对比度 。2.2.4 指纹图像的平滑指纹图像的平滑的目的是消除图像噪声点 。本研究通过指纹图像和模板算子的卷积实现指纹图像的平滑滤波 。卷积运算公式为:图 4 指纹识别算法流程第 12 期 杨 磊,等:基于 STM32 的指纹识别系统设计与实现 1533 H( x, y) =AF( x, y) =m-1i=0m-1j=0A( i, j) F(
18、 x-i+m-12, y-j+m-12)( 5)要平滑的指纹源图像 F( x, y)大小为 nn,模板A( i, j)大小为 mm,使得模板中心 A( m-1) /2,( m-1) /2与 F( x, y)对应 。指纹图像平滑算法相当于低通滤波,只是让指纹信号的低频部分通过,而阻止指纹信号的高频部分,实现滤去指纹图像中噪声的目的 。2.2.5 指纹图像增强指纹图像增强是指纹识别系统的重要组成部分,在通过算法使指纹不清晰的地方得到改善的同时尽量保留指纹原有的特征信息,确保后续图像处理的准确性和可靠性 。对于指纹图像的增强,本研究前面通过计算获得指纹的方向场和频率场信息,这里采用较成熟可靠的Gab
19、or 小波滤波器实现图像的智能增强,该小波工具一方面在指纹纹线上可以对在该位置方向场上的指纹纹线进行收敛增强,另一方面它也符合指纹纹线相间的特点,可以在该位置的频率场上对指纹纹线进行振荡增强,从而提高图像的增强效果,以便更有利地提取指纹特征点信息 。Gabor 滤波器公式如下:h( x, y, , f) =exp -12x122x+y122x cos( j2fx) ( 6)式中:xy =sin cos-cos sin xy2.2.6 指纹图像二值化指纹图像二值化是将连续灰度图像转化成只有两种颜色值的图像,让黑的纹线区域更黑,白的谷线区域更白 。即:使白色的图像区域的灰度值为 255,黑色的灰度
20、值为 0,成为黑白两色图像 。二值化公式为6:g( x, y) =255 Q( x, y) T0 Q( x, y) T( 7)由于前边本研究已经通过图像均衡化以及 Gabor函数对指纹进行了增强处理,图像的对比度比较明显,这里求得图像灰度的最大值 Qmax和最小值 Qmin,对两者求平均值 T=( Qmax+Qmin) /2 即可得阈值 T。二值化后要对图像进行必要的去噪,进一步提高图像的质量,以便后续图像细化的处理 。2.2.7 指纹图像的细化指纹图像的细化是为了减少要处理的信息量,把指纹的脊线部分对称减薄,使指纹纹线由原来的多个像素宽度变为单个像素的线形图 。本研究采用查表法对指纹进行细化
21、处理 。因指纹图像已进行二值化处理,其像素要么是 0,要么是255,故把指纹图像中某个目标点(要处理的黑色点)的 8 个邻域的所有要删除的所有可能情况排列后列入一张表中,再根据图像中某点的 8 个相邻的点的情况查表,如果满足表中的情况则删除该点,否则保留 。2.2.8 特征点提取特征点提取分两种情况,即:对端点和交叉点的提取;对指纹特征奇异点的提取 。本研究采用基于交叉数的特征性提取算法7(即通过扫描某点黑点,根据该点周围 8 点(顺时针相邻两点灰度的差值情况) 来判断该点是端点还是叉点,并记录该特征点的位置 、类型和方向信息 。指纹特征奇异点提取是利用 Poincare 公式:Poincar
22、e( i, j) =12Nk=0( k) ( 8)其中:( k)d, d 2+d, d-/2+d, 其他本研究先求得某点周围一圈的方向场差,对其求和,再根据其与 Poincare 索引值(中心点是 1/2,三角点是 -1/2)的比较判断该值是否为奇异点,如果是,则确定出奇异点的类型,并记录该奇异点特征要素 。2.2.9 特征点匹配本研究采用基于指纹特殊点的匹配方法,匹配过程中为减少拒判时间,把匹配分成 “初匹配 ”和 “全局匹配8”两个方面,在提高了指纹识别的效率的同时,也大大提高了识别成功率 。初匹配:首先要利用前面经过特征点提取得到的指纹图像上的所有端点和分叉点的属性参数(即点的位置 、类
23、型 、特征点方向),根据 “指纹相邻特征点之间的距离,以及穿过这两点之间的脊线的数目和相对角度的参数不会受到指纹图像发生旋转 、平移或者局部变形影响 ”的原理,通过求两个特征点间的脊线数目和方向差,再分析其内在的关系,从而建立局部的特征向量以进行指纹特征点的初次匹配 。同时在匹配的过程中标记最大且不为零的匹配分数 Score p q,再对所得匹配分数 Score 求和并经过进一步算法得到相对匹配分数 S,为了减少误判,本研究通过设置门限,对指纹的匹配情况进行初步判定 。全局匹配:对于没有得到判定的情况,通过全局匹配来进行进一步判定 。由于前文已经求取了指纹的奇异点,这里将提取的指纹 A 和指纹
24、 B 的奇异点(中心点或三角点)分别作为待判定和模板库指纹图像相应的极坐标的中心点,对待判定指纹 A 中的每个特征点求得其极坐标,再与模板库 B 中的当前指纹在该极机 电 工 程 第 28 卷1534 参 考文献( References): 1 ZHANG Jian-xin, ZHOU Zhi-yu, ZHANG Zhen. A BatchDyeing Machines Controller based on Embedded System C /International Conference on Artificial Intelligence andComputational Intel
25、ligence. Shanghai: Shanghai Universityof Electric Power, 2009: 429-432. 2 胡 明 . 染色机微机监控管理系统的研究与开发 J . 佛山科学技术学院学报, 2007, 25( 9): 13-16. 3 汪海燕,张建新 . 基于 ARM的溢流染色机控制系统研究 J . 丝绸, 2009( 12): 35-37. 4 MEEKS D. Two wires control SPI high-speed ADC J .EDN, 2005( 11): 82-84. 5 王 耿,王金明 . SPI 接口控制器设计与实现 J . 电子质
26、量, 2010( 1): 4-6. 6 丸山修孝 . 通信协议技术 M . 王 庆,译 . 北京:科学出版社, 2004. 7 杨 柳,岳 坤 . Qt Embedded 及嵌入式 Linux在智能监控系统控制中的应用 J . 计算机应用, 2010, 30( 6): 289-291. 8 杨卫东 . 高温高压染色机控制系统研究与开发 D . 南京:南京理工大学机械工程学院, 2006: 63-66. 9 BLANCHETTE J, SUMMERFIELD M. C+ GUI Pro-gramming with Qt4 M . 2nd ed. Beijing: Electronics In-d
27、ustry Press, 2008. 10 LI Cheng, WANG Peng, DING Tian-huai. RS-485 bus-based high-speed serial remote data transmissions J . Journal of Tsinghua University, 2009, 14( 5): 684-687.编辑:李 辉坐标位置的特征点进行比对,判断类型是否相同,对待判定和模板库的指纹的特征点均采用上述方法进行匹配,统计匹配成功的特征点个数 。因为两幅指纹图像不可能所有的特征点都匹配,本研究设定一个阈值,如果匹配的特征点数大于该阈值则认为这两幅指纹
28、图像匹配成功,否则匹配失败 。3 实验结果在调试好的样机上,实验结果如图 5 所示 。通过 VC 界面显示的匹配结果如图 6 所示 。4 结束语该设计实现了基于 STM32 的指纹识别系统,指纹采集方面,本研究通过主控制器和传感器的 SPI 通信采集指纹图像,串口发送数据给 PC 机, VC 界面显示指纹图像;算法方面,本研究通过提取方向场对指纹图像实现 Gabor 滤波增强,细化图像时采用查表法对图像进行细化处理,对细化结果去噪,为提取特征点提供了良好的指纹数据,提高了系统识别的准确性,并通过进一步改进匹配算法来提高识别效率,使该系统能准确 、高效地完成指纹识别,总体性能达到要求 。当然该系
29、统在识别的效率和准确性上还需要进一步改进,以提高系统的性能 。( a)采集图像 ( b)二值化图像 ( c)细化图像图 5 实验结果图 6 VC界面的图像匹配结果参考文献( References): 1 ST MICROELECTRONICS. STM32F 103xE Data Sheet M .ST MICROELECTRONICS, 2010 2 VERDICOM. FPS200 Data Sheet V2.1 MCD . VERDI-COM, 2010 3 胡小虹,李见为,刘元兵 . 基于 DSP 的指纹识别模块设计与实现 J . 重庆大学学报, 2004, 27( 9): 26-28
30、. 4 李 昊,傅 曦 . 精通 Visual C+ 指纹模式识别系统算法及实现 M . 北京:人民邮电出版社, 2008. 5 夏振华,石 玉,于盛林 . 基于 Gabor 滤波器的指纹图像增强 J . 工程图学学报, 2006, 27( 5): 80-85. 6 胡先东,杨根生 . 基于 ARM+S3C2410 的指纹识别系统设计实现 J . 电脑开发与应用, 2009, 22( 10): 55-58. 7 李景萃,王 晶 . 基于指纹传感器 FPS200 的自动指纹识别系统 C / 过程控制科学技术与应用论文集 . 北京:出版者不详, 2008: 434-438. 8 陈 征,孙丽华 . 基于 WinCE 下的嵌入式指纹识别系统研究与设计 J . 微计算机信息, 2009, 25( 6): 29-30.编辑:李 辉(上接第 1487 页)第 12 期 杨 磊,等:基于 STM32 的指纹识别系统设计与实现 1535