本发明涉及一种指纹图像方向场提取方法,特别涉及一种基于频率信息的指纹图像方向场提取方法。
背景技术:
在自动指纹识别系统中,指纹图像增强是一个非常重要的步骤。指纹图像增强的关键在于指纹图像方向场的提取。常用的指纹图像方向场提取方法有基于梯度的方法、基于滤波的方法和基于模型的方法。
文献“fingerprintimageenhancement:algorithmandperformanceevaluation,ieeetransactionsonpatternanalysisandmachineintelligence,1998,20(8):777-789”介绍了一种基于梯度的方向场计算方法。该方法在对图像进行归一化处理的基础上,将图像分为一系列互不重叠的尺寸大小相同的像素块。使用梯度算子—sobel算子计算块内每一个像素点的灰度变化梯度向量。利用得到的点梯度向量计算其所在块的梯度向量。将梯度向量转换为块方向,进而得到整幅指纹图像的方向场。最后使用低通滤波器对方向场进行平滑处理以修正错误方向。文献所述方法的核心在于块梯度向量的计算,其计算过程易受图像中噪声的干扰而产生错误的方向,鲁棒性低。尤其当指纹图像存在伤疤、褶皱等结构时,该方法会提取到错误的方向场。
技术实现要素:
为了克服现有指纹图像方向场提取方法在处理质量较差的指纹图像时准确度差的不足,本发明提供一种基于频率信息的指纹图像方向场提取方法。该方法首先对指纹图像进行分块,对每一个图像块分别进行去直流分量处理;再对去直流分量后的图像块进行傅立叶变换得到频谱图,通过图像块的频谱图得到对应的能量图,并对能量图进行计算得到指纹图像块的方向和频率;每个图像块根据周围图像块的方向和频率进行校正,得到最终的方向和频率。该方法能够有效避免指纹图像中噪声的干扰,在处理质量较差的指纹图像时,可以得到准确的方向场。
本发明解决其技术问题所采用的技术方案:一种基于频率信息的指纹图像方向场提取方法,其特点是包括以下步骤:
步骤一、输入大小为h×w的指纹图像i(x,y),其中h表示指纹图像i(x,y)的高度,w表示指纹图像i(x,y)的宽度,(x,y)表示指纹图像i(x,y)的坐标;
步骤二、对指纹图像i(x,y)进行分块处理,分成大小为m×n的图像块,相邻的两个图像块之间相互重叠,重叠区域的宽度为num像素,得到指纹图像块iij(x,y),其中i表示指纹图像块iij(x,y)位于指纹图像i(x,y)的第i行,j表示指纹图像块iij(x,y)位于指纹图像i(x,y)的第j列;
步骤三、计算指纹图像块iij(x,y)中所有像素值的平均值avg,构造一个大小为m×n的矩阵v(x,y),矩阵v(x,y)中每一点的值都为avg,使用矩阵v(x,y)对指纹图像块iij(x,y)进行去除直流分量处理,得到去除直流分量的图像d(x,y);对去除直流分量的图像d(x,y)进行傅立叶变换,得到频谱图f(x,y),对频谱图f(x,y)中每个点的像素值进行平方得到能量图e(x,y);
步骤四、在能量图e(x,y)中求取所有的能量极大值点,并按照能量值的大小对所有的能量极大值点进行降序排列,把这些排序后的能量极大值点放在队列qi中,其中i=1,2,...,n,n表示在能量图e(x,y)中能量极大值点的数目;
步骤五、计算队列qi中前两个点的方向oi和频率fi,其中i=1,2,并设置频率阈值th1;
步骤六、如果f1不大于频率阈值th1,则执行步骤七,否则,将指纹图像块iij(x,y)的方向o1(i,j)的大小置为o1,指纹图像块iij(x,y)的频率f1(i,j)的大小置为f1,执行步骤八;
步骤七、如果f2大于频率阈值th1,则将指纹图像块iij(x,y)的方向o1(i,j)的大小置为o2,指纹图像块iij(x,y)的频率f1(i,j)的大小置为f2,否则,将指纹图像块iij(x,y)的方向和频率分别置为常数a,a用来表示指纹图像块iij(x,y)的方向o1(i,j)和频率f1(i,j)不能通过计算队列qi中前两个点的方向oi和频率fi得到;
步骤八、重复进行步骤三至步骤七,求出所有的指纹图像块iij(x,y)的方向o1(i,j)和频率f1(i,j);
步骤九、对指纹图像块iij(x,y)的方向o1(i,j)和频率f1(i,j)进行第一次校正,得到指纹图像块iij(x,y)的方向o2(i,j)和频率f2(i,j);
步骤十、对指纹图像块iij(x,y)的方向o2(i,j)和频率f2(i,j)进行第二次校正,得到指纹图像块iij(x,y)最终的方向o3(i,j)和频率f3(i,j)。
本发明的有益效果是:该方法首先对指纹图像进行分块,对每一个图像块分别进行去直流分量处理;再对去直流分量后的图像块进行傅立叶变换得到频谱图,通过图像块的频谱图得到对应的能量图,并对能量图进行计算得到指纹图像块的方向和频率;每个图像块根据周围图像块的方向和频率进行校正,得到最终的方向和频率。该方法能够有效避免指纹图像中噪声的干扰,在处理质量较差的指纹图像时,可以得到准确的方向场。
下面结合附图和具体实施方式对本发明作详细说明。
附图说明
图1是本发明基于频率信息的指纹图像方向场提取方法的流程图。
图2是未经处理的指纹图像。
图3是经过本发明方法处理后指纹图像的方向场图。
具体实施方式
名词解释:
i(x,y):指纹图像;
h:指纹图像i(x,y)的高度;
w:指纹图像i(x,y)的宽度;
(x,y):指纹图像i(x,y)的坐标;
num:重叠区域的宽度;
iij(x,y):指纹图像块;
m:指纹图像块iij(x,y)的高度;
n:指纹图像块iij(x,y)的宽度;
nh:指纹图像i(x,y)在竖直方向上的分块个数;
nw:指纹图像i(x,y)在水平方向上的分块个数;
avg:指纹图像块iij(x,y)中所有像素值的平均值;
v(x,y):构造的矩阵;
d(x,y):去除直流分量的图像;
f(x,y):频谱图;
e(x,y):能量图;
qi:能量极大值点按照能量值大小降序排列后的队列;
δx:队列qi中点的横坐标到能量图e(x,y)中心的距离;
δy:队列qi中点的纵坐标到能量图e(x,y)中心的距离;
qix:队列qi中第i个点的x坐标值;
qiy:队列qi中第i个点的y坐标值;
xc:能量图e(x,y)中心点的x坐标值;
yc:能量图e(x,y)中心点的y坐标值;
oi:计算队列qi中前两个点得到的方向;
fi:计算队列qi中前两个点得到的频率;
th1:频率阈值;
o1(i,j):指纹图像块iij(x,y)的初始方向;
f1(i,j):指纹图像块iij(x,y)的初始频率;
a:标记是否得到指纹图像块iij(x,y)的初始方向o1(i,j);
o2(i,j):指纹图像块iij(x,y)经过第一次校正后的方向;
f2(i,j):指纹图像块iij(x,y)经过第一次校正后的频率;
th2:方向阈值;
o3(i,j):指纹图像块iij(x,y)经过第二次校正后最终的方向;
f3(i,j):指纹图像块iij(x,y)经过第二次校正后最终的频率。
参照图1-3。本发明基于频率信息的指纹图像方向场提取方法具体步骤如下:
步骤1,输入指纹图像。
以大小为h×w的指纹图像i(x,y)作为输入,本实例是在fvc(fingerprintverificationcompetition)2002指纹图像数据库中随机选取一幅指纹图像,其中h表示指纹图像i(x,y)的高度,w表示指纹图像i(x,y)的宽度,(x,y)表示指纹图像的坐标。
步骤2,对指纹图像i(x,y)进行分块处理,分成大小为m×n的图像块,相邻的两个图像块之间相互重叠,重叠区域的宽度为num像素,得到指纹图像块iij(x,y),其中i表示指纹图像块iij(x,y)位于指纹图像i(x,y)的第i行,j表示指纹图像块iij(x,y)位于指纹图像i(x,y)的第j列。
(2a)计算指纹图像i(x,y)分块个数:
其中nh表示指纹图像i(x,y)在竖直方向上的分块个数,nw表示指纹图像i(x,y)在水平方向上的分块个数,本实施例中m=24,n=24,num=12。若nh为小数,则需要在指纹图像i(x,y)的竖直方向两端均匀补像素值为0的像素,使nh变为整数。若nw为小数,则需要在指纹图像i(x,y)的水平方向两端均匀补像素值为0的像素,使nw变为整数;
(2b)将指纹图像i(x,y)分成大小为24×24像素的指纹图像块iij(x,y),其中i=1,2,...,nh,j=1,2,...,nw,相邻的两个图像块之间相互重叠,重叠区域的宽度为num像素,本实施例中num=12。
步骤3,对指纹图像块iij(x,y)进行去除直流分量处理,得到去除直流分量的图像d(x,y);对去除直流分量的图像d(x,y)进行傅立叶变换,得到频谱图f(x,y),对频谱图f(x,y)中每个点的像素值进行平方得到能量图e(x,y)。
(3a)计算图像iij(x,y)中所有像素值的平均值:
其中avg表示指纹图像块iij(x,y)中所有像素值的平均值,m表示指纹图像块iij(x,y)的高度,本实施例中m=24,n表示指纹图像块iij(x,y)的宽度,本实施例中n=24,mn表示m和n两个数相乘;
(3b)对指纹图像块iij(x,y)中每一个像素值分别减去avg,得到去除直流分量的图像d(x,y):
d(x,y)=iij(x,y)-v(x,y),
其中v(x,y)为大小为24×24的矩阵,每一个点的值的大小都为avg;
(3c)计算能量图e(x,y):
e(x,y)=f(x,y)·f(x,y),
其中符号·表示两个矩阵中对应的点的值相乘。
步骤4,在能量图e(x,y)中求取所有的能量极大值点,并按照能量值的大小对所有的能量极大值点进行降序排列,把这些排序后的能量极大值点放在队列qi中,其中i=1,2,...,n,n表示在能量图e(x,y)中能量极大值点的数目。
(4a)对能量图e(x,y)中符合x=2,3,...,23,y=2,3,...,23的每一个点,判断它的像素值的大小是否比这个点周围8个点的像素值都大,如果是,则这个点为能量极大值点,否则这个点不是能量极大值点;
(4b)对所有的能量极大值点按照能量的大小进行降序排列,把这些排序后的能量极大值点放在队列qi,其中i=1,2,...,n。
步骤5,计算队列qi中前两个点的方向oi和频率fi,其中i=1,2。
(5a)计算队列qi中点的横坐标到能量图e(x,y)中心的距离δx和队列qi中点的纵坐标到能量图e(x,y)中心的距离δy:
qix表示队列qi中第i个点的x坐标值,xc代表能量图e(x,y)中心点的x坐标值,本实施例中xc=13,qiy表示队列qi中第i个点的y坐标值,yc代表能量图e(x,y)中心点的y坐标值,本实施例中yc=13;
(5b)计算队列qi中的点代表的方向oi:
oi表示队列qi中第i点代表的方向,oi的取值范围改到[0,π),arctan表示反正切函数;
(5c)计算队列qi中的点代表的频率fi:
fi表示队列qi中第i点的代表的频率,s表示能量图e(x,y)的大小,本实施例中s=24。
步骤6,设置的频率阈值th1,本实施例中
步骤7,如果f2大于给定的频率阈值th1,则将指纹图像块iij(x,y)的方向o1(i,j)的大小置为o2,指纹图像块iij(x,y)的频率f1(i,j)的大小置为f2,否则将指纹图像块iij(x,y)的方向和频率分别置为a,a用来表示指纹图像块iij(x,y)的方向o1(i,j)和频率f1(i,j)不能通过计算队列qi中前两个点的方向oi和频率fi得到,本实施例中a=-1。
步骤8,重复进行步骤(3)~(7)求出所有的指纹图像块iij(x,y)的方向o1(i,j)和频率f1(i,j)。
步骤9,对指纹图像块iij(x,y)的方向o1(i,j)和频率f1(i,j)进行第一次校正,得到指纹图像块iij(x,y)的方向o2(i,j)和频率f2(i,j)。
(9a)判断指纹图像块iij(x,y)是否为指纹图像i(x,y)的边缘的块,即是否满足i=1或i=nh或j=1或j=nw四个条件中任意一个,若不是,则执行步骤(9b),若是,则计算方向o2(i,j)和频率f2(i,j):
(9b)判断指纹图像i(x,y)中每一个指纹图像块iij(x,y)的方向o1(i,j)是否为a,本实施例中a=-1,若是,则计算方向o2(i,j)和频率f2(i,j):
其中i=2,3,...,nh-1,j=2,3,...,nw-1,c和d不同时为0;
若不是,则计算方向o2(i,j)和频率f2(i,j):
其中i=2,3,...,nh-1,j=2,3,...,nw-1。
步骤10,对指纹图像块iij(x,y)的方向o2(i,j)和频率f2(i,j)进行第二次校正,得到指纹图像块iij(x,y)最终的方向o3(i,j)和频率f3(i,j)。
(10a)判断指纹图像块iij(x,y)是否为指纹图像i(x,y)的边缘的块,即是否满足i=1或i=nh或j=1或j=nw四个条件中任意一个,若不是,则执行步骤(10b),若是,则计算方向o3(i,j)和频率f3(i,j):
(10b)将指纹图像块iij(x,y)的方向o2(i,j)与周围8个图像块的方向进行比较,其中i=2,3,...,nh-1,j=2,3,...,nw-1。判断该图像块iij(x,y)的方向o2(i,j)是否和周围8个图像块的方向差的绝对值都大于给定的方向阈值th2,本实施例中
其中i=2,3,...,nh-1,j=2,3,...,nw-1,c和d不同时为0;
若不是,则计算方向o3(i,j)和频率f3(i,j):
其中i=2,3,...,nh-1,j=2,3,...,nw-1。
本发明的效果可通过以下仿真进一步说明:
1仿真条件
在pc机的matlab2014a环境下进行仿真,pc机配置corei7处理器,主频为3.4-ghz。仿真的图像来自fvc(fingerprintverificationcompetition)2002指纹数据库db1中的7_8.gif,这个数据库是国际公认的一个指纹识别数据库。
2仿真内容与分析
采用本发明提出的方法对指纹图像进行提取指纹图像方向场实验。图3为最终得到的指纹图像的方向场示意图,其中连续的黑色虚线代表提取出的指纹方向场。
本发明能够快速准确地提取出指纹图像的方向场,降低指纹图像中噪声的影响。在指纹图像的伤疤处也可以得到准确的方向信息。使用本发明提取的方向场对指纹图像进行增强可以有效地将指纹图像中脊线的断裂处连接起来,从而可以大大减少伪细节点的产生,提高指纹的识别精度。