一种基于十进制映射查询表的掌纹识别方法与流程

文档序号:14266384阅读:121来源:国知局
一种基于十进制映射查询表的掌纹识别方法与流程

本发明属于掌纹识别技术领域,特别涉及一种基于十进制映射查询表的掌纹识别方法。



背景技术:

随着近年互联网+的理念越来越流行,个人信息的安全性也变的越来越重要,传统的身份认证方式,如钥匙,密码等,存在容易丢失、易被盗取、易被破解等危险,为了提高安全性,生物识别技术逐步进入了人类的生活之中。相比较于传统识别方法使用依赖个人持有或者记忆的标识进行身份识别,生物识别技术使用人类固有的生理特征或者行为特征进行身份识别,具有稳定性强,区别性高,采集容易等优点。

掌纹识别是近几年提出的一种较新的生物特征识别技术。掌纹中含有丰富的主线、皱纹、细小的纹理、脊末梢、分叉点等都可以用来进行身份识别,显然掌纹识别作为身份识别与认证方式具有一定的便捷性和可靠性。但是掌纹图像是稀有资源,一个人只有两个手掌,大部分人的手掌具有对称性,并且随着年龄的增长,掌纹的基本纹路结构并不再发生变化。考虑到现今身份认证场景的普遍性,同一用户相同特征的掌纹生物特征很可能保存和共享于多个数据库中。如果用户在一个数据库中的掌纹生物特征被成功窃取,则此用户保存在其他数据库中的掌纹生物特征都不再安全,掌纹中含有的个人隐私很有可能被泄露,其也适合再被用于其它认证系统。因此研究安全的掌纹识别认证技术是非常必要的。



技术实现要素:

本发明要解决的技术问题是,提供一种基于十进制映射查询表的掌纹识别方法,提高掌纹识别的安全性以及掌纹识别的识别准确性和计算识别效率或者速度。

为解决上述技术问题,本发明所采用的技术方案是:

一种基于十进制映射查询表的掌纹识别方法,包括以下步骤:

s1:获取若干原始掌纹图像,提取每个原始掌纹图像的roi图像,将所述roi图像转换成零一特征矩阵;

s2:对于每个零一特征矩阵,将其所有行向量整合成一行零一数组或者将其所有列向量整合成一列零一数组;

s3:将步骤s2产生的每个零一数组行或者零一数组列进行等分块,每个分块的码字长度为ω,并将各个分块数组转换成十进制数;

s4:若步骤s3中为零一数组行分块,则根据分块大小随机产生一个二值查询表,查询表的行数等于2ω,列数为ω,记为第一查询表;若为零一数组列分块,则根据分块大小随机产生一个二值查询表,查询表的行数为ω,列数为2ω,记为第二查询表;所述第一查询表的行数以及第二查询表的列数自零开始;

s5:在第一查询表中随机选取d(d≤ω)列,对于由零一数组行得到的任一分块数组,根据其对应十进制数在第一查询表中选取相应行,并在该行中选取属于前述d列的d个比特数;

或者,

在第二查询表中随机选取d(d≤ω)行,对于同一零一数组列得到的任一分块数组,根据其对应十进制数在第一查询表中选取相应列,并在该列中选取属于前述d行的d个比特数;

由同一零一数组行或者零一数组列的所有分块所选取的所有比特数组成作为该零一数组行或零一数组列来源的原始掌纹图像的掌纹特征数组阵;

s6:对于待识别掌纹图像,通过步骤s1至s5得到其掌纹特征数组阵;

s7:将待识别掌纹图像的掌纹特征数组阵与原始掌纹图像的掌纹特征数组阵进行距离匹配识别。

在上述技术方案中,查询表随机产生特性能够保证其应用于不同的识别场景中,通过不同分块大小以及利用不同选取方式而得到的不同的查询比特,会产生不同的掌纹特征数组阵。该方法产生的掌纹特征数组阵能够满足不可逆性,多样性、可撤销性,有利于提高识别的安全性、精确度和识别速度。

