指纹密码3

更新时间:2023-11-25 23:58:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

指纹密码识别问题

摘要

本文针对指纹图像的获取、指纹图像预处理、指纹图像特征提取以及对指纹图像的特征进行对比,通过快速细化算法和模式识别匹配算法模型来解决指纹密码识别问题。

问题一,考虑到要以第一个指纹图像确定一个与之唯一对应的指纹密码,故要区别出“弓型、弧型、螺旋型”等纹形轮廓和“平均纹密度、纹密度分布、平均纹曲率、纹曲率分布“等纹理特征,然后读取指纹图像、提取特征、保存数据和比对。通过指纹读取设备读取到人体指纹的图像,再对原始图像进行初步的处理,使之更清晰,再通过指纹辨识软件建立指纹的特征数据。

问题二,通过图像归一化先计算出图像灰度的平均值和方差,指定经过处理后期望的图像方差和平均值后,算出归一化后的图像G(i,j),然后运用方向法对图像分割使目标区域分割出来后二值化产生人工动态阀值,经平滑处理滤除空洞、毛刺,再采用快速细化算法细化指纹图像找到特征点后匹配其脊线长度、三角形边长和点类型,保留匹配对比后相似的值作为指纹特征密码。

问题三,考虑到指纹具有终身不变性、个体唯一性、可分类性这三个显著的特点,结合这三个显著特点再遵从一定的分类规则可以进行分类。其中指纹的分类原理是根据纹线的全局模式形态来进行的,可通过以指纹各区域信息作为分类特征、以指纹纹线编码作为分类特征和以指纹结构信息作为分类特征这三类现有的指纹自动分类算法来实现。

为了提高对模型求解准确性和明了性,本文采用Matlab算法对指纹图像一步一步动态处理。

本文的优点在于运用以现有的算法并采用不断优化的方式,针对指纹图像密码识别问题分别从指纹图像预处理、指纹特征提取、指纹匹配分步建模处理。预处理后将得到一幅宽度为一个像素的细化二值图像,然后通过特定的端点和交叉点的特征进行指纹匹配。结果表明,该方法效果良好。

1问题重述

1.1背景

人的指纹各不相同,里面藏着很多秘密。指纹可以用来确定人的身份,广泛用于刑侦、加密、考勤等领域,最近还出现了用指纹进行手机解锁等应用。还有一些人声称指纹与人的健康、性格、命运等都有一定的联系。指纹传统上以图像格式存储,一般占用较多的空间,且图像里面的像素信息并不易用来进行分析或比对。为发现指纹中隐藏的秘密,我们需要有一种方法来描述指纹的内在结构、具体形态和其它特征并将其用最少的字节数来存储于计算机中。

试根据下图中的指纹例子,不借助现有的指纹相关算法及软件,来尝试进行一次“指纹密码”发现之旅。 1.2所需要解决的问题

问题1:以第一个指纹为例,给出一种用不超过200字节(下面称为“指纹密码”)来刻画描述指纹基本特征的表示方法,介绍其数学原理。你能否进一步压缩表示指纹特征的字节数?对可能性予以讨论。你给出的“指纹密码”能否由指纹唯一确定?

问题2:将你的方法编程实现,对每一幅指纹都给出其“指纹密码”的表示。基于你找到的这些指纹表示,你能否给出一种方法比较不同指纹间的异同及相似程度?

问题3:你能否对以下16个指纹进行对比和归类?请给出你对比及分类的依据和结果。

问题4(选作):尝试用你的方法来分析是否可将你自己的指纹与队友的指纹予以明显区分。

2.问题分析

指纹识别技术从早期的人工比对到现在采用计算机技术实现自动指纹识别,指纹对比更加准确,识别效率得到极大提高。自动指纹识别过程通常由指纹图像滤波增强、二值化、细化、特征提取以及指纹匹配等几个环节构成。指纹图像滤波增强的目的是将有噪声干扰的指纹图像变得更加清晰,使得指纹图像的脊线更黑,谷线更白,当前在实际指纹图像增强算法的应用中一般是几种滤波增强方式结合起来使用,主要的方案是基于傅里叶变换结合滤波和指纹图像点方向场的下上下滤波器;指纹图像二值化,是将指纹图像变成灰度值只有0和255两种颜色的图像,当前,在自动指纹识别中常采用的是根据指纹图像的点方向场在指纹纹线方向和指纹纹线垂直方向上对指纹图像进行二值化处理;指纹图像细化是指删除指纹纹线的边缘像素,使之只有一个像素宽度,目前在自动指纹识别技术中常用的是OPTA算法的改进的图像模板细化算法;指纹特征提取,是将细化后使用计算机数字图像处理技术采集指纹图像中奇异点、端点、叉点等指纹特征数据,目前常用的特征提取算法是先对细化后的指纹图像进行初步去噪,然后提取特征点,再根据阈值去除伪特征点;指纹匹配,是指纹预留模板图像与输入样板图像中的所有特征点的匹配,目前在自动指纹识别系统中常采用可变大小的界限盒的指纹特征匹配算法。

