APP下载

基于方向图和Gabor滤波的指纹预处理算法

2014-10-15付玉虎杜月荣李哲哲

计算机与现代化 2014年1期
关键词:脊线指纹图指纹

付玉虎,杜月荣,李哲哲

(1.西安电子科技大学物理与光电工程学院,陕西 西安 710071;2.西安电子科技大学通信工程学院,陕西 西安 710071)

0 引言

随着指纹识别技术在各个领域的广泛应用,越来越多的学者对指纹识别技术展开了更加深入的探索和研究。对于图像分割算法,常见的有基于Gaussian-Hermit各阶矩能量分布[1]、Harris 角点能量分布[2]、分块梯度[3]、遗传算法[4]、K 均值和模糊 C 均值[5]等。其中,文献[3]的算法处理速度快,分割效果好,且易于实现。万鹏[6]优化了Gabor滤波器的窗口大小,同时将传统的方形Gabor滤波器改为圆形,对指纹图像进行了增强。Safar Hatami[7]和王瑶[8]分别采用了八方向脊线滤波器和小波变换,较好地降低了图像中的噪声。计春雷等[9]针对传统的二值化处理速度慢、不适用于低对比度指纹图像等缺点,给出了一种动态阈值的二值化算法。文献[10-12]采用了固定阈值算法,有效地删除了多数伪特征点,但对于非均匀采集的指纹图像的伪特征点,无法有效删除。本文结合以上算法的优点,给出一种高效准确的预处理算法,该算法能较好地适用于不同质量指纹图像,对非均匀采集的指纹图像效果较好。

1 块梯度方差分割

采集到的指纹图像由于含有大量噪声,需要进行预处理。本文给出的预处理主要包括:图像分割、图像增强、二值化以及后处理、细化以及伪特征点的删除。由于图像质量不同,不能直接进行分割。首先采用3×3高斯模板滤波,去除图像中的部分噪声,使得指纹图像的纹理更加平滑。针对图像质量不同,对指纹图像统一规格化处理,使得所有指纹图像都具有统一的均值和方差,同时降低了指纹的脊线和谷线间的灰度差异。规格化以及图像分割流程如下:

(1)求出原始图像灰度均值和灰度方差。

(2)求取规格化后的图像灰度值。

其中,G(i,j)表示原始指纹图像在(i,j)处像素点的灰度值,M、N为指纹图像的高度与宽度,E(G)为原指纹图像的灰度均值,V(G)为原指纹图像的灰度方差,E0、V0为期望的灰度均值和灰度方差,一般根据实验选取适中的期望值;G'(i,j)表示归一化后的指纹图像在(i,j)处像素点的灰度值。本文选取E0=100,V0=100。

(3)Soble 算子求梯度和块梯度分割[3,13]。

结合指纹图像灰度方差和方向信息,将指纹图像分块,利用Soble算子分别计算各像素点梯度,并求出块梯度均值和块梯度方差。取各方向的块梯度标准差之和作为块特征值,再对块特征值取均值找出块梯度的分割阈值,大于阈值部分作为指纹图像前景,小于阈值作为指纹图像背景。

2 图像增强

本算法中的图像增强是基于Gabor滤波[6]与八方向脊线滤波[8]的改进算法,主要包括:图像平滑、方向图以及离散化、均值滤波、Gabor滤波。

2.1 图像平滑

无规律的噪声对指纹方向场的准确性提取有很大的影响,为了更准确地提取指纹方向场,先采用超限邻域平滑滤波[14]的方法对图像平滑处理,去除无规律的噪声。G(i,j)为(i,j)处的像素值。采用3×3模板对像素点(i,j)八邻域求取平均值E'(i,j),Q为设定阈值。如果|G'(i,j)- E'(i,j)|≥Q,则认为该处像素值为噪声像素,用 E'(i,j)代替 G'(i,j)作为(i,j)处的像素值。

2.2 方向图以及离散化

