首页 理论教育 实现指纹识别算法-嵌入式Linux编程进阶

实现指纹识别算法-嵌入式Linux编程进阶

时间:2023-10-31 理论教育 版权反馈
【摘要】:由于本系统采用同一指纹扫描器,因此可输入指纹之间的缩放比为1,所以缩放不需要考虑。匹配流程如图14-6所示。

实现指纹识别算法-嵌入式Linux编程进阶

通过指纹采集器输入的指纹图像是一幅含噪声较多的灰度图像,这些噪声不仅散布在指纹图像的前景区域,而且还存在于指纹图像的背景区域,所以必须经过预处理。通过对原始灰度图像进行增强,得到质量较好的指纹图像,然后进行特征提取和识别。主要程序如下所示。

1.指纹图像增强(Gabor滤波法)

构造Gabor滤波器:

978-7-111-33316-6-Chapter14-28.jpg

用Gabor滤波器进行滤波:

978-7-111-33316-6-Chapter14-29.jpg

2.指纹图像的细化

采用经典形态学细化方法,程序如下:

978-7-111-33316-6-Chapter14-30.jpg

978-7-111-33316-6-Chapter14-31.jpg

3.指纹图像的特征点提取

提取特征点函数如下:

978-7-111-33316-6-Chapter14-32.jpg

978-7-111-33316-6-Chapter14-33.jpg(www.xing528.com)

4.指纹图像的特征匹配

本系统采用的点模式匹配问题,实际上是两枚指纹的匹配转换成输入局部特征向量集合和模板局部特征向量集合(以下简称点集)进行比对的过程。保存的原始指纹和待测指纹之间不可避免地会存在缩放、平移、旋转和变形等差异。由于本系统采用同一指纹扫描器,因此可输入指纹之间的缩放比为1,所以缩放不需要考虑。平移、旋转和变形问题在匹配过程中的两个阶段,即初匹配和二次匹配中解决,并完成匹配。

(1)初匹配

由于原始指纹和待测指纹之间存在着平移和旋转,所以进行匹配时只采用局部特征向量的结构性信息和中心特征点的类型,即LFV中的(type,ridge[3],vector[3])。这些结构性信息是特征点之间的相对位置关系和相对角度关系,所以平移和旋转的问题不影响匹配。这里用neibor[i][j]记录相邻特征点的匹配分数,用ridge[i][j]记录纹线的匹配分数。具体算法描述如下:

978-7-111-33316-6-Chapter14-34.jpg

978-7-111-33316-6-Chapter14-35.jpg

(2)二次匹配算法

在完成坐标校准和得到模板特征的限界盒后,就可以进行匹配了。二次匹配的对象是局部特征向量中的特征点的坐标和方向。和初匹配类似,这里也用匹配分数来表示待测指纹特征点集和模板点集之间的相似程度。分数越高,匹配度也就越高。将匹配的分数记录在score[i][j]中。匹配分数的计算方法用程序描述如下:

978-7-111-33316-6-Chapter14-36.jpg

至此,整个匹配全部完成。匹配流程如图14-6所示。

978-7-111-33316-6-Chapter14-37.jpg

图14-6 匹配流程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