目前指纹识别技术还有很多困难,例如当三维的指纹被指纹录入设备扫描成二维的数字图像时,会丢失一部分信息、,手指划破、割伤、弄脏、不同干湿程度以及不同的按压方式,还会导致指纹图像的变化,这给可靠的特征提取带来了相当地困难;例如传统的基于细节点的识别方法,是依靠提取指纹脊线上的细节点,然后对其位置和类型进行匹配,来识别指纹的,而噪声会影响特征提取准确度,增加错误的特征点或丢失真正的特征点。当噪声很大时,就要增加图像增强算法来改善图像的质量,但很难找到一种增强算法能够适应所用的噪声,多种增强算法又会大幅增加算法运行时间,不好的增强算法又会增加人为特征。当噪声增大时,提取了许多虚假细节点,还有可能丢失细节点,这就是传统的基于细节点识别算法的不足之处之一,因为它只利用了指纹图像中的一小部分信息(细节点位置和方向)作为特征进行匹配,丢失了蕴涵在图像中的其他丰富的结构信息。不难想象,基于这种方法的识别算法,很难全面适应指纹的变化。

鉴于题目所的是以第一个指纹为例,给出一种用不超过200字节(下面称为“指纹密码”)来刻画描述指纹基本特征的表示方法,介绍其数学原理。故要区别出“弓型、弧型、螺旋型”等纹形轮廓和“平均纹密度、纹密度分布、平均纹曲率、纹曲率分布“等纹理特征,然后读取指纹图像、提取特征、保存数据和比对。通过指纹读取设备读取到人体指纹的图像,再对原始图像进行初步的处理,使之更清晰,再通过指纹辨识软件建立指纹的特征数据。

3.模型假设

1、鉴于附件中指纹的分辨率较低,会有图像读取过程数据的不明确,故假设指纹图像分辨率已达到指纹图像识别技术的要求。

2、鉴于三维的指纹被指纹录入设备扫描成二维的数字图像时,会丢失一部分信息,故只对二维指纹图像处理,不考虑三维指纹。

4.符号说明 符号 f?x,y? ?x

?y ?l?1?X??2?? W

P Q

定义 图像灰度值

向量场x方向上的分量 向量场y方向上的分量

当前像素点的加权平均灰度值

w?w?大小为?的二维低通滤波器 模板图像中的细节点数 输入图像中的细节点数

5.模型的建立与求解

5.1问题一的建模与求解 5.1.1指纹的特征与分类

通指纹识别学是一门古老的学科,它是基于人体指纹特征的相对稳定与唯一这一统计学结果发展起来的。实际应用中,根据需求的不同,可以将人体的指纹特征分为:永久性特征、非永久性特征和生命特征。永久性特征包括细节特征(中心点、三角点、端点、叉点、桥接点等)和辅助特征(纹型、纹密度、纹曲率等元素),在人的一生中永不会改变,在手指前端的典型区域中最为明显,分布也最均匀。细节特征是实现指纹精确比对的基础,而纹形特征、纹理特征等则是指纹分类及检索的重要依据。人类指纹的纹形特征根据其形态的不同通常可以分为“弓型、箕型、斗型”三大类型,以及“孤形、帐形、正箕形、反箕形、环形、螺形、囊形、双箕形和杂形”等9种形态。纹理特征则是由平均纹密度、纹密度分布、平均纹曲率、纹曲率分布等纹理参数构成。纹理特征多用于计算机指纹识别算法的多维分类及检索。非永久性特征由孤立点、短线、褶皱、疤痕以及由此造成的断点、叉点等元素构成的指纹特征,这类指纹有可能产生、愈合、发展甚至消失。

指纹的生命特征与被测对象的生命存在与否密切相关。但它与人体生命现象的关系和规律仍有待进一步认识。目前它已经成为现代民用指纹识别应用中越来越受关注的热点之一。

图一.弓形 图二.环形 图三.螺旋

(b)环形线(c)箕形线(a)弓形线

(f)棒形线(d)螺形线(e)曲形线

5.1.2指纹密码识别方法

指纹识别技术主要涉及四个功能:读取指纹图像、提取特征、保存数据和比对。通过指纹读取设备读取到人体指纹的图像,然后要对原始图像进行初步的处理,使之更清晰,再通过指纹辨识软件建立指纹的特征数据。软件从指纹上找到被称为“节点”(minutiae)的数据点,即指纹纹路的分叉、终止或打圈处的坐标位置,这些点同时具有七种以上的唯一性特征。通常手指上平均具有70个节点,所以这种方法会产生大约490个数据。这些数据,通常称为模板。通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果。

