[0046] 第二步,对指纹图像1进行均衡化处理。用直方图均衡化方法,该方法是图像处理领域内的通用方法。直方图均衡化的数学公式为:
[0047]
[0048] 其中x表示灰度值,在0-255之间。f(x)表示指纹图像1中灰度值为x的点将灰度值调整到f(x)。Dmax=255,A0=m×m,Hi=指纹图像1中灰度值为i的点的个数。
[0049] 处理完成后,获得指纹图像2;
[0050] 第三步,对指纹图像2进行图像收敛处理。用二维离散高斯模板算子对指纹图像2进行高斯滤波处理,即图像收敛处理。该方法是图像处理领域内的通用方法。二维离散高斯模板算子可取多套,作为示例取
[0051]
[0052] 计算公式为
[0053]
[0054] f(x,y)表示指纹图像2中坐标为(x,y)的点所对应的灰度值。
[0055] 处理完成后,获得指纹图像3;
[0056] 第四步,对指纹图像3进行图像平滑处理。用平滑模板算子对指纹图像3进行图像平滑处理。该方法是图像处理领域内的通用方法。平滑模板算子可取多套,作为示例取[0057]
[0058] 计算公式为
[0059]
[0060] f(x,y)表示指纹图像3中坐标为(x,y)的点所对应的灰度值。
[0061] 处理完成后,获得指纹图像4;
[0062] 第五步,对指纹图像4进行图像增强处理。用Gabor函数模板对指纹图像4进行图像增强处理。该方法是图像处理领域内的通用方法。Gabor函数模板可取多套,作为示例取[0063]
[0064]
[0065] Hw为切向滤波模板,Vw为法向滤波模板。
[0066] 用图像处理领域内的通用算法,求出指纹图像4的方向场矩阵VMAP。VMAP[x,y]表示坐标为(x,y)的点所对应的方向场值,取值从0°~180°。
[0067] 用VMAP[x,y]的值确定坐标为(x,y)的点的切线方向,并取切线方向上与(x,y)点相邻的7个点,每个点用f(x,y)表示。f(x,y)表示指纹图像4中坐标为(x,y)的点所对应的灰度值。f(x,y)与Hw做卷积运算,运算结果赋值给f1(x,y)。
[0068] 用VMAP[x,y]的值确定坐标为(x,y)的点的法线方向(切线方向顺时针旋转90°即为法线方向),并取法线方向上与(x,y)点相邻的7个f1(x,y)点,与Vw做卷积运算,运算结果赋值给f2(x,y)。f1(x,y)为指纹图像4经切线方向增强后,(x,y)点所对应的灰度值。
[0069] 处理完成后,获得指纹图像5;
[0070] 第六步,对指纹图像5进行二值化处理。二值化处理使用切线与法线方向的加权模板计算图像像素点在两个方向上的加权均值,通过比较两个方向上的均值大小,判定该图像像素点为0或1。加权模板可取多套,作为示例取
[0071] Hq=(1 1 1 1 1 1 1)
[0072] Vq=(2 2 3 4 3 2 2)
[0073] Hq为切向加权模板,Vq为法向加权模板。
[0074] 用加权模板计算坐标为(x,y)的点在切线与法线方向上的灰度均值分别为FH(x,y)、FV(x,y),二值化公式为
[0075]
[0076] f(x,y)表示指纹图像5中坐标为(x,y)的点所对应的灰度值。f(x,y)值为0为黑色,255为白色。
[0077] 处理完成后,获得指纹图像6;
[0078] 第七步,对指纹图像6进行细化处理。图像处理领域有多套成熟的图像细化方法,均可使用。作为示例,可取查表法。查表法为图像细化处理领域通用方法。
[0079] 处理完成后,指纹纹线已细化为一个点宽的纹线,获得指纹图像7;
[0080] 第八步,从指纹图像7中提取指纹特征端点、叉点,去除伪端点、叉点,用二维笛卡尔坐标系记录指纹特征端点、叉点坐标。
[0081] 端点提取方法:扫描指纹图像7中点的周围8个点,如果8个点所有相邻两个点的差的绝对值的和为2×255,则其为端点。
[0082] 叉点提取方法:扫描指纹图像7中点的周围8个点,如果8个点所有相邻两个点的差的绝对值的和为6×255,则其为叉点。
[0083] 端点、叉点提取方法为指纹图像处理领域通用方法。
[0084] 伪端点、叉点去除方法:去除方法流程如图3所示。如提取的端点坐标在指纹图像边缘20个像素点范围内,去除;如提取的端点与叉点方向变化剧烈,其为伪特征点,去除;方向变化剧烈可有多种判别方法,作为示例,可将(x,y)点周围7×7领域内画一条闭合折线,折线经过的两点计算方向场差值的绝对值并累加,如图4所示;如累加和>90,则认为方向变化剧烈,(x,y)点为伪特征点,去除;如特征点间距离小于10个像素,随机去除一个特征点。
[0085] 记录指纹特征端点、叉点坐标值,不记录特征点性质,即不区分端点、叉点。图5为提取到的指纹图像特征点示意图,特征点有方框标出。
[0086] 第九步,将采集的指纹样本图像依次进行特征配准,配准时将端点、叉点视为同一性质的特征点;指纹特征点配准有多套通用方法可供选择,作为示例可选:
[0087] 记录特征点的坐标值、方向场、频率场,如果两个特征点的坐标值、方向场、频率场均在可接受的差值范围内,判定两特征点为同一特征点。频率场计算方法使用指纹图像处理领域的频率场通用计算方法。
[0088] 两幅图像可配准的特征点登记为该枚指纹的真实特征点,同一个真实特征点在两幅图像中可能有两组不同的坐标值(x1,y1)(x2,y2),取两组坐标值的均值(Ex,Ey),记录为该真实特征点的坐标值;配准好的特征点与后一副图像再次进行特征配准;配准完毕得到真实特征点集合,如图6(a)所示,真实特征点由方框标出。
[0089] 第十步,为每个真实特征点构造两个矩阵,D1×D1维的随机误差方阵,记为DXi,D1×2维的特征点标准坐标值矩阵,记为DYi,i遍历所有的真实特征点;D1取值可在13–42之间根据经验选取;
[0090] DXi的构造方法为:
[0091] 设定特征点坐标值的波动范围Er,如Er=10;为真实特征点坐标值增加随机误差扰动,计算公式如下
[0092] Xj=Ex+Er×rand(0,1)
[0093] Yj=Ey+Er×rand(0,1)
[0094] j取1至D1,rand(0,1)函数返回(0,1)之间的随机数;(Xj,Yj)组成一个行向量,遍历j得D1×2维矩阵。构造D1-2个非线性函数,输入是一维行向量(Xj,Yj),2个元素;输出为一维行向量(Xj,Yj,Z1j,Z2j,Z3j,…,Z(D1-2)j),D1个元素。非线性函数可由用户自行定义,作为示例,可取如下非线性函数
[0095] Z(t)=(Xj-Yj)×sin(t)+(t^2)×(Yj%10)(t为整数,0
[0096] sin(t)三角函数,(t^2)表示t的平方,(Yj%10)表示Yj模10运算。
[0097] 用构造的Z(t)对(Xj,Yj)进行运算,得D1×D1维矩阵,称为随机误差方阵DXi。
[0098] DYi的构造方法为:
[0099] 将第九步中获得的(Ex,Ey)值重复D1行,得D1×2维的特征点标准坐标值矩阵DYi。
[0100] 第十一步,求解DXi的广义逆矩阵,记为IDXi。用满秩分解法求解广义逆矩阵,满秩分解法为数学上求广义逆的标准解法。
[0101] 将IDXi左乘矩阵DYi得到对应每个真实特征点的高维空间投影矩阵PDXi=IDXi×DYi,在待认证用户端存储每个真实特征点的投影矩阵PDXi;投影矩阵PDXi不含指纹模板信息。
[0102] 第十二步,以指纹图像几何中心为原点,选取离原点距离最近的K个真实特征点(要求各特征点之间有一定的间距,如特征点相距过近则认为是一个特征点,取其平均值;间距可凭经验设定,一般设定为10个像素点)。
[0103] 设定一个8-22阶的多项式函数,阶数越高,生成的生物密钥序列越长,安全性越高;但同时,运算量大幅增加,提取密钥序列时对指纹真实特征点的个数要求提高,提取失败率增高。一般阶数取10左右。
[0104] 多项式函数形如f(x)=a0+a1*x+a2*x2+a3*x3+…+an*xn,n为阶数,a0~an为系数,∈正整数,在真实特征点集合中选取n+t个特征点,将特征点的(x,y)坐标拼接为一个值z=x|y,z∈正整数,代入多项式函数求得函数值f(z),在待认证用户端存储n+t个f(z)的值及阶数n;2
[0105] 指纹生物密钥训练完成。
[0106] 指纹生物密钥提取部分具体步骤为:
[0107] 第一步至第九步,操作方法与指纹生物密钥训练阶段相同。
[0108] 第十步,所有备选真实特征点的坐标值以行排列,构造一个M1×2维矩阵,M1为备选真实特征点的数目;将M1×2维矩阵扩展为M1×D1维矩阵(记为AX),扩展方法与指纹生物密钥训练阶段扩展方法保持一致;开启循环,用AX左乘每一个PDXi,得M1×2维矩阵RAXi=AX×PDXi;从RAXi中挑选出该枚指纹的真实特征点,挑选方法为:
[0109] 以行为单位考察AX与RAXi,如在同一行中,AX前2列的值与RAXi相应列的值的差值小于20,则认为这一行对应的备选特征点是真实特征点。记录真实特征点在RAXi中的坐标值;
[0110] 第十一步,同一枚指纹在采集过程中会产生各种几何变形,随机误差,如图6(b)所示,使得指纹图像特征点位置不稳定,两幅图像匹配的特征点个数也不稳定。本发明的第九、第十步用高维矩阵投影的方法,稳定指纹图像特征点位置,提取到较稳定的真实特征点坐标值,参考图6(c)。用提取到的真实特征点坐标值,代入线性方程组求解指纹生物密钥。具体方法为:
[0111] 从真实特征点集合中,选取n+2个特征点。将特征点(x,y)坐标值拼接为一个值z=x|y,z∈正整数,将n+2个z值排序。从指纹生物密钥训练阶段存储的n+t个f(z)值中选取n+2个值,将n+2个f(z)值排序。将z值序列与f(z)值序列按序配对,得到n+2个(z,f(z))对,代入函数f(z)=a0+a1*z+a2*z2+a3*z3+…+an*zn,生成n+2个线性方程,组成线性方程组。a0~an为n+1个未知数,a0~an∈正整数,如方程组有唯一解,则解得的(a0,a1,a2,a3,。。。,an)组成的数字序列即为提取的指纹生物密钥。密钥序列长度为24×(n+1)bit。如方程组没有唯一解,则遍历真实特征点集合中n+2个特征点的所有组合,遍历n+t个f(z)值中n+2个f(z)值的所有组合;配对;继续解线性方程组;找到唯一解,提取指纹生物密钥。
[0112] 本技术领域中的普通技术人员应当认识到,以上实施例仅是用来说明本发明,而并非作为对本发明的限定,只要在本发明的实质范围内,对以上实施例的变化、变型都将落在本发明的保护范围。