本方法利用掌纹特征数组阵进行识别认证,不再直接使用掌纹主线、皱纹、细小的纹理、脊末梢、分叉点等掌纹生物特征。即使掌纹特征数组阵被盗取,其不可逆性保证了,无法通过掌纹特征数组阵还原原始掌纹图像。其多样性保证了所能够产生的掌纹特征数组阵的数量足够多,即使是将同一原始掌纹应用于多个识别场景,也能够保证不同的识别场景可以分配到不同的或者是随机的掌纹特征数组阵,不同的识别场景之间不产生关联性。即使多个识别场景或者数据库中的掌纹特征数组阵被盗,也不能通过交叉匹配的方式还原原始掌纹。其可撤销性保证了即使掌纹特征数组阵被盗,可通过改变查询表或者改变分块大小或者改变查询比特等方式产生新的安全的掌纹特征数组阵用于掌纹识别认证。

本方法应用距离匹配进行掌纹识别,距离匹配适用于实时的识别匹配,识别精确度高,识别速度快,从而保证了本方法的识别性能。

作为改进,在上述的步骤s1中,首先构造如下的gabor滤波器:

其中,x'=(x-x0)cosθ+(y-y0)sinθ,y'=-(x-x0)sinθ+(y-y0)cosθ,(x0,y0)表示滤波器中心点,ω表示径向频率,θ表示滤波器角度,δ表示频率响应的半幅带宽;

竞争规则定义为:

argminj(i(x,y)*ψr(x,y,w,θj))

其中,i是roi图像,ψr是gabor滤波器的实部,θj是滤波器角度,j={0,1,2,3,4,5}表示滤波器选取的的六个角度。

然后将产生的竞争码特征矩阵转化成相应的二值特征矩阵。

gabor小波与人类视觉系统中简单细胞的视觉刺激响应非常相似。它在提取目标的局部空间和频率域信息方面具有良好的特性。gabor小波对于图像的边缘敏感,能够提供良好的方向选择和尺度选择特性,而且对于光照变化不敏感,能够提供对光照变化良好的适应性。

作为改进,所述距离为汉明距离,表示如下:

其中h表示最终的汉明距离,m,n代表掌纹特征数组阵的行数和列数,f表示掌纹特征数组阵。运用汉明距离匹配可以有效减少匹配识别计算时的复杂度。

综上,本发明既能够提高掌纹识别的安全性,又能够提高掌纹识别的识别准确性以及计算识别效率或者速度。

附图说明

图1是本发明具体实施方式中十进制映射查询表示意图。

图2是本发明具体实施方式中仿真实验的roc曲线图。

具体实施方式

该基于十进制映射查询表的掌纹识别方法,包括以下步骤:

s1:采用合适方式(例如拍照、扫描等方式)获取若干原始掌纹图像,这些原始掌纹图像来自于若干个体。在不同场景下,所选取的若干个体可能不同,并且这若干个体是作为后续的识别参照。

提取出每个原始掌纹图像的roi图像。在进行roi图像提取时,可以采用如下方式:

对于任一原始掌纹图像,将该原始掌纹图像进行二值化处理得到二值图像,在二值图像中提取手掌外边缘轮廓并检测食指、中指之间和无名指、小指之间形成的角点(手指与手指之间的凹陷处即为角点),以两角点的连线作为纵轴,从两角点的中点向纵轴作垂线,将垂线作为横轴,以纵轴和横轴的交点作为坐标原点,坐标原点与纵轴、横轴形成新坐标系,在新的坐标系下,在原始掌纹图像上截取大小为128×128像素的掌纹区域作为roi图像。

将每个roi图像转换成零一特征矩阵。

具体来说,对于每个roi图像,可以采取以下方式将其转换成零一特征矩阵:

(1)首先构造如下的gabor滤波器:

其中,x'=(x-x0)cosθ+(y-y0)sinθ,y'=-(x-x0)sinθ+(y-y0)cosθ,(x0,y0)表示滤波器中心点,ω表示径向频率,θ表示滤波器角度,δ表示频率响应的半幅带宽;

竞争规则定义为:

argminj(i(x,y)*ψr(x,y,w,θj))

其中,i是预处理后的图像,ψr是gabor滤波器的实部,θj是滤波器角度,j={0,1,2,3,4,5}表示滤波器选取的的六个角度;

然后将产生的竞争码特征矩阵转化成相应的二值特征矩阵,即零一特征矩阵。

