论文部分内容阅读
随着社会的发展,人们对生活的安全性要求逐渐提高,其中具有身份安全认证功能的指纹识别技术在人们的关注和需求下,得到了长足的发展,出现了各种不同的指纹识别系统,然而大多数指纹识别系统是基于PC机的,在可移动性和便捷性的要求上还存在很多不足,目前基于嵌入式的指纹识别渐渐成为人们研究的方向,并且取得了一些成果,但这些系统在实时性、功耗以及性价比上还存在很多不足,需要进一步的研究和改进,以期提高系统的应用前景。本文对目前指纹识别系统研究的现状和发展的状况做了简要分析,结合自身对嵌入式系统和指纹算法的研究,提出了一种基于STM32的指纹识别系统设计方案,并对该方案进行了实施。根据系统实用性的要求,对指纹采集和指纹处理算法进行了改进,最终实现了嵌入式指纹识别系统。主要包括硬件和软件两个方面,具体如下:硬件方面:1.系统采用MBF200指纹传感器采集指纹,ARM cortex-M3内核的STM32F-103ZET6作为主控制器,通过SPI接口实现主控制器与传感器的通信采集指纹图像,并保存数据在内存空间,主控制器与上位机通过异步串口通信将指纹数据发送至PC机显示指纹图像。2.由于指纹识别算法需要处理的数据量较大,系统采集一幅完整指纹图像需要大约76.8KB的空间,而STM32主控制器的内部RAM只有64KB,系统通过扩展外部SRAM补其不足,在SRAM中保存指纹采集和算法处理的中间数据,程序和指纹算法提取的特征点存放在芯片内部的FLASH当中。3.系统采用USB供电,通过内部电路转换为系统提供3.3V的稳压电源,采用JTAG接口进行仿真调试程序,使用LCD1602液晶显示指纹识别结果。软件方面:1.指纹采集实现:根据对MBF200指纹传感器资料中SPI通信时序的研究和分析,通过软件编程,实现SPI通信,使用读和写命令,对传感器的不同控制寄存器进行读和写操作,采集到指纹图像。2.指纹算法改进:通过对指纹现有算法的研究,在VC++上对已有的算法进行编程实现,并对已有指纹处理算法进行改进。在指纹的增强算法上,采用基于方向场信息的图像增强,提高了图像的质量;在指纹二值化算法上,采用图像分块的方式,通过求阈值实现基于分块的二值化;在匹配的算法上,提出了“初匹配”和“全局匹配”的方式,提高识别效率。实验证明,通过改进算法,使得指纹识别系统在识别的准确率和效率上都得到了一定的提高。3.上位机通信设计:系统通过实现主控制器STM32和PC机的异步串口通信,将采集的指纹数据发送到PC机,通过VC++的MSComm控件实现串口编程接收指纹数据,同时制作人机交互界面显示指纹的灰度图像。4.指纹算法的移植:在VC开发的算法需要移植到主控制器实现嵌入式的指纹识别,在移植的过程中,对系统的程序、指纹数据、特征点模板数据的存储进行了分配,通过对指纹图像的进行了裁剪和采样缩放,达到减少数据量提高执行效率的目的。