(接上篇)
2.2、基础构件之指纹算法
以上是指纹产品基础构件层中的指纹SENSOR部分的技术构成分析。下面介绍另一部分指纹算法。全球指纹算法据称约有100种,不过这三大块基本是少不了的。一是对指纹图像进行预处理;二是提取特征值,并形成特征值模板;三是指纹特征值比对。
2.2.1 指纹算法之指纹图像预处理
指纹图像预处理的目的主要是为特征值提取的有效性准确性作好准备。一般包括如下的过程:
(1) 指纹图像增强。指纹图像增强的目的主要是为了减少噪音,增强脊谷对比度,使得图像更加清晰真实,便于后续指纹特征值提取的准确性。指纹图像增强的方法较多,常见的如通过8域法计算方向场与设定合适的过滤阈值。处理时依据每个像素处脊的局部走向,会增强在同一方向脊的走向,并且在同一位置,减弱任何不同于脊的方向。这样使得脊线相对背景更加清晰,特征点走向更加明显。
(2) 指纹图图像平滑处理。平滑处理是为了让整个图像取得均匀一致的明暗效果。平滑处理的过程是选取整个图像的象素与其周期灰阶差的均方值作为阈值来处理的。
(3) 指纹图像二值化。在原始灰阶图像中,各象素的灰度是不同的,并按一定的梯度分布。在实际处理中只需要象素是不是脊线上的点,而无需知道它的灰度。所以每一个象素对判定脊线来讲,只是一个“是与不是”的二元问题。所以,指纹图像二值化是对每一个象素点按事先定义的阈值进行比较,大于阈值的,使其值等于255(假定),小于阈值的,使其值等于0。图像二值化后,不仅可以大大减少数据储存量,而且使得后面的判别过程少受干扰,大大简化其后的处理。
(4) 指纹图像细化处理。图像细化就是将脊的宽度降为单个像素的宽度,得到脊线的骨架图像的过程。这个过程进一步减少了图像数据量,清晰化了脊线形态,为之后的特征值提取作好了准备。由于我们所关心的不是纹线的粗细,而是纹线的有无。因此,在不破坏图像连通性的情况下必须去掉多余的信息。因而应先将指纹脊线的宽度采用逐渐剥离的方法,使得脊线成为只有一个象素宽的细线,这将非常有利于下一步的分析。
2.2.2 指纹算法之特征值提取
提取指纹特征值是从细化过的指纹图像中,扫描分析出能够表达某个指纹图像与众不同的特征点的集合。在最初的指纹识别算法中,经历以过图像进行比较的阶段,现在的算法为了安全和确保精准度起见,采用图像上的特征点来进行比较,所以才有特征值提取的说法。
(1)首先来认识一下指纹的特征。
– 指纹特征=总体特征+局部特征
• 总体特征:
– 纹形:环形、弓形、螺旋形(有的算法分的更细,如左旋右旋)
– 模式区:包含了纹形特征的区域
– 核心点:位于指纹纹路的渐进中心
– 三角点:位于从核心点开始的第一个分叉点或者断点、或者两条纹路会聚处、孤立点、折转处,或者指向这些奇异点。
– 纹数:指模式区内指纹纹路的数量(脊密度)
– 局部特征:指纹上的细节点的特征。
• 特征点:类型、方向、曲率、位置
• 特征点类型
– A:终结点(Ending),一条纹路在此终结
– B:分叉点(Bifurcation),一条纹路在此分开成为两条或更多的纹路
– C:分歧点(Ridge Divergence),两条平行的纹路在此分开
– D:孤立点(Dot or Island),一条特别短的纹路,以至于成为一点
– E:环点(Enclosure),一条纹路分开成为两条之后,立即有合并成为一条
– F:短纹(Short Ridge),一端较短但不至于成为一点的纹路
(2)指纹特征点的表示。认识到指纹包含以上特征点之后,如何对指纹的特征点进行描述?就像通过描述一个的特点不同于另一个人时,我们一般会采用储如“男性”“身高170”“偏白”等词汇一样,描述指纹的特征点也有一系列的维度。如特征点类型、位置坐标、方向、曲率等。甚至可以增加组合特征描述。指纹处理是一个几何域的问题,所以对这些特征点的描述无外乎与几何参数有关。
(3)指纹特征点提取。对指纹的特征信息(总体和局部的)进行选择、编码,形成二进制数据的过程。指纹特征点的提取方法是算法中的核心。一般采用8邻域法对二值化、细化后的指纹图像抽取特征点,这种方法将脊线上的点用“1”表示,背景用“0”表示,将待测点(x,y)的八邻域点(如下图所示)进行循环比较,若“0”,“1”变化有六次,则此待测点为分叉点,若变化两次,则为端点。通过这个过程可以记录下来一个指纹的所有特征点。通常一个指纹的特征点在100~150之间,在形成指纹特征值模板(也就是特征值的有序集合)时,尽量多的提取特征点对于提高准确性是有很大帮助的。
2.2.3 指纹算法之特征值比对
指纹特征值比对过程是把当前取得的指纹特征值集合与事先存储的指纹特征值模板进行匹配的过程。匹配是一个模式识别的过程,判定的标准不是等与不等,而是相似的程度。这个程度判定依赖于某个阈值,以及与判定时比较的特征点的个数有关。阈值取的合理,特征点取的越多,误判的机率就越小。理论一般认为只要7个特征点不同就可以区别开两枚指纹。实际在程序实现中,多采用14个或以上的特征点作匹配。匹配的方法很多,包括基于特征点的匹配、脊模式的匹配、以及线对(两个特征点的连线)匹配方法。匹配的过程还要处理如手指旋转、压力导致的伸缩及平移等情况。一般算法的误识率(FAR)为0.001%时,其拒认率(FRR)为0.75 - 5%。
在指纹识别算法这一部分补充说明一下指纹识别和验证的区别。
识别与验证并不是指纹识别算法领域的问题,而是指纹识别系统的问题。指纹识别就是指1:N模式下匹配指纹特征值。它是从多个指纹模板中识别出一个特定指纹的过程。其结果是,有或者没有。有时会给出是谁的信息。
指纹验证是指在1:1模式下匹配指纹特征值。它是拿待比对的指纹特征模板与事先存在的另一个指纹特征模板进行一次匹配的过程。其结果是,是不是。在一个系统中即可以采用1:1模式也可以采用1:N模式,这是取决于应用系统的特点和要求。
从优缺方面比较,1:1模式要比1:N快些,准确性高些,但方便性会差些。
3、指纹产品中间件
指纹中间件技术,与一般中间件技术相似。对于指纹软件中间件来讲,主要是提供一系列从应用角度看已经封装好的接口,一般不会开放指纹特征值模板及下一级的接口。这些接口的能力表现为数据库连接和拆线类接口、用户注册接口、用户验证接口、用户手指信息、用户信息访问接口、用户管理(增删改)接口,以及常用的系统管理接口等。这些接口一般以OCX组件形式提供,适用于以C/S、B/S、N-Tier等多种应用模式。
硬件中间件,一般是指指纹脱机模块。它主要是一个嵌入式指纹识别系统,对外提供两方面的能力。一是向下能够接入一定类型数量的指纹SENSOR;二是向上给应用能够提供指纹注册、验证、识别、指纹存储等功能。硬件中间件的形态一直在发展和变化中,从板卡形态向芯片形态演变。市场上已经出现指纹识别IC,能够完成所有指纹注册验证的功能。这对于开发嵌入式指纹识别设备,将无疑是一大福音。
3、指纹产品上层构件
指纹产品上层构件,即应用层,目前市场上所见完整的指纹产品形态多种多样,在此不再累述。只是想说,在应用层,由于行业的不同、需求的多样性,依然是有很多可以成就的东西。
总结
从以上分析总结来看,基础构件中的指纹SENSOR和指纹算法是关键中的关键。如果没有掌握这个关键,通过正常的商品交易得到这些,并以此为基础构造出指纹中间件产品、或者开发出不同行业的不同类型的指纹应用产品(或系统),也会有非常不错的前景,这也是创新――集成创新。