竞争码特征矩阵里面的数值都是1-6的值,将其转化成3位的二进制数值形成二值特征,例如3转化成011,6转化成110。

(2)还可以采用随机投影方式。产生一个随机投影矩阵,将随机投影矩阵左乘roi图像,并进行归一化;接着再生成一个随机投影矩阵,并进行归一化;然后将第一个随机投影矩阵左乘roi图像的归一化结果与第二个随机投影矩阵的归一化结果逐值比较大小,将前者大于后者的位置上的值置为零,其余位置上的值置为1,或者将前者大于后者的位置上的值置为1,其余位置上的值置为0,从而得到零一编码矩阵。

通过步骤s1,每个原始掌纹图像(或者roi图像)对应产生一个零一特征矩阵,且所使用的方式相同,即要么都使用滤波器、竞争码方式,要么都使用随机投影方式,或者都使用其他合适方式。

s2:对于每个零一特征矩阵,将其所有行向量整合成一行零一数组或者将其所有列向量整合成一列零一数组,从而由每个零一特征矩阵要么得到一个零一数组行(即一行零一数组),要么得到一个零一数组列(即一列零一数组),且所有零一特征矩阵统一得到零一数组行或者零一数组列。

s3:将步骤s2产生的每个零一数组行或者零一数组列进行等分块,每个分块的码字长度为ω,并将各个分块数组转换成十进制数;例如当ω=3时,若某一个分块后的码组为101(可能为行分块后的码组或者列分块后的码组,在此统一表示为101),则对其转化成十进制数5。

s4:若步骤s3中为零一数组行分块,则根据分块大小随机产生一个二值查询表,查询表的行数等于2ω,列数为ω,记为第一查询表;若为零一数组列分块,则根据分块大小随机产生一个二值查询表,查询表的行数为ω,列数为2ω,记为第二查询表;第一查询表的行数以及第二查询表的列数自零开始。例如当ω=4时,产生一个16行、4列的第一查询表或者4行、16列的第二查询表,第一查询表和第二查询表中的数均为0或1,第一查询表的行数为0到15,第二查询表的列数为0到15。

s5:若步骤s3中为零一数组行分块,则在第一查询表中随机选取d(d≤ω)列,对于由零一数组行得到的任一分块数组(即各个小分块),根据其对应十进制数在第一查询表中选取相应行,并在该行中选取属于前述d列的d个比特数(即0,1数)。

例如,若ω=4,并在第一查询表中随机选取到第2行和第3列,某一个分块数组对应的十进制数为5,则定位到第一查询表的第5行以及第2、3列,从而得到两个比特数。

经过上述方式,零一数组行分块后的每个分块数组均得到d个比特数,记为比特数块。

若步骤s3中为零一数组列分块,则在第二查询表中随机选取d(1≤d≤ω)行,对于由零一数组列得到的任一分块数组(即各个小分块),根据其对应十进制数在第一查询表中选取相应列,并在该列中选取属于前述d行的d个比特数(即0,1数)。

例如,若ω=4,并在第二查询表中随机选取到第2行和第3行,某一个分块数组对应的十进制数为5,则定位到第一查询表的第5列以及第2、3行,从而得到两个比特数。

同样,经过上述方式,零一数组列分块后的每个分块数组得到d个比特数,记为比特数块。

对于任一个零一数组行来说,将由其所有分块数组所选取到的比特数块按第一查询表中的所在行数进行排列,得到一行零一比特数组,或者说是一个行数为1的矩阵。由一个零一数组行所得到的这一行零一比特数组也就成为作为该零一数组行来源的原始掌纹图像的掌纹特征数组阵。

同样的,对于任一个零一数组列来说,将由其所有分块数组所选取到的比特数块按第二查询表中的所在列数进行排列,得到一列零一比特数组,或者说是一个列数为1的矩阵。由一个零一数组列所得到的这一列零一比特数组也就成为作为该零一数组列来源的原始掌纹图像的掌纹特征数组阵。

下面通过一个例子进行进一步说明。

如图1所示,若由某一原始掌纹图像i产生了一个零一特征矩阵,则这个零一特征矩阵的所有行向量整合成一行零一数组。对这一行零一数组进行分块,每个分块的码字长度为4,得到6个分块,从第1到第6个分块数组分别对应十进制数7、2、10、13、9、5。随机产生一个行数为16,列数为4的第一查询表,第一查询表的行数为0到15,第一查询表中的数为0或1,并选定第一查询表的第2列和第3列。

