基于DSP的指纹识别模块的实现
摘要:介绍了用硬件实现的独立指纹识别系统。讨论了指纹识别的算法概述、设计方法及其在DSP板上的实现。 随着指纹识别技术的不断发展和成熟,高度的精确性使其已应用到身份认证的各个领域。与其他生物统计学特征相比,指纹特征更容易提取、更可信,且特征尺寸也很小。这些特点使指纹识别系统在有限资源平台上实现并维持一定性能(FAR、FRR及匹配时间等)成为可能。 本文讨论了指纹识别系统的设计和实现方法。介绍运用细节的脊线形状特征作为本算法的基础;基于这种思想,建立了指纹识别算法流程。该算法很容易在任何平台上实现。笔者选择了高效的DSP平台,设计了一个专业的用来单独实现指纹模块的DSP板。最后,讨论了这种指纹识别系统的现状和未来的发展。
1 细节脊线的形状特征 指纹图像上各种各样的线条被称为脊线,脊线之间的空白称为谷。指纹的细节特征是指纹识别的依据,最常用的细节特征是脊线的端点和分*点。图1显示了端点和分*两个细节特征。端点就是脊线的终点,分*表示一条脊线从一条路径在Y型结合点变为两条路径。细节比较运用细节类、坐标(x,y)以及方向作为比较的特征。 一种运用细节脊线形状特征进行指纹识别的新思想。细节脊线形状是指脊线与作为指纹图像相关特征的细节进行关联后所得的形状。当一个细节在被提取和记录时,可以得到其关联脊线分割后的迹线点。这些细节和迹线点能够描述脊线,特别是其对应的细节位置。这种新方法是基于迹线点的相对距离来描述脊线的形状。这种描述方法更为精确,因为这种相对距离不会因指纹在获取中的位移和旋转而改变。这也是该方法相对其他特征点求取方法的优势。 如图2所示,细节和其轨迹点能够用来描述脊线,特别是连接到具体的细节位置。脊线上轨迹点的采样间隔被设定为一固定值D,如果5个点被采样作为1个细节点和4个轨迹点,用3个相对参数d1、d2、d3对脊线形状进行描述。
对于固定的采样间隔D,为了增加精确度,使用内插法定义正确的轨迹点位置。因而,指纹图像的重要数据(脊线形状数据)能通过一种独立于位移和旋转的简单途径获得。每一个参数能够以6bit的数据表示。因此一个有25个细节脊线形状的指纹图形能够以6×3×25位=56.25字节存储。
2 识别流程 指纹识别系统如图3所示,可以分为存储和匹配两部分。记录的目的是提取指纹特征(模板)。在比较处理过程中,将输入的指纹图像特征与模板进行匹配,通过比较决定匹配结果。
图4显示了该指纹识系统的算法处理过程,主要过程包括: ·图像处理——获得高质量的二值图像; ·纹路细化——获得细化后的二值图像; ·细节提取——提取端点和交*点形状; ·细节比较——比较模板和输入图像的细节。 图像处理的目的是把输入的灰度图像转化为高质量的二值图像。指纹图像是一种噪声较大的图像,因此需要图像增强减少这些噪音,并增强脊线。
第一步,使用高通滤波器和低通滤波器预滤波进行平滑处理。通过第一次二值化处理,过滤后的灰度图像转化为二值图像。第一次二值化处理后,每个二值图像块的方向被提取,并且最大方向被计算出来。然后,过滤后的灰度图像沿着已经查明的方向通过方向滤波器进行平滑处理。最终的二值图像通过对最后的灰度图像进行第二次二值化处理后得到。经过图像预处理,指纹二值图像被细化以便脊线图案成为一个像素宽的连接线段。图5中a、b、c分别为原始输入灰度指纹图像,以及细化前和细化后的二值图像。 详细的细节是从细化后的二值图像中提取的。详细的分支被发现后,就从分*点或终点开始描绘轨迹。包括细节点的至多五个点被作为完好的细节标准提取。然后,通过这些点,细节的形状数据被计算出来。这种形状数据作为特征数据和细节类型以及它们的位置都被记录下来。
两个指纹的匹配指数是基于细节形状的相似程度、细节的类型和它们的位置计算出来的。位移和旋转作为评估两个指纹匹配指数的考虑因素。
3 DSP平台的优化 为了达到快速识别的目的,图像处理通过对指纹输入图形进行块处理取得。这种方法同时可以减少对内存的要求。由实验得知:16×16像素高通滤波和4×4像素的低通滤波可以得到最好的预滤波效果。为了计算一块16×16像素的最大方向,方向滤波器被屏蔽在块图像上。然后,用5×5的方向滤波器屏蔽灰度级图像。 表1给出了DSP平台实现的内存要求。内存优化主要集中在达到最小运行内存?穴图像输入缓冲、预滤波中间结果和输出二值图像?雪的要求。对于当前应用,从传感器接收的图像大小为224像素×288行。图像被传感器逐行扫描,在缓冲区满了以后,进行块处理并得到一行二值图像。这个处理过程不断循环重复。
表1 内存需求
类 别 | 名 称 | 大小(word) | 程序 | 指纹算法
查表
应用 | 8492
462
3672 | 数据 | 工作区应用数据 | 18414
397 | 模板 | 数据和状态(*) | 990 | 其他 | 堆栈等 | 640 | 合计 | 内部
外部(*) | 32077
990 |
表2 处理时间
功 能 | 名 称 | Mcc | Mcc/s | 图像处理 | 捕获图像
预处理
后处理
细化 | 19.50
13.35
14.04
8.04 | 302.27
206.94
217.67
124.63 | 特征提取 | 细节(全旋) | 6.45 | 100.03 | 匹配 | 比较(全旋)
比较(1/4旋) | 4.20
1.20 | 65.10
18.60 |
表2给出了DSP的处理时间。某些部分的编码进行了汇编语言级的优化,特别是对接口(传感器和Flash EEPROM)的匹配处理和细化。一个重要的性能衡量是匹配时间。匹配时间可以用公式表示为:t=p+f+c×u(t:匹配时间,i:图像处理时间,f:提取时间,c:比较时间u:总的用户个数)。在100MHz的DSP上实现一对一的全旋转匹配,时间大约为:t=558+64+42×1=664ms。
本算法提供两种选择:全旋和1/4旋。全旋转使得算法对指纹输入处理更加强健。通过1/4旋转,可以缩短匹配时间,但是,这限制了指纹输入的旋转在±45°。表3给出了这两种选择的比较结果。
表3 速度选项和匹配时间
旋转 | 比较时间(ms) | 2秒内的n个用户 | 全旋 | 42 | 32 | 1/4旋 | 12 | 114 |
4 硬件实现
图6显示了指纹模块的方框图。板上有作为主要处理器和控制器的DSP、FPGA,以及作为外围设备的指纹传感器、闪存、RS-232以及LED接口。这个板最高可以100MHz工作,以5MHz的速率从指纹传感器上采集数据。 这块板最初设计集中于高性能和稳定性。在确立了稳定模块之后,致力于减少板子占用的空间以降低制造成本。
本文对指纹识别算法进行了发展,优化了DSP平台的设计实现,并在此基础上设计出了一个用于指纹识别的完整系统。该系统可以实现高性能的独立指纹识别。当然,仍有许多地方可以改进。例如,还可以进行指纹分级算法来提高匹配处理的速度。这种指纹验证在电子商务等领域的应用也在不断发展,并且这种算法可以被嵌入到单片LSI中。
|