正文

指纹识别技术扫盲2007-08-29 11:33:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sword2008/28940.html

分享到:

 

指纹识别技术扫盲

1、产品构成

对指纹识别技术,目前除了一部分真正的研发人员之外,大部分涉业者或者兴趣者都希望有个清晰的了解。在此,先从指纹识别产品的构成说起,也就是由产品构成再展开对技术构成的分析。

指纹识别产品是由基础构件、中间构件和上层构件组成的,基础构件是指一个完整的指纹识别(不是指纹采集)产品,包括硬件和软件,都必须具备的基础部分。中间构件,简称中间件,是向上支持各类软件系统或者硬件设备,实现指纹注册和认证功能的独立部分。上层构件,是指在基础构件之上,自己实现中间件或者利用中间件建立起来的执行应用的部分,也可以称为应用构件。

指纹产品基础构件包括:指纹传感器(指纹 Sensor )、指纹传感器驱动程序( Driver )、指纹传感器底层接口程序(底层 SDK ),以及指纹算法程序。其中前三个都是作为一个整体对待,笼统的称为指纹 SENSOR 。指纹基础构件的这四个部分,对于任何一类的指纹识别产品都是不可缺少的,所以称之为基础构件。

指纹产品中间构件,或者叫指纹应用中间件,它专门完成指纹注册和认证功能,所以它一定包含指纹识别算法。它屏蔽了应用层对设备层(基础构件中的 SENSOR 以及 DRIVER )的直接访问。它既可以表现为软件控件( ocx ),也可表现为硬件模块,也就是俗称的指纹脱机模块。

指纹产品上层构件,它是用户需求的实现部分,其形态不定,可以是一个完整的指纹应用软件产品,如指纹文件保护系统、计算机登录指纹保护系统。也可是指纹考勤机、指纹保险柜等这类嵌入式硬件产品。

在了解了指纹识别产品的构成要件之后,我们再一层层采用解析的方法来分析每个构件中的技术成份。

2 、指纹产品基础构件  2.1、基础构件之指纹SENSOR
  从基础构件层来看,其中的指纹SENSOR,是指纹图像自动采集和生成部分,是整个指纹识别产品的数据输入端。绝大多数指纹SENSOR通过光学扫描、晶体热敏、晶体电容等三种主要传感原理采集指纹图像。衡量一个指纹SENSOR的质量好坏或者使用的技术的高低,从其使用的采集原理上并不能得出结论,而是主要从以下几个方面来衡量。
  

( 1) 成像质量。成像质量是衡量指纹 SENSOR (指纹传感器)质量的首要标准。成像质量主要表现为对指纹图像的还原能力,以及去噪能力。

( 2) 手指适应能力。由于不同手指指纹的 纹路 深浅不同、干湿不同,污渍程度不同。要能够对所有情况进行有效兼容,是指纹 SENSOR 的适用能力的表现。有时候手指适用能力被归到成像质量中考虑。

( 3)采集速度。采集速度表现为从手指放到 SENSOR 触面后多长时间内完成一次指纹采集的时间,或者单位时间如 1S 可以采集的次数。速度的快慢直接影响到用户的使用体验。

( 4) 电气特性。电气特性是从产品化的角度来看,指纹 SENSOR 是否真正可用于某种产品。电气特性主要关注三个参数,工作电压,功耗和 ESD (防静电能力)。如把指纹 SENSOR 应用到手机上,必然要考虑手机的现在供电方式能否满足增加了指纹 SENOSR 后的电压和功耗要求。不过大部分指纹 SENOSR 的电压都在 3.6V 以下(含)。

( 5)硬件接口能力。接口能力也是从产品化的角度来衡量的。接口能力直接影响着指纹 SENSOR 所获得的指纹图像数据的传送方式,影响着与指纹处理模块之间的通讯方式和通讯速度。比如已具备 USB 接口能力的指纹 SENSOR ,可以直接与 USB HUB 相连。而没有 USB 接口的,就需要通过 USB 控制器来实现,给产品化增加一道技术门槛。

( 6) SDK 能力。 SDK 能力是指指纹 SENSOR 的功能,也就是与指纹 SENSOR 配套使用的程序接口的功能。一般在这些接口中定义了上层应用如何启动或终止硬件 SENSOR ,以及如何控制指纹 SENSOR 的函数族。比如发送指纹 SENOSR 初始化命令、开始或停止捕获指纹图像命令、询问手指是存在、以及判断是否是指纹等。对于滑动式( SWIPE )芯片来讲,还包括指纹重构的命令接口。

( 7) 附加功能。大部分指纹 SENSOR 除了具备指纹图像采集能力之外,还能够感知手指的移动方向、手指的点击方式(单击双击),这被称之为导航能力。作者见过的一款导航能力非凡的指纹 SENSOR ,可以非常灵活的玩贪吃蛇游戏。另一方面,有的指纹 SENSOR ,如 ATMEL 和 AUTHENTECH 的,可以提供指纹特征值的模板访问接口。这些都是除了基本功能之外,指纹 SENSOR 厂商附加开发的功能,这部分功能可以使得,在其它条件相当的情况下,起到提升应用特色的作用。

 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,能够完成所有指纹注册验证的功能。这对于开发嵌入式指纹识别设备,将无疑是一大福音。

4、指纹产品上层构件

指纹产品上层构件,即应用层,目前市场上所见完整的指纹产品形态多种多样,在此不再累述。只是想说,在应用层,由于行业的不同、需求的多样性,依然是有很多可以成就的东西。

总结

  从以上分析总结来看,基础构件中的指纹 SENSOR和指纹算法是关键中的关键。如果没有掌握这个关键,通过正常的商品交易得到这些,并以此为基础构造出指纹中间件产品、或者开发出不同行业的不同类型的指纹应用产品(或系统),也会有非常不错的前景,这也是创新──集成创新。

http://www.xici.net/b625138/d36926657.htm

阅读(2816) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册