分别定位第一查询表的第2、5、7、9、10、13行中的与第2列和第3列交叉的比特数,得到6个比特数块“01”“10”“10”“10”“10”“01”,将这6个比特数块按照所在行数进行排列,得到一行比特数组“011010101001”,这一行比特数组即成为原始图像i的掌纹特征数组阵。

对于将零一特征矩阵整合成一列零一数组的情况可同理得到一列比特数组,这一列比特数组也可以成为原始图像i的掌纹特征数组阵。

对于选定的第一查询表的列数以及第二查询表的行数可以根据需要选择,例如上述例子中选了2列,还可以选择1列或者3列或者4列,从而得到的比特数块中的比特数个数会有变化,其他同上述例子相同。

s6:对于待识别掌纹图像,同样经过步骤s1得到零一特征矩阵,且待识别掌纹图像得到零一特征矩阵的方式与各个于是掌纹图像相同。

若原始掌纹图像的零一特征矩阵都进行了行向量整合,那么对于待识别掌纹图像的零一特征矩阵也进行行向量整合,并通过步骤s2至s5得到待识别掌纹图像的掌纹特征数组,其中待识别掌纹图像使用与原始掌纹图像相同的第一查询表并选定相同列。

s7:将待识别掌纹图像的掌纹特征数组阵分别与各个原始掌纹图像的掌纹特征数组阵进行汉明距离匹配识别和分类,其中步骤s1中每个个体作为一类。

表示如下:

其中h表示最终的汉明距离,m,n代表掌纹特征数组阵的行数和列数,f表示掌纹特征数组阵。

在运用汉明距离匹配时,我们设定了一个阈值,若待识别掌纹特征数组阵到各个所得到的原始掌纹图像的掌纹特征数组阵的距离均达到或者超过该阈值,则识别被拒绝,即识别认证不通过。若部分或者全部距离小于该阈值,则在识别通过的基础上判断出待识别者属于距离最小的一类。因而如果我们如果已经获知这些原始掌纹图像来源个体的身份,那么在进行识别分类时,不仅可以确定待识别个体的识别是否通过,还可以在识别通过的基础上确定待识别个体的身份(即属于哪一类)。

若是利用本方法来构建识别系统,则识别系统的数据库中只需存储掌纹特征数组阵,无需存储掌纹图像。即使掌纹特征数组阵被盗取,其不可逆性保证了,无法通过掌纹特征数组阵还原原始掌纹图像。其多样性保证了所能够产生的掌纹特征数组阵的数量足够多,即使是将同一原始掌纹应用于多个识别场景,也能够保证不同的识别场景可以分配到不同的或者是随机的掌纹特征数组阵,不同的识别场景之间不产生关联性。即使多个识别场景或者数据库中的掌纹特征数组阵被盗,也不能通过交叉匹配的方式还原原始掌纹。其可撤销性保证了即使掌纹特征数组阵被盗,可通过改变查询表或者改变分块大小或者改变查询比特等方式产生新的安全的掌纹特征数组阵用于掌纹识别认证。

本方法还进行了仿真实验,仿真实验是利用香港理工大学公开的掌纹数据库进行的。该数据库中共包含600张大小为384×284的掌纹图像,采自于100个人,每人6张。每个人的6张掌纹图像采自于两个不同的时期,时间间隔是两个月。

在实验中,产生的零一特征矩阵大小为32×64,并进行行向量整合,然后在分块时选择的ω=8,d=4,随机产生的查询表大小为28行,8列,并随机选取两列,最终生成的掌纹特征数组阵的大小为一行,512比特。在实验中同一个人的同一手掌的图像进行匹配为类内匹配,不用人之间或者同一人的不同手掌之间进行匹配为类间匹配。实验总共进行了179700次匹配,其中1500次为类内匹配,178200次为类间匹配,实验的错误接受率(far)和真正接受率(gar)的曲线图(roc曲线)如图2所示。从图中可以看出roc曲线是一条直线,说明识别率是100%,得到了很好的识别效果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1