分布式海量指纹识别
2019-10-24姚丽莎徐国明陈乃金
姚丽莎,徐国明,陈乃金,周 欢
(安徽新华学院信息系统软件研究所,安徽 合肥 230088)
近年来,指纹识别技术现今已经发展成熟,国内外许多指纹识别研究成果主要描述如何构造特征描述符。目前指纹描述符主要分为基于细节点的描述符和基于纹理的描述符两类。TICO M[1]提出一种基于方向信息的描述符,PARK U[2]提出描述指纹信息的SIFT[3]描述符,JIANG X[4]提出最近邻描述符,CHEN X[5]提出固定半径的特征描述符,FENG J[6]提出混合描述符可以结合细节点和纹理特征,CAPPELLI R[7]提出细节点柱形编码(Minutia Cylinder-Code,MCC)结构。
但是,指纹识别领域目前的研究重心主要在提高指纹识别的准确度,忽略了海量指纹数据识别的时间问题,海量指纹识别的实用性成为主要难题。MIRON R[8]提出了一种新的指纹识别架构,在多个服务器上分别放置大量的指纹数据,在各个服务器上顺序检索指纹,检索成功后结束。该架构虽然解决了数据集分布式存储的问题,但是仍为集中式计算,并未实现分布式并行计算,不能完成实时检索。PERALTA D[9]根据指纹的分布式特点,在多个节点上进行指纹数据分布,在每个节点上并行的检索指纹,可以解决海量指纹数据实时检索的问题。目前的指纹识别系统主要通过暴力匹配,而这对于海量指纹是不适用的。本文提出了分布式海量指纹识别技术,首先对采集的指纹进行特征提取,然后利用指纹特征对指纹进行全局指纹分类,最后利用匹配界限盒方法进行指纹匹配以完成未知指纹数据的身份确认。利用分布式网络计算的运算特性,设计了一个分布式海量指纹识别系统。
1 指纹数据的压缩及存储
在海量指纹数据检索的过程中,需要从数据库下载一些待比对的指纹图像到本地,为了满足应用需要,对指纹数据进行压缩传输。目前,存在一种压缩方法可以满足对指纹图像数据进行压缩传输的现实应用要求,可以把原有的指纹特点保存,这种压缩方法就是小波压缩[10]。小波变换子频段编码的实现方法:①用一组滤波器采用重复卷积的方法,把采集信号分为低频和高频。②统计低频和高频分量,量化特征相类似的编码器。③在解码时,为了重建图像需要对低频分量和高频分量进行插值和共轭滤波。基本原理如图1所示。
图1 子频段编码原理图
1.1 小波变换子频段编码的工作过程
小波变换子频段编码的主要工作包括:①一个滤波器(Qualcomm,low pass)把输入端在水平方向的信号进行卷积,同时另一个滤波器(Qualcomm,low pass)把输入端在垂直方向的信号进行卷积[11]。②能够获得四块面积,把这四块面积与原图像进行相比,可以看到占到原图面积的25%,这四块面积包括:低频分量LL、垂直方向的高频分量HL、水平方向的高频分量LH和对角线方向的高频分量HH。③编码高频分量以及量化编码,编码低频分量以及量化编码。④继续分解垂直高频分量得到二级小波分解和三级小波分解,编码也类似[12]。三级小波分解如图2所示。
图2 三级小波分解
1.2 图像压缩
图像压缩具体做法包括:设置一个阈值σ,把经过小波变换得到的水平、垂直和对角细节分量值与该阈值σ比较,再把小于等于σ的细节分量值设置为“0”。由此进行编码,这样就实现了图像压缩。
编码是压缩的最后一个步骤。通常结合赫夫曼编码和快速余弦变换方法来压缩低分辨率子图HH,去除细节子图的高频分量,结合Huffman编码来压缩图像。使用赫夫曼编码方法包括以下步骤:①按降序排列概率的大小。②对两个最小的概率进行加法运算,然后一个新的概率集合就构成了,按降序排列概率的大小,以此类推,一直到只存在两个概率为止。③码子需从最后开始完成反向分配,对最后两个概率一个赋予“0”,一个赋予“1”。对码子进行概率统计。然而在实际应用中,每幅图像的出现概率是不同的,对于任何图像压缩而言,需要进行概率统计。
2 分布式海量指纹识别技术
分布式网络是把指纹数据库分布存储,根据不同地域,将指纹存储在不同地方。并且每个分数据库根据指纹特征分类存储指纹数据信息,每一个分数据库服务器同时搜寻,进而提高对未知指纹数据身份确认的速度。
2.1 分布式海量指纹识别系统组成
海量指纹数据库识别系统包括3个部分:①利用指纹采集设备对个体进行指纹采集,然后对采集的指纹进行指纹预处理和特征提取。②计算机发送采集的指纹数据到数据库服务器。③利用全局指纹分类系统验证采集的指纹,通过以上操作进行未知指纹数据的身份确认。原理图如图3所示。
图3 分布式海量指纹识别系统的原理图
图4 分布式海量指纹识别系统架构
2.2 分布式海量指纹识别系统工作流程
分布式海量指纹识别系统的工作流程包括:①利用指纹采集设备对个体进行指纹采集。②计算机通过预处理和对采集的指纹进行特征提取,利用计算机将采集的指纹数据发送到指纹数据库主服务器中。③指纹数据主服务器将特征信息发送给每个指纹数据分服务器。④每个指纹数据分服务器对特征信息进行提取,并在指纹数据库分服务器中搜寻,然后将结果发送到指纹数据主服务器。⑤指纹数据主服务器把结果发送到计算机。具体流程如图4所示。
2.3 指纹预处理
指纹预处理目的是提高指纹图像的质量,将特征提取的准确性提高。本文预处理过程包括图像分割、增强、二值化和细化。指纹预处理流程图如图5所示。
图5 指纹预处理流程图
2.3.1 指纹图像分割
因为指纹与图像背景难以区分,需要对指纹图像进行分割。背景的梯度值较低,而指纹图像的梯度场值比较高。因此,利用梯度场来进行指纹图像分割,即采用分型维数来分割指纹图像。图像块的分形维数描述了其纹理和灰度分布的复杂程度,其是单位区域上的梯度,利用前景与背景的分形维数可以区分图像的前景和背景。本文利用分形维数来分割指纹图像的背景与前景,具体步骤如下:
2.3.1.1 定义F盒维数
即设F是Rn上的任意非空的有界子集,Nσ是直径最大为σ、可以覆盖F的集合的最少个数。则F的盒维数定义为:
(1)
2.3.1.2 计算图像的盒维数
图像中像素点的灰度值表示为Z=f(x,y),其中,(x,y)为像素点的位置坐标,Z代表对应点的灰度值。设图像大小为M×M,将图像的XY平面分成大小为σ×σ的格子,设该XY坐标系中格子(i,j)里像素点灰度最大值为uσ(i,j),灰度最小值为bσ(i,j),且定义两者的差值为:
(2)
对于所有边长σ、格子非空的盒子总数Nσ的计算公式为:
(3)
2.3.1.3 计算梯度值
2.3.1.4 通过梯度阈值分割前景和背景