指纹图像自身的纹线性和方向性比较强,使得指纹的脊线和谷线在一个相对较小的区域,脊线和谷线的方向大致相同,并具有唯一性。对已经平滑的指纹图像采用Soble算子,求取像素点(i,j)处的横向梯度和纵向梯度,并将指纹纹线方向取值范围规定为[0°,180°]之间。每隔 22.5°取一个方向,共计 8个大方向。用公式法(详见文献[6])求取像素点脊线的大致方向,选择滤波窗口为5×5的低通滤波器滤波修正该方向图得到平滑离散的方向图。

2.3 均值滤波

根据线性空间的结构构建八方向滤波模板(如图1),并进行均值滤波。经过均值滤波可以去除图像中与滤波尺寸相比较小的的噪声区域,但是均值滤波同时也会带来一定程度的边缘模糊效应。为了去除这一影响,需要对图像采用Gabor滤波处理。

图1 八方向均值滤波模板

2.4 Gabor滤波

Gabor变换属于加窗傅立叶变换,Gabor函数可以在频域不同尺度、不同方向上提取相关的特征,并能在时域和频域获得最佳的局部化。指纹脊线和谷线交替排列,且沿着脊线或谷线的切线方向,灰度值变化缓慢,法线方向,灰度值变化剧烈。Gabor滤波器的方法需要根据样本估计滤波器的参数。二维Gabor函数表示为:

v的取值决定了Gabor滤波的波长,u的取值表示Gabor核函数的方向,K表示总的方向数。参数决定了高斯窗口的大小,这里取σ =π。程序中取4 个频率(v=0,1,2,3),8 个方向(即 K=8,u=0,1,...,7),共32 个 Gabor核函数。

为了尽可能地去除边缘模糊效应这一影响,本文在算法中设定切线方向滤波模板参数为Hx=0.1(1,0,2,0,4,0,2,0,1),法线方向滤波模板为 Hy=(-1,0,-2,0,9,0,-2,0,-1),采用矩形 Gabor滤波处理。用切线方向和法线方向2个一维滤波器来估计矩形Gabor滤波器。结合均值滤波,对指纹图像先进行法线方向锐化,再进行切线方向平滑。

3 二值化及后续处理

图像二值化关键是阈值的确定,常用的算法概括有2大类:全局阈值和局部阈值。文献[9]给出了动态阈值加填补的算法,较好地完成了图像的二值化,且算法具有一定的连接图像中断线的能力,这对提高细节特征提取结果的准确性具有重要的意义。但对于图像中产生的孔洞、短线等无法进行更加有效的处理。为此,本文改进该算法的后续处理,使其更加完善。算法描述如下:

(1)将分割后的指纹图像分为n个像素相同的小窗口,窗口像素个数为W。对每个窗口所有像素求和取平均值为pi,取经验值为ω,使得动态窗口阈值T满足:

(2)窗口内所有像素值大于T的点赋值为1,小于T的点赋值为0。

(3)搜索图像中白色点,搜索并统计该白点四邻域黑点数N1和八邻域黑点数N2,若N2≥7或N1≥3、N2≥5,则将该八连通域白色点填充为黑色点,否则,统计白色点八连通域R内白色点的数目TR,实验分析阈值为W1,如果TR≤W1,对连通域R,分别统计和判断与某一行(列)白色点所相邻的2个黑色点的像素距离Sx(Sy),如果所有Sx(Sy)≤W2,将该八连通域白色点填充为黑色点。否则,标记连通域对应的白点。

(4)重复操作直至不存在未标记的白点时,图像取反色,返到(3);经过完全处理后,再次取反获取最终图像。

4 细化及伪特征点消除

本文指纹系统采用数学查表细化算法[15]。细化后的脊线像素点根据八邻域特点可分为孤立点、端点、内点、分叉点,如图2的(a)~(d)所示。常见的指纹识别系统提取的指纹特征点主要是有效的端点和分叉点[16],图3给出了常见的伪特征点。伪特征点的删除中,像素阈值的选取十分重要。本文为了更好地删除伪特征点,对阈值选取采用统计求平均思想,自动选取阈值。

图2 孤立点、端点、内点和分叉点的示意图

图3 几种伪特征点

其中,P'(8)=P'(0),P'(i)代表八邻域中某一像素点的值,若像素点为白色点,则P'(i)=1;若为黑色点,P'(i)=0。Y表征了脊线上点的性质,Y=0、1、2对应八邻域的中心点分别为孤立点、端点、内点,Y≥3,中心点为分叉点。

