基于STFT滤波算法的指纹图像识别系统的设计与实现【5】
![](/img/2020wbc/imgs/icon_type.png)
3.3.2纹理特征提取
在传统的基于细节特征点的方法中,特征由征特征位置和方向表示,特征点之间的相对位置和方向包含了指纹内在的鉴别特征。这是细节特征点方法中重要的是特征点数的多少,同样也是比较困难的一点,因为不同数目的点集之间的匹配较为复杂。在基于指纹纹理特征的特征表示方法中,指纹图局部区域的纹理方向和频率是最主要的鉴别信息。这要求基于纹理的特征表示要能保持尺度、位置和旋转不变性。
指纹特征的提取都基于指纹图像中比较固定的某一个参考点及其周围区域,只要能确定这个参考点,就能以该点基础提取指纹特征。这里采用指纹图像中心点作为参考点,这个中心点定义为指纹纹线曲率最大的点,由于这个点通常在有效指纹图的中心区域,因此称成为中心点。以下是检测中心点算法.设Q表示指纹图像的方向场,Q(I,j)表示(i,j)位置局部纹线的方向,用块方向表示纹线局部方向。把指纹图像分为w×w的块,每一块都有自己的方向。
这里要再次提到计算指纹方向场的方法,最小均方估计法:
1、 I为输入图像,将其分为互不重叠的w*w块。
2、 计算每个像素位置(I,j)处的梯度δx(I,j)和δy(I,j)。
3、 估计每一个以(I,j)为中心的块的局部方向。
中心点检测算法步骤如下:
1、 估计指纹图像方向场o。
2、 在局部领域中平滑方向场,平滑后的方向场为o’,为了进行平滑,需要将方向场转换到连续向量场:
3、 对方向场取sin,记为ε。
4、 初始化用于标记中心点的图像A。
5、 对于ε中的每个位置(I,j)做如下计算:
6、 在A中寻找最大值,并将该店标记为中心点。
7、 重复1至6步数次,每一次的检测在上一次测出的中心点的邻域中进行。
用这种方法求得的中心点相对而言较为精确,结果如图3-5所示。
3.3.3本文提出的特征提取方法
细节特征提取和纹理特征提取两种方法各有所长,所以我结合了这两种方法的长处,在细化后的指纹图像基础上对指纹特征进行细节提取和纹理特征提取,将结果保存为二进制字符串格式,我将这种指纹特征提取方式命名为——基于细节和纹理特征的细化指纹图像特征提取算法,具体计算方法如下:
1、 对细化后的图像G进行中心点计算,得到位置坐标(i,j),记录到结果字符串的前八位之中。(采集的指纹格式为16像素*16像素,i<=15,j<=15)。
2、 对细化后的图像G进行细节提取,得到端点a的个数和分支点的个数b,将a和b记录到字符串的第9到16位。
3、 根据指纹图像预处理中的二值化结果,将指纹像素按顺序转换为二进制格式的字符串(长度256),记录到字符串的17到272位中。
最终存储在数据库中的字符串长度为272位,用于指纹特征匹配。
3.4特征匹配模块详细设计
本系统将输入的指纹图像转换成二进制字符串进行存储,因此对指纹特征的匹配就转换为了对字符串相似程度的匹配过程,下面将介绍几种用于相似度匹配的算法。
3.4.1 Levenshtein距离算法
Levenshtein 距离(编辑距离)是指从一个字符串变换到另一个字符串需要的最少编辑操作次数。编辑操作包括对一个字符的替换,插入和删除。
一般情况下,两个字符串的Levenshtein距离越小则相似程度越高。可以使用动态规划来解决这类问题,动态规划方程如下:
3.4.2余弦相似度算法
余弦相似度是描述直线之间偏离程度的量,我们可以将字符串通过一定的函数映射到空间中,在计算二者的相似性。设有两个字符串A,B,则计算公式如下:
P(A,B) = sqrt(A × B) / (|A| × |B|)
3.4.3矩阵相似度算法
对于两个字符串A,B,固定A,将B进行单方向滑动,每次滑动记录下当前位置的相似度Q,最终两个字符串的相似度为所有Q中的最大值,计算公式如下:
3.4.4本文采用的算法
编辑距离算法是目前主流的字符串相似度匹配算法,相对于其他两种算法计算量最小,也最容易实现,故本系统的指纹特征匹配模块采用改进后Levenshtein距离算法对用户的指纹信息进行匹配认证。在基本的编辑距离基础上,结合实际应用,将邻近字符替换的编辑值也置为1,这样可以在一定程度上解决手指移位对验证结果的影响。
3.5用户指纹验证模块
用户指纹验证模块需要使用本文提出的质问预处理与特征提取和特征匹配方法机来构造,将这些方法封装到SimilarFinger类中,通过对SimilarFInger类进行实例化来调用这些方法,实现指纹特征字符串的生成和匹配,也就是说,用户指纹验证模块包含上述提到的所有模块,类设计如表3-1所示。
![]() | ![]() |
分享让更多人看到
推荐阅读
相关新闻
- 评论
- 关注