历史上的今天
今天是:2025年03月02日(星期日)
2021年03月02日 | 嵌入式光学指纹识别系统的设计方案
2021-03-02 来源:OFweek
0 引言
随着电子信息技术应用面日益拓展,不少场合需要对特定用户群体进行身份识别或身份记录,如门禁系统、考勤系统、安全认证系统等,在各种系统中运用的技术形式多样,如视网膜识别、面相识别、指纹识别、RFID 射频识别应用等。其中,生物特征识别方式以其方便性强、安全性高等特点得到了越来越多人的认可和接受,特别是指纹识别技术方式,现已发展成为应用最广泛的生物识别技术之一。因此,研究基于嵌入式架构的指纹识别系统具有现实意义和广阔的应用前景。
1 系统整体结构
系统采用光学指纹传感器(内建格科微电子有限公司的光学GC0307 CMOS 图像采集芯片)与ARM Cortex M3 内核意法半导体公司的32 位高性能单片机STM32F205RE 组成功能主体,采用Sobel 边缘检测算子、Gabor 滤波、图像二值化等图像采集与处理算法对指纹图像进行识别,构建了小体积的嵌入式指纹识别模块,具有积木式嵌入、微功耗、程序接口简单易用、便于二次开发、识别准确度高、高性价比等特点。
2 系统硬件电路设计
整个系统设计构成了一体化光学指纹识别模块。模块设计采用光学暗背景成像原理,加入特有活体检测芯片,在解决干手指效应的同时解决残留指纹误识别、橡胶假指纹等问题。

图1 所示为格科微电子有限公司的光学GC0307 CMOS 图像采集芯片应用电路原理图。该款CMOS 图像采集芯片是高精度、低功耗、微体积的高性能相机的内置式组件,它把实现优质VGA 影像的CMOS 影像传感器与高度集成的影像处理器、嵌入式电源和高质量的透镜组结合在一起,输出JPEG 图像或图像视频流,支持8/10 位数字传输JPEG 图像和YCbCr 接口,提供了完整的影像解决方案。
CMOS 图像采集芯功能输出串行数据引脚、时钟信号引脚、复位引脚、串行总线引脚等都接入到STM32F205RE的GPIO 口, 通过GPIO 口模拟时序读取CMOS 芯片采集到的图像信息。由于STM32F205RE 的GPIO 口工作频率可达120 MHz,因而可以非常准确高效地模拟时序,实测640×480 的原始图像能以10 帧/s 的速度采集到主处理器STM32F205RE 中进行图像处理。
3 系统软件功能设计
本系统的指纹图像采集过程如图2 所示。系统软件设计部分则针对畸变纠正采用了四点转正算法。

通过公式(1)和公式(2)可以得到从(x,y) 到(u,v) 的变换,其中,A ~ H 由光路决定,可以由具体测定数据最终确定,通过实测可以获得原始数据。图3 所示展示了原始图像和畸变纠正前后图像的效果差异。通过变换可见,畸变纠正后的图像通过变换可达500 DPI分辨率,为后续获得高质量图像处理数据奠定了基础条件。

然后送入算法处理。由于嵌入式系统的图像处理算法必须运算量小、占用RAM 存储器空间小,才能在运算性能有限的单片机系统中运行,故而本系统通过小块方向替代点方向,减小RAM占用。
在图像增强方面,可以将图像以L 为长宽划分为小块,再按如下公式求取每一块的均方差 :

根据实验数据测定和分析,当Aver>36 时,可认为该区域内有图像,否则认为是背景。利用均方差区分出了前后景,还可以据此判断图像的对比度。根据对比度的差异分别来增强图像,可以使得不同曝光亮度的图像得到一致增强。对原始图像进行了算法处理,提取处理前后效果进行比对,具体效果如图4 所示。

软件算法中对于指纹处理中的求取图像方向场问题,采用了基于原Sobel 算子改进后的Sobel 算子。
原Sobel 算子如下:

改进后的Sobel 算子为:

改进的Sobel 算子能增加方向场的准确性,实测通过率从采用标准Sobel 算子的93.3% 提高到95.8%.图5 所示为其变化情况。

如图5 可见,改进的Sobel 算子在原Sobel 算子的基础上,能显着地分割出正确图像的面积,几乎能在整个画面区域提取出正确的方向来。系统对图像进行了Gabor 滤波和图像数据二值化。指纹图像属于纹理图像,纹理图像采用Gabor 滤波器,利用每一点的点方向沿方向指向增强,沿方向的法线方向减弱。Gabor 滤波器能很好地拼接断纹,滤除环境噪声,最后将Gabor 滤波后的图像做双窗口均值门限二值化:
门限1 均值化算子矩阵: 7×7 的单位矩阵。
门限2 :均值化算子矩阵: 3×3 的单位矩阵。
具体运算表达式如下:

当每一点的值g(x,y)>p(x,y) 时,则赋值g(x,y)=1,否则赋值为0,以此得到二值化最终的结果,提取图像进行实测效果的比对如图6 所示。


经过上面的步骤,即可从原始图像里面提取出有效的特征信息。特征信息描述了特征点的位置、方向等信息,最终形成一个大小不超过512 字节的特征模板。指纹的比对就是在特征模板的基础上,构建两个点形成的杆对集,而杆对所包含的杆长度、端点方向与杆的夹角等信息已经是相对量,与位置无关。理想状况下,同一枚指纹,采集的两幅图像能找到的杆对的每一个量(长度、夹角)在数学上是完全相等的。以此为基本数学模型,构建整个比对算法。
4 结语
本文的基于ARM的光学指纹识别系统的设计方案,经过实物测试, 模块录入用户指纹图像时间为500 ~ 800 ms,拒真率小于等于1%,平均4.2 ms 即可比对一枚指纹,支持1∶1 指纹验证和1∶N 指纹搜索。在硬件设计中引出了通信端子,系统支持3.3V TTL 串口通信,可以通过串口对模块进行用户注册、删除特定用户、删除所有用户、复位模块、获取用户总数、获取用户权限、1∶1 比对、1∶N 比对、设置串口波特率、读取图像并提取特征值、获取图像等30 个常规或扩展功能命令,能满足大多数的指纹应用场合,可以很好地运用于嵌入式领域,从而证实了本方案的可行性。
上一篇:物流中心自动引导小车控制系统设计
史海拾趣
|
我前几天下了个Cadence软件,主要是查看芯片封装信息的,其中主要有两个文件,一个是pad格式,可以打开,另一个是psm格式的文件 怎么也打不开。气死了,现在很急,希望哪位高手可以帮助我。。。:Q… 查看全部问答> |
|
MSP430F149单片机,中断发送函数 我理解的发送过程是这样的,大家先看下这样理解对不对?:首先,代码设置中断标志,UTXIFG1 = 1,程序进入发送中断函数发送一个字节,发送完毕后,MCU自动复位UTXIFG1 = 0, 然后退出 ...… 查看全部问答> |
|
gooogleman, 我听论坛的兄弟说你有WINCE下的 SKYPE软件, 不知能发给我一份吗? 我找了好几天了也没找到。急用. 非常感谢. EMAIL: LHEART@263.NET… 查看全部问答> |
|
程序如下 #include unsigned int count=0; unsigned int count1=0; sbit P15=P1^5 ;//蜂鸣器 main() { TMOD=0X01;//选择定时器0方式1 TH0=(65536-50000)/256;//定时器置初值,定时50ms ...… 查看全部问答> |
|
请教下关于自己做来电防火墙存在的问题,拒听的时候老跳出震铃界面2秒左右,然后自动关闭,如何解决呢 拒听的时候怎么老跳出震铃界面2秒左右,然后自动关闭,如何解决呢?拒听理论来说,不应该出现震铃界面呀,但是怎么每次拒听会跳出震铃窗口呢,如何处理呢? 附加代码(知道的请告诉下好么,万分感谢!!!!!): case LINE_APPNEWCALL: SetRing(F ...… 查看全部问答> |
|
紧急求助!对vxworks/tornado开发比较熟悉的大牛帮帮忙! 选了vxworks的课,结果忙了一学期其他的事情,还有几天交作业了,着急,诚征大牛帮忙。价格面议。手机:13718106015 实验1. 哲学家的晚餐(30%) 实验2. TCP双机通信(40%) 实验内容:安装Tornado UL ...… 查看全部问答> |
|
用伺服阀进行输出压力控制时,采用plc模拟量模块给定伺服阀信号或接受传感器反馈信号。开始时,压力达不到设定值,模拟量输出增加,阀的开度也增大,压力达到设定值时模拟量输出 保持当前值不变了(对于PID控制来说应该是这样的),但只要阀有开 ...… 查看全部问答> |
|
Rt_thread中如何用FinSH shell查看一个线程使用的栈最大深度 请教了:RT中定义堆栈是一个麻烦事,我们要怎样用FinSH shell来查看一个线程使用的栈的最大深度喃? 哪位说说看。。。。。… 查看全部问答> |