本文根据先验的伪特征点的一般形式,结合指纹的方向信息和自动阈值信息,综合文献[9-12]的算法思想,给出伪特征点删除算法。具体步骤如下:

(1)结合特征点的局部结构信息,判断指纹图像黑色像素点的性质,滤除所有边缘特征点后,标记出所有准特征点。

(2)依次判断准特征点属于孤立点、端点、分叉点。对于孤立点直接删除;对于端点,判断该点连通域上的像素点个数是否大于阈值M1,若大于阈值则存储,否则,删除该毛刺;对于分叉点依次判断3条相邻脊线是否大于阈值M1,若都大于阈值则存储,否则,若有一条标记脊线像素点个数不大于阈值,则可能为毛刺、小桥、梯形,删除不大于阈值的标记点;若有2条标记脊线像素点个数不大于阈值,判断这2条脊线在中心点处对应的切线方向,并与第3条脊线的切线方向对比,保留切线方向相近的脊线,将另一条

为判断八邻域中心点性质的公式如下:填充。

(3)通过脊线方向信息和相关性,滤除关联性较大和特征点像素距离不大于M1的特征点,剩下为获取的真实特征点。

5 实验结果与分析

图4 指纹图像预处理效果图

指纹识别系统在VC++平台上采用C语言编程实现。对于本文所提出的预处理方法进行实验验证,并实现该算法。为了说明文算法效果,图4(a)给出了FVC2002_DB3数据库中一枚普通指纹图像,图4的(b)~(m)分别为针对这一指纹图像采用本预处理算法每一步的实际效果图。

由图4可知,(b)滤除了高斯噪声,图形更加均衡,纹理更加清晰。(c)规格化,降低了指纹脊线谷线的对比度,使得不同指纹图像都具有相同的灰度均值方差,便于图像分割。(d)为分割效果图,利用图像整体块特征值均值与分割参数的乘积自适应计算分割阈值,该过程能适用于不同的指纹库,具有较好的鲁棒性。对比(d)与(f),指纹图像内部噪声基本完全消除,脊线经过(g)Gabor滤波后,指纹图像脊线和谷线,更加平滑地滤除了大部分脊线或者谷线内部的孤立点、空洞等。由于阈值选取不同,(h)二值化后,会产生部分空洞、断线、孤立点等,本文在此基础上进行后处理,有效地消除了这一问题,能更好地保证细化的准确性和图像的完整性。对比(j)和(k),发现本文细化后残留的伪特征点基本被消灭。(m)给出了该指纹图像对应的特征点,对比(a)可知,该图像中特征点已完全被找出,且没有新的伪特征点产生,说明该算法的效果较好。统计表明,该算法提取特征点中包含端点24个、分叉点20个,丢失真实特征点1个,特征点提取的准确率97.78%,滤除边缘伪特征点48个,删除内部伪特征点23个,遗漏伪特征点2个,该算法产生伪特征点0个,伪特征点删除比例97.26%,很好的实现了指纹识别系统的要求。

为了更充分地说明本文算法的有效性,取FVC2002_DB3数据库中10幅指纹图像,分别采用文献[6]算法和本文算法,对应的统计结果如表1。其中,T1表示删除前图像中的特征点和伪征点的总数;B1、B2、A1、A2分别表示真实特征点中的端点个数之和、特征点中的分叉点个数之和、丢失真实特征点个数之和、特征点中包含伪特征点的个数之和;P1表示特征点提取的准确率;P2表示特征点中包含的伪特征点的比例;S1、S2、S3、S4依次代表滤除边缘伪特征点个数之和、删除内部伪特征点个数之和、遗漏伪特征点个数之和、该算法产生伪特征点个数之和;P表示伪特征点删除比例。特征点准确率计算公式为:

特征点中包含的伪特征点的比例:

伪特征点删除比例计算公式为:

表1 2种算法处理的统计结果

由表1对比可知,本文定义的绝大部分伪特征点均已被删除。相比文献[6]算法,本算法能更加高效准确地删除指纹图像中的伪特征点,而文献[6]算法指纹特征点的标记准确性低,删除伪特征点的同时容易增加新的伪特征点。这进一步说明本预处理算法的有效性和鲁棒性。

