微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 用FPGA实现优化的指纹识别预处理算法

用FPGA实现优化的指纹识别预处理算法

时间:06-05 来源:互联网 点击:

指纹识别作为生物识别的一种,因其具有唯一性和稳定性,在身份识别上有着其他手段不可比拟的优势。随着指纹传感器性能的提高和价格的下降,指纹的采集越来越容易,指纹识别算法也已比较成熟。传统的指纹识别系统一般以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。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top