1、本科毕业论文(设计)论文题目:基于MATLAB的指纹识别系统的设计与实现姓名:学号:班级:年级:专业:学院:指导教师:完成时间:武昌工学院本科毕业论文(设计)专用稿纸 作者声明本毕业论文(设计)是在导师的指导下由本人独立撰写完成的,没有剽窃、抄袭、造假等违反道德、学术规范和其他侵权行为。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。因本毕业论文(设计)引起的法律结果完全由本人承担.毕业论文(设计)成果归武昌工学院所有。特此声明. 作者专业:作者学号: 作者签名:年 月 日基于MATLAB的指纹识别系统的设计与实现XXXThe design and implement
2、ationof fingerprint identification system based on MATLABX, X 2017年02月26日武昌工学院本科毕业论文(设计)专用稿纸摘 要本文系统地介绍了指纹识别技术的发展和国内外研究应用现状,阐述了建立指纹识别系统的必要性和意义.以数字图像处理为基础,研究指纹识别的原理和方法,重点分析基于神经网络指纹识别算法、滤波特征和不变矩指纹识别算法和指纹匹配算法,将matlab作为仿真工具,针对已有的三种指纹识别算法进行编程识别;并通过实验论证各种算法的优缺点。关键词:指纹识别;算法;Matlab仿真1AbstractThis paper syste
3、matically introduces the development of fingerprint recognition technology application status at home and abroad, establishing a fingerprint identification system described the necessity and significance。 Based on digital image processing to study the principles and methods of fingerprint identifica
4、tion, the focus of fingerprint recognition algorithm based on neural network, filter and moment invariant fingerprint recognition algorithm and fingerprint matching algorithm, matlab as a simulation tool for the existing three Fingerprint recognition algorithm programming; and various algorithms thr
5、ough experiments demonstrate the advantages and disadvantages。Keywords: fingerprint identification; Algorithm; Matlab simulation31武昌工学院本科毕业论文(设计)专用稿纸目 录摘要IAbstract21 绪论41。1 引言41。2指纹识别技术的发展和研究现状51.3 指纹识别研究的目的和意义62 指纹识别的理论和方法82。1指纹识别的基本原理82.2指纹识别系统工作流程82。3指纹识别技术的方法103 matlab仿真实验结果与分析163.1 算法matlab仿真结果
6、163.2 结果分析17结论18致 谢19主要参考文献20附录21171绪论1。1 引言随着网络信息化时代的快速发展,个人身份的数字化和隐性化水平也得到了提高.如何准确鉴定一个人的身份,保护信息安全是当今信息化时代必须解决的一个关键性社会问题。目前,我国的各种管理大部分使用证件、磁卡、IC卡和密码,这些手段无法避免伪造或遗失,密码也很容易被窃取或遗忘。这些都给管理者和使用者带来很大不方便.生物特征身份鉴别方法可以避免这些麻烦。因此,这一技术已成为身份鉴别领域的研究热点.生物特征识别(BiometriCS)技术是指通过计算机利用人体所固有的生理特征或行为特征来进行个人身份鉴别。生理特征与生俱来,
7、多为先天性的;行为特征则是习惯使然,多为后天性的。这里将生理和行为特征统称为生物特征,用于身份鉴别的生物特征应具有普遍性,即任何人都具有这一特征;唯一性,不同人的这一特征各不相同;稳定性,这一特征不随时间、外界环境等的变化发生改变;可接受性,用这一特征进行人体身份鉴别可以被人们接受和认可;防伪性,这一特征不易仿造、窃取。目前,常见的生物特征识别手段主要有人脸、指纹、手形、手部血管分布、虹膜、视网膜、手写体、声音和脸部热量图等。它们有的已逐步得到推广和应用,有的还仅处于实验研究阶段。其中,人脸、指纹、手形、手部血管分布、虹膜、视网膜和脸部热量图属于生理特征,手写体属于行为特征,而声音则兼有两方面
8、的属性。下面主要对其中指纹识别技术作介绍和研究.指纹识别技术-不同人的指纹,即使同一个人不同手指的指纹,纹线走向及纹线的断点和交叉点等各不相同,也就是说,每个指纹都是唯一的。另外,指纹不随年龄的增长而发生变化,是终生不变的。依靠这种唯一性和稳定性,可以把一个人同他的指纹对应起来,通过对他的指纹和预先保存的指纹进行比较,就能验证他的真实身份。指纹用于身份鉴定的历史悠久。早在古叙利亚和中国,指纹鉴别就己经开始应用.19世纪初,科学研究发现了至今仍然承认的指纹的两个重要特征,一个是两个不同手指的指纹纹线的式样不同,另一个是指纹纹线的式样终生不变.这个研究成果使得指纹在犯罪鉴别中得以正式应用。早期的指
9、纹识别依靠人工对比方式进行.由于指纹结构的复杂性及对指纹识别要求的严格性,导致人工识别指纹难度大、速度慢并且识别准确性受专家经验制约,远不能适应实际工作的需要。20世纪60年代,随着计算机技术的诞生、发展与不断进步,图像处理与模式识别方法的日臻完善,人们开始着手研究利用计算机来处理指纹。从那时起,自动指纹识别系统(AFIS:Automated FingerprintIdentification System)在法律实施方面的研究和应用在世界许多国家展开。20世纪80年代,个人电脑、光学扫描这两项技术的革新,使得它们作为指纹取像的工具成为现实,从而使指纹识别可以在其他领域中得以应用,比如代替IC
10、卡,普通锁等。20世纪90年代后期,低价位取像设备的引入及其飞速发展,可靠的比对算法的发现为个人身份识别应用的增长提供了舞台。据统计,到20世纪末,全世界生物识别市场约为1。56亿美元,其中指纹识别约为1。2亿美元,这标志着指纹识别是当前最成熟稳定,并且应用最广泛的生物识别技术。1。2指纹识别技术的发展和研究现状指纹应用可以追溯到几千年以前,但指纹学成为一门学科,却只有百余年的历史。指纹应用可以分为三个时期.第一时期:摸索时期;据考证,我国已经发现6千多年前的陶器上留下的指纹。中国是运用指纹最早的国家之一,古代军队就设有箕斗花名册.罪犯的供词也以捺印指纹为证。在周代,指纹被用于民间契约的签署.
11、指纹在侦察断案中也有着2千余年的应用历史.外国指纹应用比我国晚得多,巴比伦与西腊人,公元前2世纪在陶器上捺印指纹, 以从鉴识.据考证,埃及、罗马、印度这些具有悠久历史的国家应用指纹也有上千年的历史。第二时期:指纹科学化时期;这一时期是从17世纪80年代开始的。第二时期:指纹科学化时期;这一时期是从17世纪80年代开始的.1684年,英国医学博士格留第一次对指纹做了分类.1860年英国驻印殖民地行政长官威廉.赫谢尔,开始进行犯罪指纹登记实验,提出了指纹“人各不同,至死不变”的观点,建立了指纹分析和分类的方法.从此,指纹研究逐步走向科学化的轨道。指纹正式作为一种刑事登记制度最先始于英国。1892年
12、英国高尔顿研究指纹,最早提出了用指纹进行刑事登记的方法。1895年,英国采用高尔顿的研究成果,开始实行指纹登记制度。1897年,英国爱德华.享利发明指纹二部分析法,使指纹的分析、储存、查对趋于完善。1901年,英国政府正式采用了享利指纹分析法。从此,指纹的登记制度逐渐被世界各国重视和采用,并沿袭至今。1903年,中国青岛市警察局首次应用汉堡式指纹法.此后我国相继开展了指纹的应用及研究,还曾建立过“指纹学会”.刘紫宛编写的中华指纹法一书是我国最早的指纹专著.全国解放后,我国对指纹研究一直比较重视.1955年编制了中华人民共和国十指纹分析法。这可以说是我国指纹的科学时期.第三时期:现代化、自动化时
13、期;这一时期是从本世纪60年代开始的.随着现代科学技术的发展,指纹应用迅速地实现了现代化和自动化,例如,指纹的电子计算机应用,使储存、查对、鉴定开始走向自动化和半自动化的轨道。半自动管理,是采用人工或人与机器结合的半自动方式分析指纹,把人工鉴定方法计算机化。我国从60年代起,开始着手指纹管理现代化的工作,目前,我国基本上形成了一个指纹工作网,在指纹理论研究上也取得了重要成果,指纹的应用日益广泛起来。如民间把捺印指印作为合同和证件的凭证;在公安司法部门,指纹作为证实犯罪的证据;在医学方面,指纹用于诊断遗传病症等。特别是在90年代后期,西安交大、清华大学先后开发了指纹自动识别系统,指纹门禁系统、指
14、纹考勤系统等。使指纹个人身份识别系统得到了实际运用,另外,美国国家银行根据这类技术将在21世纪初建成全国的个人身份认证网络系统。1.3 指纹识别研究的目的和意义指纹识别作为一种生物鉴定技术,为人类的个体的定义提供了一个到目前为止最为快捷和可信的方法。随着指纹识别的普及,人们之间的信任成本将大大降低,提高人类社会活动的效率。在信息时代,一种安全便捷的身份认证方式显得越发重要。从生物测量角度而言,指纹识别将是一种非常理想的工具,用来定位一个人的基本社会坐标原点.作为一个人,具有非常复杂的社会角色。在很多情况下,一个人的真实身份是很难被分辨的。指纹识别作为一个人基本社会角色定位点,其方便性和准确性已
15、经得到了全世界范围内的认可.指纹识别承载了很多的社会意义,从最根本上来讲,是可以良好的判断和定义一个人的真实生物身份。从而降低社会活动中的信任成本,从根本上改变经济和社会交往模式改变,提高效率.指纹识别作为一种生物鉴定技术,为人类的个体的定义提供了一个到目前为止最为快捷和可信的方法。随着指纹识别技术的日渐成熟,图像处理及模式识别界曾一度认为自动指纹识别问题已经得到很好的解决.但实际上,指纹识别的核心技术仍然存在许多尚未解决的难题,尤其是对残缺、污损指纹图象进行识别的鲁棒性和适应性方面不能令人满意。指纹识别系统将随着更小更廉价的指纹输入设备的出现、计算能力更强更廉价的硬件以及互联网的广泛应用而进
16、一步拓宽应用。其中,能适应在线应用的自动指纹识别系统的算法有待进一步改进,多种指纹识别方法的集成应用以及包括指纹识别在内的多种生物特征鉴定技术的集成应用也将是今后研究的发展方向.因此,自动指纹识别技术现在是,未来几年仍将是一个重要的、极具挑战性的模式识别研究课题。2 指纹识别的理论和方法十九世纪初,科学研究发现了至今仍然承认的两个重要特征:一是两个不同手指的指纹纹脊的样式(Ridge Pattern)不同,另外一个是指纹纹脊的样式终生不变.这个研究成果使得指纹在犯罪鉴别中得以正式应用。二十世纪六十年代,由于计算机可以有效地处理图形,人们开始着手研究计算机来处理指纹,自动指纹识别系统AFIS在法
17、律实施方面的研究与应用有就由此展开来。2。1指纹识别的基本原理指纹其实是比较复杂的。与人工处理不同,许多生物识别技术公司并不直接存储指纹的图象.多年来在各个公司及其研究机构产生了许多数字化的算法(美国有关法律认为,指纹图象属于个人隐私,因此不能直接存储指纹图象)。但指纹识别算法最终都归结为在指纹图象上找到并比对指纹的特征。1指纹的特征我们定义了指纹的两类特征来进行指纹的验证:总体特征和局部特征。在考虑局部特征的情况下,英国学者E。R。Herry认为,只要比对13个特征点重合,就可以确认为是同一个指纹。总体特征:总体特征是指那些用人眼直接就可以观察到的特征,包括:基本纹路图案环型(loop),弓
18、型(arch),螺旋型(whorl)。其他的指纹图案都基于这三种基本图案.仅仅依靠图案类型来分辨指纹是远远不够的,这只是一个粗略的分类,但通过分类使得在大数据库中搜寻指纹更为方便。局部特征:局部特征是指指纹上的节点的特征,这些具有某种特征的节点称为特征点.两枚指纹经常会具有相同的总体特征,但它们的局部特征-特征点,却不可能完全相同。2指纹的特征点指纹纹路并不是连续的、平滑笔直的,而是经常出现中断、分叉或打折。这些断点、分叉点和转折点就称为“特征点。就是这些特征点提供了指纹唯一性的确认信息。2.2指纹识别系统工作流程指纹识别技术主要涉及四个功能:读取指纹图象、提取特征、保存数据和比对。系统开始,
19、通过指纹读取设备读取到人体指纹的图象,取到指纹图象之后,要对原始图象进行初步的处理,使之更清晰。接下来,指纹辨识软件建立指纹的数字表示特征数据,一种单方向的转换,可以从指纹转换成特征数据但不能从特征数据转换成为指纹,而两枚不同的指纹不会产生相同的特征数据。软件从指纹上找到被称为(minutiae)的数据点,也就是那些指纹纹路的分叉、终止或打圈处的坐标位置,这些点同时具有七种以上的唯一性特征。因为通常手指上平均具有70个节点,所以这种方法会产生大约490个数据.有的算法把节点和方向信息组合产生了更多的数据,这些方向信息表明了各个节点之间的关系,也有的算法还处理整幅指纹图像。总之,这些数据,通常称
20、为模板,保存为1K大小的记录。无论它们是怎样组成的,至今仍然没有一种模板的标准,也没有一种公布的抽象算法,而是各个厂商自行其是.最后,通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果.指纹识别系统框图如图2。1所示。图2。1 指纹识别系统工作原理框图2.3指纹识别技术的方法本文重点研究基于神经网络指纹识别算法、滤波特征和不变矩指纹识别算法和指纹匹配算法,,针对已有的三种指纹识别算法进行编程识别,通过matlab仿真,从而进一步论证三种算法的优缺点。2。3。1神经网络指纹识别算法用神经网络进行识别选用哪种特征是个关键问题考虑到本文这里的识别过程
21、是在同类型指纹间进行的这些指纹具有相似的纹线走向指纹的方向信息在这里就显得无关紧要了通过对同类型指纹的分析发现它们差别主要体现在具体的每个细节点上因此本文就提取了指纹的细节点特征作为识别特征每个样本提取的细节点特征是一个801维的向量包含20个特征点每个特征点的特征值是个4维的向量分别是特征点的类型特征点与参考点的纹线方向差值特征点与参考点的距离特征点与参考点的角度我们认为特征点的这些信息即可充分体现同类型指纹间的细微差别也同时具有一定的抗平移和抗旋转性。本文采用的是学习矢量量化LVQ神经网络模型LVQ神经网络由于其自身的自组织和聚类特性可以很好地给出模式在多维空间的概率分布估计从而可较好地完
22、成指纹的识别,其识别模型如图2。2所示.图2。2 基于神经网络的自动指纹识别模型2。3.2 滤波特征和不变矩指纹识别算法滤波特征识别算法:指纹图像特征的表示要求满足尺度不变性、 位移不变性和旋转不变性3个特征。尺度不变性是满足的.在滤波提取算法中,位移不变性是通过确定指纹图像的中心参考点来实现的. 图像的旋转不变性可以通过在匹配阶段建立多角度旋转特征向量来实现.滤波特征的提取算法包括4 个步骤: 确定指纹图像的中心参考点,以及要处理的指纹区域,记为ROI 区域; 以参考点为中心, 对ROI 区域进行划分, 得到一定大小的块; 用一组Gabor 滤波器在八个不同的方向对ROI 区域进行滤波运算(
23、在指纹图像中,完全获取指纹的局部脊线特征需要使用8 个方向滤波器, 获取全局结构信息仅需要4 个方向滤波器);在滤波图像中,计算每一块中灰度值相对于均值的平均绝对偏差, 进而得到特征向量或特征编码。基于滤波特征的指纹识别算法,首先对指纹图像进行滤波特征提取,然后在滤波特征值构成的特征向量的基础上进行匹配。不变矩识别算法:算法的基本思路是:搜索预处理后的二值图像中所有可能为目标的区域,计算区域的7个不变矩特征,认为与模板匹配程度最高的区域为目标。其中相似度度量采用欧式距离.算法程序:void COpenCVTest::TestMoment()CvRect r;r.x = 120;r.y = 10
24、0;r.width = 20;r。height = 20;CvMoments m;CvMat mat;IplImage src;/8位图 必须为灰度图像 src = cvLoadImage(”c:自然图2。bmp”,0);CvArr *arr;arr = cvGetSubRect(src, &mat, r);/获取矩cvMoments(arr, m, 0);/获取空间矩double m00 = cvGetSpatialMoment(&m,0,0);/获取hu不变矩CvHuMoments hu;cvGetHuMoments(&m, hu);CString str;str.Format(空间矩:
25、m00 = f n Hu不变矩:h1 = %f, h2 = f, h3 = f, h4 = %f, h5 = f, h6 = %f, h7 = f, ,m00,hu.hu1,hu.hu2,hu.hu3,hu。hu4,hu.hu5,hu。hu6,hu。hu7);AfxMessageBox(str);cvReleaseImage(&src);cvWaitKey(0);2。3.3指纹匹配算法指纹匹配就是指纹特征值比对过程。它是把当前取得的指纹特征值集合与事先存的指纹特征值模板进行匹配的过程。指纹匹配是一个模式识别的过程,判定的标准不是相等与不等,而是相似的程度.这个程度判定依赖于事先设定的阈值,以及
26、与判定时比较的特征点的个数.阈值取的合理,特征点取的越多,误判的机率就越小.指纹匹配的方法很多,包括基于奇异点的匹配、嵴模式的匹配、特征点的匹配、特征点线对(两个特征点的连线)匹配,以及特征点组的匹配方法。指纹匹配之前需作指纹定位。指纹定位是使待验证指纹的数个细节点的坐标值与指纹库中的数个细节点的坐标值一一相互对准的过程,从而使两个指纹图像对准重合。由于在指纹采样时,用户手指每次放置的位置和角度不同,形成的指纹图像也略有不同,因此各个指纹特征值的坐标值也就不同.主要表现为手指平移和旋转的差异,形成平移误差和旋转误差.解决指纹图像的平移误差和旋转误差是指纹比对算法面对的首要问题。可以选取奇异点作
27、为对准参数,也可以选择某一区域内的特征点及嵴方向、嵴密度作为对准参数.实际上,在除了处理两种误差之外,在指纹采集过程中,由于每次按压的力度不同而形成的指纹图像挤压变形和拉伸变形,同样是指纹匹配之前需处理的。下图为基于混合模式的指纹识别算法的流程图。图2.3 混合模式匹配算法流程图算法程序:function sector_num = whichsector(index) Modiofied by Luigi Rosa index is the index of current pixel of cropped image ( cropped image is 175 x 175 ); secto
28、r_num is the output and represents what is the corresponding sector。global immagine n_bands h_bands n_arcs h_radius h_lato n_sectors matricelength = h_lato;x = rem( index , length );y = floor(index / length);x = x floor(length / 2);y = y floor(length / 2);rad = (x*x) + (y*y);if rad (h_radiush_radius
29、) innerest radius = 12 (144=1212) sector_num = (n_sectors-1)+1; sector_num; returnendif rad = (h_bandsn_bands+h_radius)2 % outtest radius = 72 (5184=7272) sector_num = (n_sectors-1)+2; sector_num; returnend if x = 0 theta = atan( y / x );else if y 0 theta = pi/2; else theta = pi/2; endend if x 0 the
30、ta = theta + pi;else if theta 0 theta = theta + 2pi; endendif theta 0 theta = theta + 2pi;endr = floor(rad 0.5);ring = floor(( rh_radius )/h_bands);arc = floor(theta /(2*pi/n_arcs);sector_num = ring n_arcs + arc;3matlab仿真实验结果与分析本课题通过matlab仿真软件分别对神经网络指纹识别算法、滤波特征和不变矩指纹识别算法、指纹匹配算法进行仿真实验与分析。3。1 算法matlab
31、仿真结果图3。1 原始指纹图像图3。2 经过神经网络和高斯滤波的指纹图像图3。3 经过不变矩的指纹图像图3。4 经过匹配细化后的指纹图像3。2 结果分析试验结果显示:LVQ神经网络模型的优势在于网络结构简单,只通过内部单元的互相作用,就可以完成十分复杂模式识别的分类处理,具有很好的模式识别特性。滤波特征和不变矩指纹识别算法的优势在于它是基于直接线性变换的,因而无需确定与应用相关的自适应参数.矩技术类型很多,现已被应用于图像分类与识别处理的许多方面。从数学角度上看,矩是很简单的.它的局限性在于无法对特定的目标特性进行精细计算,而且只能被应用于全局目标识别任务中。指纹匹配算法具有速度快、指纹模板小
32、的优点,但是容易受指纹图像噪声干扰。基于全局特征匹配方式主要使用指纹纹理特征,具有特征稳定、信息丰富的优点,但是匹配精度不高、指纹模板比较大。结论本文系统地介绍了指纹识别技术的发展和国内外研究应用现状,阐述了建立指纹识别系统的必要性和意义,提出了用Matlab工具来解决指纹识别技术的处理方法,通过matlab仿真软件分别对神经网络指纹识别算法、滤波特征和不变矩指纹识别算法、指纹匹配算法进行仿真实验与分析,比较了三种算法各自的优势。当今,指纹自动识别技术仍是国内外研究的热点问题实现自动指纹识别系统的实时性网络化提高系统识别率是人们研究的目标相信不久以后指纹识别将广泛应用于我们的生活为人们提供更方
33、便更快捷的服务。本文在分析指纹识别系统研究和发展的国内外现状的基础上,通过指纹算法的理论和三个算法进行系统的研究分析,并通过对指纹图像进行matkab软件仿真实验,研究具有一定的应用价值。致谢这次的设计和论文是在各位老师的悉心指导下完成的。你们严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,你们都始终给予我细心的指导和不懈的支持。在此谨向老师们致以诚挚的谢意和崇高的敬意。感谢武昌工学院来对我的大力栽培;感谢大学所有的老师给予我谆谆教诲,为我打下坚实的知识基础;同时还要感谢所有同学们.撰写论文也使我的知识体系也在不断地拓展和成熟,希望在未来
34、的工作和生活过程中,亦能一直保持不断的学习,不断的完善自我,走向成熟.最后,希望在以后的学习和研究中能以更加优异的成绩来答谢所有关心和帮助过我的老师和同学!再次谢谢您们!武昌工学院本科毕业论文(设计)专用稿纸主要参考文献1 王建永。指纹图像的特征提取与匹配D。大连:大连理工大学,2003。2 王家文,曹宇.MATLAB 6。5图形图像处理M。北京:国防工业出版社,2004,5。3 董日荣。指纹识别系统核心算法的研究D。广州:华南师范大学,2004。4 Kim Y S, Kim W Y。 Contentbased trademark retrieval system using visually
35、 salient featuresJ。 Image Vision Computing, 2007, 16(1213):931-939。5 王崇文。自动指纹识别方法研究.D。重庆:重庆大学。2002。6 孙玉明, 王紫婷。 基于Matlab的指纹识别系统的研究与实现J。 电脑知识与技术, 2009, 05(34):9803-9804。7 冯国进,顾国华,张保民。指纹图像预处理与特征提取J.计算机应用研究,2004,(5):183-186。8 田纪亚. 基于Matlab在指纹识别系统中的应用研究D。 长春:吉林大学, 2008.附录程序1:function out = go_to_next_ele
36、ment(in, path); % called by end_track()% with the input image and the path list, it will track to the next connected element of the ridge ix,iy = size(in);length, dummy = size(path);next_x = 0;next_y = 0;flag = 0; length is the length of the path simply go to the next element if (path(length,1) 197)
37、 flag =1; end; if (path(length,2) 4) flag = 1; end; if (path(length,2) 197) flag =1; end; if flag = 0 next_x,next_y = find_next(in,path); end; %add it to the path path(length+1,1) = next_x; path(length+1,2) = next_y; out = path;程序2:function out, real_end =end_track(in,end_list,branch_list) 2/12% thi
38、s function will use the input image and the end_list to generate the output image ( cleaned ) and the list of real minutiae ( end points )% out - output image real_end - real minutiae (end points) in input image% end_list the list of valid and invalid end pointsreal_end = zeros(1,3);end_count = 0;en
39、d_trackout = in;number_of_end, dummy = size(end_list);for i=1:number_of_end %path is a list of the tracked element in the currently tracking ridge path = zeros(1,2); path(1,1) = end_list(i,1); path(1,2) = end_list(i,2); if is_single(path(1,1),path(1,2),out) = 1 %it is a single point (pore) it should
40、 be invalid minutia and will be removed out(path(1,1),path(1,2)) = 0; else loop for n times , n max path length value flag = 0; for j=1:25 path = go_to_next_element(in, path); check two conditions here if any one of the condition match % break the loop len ,ddummy = size(path); curr_x = path(len,1);
41、 curr_y = path(len,2);% three conditions will break the loop。 if is_a_end_point(curr_x,curr_y,end_list) = 1 - is a end %need to delete it from output image flag = 1; break; elseif is_a_branch_point(curr_x,curr_y,branch_list) = 1 -is a branch need to delete it from output image flag =1; break; elseif
42、 curr_x = 0 & curr_y = 0 - curr is 0 flag = 1; break; end; no break j end; %end of the 25 loop % the path length of the ridge is % longer than 24 pixels it consider as a valid minutia (end points) % store it in the real_end if flag = 0 path_length, dddd = size(path); mean_x = 0; mean_y = 0; for k =
43、1:path_length mean_x = mean_x + path(k,1); mean_y = mean_y + path(k,2); end; mean_x = mean_x / path_length; mean_y = mean_y / path_length; theta = atan2( (mean_x path(1,1),(mean_y path(1,2)) ); end_count = end_count +1; real_end(end_count,1) = path(1,1); real_end(end_count,2) = path(1,2); real_end(end_count,3) = theta; end; end; %else% i end;21