指纹辨认作为生物辨认的一种,因其具有唯一性和稳定性,在身份辨认上有着其他手法不行比较的优势。跟着指纹传感器功能的进步和价格的下降,指纹的收集越来越简单,指纹辨认算法也已比较老练。传统的指纹辨认体系一般以PC机和DSP为首要处理渠道。跟着人们对便携设备的安全性要求越来越高,传统的处理体系在功耗和处理速度及实时性上现已不能满意需要。
指纹辨认体系在很大程度上依托指纹图画的质量。在实践运用中因为收集条件和收集设备的要素,收集到的指纹质量比较差,含有许多噪声,简单导致许多问题,影响后续处理的作用。所以在对指纹特征提取前,有必要进行一系列的预处理,改善输入指纹图画的质量,为后续处理奠定根底。
本文在进行多方面比较和证明的根底上,选取较优化的预处理算法,作为FPGA指纹预处理渠道的算法。并用FPGA完成所选算法。
1 处理进程
本体系选用XILINX公司Spartan 3E系列FPGA作为中心操控芯片,通过富士通公司的MBF200指纹传感器完成对指纹图画的收集,运用CPLD进行接口传输。FPGA通过读取SDRAM中的指纹数据,在其逻辑单元中进行灰度值归一化、图画切割、滤波、二值化、细化等,然后获得重要的指纹图画信息,以便与指纹模板库进行比照。体系模块图如图1。图2是收集到的指纹图画。
2 灰度值归一化
指纹图画归一化的意图是把指纹图画的均匀灰度和比照度调整到一个固定级别上,以削减不同指纹图画上的差异。归一化并不改动指纹脊线和谷线的明晰度,仅仅消除样本收集因外界要素构成的影响,为后续处理供给一致规范的图画。
把图画分为w×w的子块,关于每一子块求其灰度均值Mi和方差Vi。子块灰度均值和方差的核算如下:
用FPGA完成上述算法的难点在于核算Var0。而核算希望的关键是求得每个像素的概率,即求子块中每个像素呈现的次数。考虑到FPGA的硬件结构选用并行比较的办法能够便利求出I(i,j)的概率,本次规划w取为3。完成模块选用图3所示。
3 图画切割
图画辨认的根底是图画切割,其作用是把反映物体真实情况的、占有不同区域的、具有不同特征的方针区别开来,并构成数字特征。图画切割的好坏直接影响后续图画处理的作用,乃至决议其胜败。切割算法至今已有上千种,每年还有不少新算法呈现,但是大都依据图画在像素级的两个性质:不连续性和相似性。
笔者研讨了Mehtre等提出的依据脊线方向的部分直方图的切割办法;Rarha,chen和Jain提出的依据垂直于脊线方向的灰度方差区别远景与布景的办法;Maio和Maltoni提出的运用每一子块的均匀梯度来切割指纹图画的远景与布景等多种办法。在此根底上挑选图画切割的经典办法——自适应的部分阈值图画切割办法。该办法在合理选取阈值T的情况下,能较好地对图画进行切割[5]。
但该算法自身没有给出T的取值巨细,所以对原算法进行改善后描绘为:
(1)将待处理的图画分红W×W的子块(依据试验选取W=8或16,对一般和较湿的图画选为8,较干的选为16)
(2)求各块图画灰度值的规范方差:
式中G(m,n)表明块内各点的灰度值,Aver(i,j)表明某一块的均值。
(3)依据式(4)确认阈值T
其间a是调整系数,其值的选取依据图画的质量而定,一般可取为10~20,对质量较好的图画,a可取12左右,对较湿的图画可取下限,对较干的图画a取上限或更大。若a获得过大,则无法消除指纹区域外的噪声点(布景被误判为远景),若a获得过小,则会构成区域内脊线开裂(远景被误判为布景),切割后的指纹图画如图4。
4 滤波
因为切割后的图画质量依然不是很好,所以需要对其做进一步的处理,以使指纹图画明晰,消除不必要的噪声,以利于进一步的辨识。本体系选用中值滤波作为图画预处理常用的办法,能有效地去除噪声,滑润图画。较之其他滑润滤波的办法如均值滤波等,中值滤波能够在去噪的一起不含糊图画的边际,较好地坚持图画的明晰度。
图画中值滤波的界说:
其间g(x,y),f(x,y)为像素灰度值,即把f(x,y)范畴的一切像素灰度值排序,求其处于中心方位的值替代f(x,y)。滤波窗口能够有各种不同的形状,如线状、方形、圆形等。本体系选用的是3×3的窗口。为了杰出FPGA快速核算的长处选用如图5所示方法[6]。
图6输入为以f(x,y)为中心的9个数据,A1、A2、A3、A4是3个比较器,输出的值分别是第i-1行3个值、第i行3个值、第i+1行3个值的中值。以这3个中值再输入A4就能够选出9个点的中值。这样大大进步了算法的功率。
5 二值化
通过中值滤波后的指纹图画首要进行二值化变成二值图画,才干进行细化处理。因为收集到的指纹图画不同区域深浅纷歧,如对整幅图画运用同一阈值进行二值切割,会构成许多有用信息的丢掉。这儿运用自适应部分阈值二值化的思维,对每块指纹图画,选取的阈值应尽量使该块图画内大于该阈值的像素点数等于小于该阈值的像素点数。算法流程如图7。
T为该块指纹图画的均匀灰度值,Nh、Nl分别为第(k,l)块指纹图画中灰度值≥T和
6 细化
现有的细化算法存在许多问题,如细化不完全、纹线吞噬、骨架违背纹线中心等。本规划在对快速细化和改善的OPTA细化算法分析研讨后,规划一种改善的细化算法。该算法与传统的细化算法比较不损坏纹线的衔接性,不会引起纹线的吞食,维护了纹线的特征。算法的首要思维是:运用快速细化算法速度快的长处对指纹图画进行一次细化。因为细化后的纹线大多不是单像素宽,再运用改善的OPTA细化算法对不是单像素宽的纹线进一步细化。算法的描绘:
(1)遍历整个指纹图画,找出纹线的边界点。
(2)判别该边界点是否应该删去。对边界点P界说2个特征变量nsum和tsum:
假如P点一起满意:tsum=2且nsum≠1,nsum6,则可将其删去。
(3)持续寻觅下一个边界点,直到没有可删去的点停止。
(4)得到的纹线许多不是单像素宽,从图画的左上角开端扫描,每个像素(图为P)均抽取出图7所示的15个相邻像素,把其间的8个相邻像素(P1~P8)与图9的消除模板比较,假如都不匹配,则P保存。
(5)重复上述进程,直到没有一个像素值被改动停止。
细化算法的硬件规划:细化算法的难点在于快速细化后的图画和模板比较。这次规划的首要思维是把模板图变为数据流,只有用二进制数据流的方法才便于做比较。如图10所示,黑色代表1,白色代表0。以榜首行最左面的模板为例,即可变为000 111 010。考虑到FPGA的结构,用并行句子让输入的9位像素数据和模板二进制化数据进行联系运算操作,即可并行地和12个模板比较,大大进步了运算速度。FPGA模板匹配仿真图如图11,细化后的指纹图画如图12。
试验结果表明,用FPGA完全能满意指纹预处理的要求,并且进步了运算速度。FPGA的低功耗特色使其在便携式设备上具有宽广的运用远景。