王敏 杨永跃 洪占勇
摘要: 该文利用专门的指纹采集设备获取指纹基本图像,基于MATLAB 对指纹图像进行预处理,包括图像增强、图像二值化、分割和归一化。对指纹特征提取指纹类型、坐标和方向参数后,利用BP神经网络进行训练识别。识别实验效果明显,识别率高。
关键词: 指纹识别系统;图像预处理;特征提取;BP神经网络
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2014)10-2359-04
Abstract: In this paper, special fingerprint acquisition device is used to obtain the basic fingerprints, fingerprint preprocessing base on MATLAB , including fingerprint enhancement, binary the fingerprint, segment as well as normalization. Extracting fingerprint types, coordinates and direction parameters, then the BP nerve network is used to train and identify fingerprint. The result of recognition is obvious, it has high recognition rate.
Key words: Fingerprint identification system; Fingerprint preprocessing; Fingerprint feature extraction; BP nerve network
由于每个人指纹纹线的起点、终点、结合点和分叉点的不同,指纹具有唯一性、终身不变性、方便性,被当作生物密码应用于生活中。随着计算机相关技术的发展,传统的证件验证身份存在证件伪造等问题,它已经给高速发展的社会带来不便,而且指纹扫描速度快,同时增加了可靠性。所以,指纹识别技术应用越来越广泛,你可以在指纹门禁、考勤机、银行柜员指纹身份认证系统、指纹汽车行驶记录仪、指纹电子印章等领域看到指纹识别系统的身影。随着社会的发展,指纹识别将会应用于各个领域。
1 指纹识别系统的构成
指纹识别系统是典型的模式识别系统,它包括指纹图像采集,指纹图像预处理,特征提取和比对。一般系统包括认证系统和识别系统两部分。该文首先采用指纹专用设备采集指纹图像,MATLAB进行图像预处理,然后特征提取,接下来是BP神经网络训练,最后用训练好的参数作为神经网络的输入,对指纹样本进行识别和匹配,输出识别结果。本系统主要包括以下五个部分组成,如下图所示[[1]]:
图像预处理是关键部分,目的是得到清晰的指纹图像,方面后续的指纹识别。该文主要采用MATLAB软件实现对指纹图像预处理,只需将选好的图像输入到已经完成的程序中即可。
1.1 指纹图像的获取
指纹图像的获取是通过一定的指纹采集设备采集样本。该文采集指纹主要利用光学式,根据光的反射原理(FTIR)。光线照到压有指纹的玻璃表面、反射光线有CCD相机获取,光线经玻璃射到谷的地方后在玻璃与空气的界面发生全反射,光线被反射到CCD,射向脊的光线不发生全反射,而是被脊与玻璃的接触面吸收或者漫反射到别的地方,这样在CCD上形成了指纹的图像。
1.2 指纹图像的预处理
系统采集到的原始图像由于未经过处理,存在噪声干扰,恶化了图像质量,给特征提取带来不便,所以在图像特征提取前要进行图像预处理。该文主要利用MATLAB编程实现指纹的一系列预处理[[2]]。MATLAB作为指纹图像的仿真平台,既减小了仿真难度,又提高识别的准确性。一般图像预处理包括图像增强、图像分割细化、二值化、归一化等。
① 图像增强
图像增强提高图像的清晰程度,改善图像质量,增大处理前后图像的对比度。该文采用的是中值滤波。将采集到的原图像输入到MATLAB中,如图2所示。
对图像的增强主要采用亮度变换函数imadjust,然后将0.5至0.75之间灰度级扩展到[0,1]范围之内,这种处理
突出的指纹脊线和谷线对比度。以下是对指纹原图像的MATLAB编程,如图3所示。
②指纹图像分割
分割处理指纹是将指纹前景区域与背景区域分割出来,分割后,系统会只对前景区域进行处理,这样可以减少预处理的复杂度。该文采用方差分割法的演变方法(即模块分割法):
(a)首先选定一个门限阈值M(通常根据经验选择)。
(b)然后将高300,宽350的指纹图像划分为20×20块,计算出每一块的平均值N。
[N=1202x=x0x=x0-20y=y0y=y0-20fx0,y0] (1)
其中,[fx,y]为图像中点的灰度值,[x0,y0]为小模块的右上方的点。
(c)若均值N小于阈值M,则将该模块选作前景区域,否则,为背景区域。然后用MATLAB实现上述算法。
③指纹图像二值化
由于指纹识别是是对前景的处理,所以要对分割后的指纹图像进行二值化,二值化后的结果直接影响后续指纹的识别。图5为二值化后的图。
④归一化
实际用指纹采集设备采集到的指纹,大小是不同的,如果对大小不同的指纹进行识别,就必须修正图像的尺寸,这就增加了识别的工作量。归一化是必不可少的步骤,它分为两种:外轮廓的归一化和中心的归一化。由于特征点基本集中在指纹中心,所以,该文主要采用中心归一化。
1.3 特征值提取
从二值化和细化后的指纹图像中提取细节特征点,细节点有以下四个特征:类型[[1]]有(1)端点(2)分叉点(3)孤立点(4)环点(5)短纹;方向;曲率;位置。该文主要提取的是指纹坐标和方向。基于MATLAB特征提取,方便且准确率高。端点和分叉点是指纹提取的主要特征。定义个八邻域模型,以P点为交叉点,相邻点组成3×3模块[[3]]。
提取方法如下:[mp]为交叉点数,[np]为8邻域纹线数
[mp=12i=18pi-pi-12],其中[p1=p9]
[np=i=18pi] (2)
当[mp=1],[np=3]时为端点;
当[mp=3],[np=3]时为分叉点。得到一系列的特征点坐标[pi=xi,yi,ti,θi],其中[xi,yi]为特征点的横纵坐标,[ti]为特征点的类型,[θi]为特征点的角度。
1.4 指纹的分类
指纹的分类信息基本包含在中心部分和三角部分,根据指纹的三角点和中心点分类。根据指纹中心点下方的纹线走向分[[1]]:(1)左环型指纹;(2)右环型指纹;(3)漩涡型指纹;(4)拱形指纹。由于指纹的纹理性和方向性都很强,求出其方向图,方向图描绘了指纹图像中像素点所在的脊线在该点的切线方向。在指纹分类时,必须考虑分类算法和分类器的设计,传统的分类器,如通信信号指纹识别分类器,主要缺点是识别率低、稳健性差。该文采用神经网络分类器,它作为一种先进的自适应、非线性分类器,并且具有强大的模式识别分类和泛函逼近能力。实验时首先将指纹分成以上四类,存在指纹库中,将指纹的四个类型作为输入矢量,送人神经网络,对BP神经网络进行训练。实验证明,神经网络分类器能够用分类算法正确地对指纹进行分类,分类速度也较快,并达到一定的分类精度。但同样此算法也存在一定的缺陷,就是对指纹图像的质量要求较高。
1.5 指纹的识别
指纹识别就是确定采集的指纹样本的身份,若将指纹分类存库,会提高后序识别的效率,基于人工神经网络的指纹识别的应用,减小了识别的复杂性。前面已经将指纹分类,只需在同类中识别。
2 BP神经网络的指纹识别
2.1 BP神经网络的介绍
人工神经网络在当前的指纹识别领域应用最为广泛,该文主要介绍反向传播神经网络(BP神经网络),它通常由输入层、若干隐含层和输出层组成,BP神经网络是一种多层前馈网络,采用的误差后向传播学习算法,一般结构包括输入层,输出层,隐层,每层又由多个节点组成,表示神经元,同一层节点之间无耦合关系,输入信息从输入层传递至隐层,再由隐含层传递至输出层,传递时是单向向前传播的。通过输入层、隐层、输出层。这三层的划分也把BP分成正向和反向,首先通过输入层神经元输入至神经网络系统中,经过隐含层神经元处理,将结果传输至输出层,当样本的输出结果与预期结果存在较大差异时,那么求出的实际输出与预期输出的误差并反馈给隐层神经元,重新调整并训练网络的权值和参数,不断地拟合,减小误差,然后重新传至输出层,不断反复,直到满足输出条件为止。网络结构的设计是首要任务,包括输入、输出神经元个数,隐层个数。
2.2 BP神经网络指纹识别技术
本文把指纹特征点选择在指纹中心点周围的区域,特征点记为[(x,y,α)],其中[x]和[y]分别是特征点的横纵坐标,[α]是特征点的方向,它是特征点纹线的切线方向。在指纹的匹配过程中,存在旋转、形变和平移的问题。由于指纹图像是呈放射状的非线性形变,而且非线性是向外扩张的,因而本文采取极坐标系,它能很好的描述指纹的非线性形变。为了抵消平移和抗旋转性,选取参照点(即中心点),转化为极坐标下的坐标,如下关系式:
[riθiαi=xi-x02+yi-y02arctanyi-y0xi-x0αi-α0] (3)
其中,[x0],[y0]为中心点的坐标,[α0]为中心点的方向,[xi],[yi]为指纹特征点的坐标,[αi]为指纹特征点的方向。
现将以上指纹分类得到的四种类型和指纹特征点的极坐标作为神经网络识别的特征值输入,它们分别是:细节特征点与参考点的距离,参考点与特征点之间的夹角,特征点的方向与参考点方向的差值。此训练得到的四个参数可以较准确的识别指纹。
3 实验结果和结论
将分类后四个数据库中100个指纹图像分成两部分,一部分作为测试,一部分作为训练。提取指纹特征点,以特征点的横坐标[x],纵坐标[y],方向场作为参数,对BP神经网络进行训练,步骤如下:
① 提取指纹特征点,求出特征点个数;
② 提取到的特征点经极坐标转换后[Q=Q1γ1,θ1,α1....Qnγn,θn,αn]将指纹所属个体作为神经网络的输出,选择四个输入节点(指纹类型,细节特征点与参考点的距离,参考点与特征点之间的夹角,特征点的方向与参考点方向的差值),按照隐含层神经元的选取公式,选择隐含层神经元个数3;
③ 得到训练完成的BP神经网络,输入分类器得到识别结果。
实验时,对指纹提取10个特征点,每个特征点包括四个数据,下图是对其中一个指纹提取特征值。
将特征值坐标,方向,指纹类型作为神经网络的输入,对四个库中的指纹进行训练识别,得到识别结果统计表如下表所示。
通过实验结果可以看出,该文对指纹特征点进行神经网络的训练,基本能将不同类型的指纹进行识别,而且识别迅速,识别率较高,有效提高了指纹识别系统的效率。由于识别结果对采集的指纹的完整性,指纹图像的预处理和特征提取要求较高,而且本样本容量较小,在一定程度上会影响识别准确性,识别精度还有待进一步提高。
参考文献:
[1] 杨静.基于神经网络的指纹识别[D].北京工业大学,2003.
[2] 冈萨雷斯.数字图像处理[M].北京:电子工业出版社,2005.
[3] 郭晶莹,吴晴,商庆瑞.基于MATLAB的指纹图像细节特征提取[J].计算机仿真,2007,24(1):182-184.
[4] 孙航.基于BP神经网络的指纹识别[J].信息与电脑,2011(5):32-33.
[5] 胡小璐.基于神经网络的指纹识别系统[D].电子科技大学,2003.
[6] 刘兴龙.自动指纹识别系统的研究与实现[D].贵州大学,2006.
[7] 薛亚许,李宁.基于MATLAB的指纹图像的二值化及细化[J].平顶上学院学报,2012,27(2):74-76
[8] Mehtre B M, Chatterjee B. Segmentation of Fingerprint Imagine Composite Method[J].Pattern Recognition.1989,22(4):381-385.
[9] Xu-dong Jiang, Wei-Yun Yau. Fingerprint Minutiae Matching Based on the Local and Global Strutures. IEEE. 2000:1038-1041.