嵌入式系统指纹的识别与匹配方法 【技术领域】
本发明涉及的是一种指纹的识别与匹配方法,具体地说,是一种嵌入式系统指纹的识别与匹配方法,属于图像处理与模式识别技术领域。
背景技术
随着半导体技术的突飞猛进,近年来微处理器技术和指纹传感器技术得到了长足的发展,特别是新型电容式指纹传感器,不仅能抗大于12V的静电,还有活体识别功能,使得指纹识别技术逐步民用化。其中嵌入式系统作为指纹识别与匹配的硬件平台因其具有成本低,体积小,可靠性强,可脱机携带等诸多优点成为新的技术发展方向。对于指纹的识别与匹配,90年代以来一直是图像处理与模式识别领域研究的重要课题之一。对于指纹图像的增强,辨识与特征提取等诸多方面涌现出了一大批优秀的算法理论,例如方向图的引入,Gabor滤波器地使用以及基于结构的指纹匹配方法等。并经由对这些算法理论的适当选取和有机结合形成了许多指纹识别与匹配方法。
经对现有技术的文献检索发现,在冯进国等人撰写的《指纹图像预处理与特征提取》(《计算机应用与研究》2004.5)一文中,采用光学指纹传感器,在计算机上实现一系列预处理与特征提取匹配方法,包括图像掩膜、方向滤波、模糊二值化等处理方法,能够有效地修复原始指纹图像中由于噪音,图像质量低或压力不均等原因对指纹特征的干扰,去除识别中可能产生的伪特征。其不足之处是:光学指纹传感器没有活体识别功能,安全性极差,而且上述识别方法难以移植到嵌入式系统中。引文中采用基于点灰度变化计算方向图的方法,由于指纹的方向是区域性的特征,所以这种有一定局限性。该方法中还使用基于Gabor滤波器的图形增强方法,由于此方法需要找出指纹的中心点,所以对于没有中心点的指纹就无法识别。
【发明内容】
本发明的目的在于克服现有技术中的不足,提供一种嵌入式系统指纹的识别与匹配方法,使其能处理对于断点很多的干手指的图像,增强对与指纹断点和伤疤的修复能力,提高对具有相似结构的特征点的识别能力,克服因半导体传感器采集区域小,而对指纹识别带来的困难。
本发明是通过以下技术方案实现的,本发明首先基于区域纹路特征计算方向图,再根据方向图进行邻域差分统计实现指纹纹线增强;其次,采用骨架化的方法实现细化指纹:再次,结合结构特征提取指纹特征点;最后,进行特征点匹配:对特征点按结构特征匹配,对匹配成功点的特征点计算模板的坐标差,根据统计特征剔出误识的特征点,然后再对剩下的这些点的坐标差求平均,得到不同的两幅图的坐标差,根据坐标差算出最大重叠区域,再对这个区域所有特征点点对点匹配。
以下进一步对本发明的内容作出详细描述:
1、指纹图像预处理。
首先基于区域纹路特征计算方向图:
对于断点很多的干手指的图像,充分考虑区域特征,根据纹路的整体灰度来判断方;对于0度,45度,90度,135度方向采用如下掩模:A11 A12 A13 A14B11 B12 B13 B14C11 C12 C13 C14A21 A22 A23 A24B21 B22 B23 B24C21 C22 C23 C24 * * * A14 * * A13 B14 * A12 B13 C14 A11 B12 C13 A24 B11 C12 A23 B24 C11 A22 B23 C24 A21 B22 C23 * B21 C22 * * C21 * * *
0度掩模 45度掩模
A14 B14 C14 A24 B24 C24 A13 B13 C13 A23 B23 C23 A12 B12 C12 A22 B22 C22 A11 B11 C11 A21 B21 C21 A14 * * * B14 A13 * * C14 B13 A12 * A24 C13 B12 A11 B24 A23 C12 B11 C24 B23 A22 C11 * C23 B22 A21 * * C22 B21 * * * C21
90度掩模 135度掩模
其中:
A=max(10×Σ14A1iΣ14A2i,10×Σ14A2iΣ14A1i)]]>
B=max(10×Σ14B1iΣ14B2i,10×Σ14B2iΣ14B1i)]]>
C=max(10×Σ14C1iΣ14C2i,10×Σ14C2iΣ14C1i)]]>
T0=max(A,B,C)
向量P<T0,T45,T90,T135>中最大值所对应的方向就是该点的方向。
以上述的方向图计算方法计算得出的方向图数据为基础,引入一种全新的基于像素邻域的差分统计的指纹纹线增强算法。具体算法是对指纹图像的每个像素点根据方向图取其所在纹路的切向方向(即与所在纹路方向垂直的方向),沿该方向取邻近的各个像素点与该像素点进行差分运算,判断差分结果的正负或零并取相应的权值加以记录和统计求和,这样使对于处在指纹脊线上的像素点的值较纹路切向方向上的邻近各点的值都大,故差分都应为正,统计求和表现为一固定的最大值,视所取的邻近像素点个数而定。同理,谷线上的像素点的值较纹路切向方向上的邻近各点的值都小,故差分都应为负,统计求和表现为一固定的最小值,也视所取的邻近像素点个数而定。而其余各点也都根据其在纹线上所处的位置而具有所对应的固定的统计求和结果。又由于在当前广泛使用的各种指纹传感器的分辨率下,指纹图像中纹线的宽度一般都在四到五个像素左右,所以运用该方法能有效地去除指纹图像中的高频噪声分量,修复和增强指纹的纹线,同时一步完成指纹的均一化和掩膜。
2、采用骨架化的方法实现细化指纹。
骨架化中是通过索引表的方式来实现细化,首先是对点P的八邻域P1,P2,P3,P4,P5,P6,P7,P8进行二进制编码 P1 P2 P3 P4 P P5 P6 P7 P8
P=Σi=18Pi×i2.]]>
然后通过查索引表剔除多余的点。
在经过骨架化以后,得到的指纹图像是十字邻域相连的细线。骨架化使每个黑色点邻域中的P1,P3,P6,P8被细化为白色,这使特征提取变得很容易,例如提取分叉点只需判断P2+P4+P5+P7是否等于3。
3、特征提取:
在找出特征点后需要对这些特征点进行脊线搜索,每条脊线上记录步长为15和30的点相对于特征点的相对坐标,同时根据步长以及脊线能否走通来剔出毛刺和伪特征点。
4、特征点匹配:
把同一幅图中结构相近的特征点匹配成功的概率是很高的。为了解决这个问题,首先根据特征点的结构进行匹配,然后结合这些匹配成功的特征点的绝对坐标差的统计规律,剔出匹配错误的特征点,然后计算出不同的两幅图的相对坐标差:
设P<A1(x12,y12),A2(x22,y22),...,Ai(xi2,yi2)>
和P<B1(x11,y11),B2(x21,y21),...,Bi(xi1,yi1)>是两幅相同指纹中的相同点,计算B-A的坐标差:
Δxi=xi1-xi2 Δyi=yi1-yi2
在集合
P(<Δx1,Δy1>,<Δx2,Δy2>......<Δxn,Δyn>)中剔出
(Δxi-Δxj)2+(Δyi-Δyj)2≥20的点,然后计算相对坐标差:
Δx=1nΣ1nΔxi,Δy=1nΣ1nΔyi]]>
以往有基于指纹核来计算两幅指纹之间的坐标差,然而指纹核本身就很是一个很模糊的区域,所以那样计算的坐标差是很不精确的。由于特征点本身就比核稳定而且本方法是跟据多个已经匹配成功的点来计算计算坐标差这样会精确很多。在找出坐标差以后,就确定出两幅指纹中重叠的区域,然后再匹配重叠区域的特征点。
本发明的有益效果是:1.同时完成指纹图像的均一化和掩模,不用计算指纹的中心点,避免了由于指纹中心点计算的误差导致的图像总体失真,克服无法识别无中心点指纹的缺点。2.对于断点很多的干手指及伤疤有很强的修复能力,能很大程度上减少断点的产生。3.成功在TMS320VC5509低功耗数字信号处理器上实现了嵌入式指纹识别系统,性能上达到了民用化要求,而且低成本,低功耗,同时还能提供USB接口,MMC/SD卡接口(可扩张成大容量指纹识别系统),更适合市场需求。4.在提取指纹细节点时结合结构特征,同时采用限制区域匹配法克服半导体传感器采集区域不够大的缺点,大大提高指纹识别的效果。5.集指纹图像处理、存储和比对功能为一体,拒真率低于1%,认假率低于0.0001%,多个指纹比对时间小于0.01s,性能上达到各种实际运用的要求,能方便地集成于各类识别应用产品中。
【附图说明】
图1为干手指的指纹图
图2为图1所对应的方向图
图3为图1差分增强后的图像
图4为骨架化后的指纹脊线图
图5为伪特征示意图
图6为存在结构相近特征点的指纹图像
图7为第一次采集到的经过处理后的指纹图像
图8为第二次采集到的经过处理的指纹图像
【具体实施方式】
实施例
本实施例使用FPC1010电容式指纹传感器,以及德州仪器TMS320VC5509做为MCU,在ccs2.2编译器下采用C语言与汇编混合编程。
1、从传感器读取指纹图像,存于一维数组pixel[30400]中。然后采用本文中的方法计算方向图,图1是一幅干手指原始图像,断点很多,从放大的区域可以看出很难算出点对应的方向。可是从整体上看区域的方向是很明显的。图2是采用区域方向计算方法得出的图1所对应的方向图,不同的灰度对应不同的方向。方向必须存于另一数组or[30400]中,以便后边访问。
2、采用差分的方法实现图形增强,连接断点。具体差分掩模如下: P13 P12 P11 P23 P22 P21 P40 P30 P P20 P10 P31 P32 P43 P41 P42 P53
得到的效果如图3,不仅连上了断点还把伤疤修复了。图3是采用差分算法得到的指纹图像,图1中用灰色线框标示出的伤疤已经被修复。
3、细化指纹,骨架化的剔出模板如下:
{
0,0,0,0,0,0,0,1, 0,0,1,1,0,0,1,1,
0,0,0,0,0,0,0,0, 0,0,1,1,1,0,1,1,
0,0,0,0,0,0,0,0, 1,0,0,0,1,0,1,1,
0,0,0,0,0,0,0,0, 1,0,1,1,1,0,1,1,
0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0, 1,0,0,0,1,0,1,1,
1,0,0,0,0,1,0,0, 1,0,1,1,1,0,1,1,
0,0,1,1,0,0,1,1, 0,0,0,1,0,0,1,1,
0,0,0,0,0,0,0,0, 0,0,0,1,0,0,1,1,
1,1,0,1,0,0,0,1, 0,0,0,0,0,0,0,0,
1,1,0,l,0,0,0,1, 1,1,1,0,1,0,0,0,
0,1,1,1,0,0,1,1, 0,0,0,1,0,0,1,1,
0,0,0,0,0,0,0,0, 0,0,0,0,0,1,1,1,
0,1,1,1,0,0,1,1, 1,1,0,0,1,1,0,0,
1,1,1,1,0,0,1,1, 1,1,0,0,1,1,0,0
}
1表示保留,0表示剔出。图4为骨架化后的指纹脊线图,可以看出每个黑色的点都是通过十字邻域相连的。其中灰度比较淡的点是提取出的特征点。(该特征点十字邻域内有三个点是黑色的)。
4.特征点体区域匹配,采用上述脊线搜索法,提取特征,同时根据脊线特征剔除为特征点,如图5中提取到的特征点已用灰色标记出,十字邻域内有三个点是黑色的点可认为是特征点。箭头所指为伪特征点,已被剔除。然后逐点匹配,并计算坐标差:
计算B-A的坐标差:
Δxi=xi1-xi2 Δyi=yi1-yi2
在集合
P(<Δx1,Δy1>,<Δx2,Δy2>......<Δxn,Δyn>)中剔出
(Δxi-Δxj)2+(Δyi-Δyi)2≥20的点,然后计算相对坐标差:
Δx=1nΣ1nΔxi,Δy=1nΣ1nΔyi]]>
根据Δx,Δy计算最大重叠区域,然后比较重叠区的所有特征点。图7和图8是同一个手指的指纹,A1,A2,A3对应B1,B2,B3。灰色线框标示出两附指纹图像的重叠区域,对这个区域所有特征点一对一的匹配,根据重叠区域匹配度来判断是否是同一指纹。