一种快速计算指纹相似度的方法
技术领域
本发明涉及生物特征识别领域,尤其是一种快速计算指纹相似度的方法。
背景技术
生物特征识别技术是指利用人体生物特征进行身份认证的一种技术。生物识别系统是对生物特征进行取样,提取其唯一的特征并且转化成数字代码,并进一步将这些代码组合而成的特征模板。人们同识别系统交互进行身份认证时,识别系统获取其特征并与数据可中的特征模板进行比对,以确定是否匹配,从而决定接受或拒绝该人。指纹识别技术作为生物特征识别技术中最成熟的技术,已被全球大部分国家政府接受与认可,已广泛地应用到政府、军队、银行、社会福利保障、电子商务和安全防卫等领域。
指纹识别技术主要包括指纹图像采集、指纹图像预处理及图像增强、指纹特征提取、指纹特征比对和搜索等。在指纹特征比对和指纹搜索中,目前普遍的方法都用到了计算指纹相似度的技术。现有计算相似度技术的方法主要包括基于纯细节点特征的方法和结合细节点和奇异点特征的方法。由于不是所有的指纹都存在奇异点,且由于在目前的采集技术中,很多指纹的奇异点都没法被完全采集到。因而基于奇异点的方法在应用上有一定的局限性。现有的基于纯细节点的方法由于细节点数目较多,计算量大,速度较慢。同时由于收到速度的限制,比较方法较为简单,准确度低。
发明内容
本发明的目的正是要解决已有相似度计算方法速度慢,且主要是准确度较低,会有出现非真实匹配的特征相似度高而真实匹配的特征相似度低的问题,而提供一种快速计算指纹相似度的方法。
本发明解决其技术问题采用的技术方案:这种快速计算指纹相似度的方法,步骤如下:
步骤1、将待比较的两个指纹图像A和B分别通过特征提取装置得到指纹特征A和指纹特征B;
步骤2、构造指纹特征A的细节点拓扑结构,对于指纹特征A中的每个细节点i,构造该细节点与其他所有细节点之间的星型拓扑结构,所有的星型拓扑结构组成了指纹特征A的复合型拓扑结构;
步骤3、构造指纹特征B的细节点拓扑结构,对于特征B中的每个细节点i,构造该细节点与其后续三个细节点之间的拓扑结构;
步骤4、指纹特征B中的每个拓扑单元在指纹特征A的拓扑结构中搜索相似的拓扑单元,得到相似拓扑单元集合S1;
指纹特征B中每个点iB的三个拓扑单元CB,在指纹特征A中所有点iA的星型拓扑结构中搜索,比较iA的拓扑单元中的旋转无关属性,若搜索到有拓扑单元CA的旋转无关属性满足条件{lA,αA,βA,tA}-{lB,αB,βB,tB}<T,其中,T为一组给定的数组较小的阈值,T={Tl,Tα,Tβ,Tt},则认为CA和CB为相似拓扑单元,将其加入相似拓扑单元集合S1;统计点iB的三个拓扑单元中,在指纹特征A中找到相似拓扑单元的个数,记录下个数最大的点iB及其对应的点iA;
步骤5、构造指纹特征B中点iB的星形拓扑结构,扩展指纹特征B的拓扑结构;
步骤6、指纹特征B中扩展后的拓扑单元在指纹特征A的拓扑结构中搜索相似的拓扑单元,得到相似拓扑单元集合S2,即搜索特征B中iB的星形拓扑结构中每个拓扑单元在指纹特征A中iA的星形拓扑结构中搜索相似的拓扑单元,得到相似拓扑单元集合S2,合并集合S1和S2得到S3;
步骤7、对S3中的拓扑单元进行一致性筛选,得到相似拓扑单元集合S4;
步骤8、根据S4得到相似度,统计S4中相似拓扑单元的个数即相似拓扑单元中旋转无关属性的差异,得到指纹特征A和指纹特征B的相似度S;
其中η={l
A,α
A,β
A,t
A}-{l
B,α
B,β
B,t
B};f(η
k)是一个将η
k规范化到0-1的一个函数;m和n分别是特征A和特征B的细节点个数;q是预先给定的阈值。
作为优选,特征提取装置包括对原始指纹图像的预处理、图像增强、图像二值化并细化、在二值化后的指纹图像上提取细节点,后处理去除伪细节点一系列过程;一个指纹特征包括几十个细节点,一个细节点信息表示为{x,y,θ,t},其中x,y表示细节点的位置,θ表示细节点的方向角,取值范围为[0,360),t表示细节点的类型,标识该点为端点或者叉点。
作为优选,在步骤2中:构造一个细节点i与另一个细节点j间的关系为一个拓扑单元,一个拓扑单元的属性由4个旋转无关属性构成和一个旋转相关属性构成,表示为C={l,α,β,t,γ};具体为:l表示点i和点j的距离;γ为点j相对于点i的极角,即点i到点j的有向线段与水平正方向所成角度;α为γ与点i的方向角之间的夹角;同样,令γ为点i相对于点j的极角,即点j到点i的有向线段与水平正方向所成角度,则β为γ与点j的方向角之间的夹角;t为点j的类型。
作为优选,在步骤4中,在搜索之前,首先将指纹特征A的拓扑结构进行排序并构造相应索引表,具体为:
(1)、对于指纹特征A的每个点i的星型拓扑结构,按照每个拓扑单元的距离属性l进行升序排序,用链表结构表示;
(2)、构造指纹特征A的拓扑单元索引表F,该索引表的长度L为特征B中所有拓扑单元的长度属性最大值1+h,其中h为给定阈值,索引表的第k个元素的含义为:指纹特征A的点i的排序后拓扑结构中,第一个距离属性l大于等于k的拓扑单元的序号;
(3)、拓扑单元CB在搜索相似拓扑单元的过程中,利用索引表,比较序号在F[1-T1]和F[1+T1+1]-1之间的拓扑单元。
作为优选,在步骤7中,集合S3中,相似拓扑单元的旋转相关属性γ的差Δγ,统计集合S3中,相似拓扑单元的旋转相关属性γ的差Δγ的直方图分布;
直方图用一个长度为360的一维数组{H
w,0≤w<360}表示,
其中K是集合S3的大小;g 是关于w和Δγ
k的一个函数,
T
γ是一个预先给定的阈值,f(x)是一个将x规范化到[0,360)的函数;
统计数组{Hw}取得最大值时,满足g(Δγk,w)=1的拓扑单元,则这些拓扑单元具有旋转一致性,即,去掉{Hw}取得最大值时,满足g(Δγk,w)=0的拓扑单元,得到旋转一致的相似拓扑单元集合S4。
本发明有益的效果是:本发明通过两个方面来降低非真实匹配特征间的相似度,并提高真实匹配特征间的相似度,从而增加了相似度计算方法的准确性。同时,通过构造索引表的方法提高了计算速度。
附图说明
图1是本发明一个拓扑单元的属性描述示意图;
图2是本发明点i的星形拓扑结构示意图;
图3是本发明特征A中所有点的星形拓扑结构组成的复合型拓扑结构示意图;
图4是本发明特征B中点i的拓扑结构示意图;
图5是本发明特征B中所有点的成的拓扑结构示意图;
图6是本发明点i的星型拓扑结构的链表结构表示图;
图7是本发明拓扑单元索引列表图;
图8是本发明计算指纹相似度流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明:
本发明主要提出了一个快速计算指纹相似度的方法,其主要步骤包括:
步骤1、将待比较的两个指纹图像A和B分别通过特征提取装置得到指纹特征A和指纹特征B。
特征提取装置包括对原始指纹图像的预处理、图像增强、图像二值化并细化、在二值化后的指纹图像上提取细节点,后处理去除伪细节点等一系列过程。细节点信息是指纹特征中的主要信息,一个指纹特征一般包括几十个细节点,一个细节点信息可表示为{x,y,θ,t},其中x,y表示细节点的位置,θ表示细节点的方向角,取值范围为[0,360),t表示细节点的类型,标识该点为端点或者叉点。
步骤2、构造指纹特征A的细节点拓扑结构。
构造一个细节点i与另一个细节点j间的关系为一个拓扑单元,一个拓扑单元的属性由4个旋转无关属性构成和一个旋转相关属性构成,表示为C={l,α,β,t,γ},如图1所示。具体为:l表示点i和点j的距离;γ为点j相对于点i的极角,即点i到点j的有向线段与水平正方向所成角度;α为γ与点i的方向角之间的夹角;同样,令γ为点i相对于点i的极角,即点j到点i的有向线段与水平正方向所成角度,则β为γ与点j的方向角之间的夹角;t为点j的类型。
对于指纹特征A中的每个点i,构造该细节点与其他所有细节点之间的星型拓扑结构,如图2-1,所有的星型拓扑结构组成了指纹特征A的复合型拓扑结构,如图2-2所示。
步骤3、构造指纹特征B的细节点拓扑结构。
对于指纹特征B中的每个细节点i,构造该细节点与其后续三个细节点之间的拓扑结构,如图3-1,图3-2所示。
步骤4、指纹特征B中的每个拓扑单元在指纹特征A的拓扑结构中搜索相似的拓扑单元,得到相似拓扑单元集合S1。
指纹特征B中每个点iB的三个拓扑单元CB,在指纹特征A中所有点iA的星型拓扑结构中搜索,比较iA的拓扑单元中的旋转无关属性,若搜索到有拓扑单元CA的旋转无关属性满足条件{lA,αA,βA,tA}-{lB,αB,βB,tB}<T,其中,T为一组给定的数组较小的阈值,T={Tl,Tα,Tβ,Tt}。则认为CA和CB为相似拓扑单元,将其加入相似拓扑单元集合S1。统计点iB的三个拓扑单元中,在指纹特征A中找到相似拓扑单元的个数,记录下个数最大的点iB及其对应的点iA。
为了加快搜索相似拓扑单元的速度,在搜索之前,首先将特征A的拓扑结构进行排序并构造相应索引表,具体为:
对于特征特征A的每个点i的星型拓扑结构,按照每个拓扑单元的距离属性l进行升序排序,用链表结构表示,如图4-1所示为点i的链表结构。
构造特征特征A的拓扑单元索引表F,该索引表的长度L为特征B中所有拓扑单元的长度属性最大值1+h,其中h为给定阈值。索引表的第k个元素的含义为:特征特征A的点i的排序后拓扑结构中,第一个距离属性l大于等于k的拓扑单元的序号。如图4-2所示。
拓扑单元CB在搜索相似拓扑单元的过程中,利用索引表,只需要比较序号在F[1-T1]和F[1+T1+1]-1之间的拓扑单元,从而减少了比较的拓扑单元个数,加快了速度。例:拓扑单元的距离属性为36,T1为3,则根据查索引表,需要在序号为F[33]和F[40]-1,即序号为10和序号为12的拓扑单元之间进行比较。如图4-1和图4-2所示。
步骤5、扩展指纹特征B的拓扑结构。
在步骤4中,相似拓扑单元个数最大的点iB及其对应的点iA,是指纹特征A和指纹特征B的所有细节点中,真正能匹配的可能性最大的点对,称其为可信参考点对{iA,iB}。则点iB与指纹特征B中其他所有点之间的拓扑单元,能在点iA的星形拓扑结构中找到更多相似拓扑单元的可能性较高。构造指纹特征B中点iB的星形拓扑结构,如图2-1所示。从而扩展了指纹特征B的拓扑结构。
步骤6、特征B中扩展后的拓扑单元在特征A的拓扑结构中搜索相似的拓扑单元,得到相似拓扑单元集合S2,S3=S1+S2。
搜索特征B中iB的星形拓扑结构中每个拓扑单元在特征A中iA的星形拓扑结构中搜索相似的拓扑单元,得到相似拓扑单元集合S2,合并集合S1和S2得到S3。
步骤7、对S3中的拓扑单元进行一致性筛选。得到相似拓扑单元集合S4。
集合S3中,相似拓扑单元的旋转相关属性γ的差Δγ,反应了指纹特征A和指纹特征B的整体旋转偏差,因此,S3中,真实的相似拓扑单元,它们的旋转相关属性差应该具有一致性。
统计集合S3中,相似拓扑单元的旋转相关属性γ的差Δγ的直方图分布。直方图用一个长度为360的一维数组{H
w,0≤w<360}表示,
其中K是集合S3的大小;g是关于w和Δγ
k的一个函数,
T
γ是一个预先给定的阈值,这里为10;f(x)是一个将x规范化到[0,360)的函数。
统计数组{Hw}取得最大值时,满足g(Δγk,w)=1的拓扑单元,则这些拓扑单元具有旋转一致性。即,去掉{Hw}取得最大值时,满足g(Δγk,w)=0的拓扑单元。得到旋转一致的相似拓扑单元集合S4。
步骤8、根据S4得到相似度。
统计S4中相似拓扑单元的个数即相似拓扑单元中旋转无关属性的差异,得到指纹特征A和指纹特征B的相似度S。
其中η={lA,αA,βA,tA}-{lB,αB,βB,tB};f(ηk)是一个将ηk规范化到0-1的一个函数;m和n分别是特征A和特征B的细节点个数;q是预先给定的阈值。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。