从数字图像处理技术角度谈谈对指纹识别的认识
4.1 指纹图像表示
从指纹传感器输出的是指纹原始图像,其数据量比较大。
这对整个指纹识别系统的处理和存储都是个不小的负担。
在远程采集系统中,对通信带宽会造成较大负荷。
因此需要对指纹图像进行压缩存储。
指纹图像压缩一般经过图像变换、量化和编码等过程。
解压需经过解码、量化解码和反变换等过程。
压缩后的指纹图像需确保指纹特征信息的不丢失不损坏。
理论上来讲采用无损压缩算法是最理想的。
但经过实践证明,对于分辨率不是很高的指纹图像来说,采用无损压缩的压缩比很低。
通常情况下采用JEPG、WSQ和EZW三种压缩算法。
4.2 指纹图像处理
4.2.1 指纹图像增强
刚获得的图象有很多噪音。
这主要由于平时的工作和环境引起的。
指纹还有一些其他的细微的有用信息,我们要尽可能的使用。
指纹图像增强的目的主要是为了减少噪音,增强嵴峪对比度,使得图像更加清晰真实,便于后续指纹特征值提取的准确性.
指纹图像增强常用的是平滑和锐化处理。
(1)平滑处理
平滑处理是为了让整个图像取得均匀一致的明暗效果。
平滑处理的过程是选取整个图像的象素与其周围灰阶差的均方值作为阈值来处理的。
这种做法实现的是一种简单的低通滤波器。
实验表明:一般的自然图像相邻像素的灰度相关性约为0.9。
因此在图像受到白噪声干扰时,以像素的邻域平均值代替中心像素,是一个去除噪声的好办法。
算法是:。
其中f(x,y)表示被噪声污染的原始图像,大小为N*N,g(n,m)是平滑后的图像,S是处理点(x,y)邻域中点的坐标(不包括(x,y)点)的集合,而M是集合S内坐标点的总数。
例如,以(x,y)点为中心,取单位距离构成的邻域,其中点的坐标集合为:s={(x,y+1),(x,y-1),(x+1,y),(x-1,y)}。
经验表明,邻域越大,去噪声的能力就越强,不过,从中也可以看出,邻域越大,图像就越模糊。
因此,需要寻找既可以去噪声,又可以保持图像清晰度的办法,这就是阀值方法,算法是:,其中T值是一个规定的非负阀值。
只有当变化较大时(大于T),图像才进行邻域滤波;而当变化不明显时,仍然保留原先的值,这样可以减少图像的模糊。
当被处理点为边界点时,邻域平均后该点的灰度迅速下降,这样就导致边界模糊。
修改方案是根据参与平均的像素的特点赋予不同的权值,即采用加权平均法:,其中w(n,m)是加权系数。
可以根据图像的相关性,按照以下的方法确定权值:
a:给当前处理的中心像素较大的权值,其他像素的权值较小。
b:按两像素间的距离确定权值,距离处理像素近的权值较大,距离处理像素较远的权值小。
c:按和被处理像素的灰度接近程度确定权值,约接近的权值越大。
下面是几个按照以上思路设计的典型的加权平均算子。
为了不使整个图像的亮度变亮,设计此类算子的时候需要将权值归一化。
A:中心加权算子。
B:中心和四邻点加权算子。
C:按灰度近似程度加权算子。
其中:
综合以上讨论可以看出:
A:平滑滤波器就是一种低通滤波器,模板的所有系数都是正数。
B:在设计滤波器时通常还要求行列数为奇数,保障中心定位性能。
C:空域低通滤波的去噪能力与它的模板大小有关,模板越大,去噪能力越强。
D:空域低通滤波具有平滑的效果,在去除噪声的同时模糊了图像边缘和细节。
(2)锐化处理
锐化和平滑恰恰相反,它是通过增强高频分量来减少图象中的模糊,因此又称为高通滤波。
锐化处理在增强图象边缘的同时增加了图象的噪声。
锐化技术可分为空域和时域两种手段,空域的基本方法是微分处理,频域技术是运用高通滤波。
图像处理中最常用的微分方法是计算梯度。
给定义一个函数f(x,y),在坐标f(x,y)在f的梯度定义为一个矢量G[f(x,y)]:
梯度G[f(x,y)]是函数f(x,y)最大增加率的方向,梯度矢量的幅度(梯度的模)为:,其中表示在矢量方向上每单位距离f(x,y)的最大值,通常用来表示f的梯度。
最常用的是Laplacian算子,即对图象进行二阶微分的计算:。
可以看出,它是个标量,具有各向同性的性质。
典型的Laplacian模板及其变形模板如下图所示。
这三个模板在形式上有些区别,增强能力也不同,但都体现了二阶微分的特征。
4.2.2指纹图像二值化
在原始灰阶图像中,各象素的灰度是不同的,并按一定的梯度分布。
在实际处理中只需要知道象素是不是嵴线上的点,而无需知道它的灰度。
所以每一个象素对判定嵴线来讲,只是一个“是与不是”的二问题。
所以,指纹图像二值化是对每一个象素点按事先定义的阈值进行比较,大于阈值的,使其值等于1(假定),小于阈值的,使其值等于0。
图像二值化后,不仅可以大大减少数据量,而且使后面的处理过程少受干扰,大大简化其后的处理。
4.2.3指纹图像细化
图像细化就是将嵴的宽度降为单个像素的宽度,得到嵴线的骨架图像的过程。
这个过程进一步减少了图像数据量,清晰化了嵴线形态,为之后的特征值提取作好准备。
由于我们所关心的不是嵴线的粗细,而是嵴线的有无。
因此,在不破坏图像连通性的情况下必须去掉多余的信息。
因而应先将指纹嵴线的宽度采用逐渐剥离的方法,使得嵴线成为只有一个象素宽的细线,这将非常有利于下一步分析。
4.3 指纹特征值提取
A:指纹特征值
指纹特征值是指纹算法的基础数据,是指纹算法最重要的数据结构。
不论是特征点匹配算法,还是线对或点集匹配算法,都是指纹算法程序中最核心的数据结构。
指纹特征值模板一定程度影响着指纹算法的效率和精度,体现了算法的优劣。
一个好的特征值模板能用最小的数据量表示最多的指纹特征信息,能用最少的特征点信息,区分出两个指纹的不同。
B:提取
指纹特征值提取是对指纹的特征信息(总体和局部的)进行选择、编码,形成二进制数据的过程。
指纹特征点的提取方法是指纹算法的核心。
一般采用8邻域法对二值化、细化后的指纹图像抽取特征点,这种方法将嵴上的点用"1"表示,峪(背景)用"0"表示,将待测点(i,j)的八邻域点进行循环比较,若"0","1"变化有六次,则此待测点为分叉点,若变化两次,则为端点。
通过这个过程可以记录下来指纹的所有特征点。
通常一个指纹的特征点在100~150之间,在形成指纹特征值模板(也就是特征值的有序集合)时,尽量多的提取特征点对于提高准确性是有很大帮助的。