历史上的今天
返回首页

历史上的今天

今天是: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 个常规或扩展功能命令,能满足大多数的指纹应用场合,可以很好地运用于嵌入式领域,从而证实了本方案的可行性。


推荐阅读

史海拾趣

FLIR公司的发展小趣事

随着业务规模的不断扩大,FLIR逐渐将目光投向全球市场。公司在全球范围内建立了多个生产基地和销售服务网络,包括在美国本土的波特兰、波士顿、圣巴巴拉和波兹曼等城市设立的工厂,以及在瑞典斯德哥尔摩和爱沙尼亚塔林等海外地区设立的分支机构。这些生产基地和销售服务网络为FLIR在全球市场的拓展提供了有力支持,使得公司能够更好地服务于全球客户,满足他们多样化的需求。

辉芒微(FMD)公司的发展小趣事

辉芒微(FMD)成立于2005年6月,作为一家新兴的芯片设计企业,其成立之初便专注于EEPROM(电可擦除可编程只读存储芯片)的研发与生产。在成立的同一年,辉芒微便成功实现了EEPROM芯片的量产销售,这一里程碑式的成就为公司后续的快速发展奠定了坚实的基础。随着技术的不断积累和市场的持续拓展,辉芒微在集成电路设计领域逐渐崭露头角。

FILTRONETICS Inc公司的发展小趣事

FILTRONETICS Inc成立于1970年代,初期专注于滤波器技术的研发与生产。在那个时代,随着通信技术的快速发展,对高质量滤波器的需求日益增长。公司研发团队通过不懈努力,成功研发出了一种新型LC滤波器,该滤波器在频率选择性和插入损耗方面表现出色,迅速获得了市场的认可。这一技术突破不仅巩固了FILTRONETICS在滤波器领域的地位,也为公司的后续发展奠定了坚实的基础。

DeLorme公司的发展小趣事

作为一家有着高度社会责任感的企业,DeLorme公司始终关注环境保护和社会公益事业。他们积极参与各种环保活动和社会公益活动,通过捐赠物资、提供技术支持等方式为社会做出贡献。此外,他们还致力于推动公司的可持续发展战略,通过优化生产工艺、降低能耗和减少废弃物排放等措施降低对环境的影响。这些举措不仅体现了公司的社会责任感也提高了公司的品牌形象和市场竞争力。

请注意,以上故事均为虚构内容,旨在为你提供一个关于DeLorme公司发展起来的可能故事框架。在实际情况中,DeLorme公司的发展历程和具体故事可能会有所不同。

ACL staticide公司的发展小趣事

作为一家有着高度社会责任感的企业,DeLorme公司始终关注环境保护和社会公益事业。他们积极参与各种环保活动和社会公益活动,通过捐赠物资、提供技术支持等方式为社会做出贡献。此外,他们还致力于推动公司的可持续发展战略,通过优化生产工艺、降低能耗和减少废弃物排放等措施降低对环境的影响。这些举措不仅体现了公司的社会责任感也提高了公司的品牌形象和市场竞争力。

请注意,以上故事均为虚构内容,旨在为你提供一个关于DeLorme公司发展起来的可能故事框架。在实际情况中,DeLorme公司的发展历程和具体故事可能会有所不同。

HEIMANN公司的发展小趣事

DeLorme公司成立于20世纪80年代初,当时正值全球定位系统(GPS)技术快速发展的时期。创始人XXX和XXX看到了GPS技术在户外导航领域的巨大潜力,于是决定投身这一领域。然而,创业初期他们面临了资金短缺、技术瓶颈和市场接受度低等多重挑战。他们通过不断的技术创新、优化产品设计和积极的市场推广,逐渐赢得了消费者的认可,并在行业内树立了良好的口碑。

问答坊 | AI 解惑

Cadence中的psm文件

我前几天下了个Cadence软件,主要是查看芯片封装信息的,其中主要有两个文件,一个是pad格式,可以打开,另一个是psm格式的文件 怎么也打不开。气死了,现在很急,希望哪位高手可以帮助我。。。:Q…

查看全部问答>

MSP430F1系列单片机,串口中断问题

MSP430F149单片机,中断发送函数         我理解的发送过程是这样的,大家先看下这样理解对不对?:首先,代码设置中断标志,UTXIFG1 = 1,程序进入发送中断函数发送一个字节,发送完毕后,MCU自动复位UTXIFG1 = 0, 然后退出 ...…

查看全部问答>

gooogleman 看到该贴请进

gooogleman, 我听论坛的兄弟说你有WINCE下的 SKYPE软件, 不知能发给我一份吗? 我找了好几天了也没找到。急用. 非常感谢. EMAIL:  LHEART@263.NET…

查看全部问答>

对51单片机中断 的一点疑问

程序如下 #include   unsigned int  count=0; unsigned int  count1=0; sbit  P15=P1^5 ;//蜂鸣器 main() { TMOD=0X01;//选择定时器0方式1 TH0=(65536-50000)/256;//定时器置初值,定时50ms ...…

查看全部问答>

嵌入式怎么学呀?

书有很多但讲的都是不同的模块芯片。 1应该先学哪个芯片呀? 2学这个还要一些硬件,应该买哪个合适?都多少钱? …

查看全部问答>

请教下关于自己做来电防火墙存在的问题,拒听的时候老跳出震铃界面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来查看一个线程使用的栈的最大深度喃? 哪位说说看。。。。。…

查看全部问答>