图四.特征点

5.1.3问题一的结果分析

由上述可知问题一中的第一个指纹的基本特征表现为带端点的曲形线指纹类型,经已改进后的方差法求得其脊线基于方向场二值化后的动态阀值,借以列表之后找其规律来发现清晰目标区和可恢复区的数据来显示密码,而把不可恢复区和背景区的数据忽略来压缩表示指纹特征的密码字节数。 5.2问题二的建模与求解 5.2.1指纹图像预处理

预处理是将输入的(直接采集进来的)低质量、有噪音的指纹源图象处理成已细化了的清晰的二值图像[3]。它的目的是减少低质量的图像对分类识别结果的影响,预处理中一般包括图像增强、滤波、二值化、细化等步骤。预处理的方法通常有两种:

方法一:先求方向图,后求频率图,最后由此得到的Gabor滤波器对图像进行滤波。这种方法计算量比较大,在求频率图容易产生偏差,不利于单片机的实现。

方法二:结合指纹图像自身的特点以及其源图像像素来确定该点是否为脊,直接准确地得到黑白二值的指纹脊图像。这 种方法对于从不同渠道获得的图像均有不错的效果。

在以上两种方法都要用到方向图,方向图是一种可直接从原灰度图像中得到的有用信息,在预处理、特征提取、指纹分类中有着重要意义。我们总是在准确求得方向图的基础上运用各种滤波方法或直接找脊的方法来进行预处理。