6 结束语

本文结合文献[6,8-9]等算法的优点,改进并实现了指纹预处理算法。采用均值滤波去除指纹图像中大量噪声,获取较清晰的指纹图像,并通过Gabor滤波解决了边缘掩盖效应问题,同时本算法对指纹图像中断线和孔洞等伪特征点都进行了有效的处理,使图像的增强效果更好,并有效地提取出指纹特征点。实验表明,该算法对不同质量指纹图像适用性强、准确率高、对伪特征点删除效果好,为后续指纹特征匹配提供了较准确、真实的特征信息,满足指纹识别系统的要求。但对指纹图像增强算法的简化和伪特征点去除方面仍有待于进一步改进。当指纹图像清晰部分和不清晰部分大面积交叉(如脱皮比较严重的指纹图像),增强算法受实际图像情况影响较大。如何更加高效准确确定局部块自动阈值,并把指纹脊线信息、方向信息和阈值信息充分综合一起并进一步改进算法,仍有待进一步研究。

[1]Wang Lin,Suo Hongmin,Dai Mo.Fingerprint image segmentation based on gaussian-hermite moments[C]//Proceedings of the First International Conference on Advanced Data Mining and Applications.2005:446-454.

[2]Baig A,Bouridance A,Kurugollu F.A corner strength based fingerprint segmentation algorithm with dynamic thresholding[C]//Proceedings of the 19th International Conference on Pattern Recognition.2008:1-4.

[3]Akram M U,Ayaz A,Imtiaz J.Morphological and gradient based fingerprint image segmentation[C]//2011 International Conference on Information and Communication Technologies(ICICT).2011:1-4.

[4]杨晖,郑刚,张仁杰.基于遗传算法的指纹图像分割算法[J].光学技术,2007,33(5):772-777.

[5]Balti A,Sayadi M,Fnaiech F.Segmentation and enhancement of fingerprint images using k-means,fuzzy c-mean algorithm and statistical features[C]//2011 International Conference on Communications,Computing and Control Applications(CCCA).2011:1-5.

[6]万鹏.低质量指纹图像预处理算法研究[D].南京:南京邮电大学,2010.

[7]Hatami S,Hosseini R,Kamarei M,et al.Wavelet based fingerprint image enhancement[C]//IEEE International Symposium on Circuits and Systems.2005:4610-4613.

[8]王瑶,喻建平,刘宏伟,等.基于8方向脊向滤波器的指纹预处理方案[J].信号处理,2011,27(9):1423-1428.

[9]计春雷,冯伟,黎明,等.一种动态阈值加填补的指纹图像二值化算法[J].计算机仿真,2011,28(7):258-261,289.

[10]Rahta N K,Chen S,Jain A K.Adaptive flow orientation based feature extraction in fingerprint images[J].Pattern Recognition,1995,28(11):1657-1672.

[11]陶刚,卢昀,李吉桂.细化指纹图中伪特征点的一体化去除算法[J].现代计算机:专业版,2002(10):40-42.

[12]王建永,郭成安.一种基于局部结构信息的指纹伪特征滤除算法[J].中国图像图形学报,2003,8(12):1467-1474.

[13]蔡秀梅,张永健,梁辉.结合方差和方向的指纹图像分割算法[J].现代电子技术,2011,34(12):111-113.

[14]郭喜.指纹预处理系统的研究与开发[D].长春:吉林大学,2009.

[15]徐俊峰.自动指纹识别系统算法研究[D].西安:西安电子科技大学,2013.

[16]董昕野.指纹图像预处理算法的研究[D].长春:吉林大学,2011.

猜你喜欢

脊线指纹图指纹
像侦探一样提取指纹
为什么每个人的指纹都不一样
指纹图像干湿度评价及亮度自动调节方法研究
沉香GC-MS指纹图谱分析
基于模板检测法的指纹图像的细节特征提取
基于自适应稀疏变换的指纹图像压缩
可疑的指纹
树状结构引导下的脊线层次划分方法研究
基于相位法的密集小波公共脊线提取方法
一种改进的基于细节点的脊线追踪算法