指纹图像二值化算法的分析和比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指纹图像二值化算法的分析和比较
1引言
指纹作为人体的重要特征,因其具有唯一性和终生不变性,已经成为生物识别领域的重要手段。它不仅应用于公安司法系统的犯罪识别,而且还广泛应用于如一些保密系统的身份验证,成为生物识别领域的新热点。在指纹自动识别系统中,图像采集设备所得到的图像是一幅含有较多噪声的灰度图,必须经过预处理,除去大量的噪声信号,得到一幅纹线清晰的点线图,才能进行指纹特征的提取和匹配。指纹图像的预处理是正确地进行特征提取、比对等操作的基础,而二值化是图像预处理中非常重要的一步,也是指纹细化并提取特征前的重要步骤。
不同的二值化经常会对后续的步骤产生极大的影响,常用的二值化方法由于仅仅利用了图像的灰度信息,没有考虑指纹图像自身的方向结构特点,对指纹图像的二值化效果不理想.
本文首先对常用的二值化算法进行了讨论,并主要通过实验比较了两种特别针对指纹图像的二值化算法。
通常认为一个好的针对指纹图像的二值化算法应满足以下几点要求[f。1]:
●保持纹线的原始走向;
●相关领域内指纹的纹线走向基本一致;
●避免造成指纹纹线的中断和粘连;
●避免生成虚假指纹纹线;
●纹线间的间距变化平稳;
2图像的二值化算法
在很多情况下,图象是由具有不同灰度的两类区域组成的。如在指纹图象中,指纹脊线和谷线就由不同的灰度构成,通常脊线要比谷线暗。所谓灰度图象的二值化就是通过设定阀值,把它变为仅用两个灰度值分别表示图象的前景和背景颜色的二值图象。图象的二值化可以根据下面的阀值来处理: 假设一幅灰度图的像素值为f(i,j)∈(r1,r2 ,…,rm),设有一阀值为T=ri ,1≤i≤m,则:
二值化的方法很多,关键在于阀值T的选取。而T的取值方法又取决于二值化的技术。T的选择有基于由点的像灰度值单独决定的、有由像素的局部特征决定的、也有基于全局像素决定的。阀值可以分为两类:全局阀值和局部阀值。
1)全局阈值
全局阈值是在整个图像中将灰度阈值的值设置为常数。如果背景的灰度值在整个图像中可以合理的看作恒定,而且所有的物体于背景都具有几乎相同的的对比度,那么只要选择了正确的阈值,使用一个全局阈值可以得到非常好的的效果。代表算法有最大类间方差法(OSTU方法)。
OSTU方法计算简单,稳定有效,是实际应用中经常采用的方法。但是它对噪声和目标大小十分敏感,仅对类间方差是单峰的图像有较好效果。当目标与背景的大小比例悬殊时,类间方差准则函数可能为双峰或多峰,此时OSTU方法就会失效。
2)自适应阈值
自适应阈值化算法也称动态局部阈值化算法。所谓动态是指根据每个像素及其邻域像素的灰度值情况动态地计算分割所需的阈值,如:Bernsen算法,它对图像上的每个点以之为中心取一个局部窗口,则该点的阈值为窗口中最大灰度和最小灰度的平均,依次对每个点根据其阈值进行二值化。
4.基于方向图的动态阈值指纹图像二值化方法
该二值化方法,将指纹图像自身的方向结构特点与源图像灰度值变化特点结合起来,确定对图像中每一像素点二值化的动态阈值,可一次完成图像的二值化功能. 沿着垂直于纹线的方向来看,指纹纹线大致形成一个二维的正弦波.除了模式区等少数异常区域以外,在一个小的局部区域内,指纹纹线的分布具有良好的频率特性和方向特性.充分利用局部区域内纹线的频率和方向信息,对每个局部区域构建相应的模板进行增强就能有效地去除噪声,突出纹线的固有结构.
4. 1 指纹图像的方向图
指纹图像的方向图指纹图像自身有着许多不同于其他图像的特点,它的纹理性和方向性都很强.方向图作为一种可直接从原灰度图像中得到的有用信息,在预处理、特征提取、指纹分类中有着重要的意义.它描述了指纹图像中每一个素点所在的线或谷线在该点的切线方向,由于指纹图像在一个适当区域内的各像素点的方向几乎相同,在实际计算中,往往以该点所在块的方向近似代替该点的方向.
计算方向图的基本思想是:在原灰度图像中计算每一点(或每一块)在各个方向上的某个统计量(如灰度差、梯度等),根据这些统计量在各个方向上的差异,确定该点(或该块)的方向.
假设f(i,j)代表指纹图像在(i,j)处的灰度值,则方向图的具体计算步骤如下:
(1) 将图像分成大小为M ×M 的块,这里M 的大小以包含一脊一谷(一周期)为宜.
(2) 计算M ×M 块中每个像素f(i,j)在x 轴和y 轴上的梯度G x (i,j)和G y (i,j).其计算可选用简单的梯度算
子,如Sobel 算子等.
(3) 用下面的公式(1)计算M ×M 块的方向θ
0)],(),([),(),(2arctan 211010221010≠≠⎪⎪⎭
⎪⎪⎬⎫⎪⎪⎩⎪⎪⎨⎧-=∑∑∑∑-=-=-=-=y x M i M j y x M i M j y x G G j i G j i G j i G j i G 且 θ (1) 指纹图像的局部如图2(a)所示.方框y 方向是该块的指纹方向,x 方向是其法线方向.以法线方向上各像素点的灰度值做一曲线,可得到近似于正弦的波形图,如图2(b)所示.显然,该波形图的波谷对应指纹图像的脊线(指纹图像中暗的纹线),而波峰则对应指纹图像的谷(指纹图像中亮的纹线).若所考察的当前像素点恰好落在波谷上,则该点就是指纹脊线点;若所考察的当前像素点恰好落在波峰上,则该点就是指纹谷点,而谷点到脊点间像素灰度的变化几乎呈线性.正是基于指纹图像在结构上和像素灰度变化上的这些特点,可采用下述指纹图像二值化方法:
图2(a). 局部原始图像
50
100
150
200
250
300
147
1013161922252831
x
y
w l
图2(b). 谷脊灰度变化波形图
对图像中的每一点(i,j ),以其所在块的方向θ作为该像素点的方向θ(i,j ),并以该点为中心取l ×w 的矩形窗,如图2(a)所示,计算矩形窗内指纹方向每一列中像素点在法线方向上的加权平均X [0],X [1],…,X [w-1],具体公式为
),(][][1
0kd l d kd j i f d C k X ∑⨯=-= 然后,对X [k ] 采用低通滤波,消除极大点或极小点附近的波动;找出X [k ] (k =0,…,w -1)极大点和极小点位置及对应的值,对极大值、极小值求平均,将此平均值作为该点二值化阈值.
最后,采用下式对指纹图像做二值化:
若X [k ] (k =0,…,w -1)的起伏很不明显,说明该区域属于无效区域或背景区域,整个区域的像素值置为255. 该方法利用了指纹的方向信息来分割,所以不管图像的对比度高低,噪声干扰与否,总能取得理想的分割效果,并且对指纹的断裂和粘接有一定的修复效果;但是在非指纹区域,由于没有指纹的方向信息做指导,该方法不尽如人意,效果较差,常把大量的背景点当作前景。
4 实验结果和算法分析
3.2.1 OSTU 算法
OSTU 算法对于质量好的指纹图像,处理效果想当好。质量好的图像是指物体和背景能够清楚的分开的图像,灰度直方图呈现明显的双峰状。
图(3.1) OSTU 算法
通过OSTU 算法,取出谷底对应的灰度作为阈值,能够很好的将背景和指纹分开。但是对于质量差指纹图案由于噪声使直方图双峰不明显,此算法不能找出正确的阈值,完全失效,将大量的前景点当作背景点(即阈值偏小)。
3.2.2 Bernsen 算法
采用这种算法,对于质量差的指纹图像能够有一定的效果,但是这个算法也有其内在的缺陷。在一个局部区域内,根据这个算法,总要分出前景和背景,实际上,这个区域可能全是背景或者全是前景。
通过此算法得出指纹图像中指纹的信息得到了很好的保存,但是也可以看到明显的噪声,这些区域本来应该是背景,由于此算法的缺陷导致了出现明显的噪声。通过结合全局阈值可以消除一部分影响,但总体看来,效果仍然不好。