方向图描述了指纹图像中每一像素点所在脊线或谷线在该点的切线方向,也可看作是指纹源图像的一种变化表示方法,既用纹线的方向来表示该纹线。方向图分为两种:一种是点方向图,表示源指纹图像中每一点脊线的方向:另一种是块方向图,表示源指纹图像中每一块脊线的大致方向。计算方向图的基本思想是:在原灰度图像中每一点(或每一块在各个方向上的某个统计量(如灰度差、梯度等),根据这些统计量在各个方向上的差异,确定该点(块)的方向。

基于细节点特征的指纹自动识别技术是目前这方面研究中的主流,这种系统的实现有以下一些步骤如下图:

指纹图像滤波二值化细化特征提取后处理特征匹配结论预处理图五

5.2.2指纹图像方向图的计算

设f?x,y?是指纹图像中点?x,y?的灰度值,要计算该点的方向D?x,y?,需要先求出

Sd (该点临域沿d方向的灰度变化)。

Sd=?f?x,y??fd?xk,yk?, d=1,2,···,N

k?1n图六.点方向示意图

其中:xk,yk是方向d上的第k个点; fd?xk,yk?是该点的灰度值,N是所取的方向数,n为每个方向上所取的邻点数。这两个数的具体取值与图像的分辨率有关,一般取N=16,即取16个方向,n=8,即一个方向上取8个邻点。

S点?x,y?的方向为d取值最小的方向。对图像中的每一点求取点方向,这样便形成了指纹点方向图。

此方向求得的方向特点:

1.方向取值不是0~2?中的任意值,而是有限的几个数。

2.这种方向计算出的方向范围是0~2?,有利于求取指纹的走势。(?/4与5?/4认为是不同方向)

由点方向图求块方向图的计算算法:

把点方向图分成w?w大小的块,对每一块计算方向直方图(横坐标的方向取到的N个值,纵坐标为取这些方向的象素个数),方向直方图中的峰值所对应的方向,即该块的方向。

最小均方估计块方向算法:

f?i,j?代表指纹图像在?i,j?处的灰度值步骤: 1.将图像分成大小为M?M的块。这里M的大小以包含一脊一谷(即一周期)为宜;

G?i,j?Gy?i,j?2.计算块中每个像素f?i,j?在x轴和y轴上的梯度x和。

这里用简单的梯度算子:

Gx?i,j?=?f?i?1,j?1??2f?i?1,j??f?i?1,j?1?? ??f?i?1,j?1??2f?i?1,j??f?i?1,j?1??

Gy?i,j???f?i?1,j?1??2f?i,j?1??f?i?1,j?1??

????f?i?1,j?1??2f?i,j?1??f?i?1,j?1??

3.用下面公式计算M?M块的方向?

?M?1M?1????2Gx?i,j?Gy?i,j??1i?0j?0? G?0且G?0??tan?1?xy?M?1M?12? 22????Gx?i,j??Gy?i,j????i?0j?0?

GG当M?M的块中x或y为零的比率很大时,块方向应直接设为0或?,这样M?M块中的每一个像素的方向都等于?。

??图七.指纹图像的方向图

在计算指纹图像方向图多采用块与块直接不重叠的方式,但这样求出的块方向仅由该块所包含的像素点所决定,没有考虑其周围像素点的影响,很容易造成方向的不连续性。于是我们采用在计算方向图时,采用块重叠的方式。这样可以使方向图精度可以大大提高。

这里我们采用将方向图正交分解后分别进行滤波的方法对它进行平滑,实验证明这种方法比一般用的中值滤波和加权平滑的方法的效果好。

计算步骤:

将方向图转变为连续的向量场:

?x?i,j??cos?2O?i,j?? ?y?i,j??sin?2O?i,j??

??

这里x,y分别是向量场x,y方向上的分量。

实现低通滤波:

??x?i,j???y?i,j???u?w?/2v?w?/2u??w?/2v??w?/2u?w?/2v?w?/2??W?u,v????i?uw,j?vw?

xu??w?/2v??w?/2??W?u,v????i?uw,j?vw?

yw?w?这里W是一个大小为?的二维低通滤波器,一般使用5?5的均值滤波。 平滑后的方向场为:

????i,j??1y?O??i,j??tan?1? ?2????i,j????x?

5.2.3指纹图像滤波

在指纹处理中用到滤波器,主要在于去除图像噪声,增强图像质量,即增强指纹脊与谷的对比度,修补图像——连接脊中出现的断点、去除图像中的叉连现象。

指纹图像滤波有两种方法:

方法一:利用Gabor滤波器的参数可利用指纹的方向性和纹理性,用Gabor滤波器来作为带通滤波器,去除噪音,增强脊谷结构。这种算法难点在于需要计算图像的频率图——将指纹图像看成由脊和谷组成的周期图像,在每一个局部领域内都会有一个相对固定准确的频率。这种算法的缺点在于:求频率图导致计算量比较大,而且频率容易产生偏差;

方法二:这种方法也是我们采用的滤波方法。这是一种简单但效果良好的上下文滤波器,上下文滤波法也是基于方向图的,这是一系列上下文相关的滤波器,使用时根据某一快的方向从一系列滤波器中选择一个相应的滤波器来对这一块进行滤波。其他方向的滤波器可以通过旋转得到。

一个基本的滤波器由两部分组成:平均滤波器和分离滤波器。平均滤波器的作用主要是连接边中出现的断点,而分离滤波器可以去除图像中的叉连现象。(断裂和叉连的情况;如右图3-4所示)。

滤波器的大小由指纹图像中脊线的周期决定,在我们的试验中,周期取为5,因而这里以Sx5大小的滤波器为例。水平方向的平均滤波器的权值如右图3-5所示,其中系数满足:X?Y?Z?0。

经过平均滤波器过滤的图像,其中每一点的灰度由其临近的24个像素的灰度值共同决定。即对于第i行j列的点的灰度值f?i,j?的处理如下:

图八. 断裂与叉连

f?i,j??2

2

图九. 平均滤波器的权值

2

m??2?Z?f?i?2,j?m???Y?f?i?1,j?m???X?f?i,j?m?

m??2m??2?m??2?Y?f?i?1,j?m???Z?f?i?2,j?m?

m??222若图像中出现断点,即这一点的灰度值比周围点都小得多,则经过平均滤波器的处理,它的灰度值就接近邻近点的灰度值了,所以平均滤波器有连接断点的作用。 分离滤波器的权值如图3-6所示,其中参数:P+2Q+2R=0。分离滤波器处理图像过程与平均滤波器相同,图像中的叉连点是把相邻的两条脊线连

接起来的点,所以叉连点的上下点灰度值较大,而其同一行上的邻点的灰度值较小,通过分离滤波器的处理,叉连点的灰度值会明显降低,所以分离滤波器有去除叉连点的作用。

一个基本滤波器要求具备上述两种功能,它的作用相当于平均滤波器加分离滤波器,所以它的权值如右图3-7,其中参数:K=X十P,L=Y+Q, M=Z+R。为归一化权值,基本滤波器的每个权值都需要除以该滤波器所有权值的总和。

图十.分离滤波器的权值

图十一.基本滤波器的权值

用方向滤波器进行滤波去噪时,根据块方向图中的该块的方向,选用相应的滤波器(将水平方向的滤波器旋转块方向的角度后得到),进行滤波。 5.2.4 基于方向图的动态阀值指纹图像二值化方法

二值化是指纹图像预处理中必不可少的一步。常用的二值化方法有固定阀值法、自适应阀值法、局部自适应阀值法等,这些方法仅仅利用了图像的灰度信息,对指纹图像的二值化效果很不理想;现有的大部分指纹图像预处理方法都是经过滤波处理后再进行二值化[6],这样就需要对图像进行两次扫描,不利于处理速度的提高。

将指纹图像自身的方向结构特点与源图像灰度值变化特点结合起来,确定对图像中每一像素点二值化的动态阀值。这种方法取代了一般指纹图像预处理中无效区域分割、滤波、增强、二值化等步骤,一次完成图像的二值化功能。实验结果也表明,该方法得到的二值化图像能够基本保持源图像上的特征点不丢失,确保了以后的特征提取和比对的正确性和可靠性。指纹局部图如下图:

(A) 原始图像 (B)谷脊变化波形图

图十二.指纹谷脊变化波形图

方框Y方向是该块的指纹方向,X方向是其法线方向。以法线方向上各像素点的灰度值做一曲线,可得到近似于正弦的波形图,如图3-8(B)所示。显然,该波形图的波谷对应指纹图像的脊线(指纹图像中暗的纹线),而波峰则对应指

纹图像的谷(指纹图像中亮的纹线)。若所考察的当前像素点恰好落在波谷上,则该点就是指纹脊线点,若所考察的当前像素点恰好落在波峰上,则该点就是指纹谷点,而谷点到脊点间像素灰度的变化几乎呈线性,正是基于指纹图像在结构上和像素灰度变化上的这些特点,本文提出了下述指纹图像二值化方法:

1.将图像分成大小为N×N的小块,用上述方向图改进方法计算各小块的方向?;

?i,j?,以其所在块的方向?作为该像素点的方向

2.对图像中的每一点??i,j?,并以该点为中心在其法方向上取l?w(l,w一般为奇数)的矩形窗,计算矩形窗内指纹方向每一列中像素点在法方向上的加权平均X?0?,X?1?,???,X?w?1?,具体公式为:

X?k???coefficent?d??f?ikd,jkd? k?0,1???w?1 (3.11)

d?0l?1其中coefficent为加权平均系数,满足d?0列上的第d个像素的位置。

3.对

?coefficent?d??1l?1 ,

?ikd,jkd?是k

X?k??k?0???w?1?中极大点或极小点附近的波动做平滑处理; 极大点和极小点位置及对应的值,对极大值极

4.找出

X?k??k?0???w?1?小值求平均,将此平均值作为该点二值化门限,称其为动态阀值。

?l?1?X??5.将当前像素点的加权平均灰度值(即?2?)与动态阀值进行比较,

若小于动态阀值,同时,当前像素点在波形图极小点一个有限的邻域内,则当前像素点为脊线点,否则即为谷点,即:

??0f?i,j????255???l?1???l?1?X?动态阀值?极小点位置????2????2???????

其他其中?的取值与指纹读入器的分辨率有关,通常取为指纹周期的四分之一,本文取??2。

Xk?k?0???w?1?若??的起伏很不明显,说明该区域属于无效区域或背景区

域,整个区域的像素值置为255。

本算法在具体实现中可利用同一块中所有像素有同样方向的条件,推导出快速算法,防止一些点的重复扫描,大大缩短处理时间。 5.2.5指纹图像细化

指纹图像细化有两种方法:

方法一为快速细化算法,采用八连通邻域,遍历图像找出边界点, X点周围的点多于三个目标点时,将多余的点删除,依次删除到剩下三个时判断该点

是否为分叉点,不是再删除,剩下两个点时,判断是否为连续点,不是时删除,当为一个点时不删除。

图十三. X点的八邻域 图十四. 4*4模板

方法二为改进的OPTA算法,采用统一的4*4模板,如图十四

图十五.消除模板

图十六.保留模板

通过改进后的OPTA算法找到保留模板和消除模板,对保留模板细化处理后得到指纹图像细化图。

图十七.细化图

5.2.6指纹图像特征点提取

特征提取一般是指提取指纹图像的局部特征,也就是细节点特征。在基于细节点的指纹自动识别系统中,特征提取是在细化后的指纹图像上进行的。因为特征点必然是从端点和交叉点里找出,所以在得到细化的图像后,我们首先要找出所有的端点和交叉点。

特征提取一般是指提取指纹图像的局部特征,也就是细节点特征。在基于细节点的指纹自动识别系统中,特征提取是在细化后的指纹图像上进行的。首先对通过定义函数P.m对图像中每个点的8邻域位置进行坐标定义,方便后续编程, 后用函数point.m找出点。

在指纹图像的边缘,由于采集仪器的关系,不可避免的多出很多端点,一方面增加了后续工作量,另一方面还可能产生错误,所以有必要将这些边缘的端点去除,而去除图

像边缘的端点可以用cut函数处理 。

X,X,???X8M是待检测的点,12是它的八邻域,沿顺时针方向排列。R?1?,R(2)???R,(8)是细化后图像在X1,X2,???X8处的灰度。如果M是端点,则它的八邻域满足:

CN??R?k?1??R?k??2k?188R?9??R?1?,

如果M是分叉点,则它的八邻域满足:

CN??R?k?1??R?k??6k?1,

R?9??R?1?

这样我们就可以在细化后的图像中找到细节点(端点和分叉点),并记录它们在图中的相对位置。

运行完程序后,将所有的端点和交叉点全部找出。定义的数组txy第一项为横坐标,第二项为纵坐标,第三项为2或6(2为端点、6为交叉点)。

得到的标出端点和交叉点的图像如下图:

图十八. 去除边缘端点后的图像 图十九.满足条件的特征点 5.2.7找出指纹图像特征点

经过光滑处理和去除边缘端点后进一步减少了端点和交叉点的个数。下面就要找出一些独特的端点来作为特征点。在一幅细化的指纹图上,如果一个端点的周围半径为r个像素的圆内没有任何端点或交叉点,那么随着r的逐渐变大,这样的点会越来越少,也就越来越独特。

于是我们设计了一个函数single_point来找出这样的点。设置一函数single_point 找出半径r内唯一的特征点 设置一函数walk判断在一端点的num距离内是否有另一端点。设置一函数last1找出半径为r个像素的圆内没有任何端点或交叉点,并且沿脊线走num个像素内没有另一个端点或交叉点的端点。比如在执行[pxy2,error]=single_point(txy,20)后,会显示出图十九。由运行结

果可知,有3个端点(图中用红点标出)满足周围半径为20个像素的圆内没有任何端点和交叉点的条件。

5.2.8指纹图像特征点匹配

首先是纹线长度匹配。对于上面找出的特征点和纹线,每沿着纹线走5个像素测量一下到原始端点的距离。由distance函数得到,函数定义了一个数f=(sum(abs((d1./d2)-1)));接着进行三角形边长匹配设置一find_point 函数,函数定义了一个数ff=(sum(abs((dd1./dd2)-1)));然后对点类型进行匹配,在最终函数中定义了一个数fff=abs(f11-f21)/(f11+f12)。当ff值越接近于0,这两幅图像的匹配度越高。 5.2.9问题二的结果分析

本程序中取r=8,num=60,经过反复试验,可以得到f的阈值为0.5,ff的阈值为1.5,fff的阈值为0.2。即三幅图像的f,ff,fff若均小于阈值,则两幅图匹配,显示出MATCH。若三个值中有至少一个值大于阈值,则不匹配,显示出NOT MATCH。

实验中我们进行了数次匹配(每次匹配大概需要70秒),下面列出两组结果:

Zhiwen8和zhiwen7:f=0.3525;ff=0.6803;fff=0.1463。所以匹配。 Zhiwen8和zhiwen1:f=0.1389;ff=1.5441;fff=0.2927。所以不匹配。

5.3问题三的建模与求解 5.3.1指纹特征对比

指纹细节对比一般在极坐标系中进行,因为指纹图像的非线性形变往往呈放射状,在某个区域内的形变比较大,然后非线性地向外扩张,因而,在极坐标中能更好地描述非线性形变;另外,在极坐标中不需要考虑输入图像与模板图像的参照点之间的平移,将一对对应点的坐标相对于参照点转换为极坐标时,平移就被抵消了;还有,在极坐标系中显然比在直角坐标系中更便于处理两幅图像间的旋转。细节点集的校准:

表示模板图像中的M个细节点,

P??x,y,?P1P1T?PT1?,???,?x,y,?PMPMTPTM??

Q??QQQ,yN,?N?x1Q,y1Q,?1Q?,???,?xN??

表示输入图像中的N个细节点。

为了把细节点转移到极坐标系中去,需要在模板细节点集和输入细节点集中各选一个参照点作为相应的极坐标系中的原点,并算出其它细节点相对于参照点的极坐标。由于事先不知道模板点集与输入点集的对应关系,需要考虑所有可能的参照点对。

P?1?i?M?Q?1?j?N?对模板点集中的每一点i和输入点集中的每一点j,定义

rotate?i??j?PQ为将i和j当作参照点对时,从输入图像到模板图像的旋转角度。PQ如果,i和j可以被当作一对对应点,即它们分别对应的脊线相似性到了一定

rotat?e??ij?程度,则将取0度到360度间的一个值,否则,我们定义

rotate?i??j?PQPQ取值为400,以表示i和j不能是一对对应点。如果i和j是不同

类型的细节点,也就是说它们一个是端点,一个是分叉点,则它们不是对应点

rotate?i??j?rotate?i??j??400PQ对,取值为400。即,表示i和j对应的脊线相似性到了一定程度。

5.3.2指纹特征分类基础

指纹作为人与生俱来的一种生物特征,具有三个显著的特点: 1.终身不变性

指纹的纹线和细节是永远不变的,一个人从胎儿直到死亡,皮肤表面外形的变化,都不影响其线型和细节。即使皮肤表面受到损伤之后,不久仍能恢复原状。

2.个体唯一性

几乎没有两个指纹是完全一致的,至今仍找不出两个指纹完全相同的人,即使是孪生兄弟姐妹,他们的指纹也各不相同。不仅人与人之间,同一个人的十指之间,指纹也有明显的区别。这里指纹完全一致是指两个指纹类型和细节完全一致。 3.可分类性

指纹的纹线排列具有一定的内在规律,根据这些规律我们可以对指纹进行分类。正是由于指纹具有上面这些特性,才使得我们有可能对指纹进行系统地分类。在指纹分类的过程中,将会涉及到指纹的总体特征和局部特征之中的概

念术语,对指纹的总体特征和局部特征这两类指纹的特征作一个统观概述。 5.3.3指纹特征分类原理

所谓模式识别,粗略地说就是对给定事物按一定的特征和规则进行分类,判别给定事物属于哪一类。指纹分类也不例外,必须结合一定的分类特征再遵从一定的分类规则来进行。

指纹分类是根据纹线的全局模式形态来进行的,这是指纹分类的基本原理,也是所有指纹分类方法的总的基本指导思想。因为,人们经大量统计发现,虽然纹线的全局模式形态因人而异,但变化的种类是有限的。这表明把所有指纹分别归属于有限的几个类中是可能的,从而奠定了指纹分类的理论基础。

在现有的指纹自动分类算法中,主要有以下几类分类特征: 1.以指纹各区域信息作为分类特征

此时,分类算法以指纹各区域信息作为分类特征。它首先根据指纹的图像信息求出指纹的方向图,然后根据指纹的方向图将指纹图像分为各个区域,最后根据指纹图像中各区域的方向信息的组合给出指纹类别。根据此分类算法理论上可以将指纹分为无限类,但是在实际中随着指纹区域划分的增多,指纹分类的准确度也将降低。另外由于此分类算法没有考虑指纹自然分类的特点,所以使用这种算法进行指纹分类,分类是否正确很难验证,人们对分类准确度不容易确认,而且实现起来相对也较困难。 2.以指纹纹线编码作为分类特征

此时,分类算法以纹线编码作为分类特征。它以指纹的走向为基础,将指纹纹线转化为一条由许多条直线组成的折线,然后再用能代表指纹方向流的符号对这条折线进行编码,把折线的各种可能端点及方向转折点作为基元来跟踪,得到由基元组成的描述折线的编码。以指纹纹线编码作为分类特征,通过对编码作句法析将指纹归类。

3.以指纹结构信息作为分类特征

指纹图像中,存在两类奇异点:中心点(Core)和三角点(Delta)。这些全局结构特征信息可以用来作为分类特征。为提取结构信息,首先提取出指纹图像的方向场,再由方向场提取指纹图像的中心点和三角点结构信息,最后根据得到的指纹结构信息的数量和位置关系将指纹分类。以指纹结构信息作为分类特征,保留了指纹自然分类的信息,分类的类别与人工专家分类非常一致,而且类别直观性较好,分类类别比较具有典型性,便于评判指纹分类的准确度、检测分类算法的性能。以指纹结构信息作为分类特征的分类算法,关键在于准确地提取出结构信息。 5.3.4问题三的结果分析

由模型的求解过程可以得到上面结果显示了指纹特征对比的相似度,而归类指纹是根据纹线的全局模式形态来进行的。

6参考文献

1 姜启源等.数学模型[M].北京:高等教育出版社,2003.

2 刘 莎、姜长生.构建基于Intel PXA255的指纹识别系统.微处理机.200(5):106—108

3 李建华,马小妹,郭成安,基于方向图的动态闽值指纹图像二值化方法.大连理工大学学报. 2002,42(5):626-628

4 冯星奎,李林艳,颜祖泉. 一种新的指纹图像细化算法.中国图像图形学报.1999, 4(10):835-838

5 吕凤军.数字图象处理编程入门一一做一个自己的Photoshop.北京:清华大学出版社,1999

6 刘文星,王雄沂,母国光.纹线跟踪及其在细化指纹后处理中的应用.光电子·傲光,2002,13(2):184-187

7 刘家锋,唐降龙,赵泉.一个基于特征点匹配的联机指纹鉴别系统.哈尔滨工业大学学报,2002,34(1):132-136

8 简兵,庄镇泉等.基于脊线跟踪的指纹图细节提取算法.电路与系统学报,2001

9 罗希平,田捷.自动指纹识别的图像增强和细节匹配算法.软件学报,2002-5,13(5): 946-956.

10 乔治宏.基于细节结构的指纹特征提取及匹配算法研究.北京:北京工业大学硕士学位论文,2004-5.

7附录

7.1图像预处理代码

Pretreatment.m程序如下: 归一化

Function img = My_imread(path) M=0;var=0;

I=imread(path); for x=1:m

for y=1:n

M=M+I(x,y); end end

M1=M/(m*n); for x=1:m

for y=1:n

var=var+(I(x,y)-M1).^2; end end

var1=var/(m*n); for x=1:m

for y=1:n

if I(x,y)>=M1

I(x,y)=150+sqrt(2000*(I(x,y)-M1)/var1);

else

I(x,y)=150-sqrt(2000*(M1-I(x,y))/var1); end end end

figure, imshow(uint8(I)) ;

*****************************************************************************

分割

M =3; %3*3 H = m/M; L= n/M; aveg1=zeros(H,L); var1=zeros(H,L); % 计算每一块的平均值 for x=1:H; for y=1:L;

aveg=0;var=0; for i=1:M;

for j=1:M;

aveg=I(i+(x-1)*M,j+(y-1)*M)+aveg; end end

aveg1(x,y)=aveg/(M*M); % 计算每一块的方差值 for i=1:M; for j=1:M;

var=(I(i+(x-1)*M,j+(y-1)*M)-aveg1(x,y)).^2+var; end end

var1(x,y)=var/(M*M); end end

Gmean=0;Vmean=0; for x=1:H

for y=1:L

Gmean=Gmean+aveg1(x,y); Vmean=Vmean+var1(x,y); end end

Gmean1=Gmean/(H*L);%所有块的平均值 Vmean1=Vmean/(H*L);%所有块的方差 gtemp=0;gtotle=0;vtotle=0;vtemp=0; for x=1:H

for y=1:L

if Gmean1>aveg1(x,y) gtemp=gtemp+1;

gtotle=gtotle+aveg1(x,y); end

if Vmean1

vtotle=vtotle+var1(x,y); end end end

G1=gtotle/gtemp;V1=vtotle/vtemp; gtemp1=0;gtotle1=0;vtotle1=0;vtemp1=0; for x=1:H

for y=1:L

if G1

gtotle1=gtotle1+aveg1(x,y); end

if 0

vtotle1=vtotle1+var1(x,y); end end end

G2=gtotle1/gtemp1;V2=vtotle1/vtemp1;

e=zeros(H,L); for x=1:H for y=1:L

if aveg1(x,y)>G2 && var1(x,y)

if aveg1(x,y)< G1-100 && var1(x,y)< V2 e(x,y)=1; end end end

for x=2:H-1

for y=2:L-1

if e(x,y)==1

if e(x-1,y) + e(x-1,y+1) +e(x,y+1) e(x+1,y) + e(x+1,y-1) + e(x,y-1) + e(x-1,y-1) <=4

e(x,y)=0; end

+ e(x+1,y+1) + end end end

Icc = ones(m,n); for x=1:H for y=1:L

if e(x,y)==1 for i=1:M for j=1:M

I(i+(x-1)*M,j+(y-1)*M)=G1; Icc(i+(x-1)*M,j+(y-1)*M)=0; end end end end end

figure, imshow(uint8(I));title('分割');

*****************************************************************************

二值化

temp=(1/9)*[1 1 1;1 1 1;1 1 1];%模板系数 均值滤波 Im=double(I); In=zeros(m,n); for a=2:m-1;

for b=2:n-1;

In(a,b)=Im(a-1,b-1)*temp(1,1)+Im(a-1,b)*temp(1,2)+Im(a-1,b+1)*temp(1,3)+Im(a,b-1)*temp(2,1)+Im(a,b)*temp(2,2)+Im(a,b+1)*temp(2,3)+Im(a+1,b-1)*temp(3,1)+Im(a+1,b)*temp(3,2)+Im(a+1,b+1)*temp(3,3);

end end I=In;

Im=zeros(m,n); for x=5:m-5; for y=5:n-5;

sum1=I(x,y-4)+I(x,y-2)+I(x,y+2)+I(x,y+4);

sum2=I(x-2,y+4)+I(x-1,y+2)+I(x+1,y-2)+I(x+2,y-4); sum3=I(x-2,y+2)+I(x-4,y+4)+I(x+2,y-2)+I(x+4,y-4); sum4=I(x-2,y+1)+I(x-4,y+2)+I(x+2,y-1)+I(x+4,y-2); sum5=I(x-2,y)+I(x-4,y)+I(x+2,y)+I(x+4,y);

sum6=I(x-4,y-2)+I(x-2,y-1)+I(x+2,y+1)+I(x+4,y+2); sum7=I(x-4,y-4)+I(x-2,y-2)+I(x+2,y+2)+I(x+4,y+4); sum8=I(x-2,y-4)+I(x-1,y-2)+I(x+1,y+2)+I(x+2,y+4); sumi=[sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8];

本文来源:https://www.bwwdw.com/article/lakt.html

Top