生物识别技术尤其是指纹识别技术是近年来身份识别和认证领域内发展很迅速的一门新兴技术。指纹识别是一门属于模式识别领域的科学,它所需要的知识面相当广泛,包括图像学、数学、逻辑学、模糊控制等。随着社会的发展和技术的进步,很多部门和领域需要安全的身份认证。
1实例说明
指纹识别技术是生物特征识别技术中的一种。顾名思义,生物特征识别技术是利用人体的生物特征来进行身份验证的一种解决方案。由于人的生物特征具有人体所固有的不可复制的唯一性,因此这一生物特征密钥无法复制、失窃或遗忘。
本实例通过介绍指纹识别的原理,着重讲述基于ARM开发平台的指纹识别系统应用的软硬件开发。
2 指纹识别
2.1指纹识别
按照一般人的看法,指纹识别技术通过分析指纹的全局特征和指纹的局部特征,特征点如脊、谷和终点、分叉点或分歧点,从指纹中抽取的特征值可以非常详尽以便可靠地通过指纹来确认一个人的身份。平均每个指纹都有几个独一无二可测量的特征点,每个特征点都有大约7个特征,普通人的10个手指产生最少4900个独立可测量的特征,这足够来确认指纹识别是否是一个更加可靠的鉴别方式。
指纹是手指末端正面皮肤上凸凹不平产生的纹路。尽管指纹只是人体皮肤的一小部分,但是,它蕴涵大量的信息。指纹特征可分为两类:总体特征和局部特征。总体特征是指那些用人眼直接就可以观察到的特征,包括基本纹路图案、模式区、核心点、三角点、式样线和纹数等。基本纹路图案有环型、弓型、螺旋型。局部特征是指指纹上的特征点,即指纹纹路上的终结点、分叉点和转折点。这些指纹特征点可用以下4种特性来描述。
(1)位置:特征点的位置通过(x,y)坐标来描述,可以是绝对的,也可以是相对于三角点的。
(2)方向:该特征点所在的局部脊线的方向。
(3)分类:特征点有以下几种类型:终结点、分叉点、分歧点、孤市点、环点、短纹等。最典型的终结点和分叉点如图26-1所示。
(4)脊线:特征点对应的脊线(di,ai)。特征点对应的脊线用在该脊线上的采样点来表示。采样点用该点与对应特征点的距离di,以及连接该点与对应特征点的直线和对应特征点方向的夹角ai来表示。
2.2 指纹识别的基本原理
两枚指纹经常会具有相同的总体特征,但它们的局部特征(即特征点)却不可能完全相同,因此,指纹识别技术通常使用指纹的总体特征如纹形、三角点等来进行分类,再用局部特征如位置和方向等来进行识别用户身份。通常,首先从获取的指纹图像上找到“特征点”(minutiae),然后根据特征点的特性建立用户活体指纹的数字表示——指纹特征数据(一种单向的转换,可以从指纹图像转换成特征数据,但不能从特征数据转换成为指纹图像)。由于两枚不同的指纹不会产生相同的特征数据,所以通过对所采集到的指纹图像的特征数据和存放在数据库中的指纹特征数据进行模式匹配,计算出它们的相似程度,最终得到两枚指纹的匹配结果,根据匹配结果来鉴别用户身份。
总之,指纹识别技术首先通过读取指纹图像,然后用计算机识别软件提取指纹的特征数据,最后通过匹配识别算法得到识别结果。其基本原理框图如图26-2所示。
2.3指纹识别的方法
由指纹识别的基本原理可知,指纹识别技术主要经过以下4个步骤:指纹图像的获取、指纹图像的预处理、指纹特征的提取和指纹特征匹配。下面将对指纹识别技术的每个步骤做详细论述。
1. 指纹图像的获取
获取指纹图像的设备可分成三类:光学、硅晶体传感器和其他。光学取像设备应用的历史最久,它依据的是光的全反射原理。
应用晶体传感器是最近市场上才出现的,这些含有微型晶体的平面通过多种技术来绘制指纹图像。
电容传感器就是其中的一种,它通过电子度量来捕获指纹图像。电容设备能结合大约100 000导体金属阵列的传感器,其外面是绝缘的表面,当用户的手指放在上面时,皮肤组成了电容阵列的另一面。电容器的电容值由于金属间的距离而变化,这里指的是脊(近的)和谷(远的)之间的距离。除了以上两类,超声波扫描被认为足指纹取像技术中非常好的一类,但价格太高、体积偏大。一般采集到的指纹图像都是存成256级灰度的图像。
2. 指纹图像预处理
为了得到比较准确的指纹特征点,指纹图像预处理一般要经过图像增强(滤波去掉噪声)、计算方向图,二值化和细化等过程。整个过程如图26-4所示。
(1) 图像增强
一般来说,刚获得的指纹图像都有很多噪音,比如,手指被弄脏、手指有疤痕、太干、太湿或撕破等,所以如何在获取指纹图像之后,有效地过滤图像噪音是指纹识别技术中的难题之一。
通过图像增强可以过滤噪音,增强脊和谷的对比度。图像增强的方法有很多,但大多数是通过过滤图像与脊局部方向相匹配。图像首先被分成几个小区域(窗口),并在每个区域上计算出脊的局部方向来决定方向图,可以由空间域处理,或经过快速二维傅里叶变换后的频域处理来得到每个小窗口上的局部方向。然后设计合适的、相匹配的滤镜,使之适用于图像上所有的像素(空间场是其中的一个)。依据每个像素处脊的局部走向,滤镜应增强在同一方向脊的走向,并且在同一位置,减弱任何不同于脊的方向。后者含有横跨脊的噪音,所以其垂直于脊的局部方向上的那些不正确的“桥”会被滤镜过滤掉。
(2) 计算方向图
方向图描述了指纹图像中每一像素点所在脊线或谷线在该点的切线方向,作为一种可直接从源灰度图像中得到的有用信息,它的计算一直是指纹识别技术中必不可少的一步。 方向图也可以看作是原始指纹源图像的一种变换表示方法,即用纹线上某点的方向来表示该纹线的方向。一般有两种方向图:一种是点方向图,表示原始指纹图像中每一像素点脊线的方向;另一种是块方向图,表示原始指纹图像中某点区域所有元素的平均方向。
计算方向图的基本思想是:在原始灰度指纹图像中计算每一点(或每一块)在各个方向上的某个统计量(如灰度差、梯度等),根据这些统计量在各个方向上的差异,确定该点(该块)的方向。
在实际处理中,我们往往采用块方向图,因为块方向图常常比点方向图有更强的抗噪性,而且块方向图可以减少计算量,有利于模块化处理。块方向图可以由点方向图得到,也可以用最小均方估计算法求得。
(3) 二值化
第一,根据指纹的脊线和谷线等宽的假设,再结合局部灰度分布的考察,可以得到具有自适应性的自动门限。自适应阈值的选取方法是先找到该点的法向方向,在理想情况下,法向上的平均值即可作为阈值。然而考虑到噪声的影响,故应该去掉最大、最小值后点的平均值再加上一修正值作为阈值。计算公式如下:
TT=R-(T-R)/2 (26-1)
其中:R为法向上去掉最大、最小点后的平均值;T为最大、最小点的平均值;(T-R)/2为修正值;TT为阈值。阈值选定后,即可对该点进行二值化,逐点依次处理即可。
第二,在指纹图像中,考虑同一区域的像元应具有相近的连续变化的灰度,根据“灰度变化平稳”这一假设邻元灰度的变化来进一步确认像元素隶属前景和背景的程度,可以很好地排除不清晰指纹在自动门限附近的分割不一致性。
第三,为解决二值化在分割图像中视野太小的局限,并同时对模糊区域和孤立噪声进行处理,采用广义的拉普拉斯算法对图像进行滤波。
实验表明,该算法不但可使纹路突出,而且较好地保留了指纹的细节特征,并且在很大程度上减少了指纹的断缝和粘连等错误信息。
二值操作使一个灰度图像变成二值图像,图像在强度层次上从原始的256色降为2色。图像二值化后,随后的处理就会比较容易。
二值化的困难在于,并不是所有的指纹图像都有相同的阈值,所以一般不能从单纯的强度入手。而且单一图像的对照物是变化的,比如,手在中心地带按的比较紧,因此一个叫“局部自适应的阈值”的方法被用来决定局部图像强度的阈值。
(1) 细化
在提取指纹特征点之前的最后一道工序是“细化”。细化是在不影响原图的拓扑连接关系下,将脊的宽度降为单个像素宽度的处理过程。一个好的细化方法是保持原有脊的连续性,降低由于人为因素所造成的影响。人为因素主要有毛刺和短脊线,这些都造成提取出来的特征中有很多的伪特征。
细化方法的优点是减少内存空间,它只需要存储图像中必需的结构信息。这样,在对图像的处理中能简化数据结构。
根据细化的定义易知细化的关键是如何找到原图像的骨架,通常采用模板匹配方法,这种方法是根据某个像素局部邻域的图像特征对其进行处理。当然也有外轮廓计算、神经网络等细化方法。
3.提取指纹特征点
如表26-1所示,特征提取用一个3*3的模板来检测特征点的位置与类型,M是被检测的指纹特征点,N0,…,N7是特征点M的按逆时针方向排列的邻近点。
如果其中N8=N0,则M是终结点,如图26-1(a)所示;
如果 其中N8=N0,则M是分叉点,如图26-1(b)所示。
算法描述如下:
(1)将特征点坐标转换为极坐标;
(2)在模板指纹和输入指纹中找两个类型相同的点分别作为参考点;
(3)将模板和极坐标中输入点作为符号串,按极角递增的顺序连接每个点;
(4)如果对于模板特征点,输入的特征点在相应的允许框内,则匹配指数加1;
(5)重复(2)、(3)、(4)步,直到每个可能都被测试;
(6)对于一个指纹图,如果匹配指数大于定值T,则认为匹配成功,否则失败。
3硬件电路设计
3.1指纹硬件电路
FPS200电容式指纹传感器在1.28cm×1.50cm的表面集成了256×300个电容器,外表而是绝缘层,当用户的手指放在上面时,由皮肤来组成电容阵列的另一面。电容器的电容由于导体间的距离而降低,即脊(近的)和谷(远的)相对于另一极之间的距离。通过读取充放电之后的电容差值来获取指纹图像。FPS200提供有与8位微处理器相连的接口,并且内置8位高速A/D转换器,可直接输出8位灰度图像。传感器采用标准CMOS技术,获取的图像大小为256×300,分辨率为500DPI。
FPS200传感器的每一列都有两个采样一保持电路,一个用来存储放电前电容两端的电压,另一个用来存储放电后电容两端的电压。两个采样一保持电路的差值可以度量电容的变化。首先指定行高阶地址寄存器(RAH)和行低阶地址寄存器(RAL)中的数据以指定待读取的行,再指定列地址寄存器(CAL)从而启动行捕获,等待一段时间(行捕获时间)后,连续读取控制寄存器(CTRLA),获得某一点的指纹采样值。读完会自动触发下一次A/D转换,读完一行后再写入RAH,RAL以读取下一行,直至最后一个像素。
在参数设置方面,其中PGC是放人倍数,通过它不能消除汗渍(模糊);DCR和DTR的组合大小和背景色及双指纹现象有关。
· DCR:越小DTR要越大,DTR可变范围越大(可变范围是指图像不太黑,同时没 有双指纹)。
· PGC:越大DTR可调范围变小,PGC:太小使整个图像将变成灰色,很难区分指纹 和背景。
· DCR:越大将有效抑制汗渍(模糊)。但是DCR达到最大时背景为灰色,虽然指纹没有模糊,但用减小PGC来看,此时整个图像为灰色。而PGC很大时调整范围小, 图像不是很好。
3.2电路原理图
设计指纹采集模块时由于考虑到指纹芯片价格昂贵,万一设计存在错误将会造成很大的浪费,同时也考虑到以后在制作产品时指纹采集模块安装方便,所以将指纹模块单独设计成一块电路板连接在扩展板上面。
FPS200接口电路如图26-7所示。
FPS200和ARM CPU接线(布线要求)建议如下:
(1)为了减少干扰,ARM输出到FPS、ARM的RD/WR输出到FPS,这些数据线段中间不能再接其他线,即其他器件的数据线和RD线不能和FPS共用。
(2)这些线周围0.5cm左右不能有敷铜或者其他导线。这样来减少数据线和地之间的电容。
(3)其中的数据线应并排走,长度相等。这些线应尽量短,导线较粗。
(4)驱动输入引脚和地之间接一个30pF的电容。尽量贴近管脚。
(5)FSET引脚和指纹自动探测有关。FSET引脚的干扰将触发指纹采集,所以“FSET引脚”和“接在FSET引脚上的电阻”之间的引线要尽量短,并且引线和周围引线之间有较大距离。
4 软件设计
4.1指纹识别驱动
FPS200芯片的功能是采集指纹,它的工作方式是,用户把手指放到采集板上之后,采集板产生一个硬件中断通知ARM,此时用户程序可以通过读取中断标准位的方式得到该响应,然后用户程序通过ioctl发出控制指令读取指纹数据,如图26-8所示。
硬件上的FPS200指纹采集芯片,这个设备在Linux下没有提供相应的驱动程序,所以需要自己编写。为了能够使用FPS200驱动,还需要在/dev目录下面创建一个设备文件。创建方法如下:
#cd/arm/armroot/dev
#mknod fps200 c 240 0
上面的命令表示,在dev目录下面创建了一个名字为FPS200的字符设备,该设备的主设备号是240,次设备号是0。
在编写驱动时,考虑到FPS200采集指纹时需要调整参数,所以在设计时将调整参数的接口也提供给用户的程序。为了比较出哪一组参数所采集的指纹图片最好,所以可以采用自动调整参数的方法,把每一个参数下的指纹图片自动保存,最后筛选出一个效果最好的参数作为最终参数。
4.2指纹处理程序设计
关于指纹处理过程:由一个光电检测信号来确认是否有手指按下,如果有手指按下,则此时直接读指纹芯片的缓冲区,将读到的指纹图像数据在SDRAM中进行打包;然后发送到服务器,由服务器将接收到的指纹图像进行处理和辨识;接着向终端返回认证结果,由终端进行相应的显示和控制。
系统的简单工作流程如图26-9所示。
5 实例总结
本章介绍了RM开发平台上的一个应用,即指纹识别系统。指纹识别算法需要大量的运算,从PC上运行的结果来看,放到ARM硬件平台上运行速度较慢,因此可以在系统硬件上增加一块DSP数字处理芯片作为专门的指纹处理模块。
在指纹识别系统的设计时应注意如下几个问题。
·在对指纹图像进行增强处理时,对提取指纹边框有效区域的提取范围太大,将不能 够把图像上的噪声完全去除。
·对图像计算方向图时,得到的方向不够准确,将使不太清楚的指纹得到的方向图出 现混乱。
发表评论 评论 (0 个评论)