




已阅读5页,还剩80页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文)题目名称:指纹识别技术的研究与设计-指纹图像预处理之二院系名称:计算机学院班 级:软件052班学 号:200500834218学生姓名:王思远指导教师:杜俊俐 2009 年 6 月 论文编号:200500834218指纹识别技术的研究与设计-指纹图像预处理之二The Fingerprint Recognition Technologys Research and Designs -Second fingerprint image pretreatment院系名称:计算机学院班 级:软件052班学 号:200500834218学生姓名:王思远指导教师:杜俊俐 2009 年 6 月摘要指纹识别作为一种生物鉴定技术,为人类的个体的定义提供了一个到目前为止最为快捷和可信的方法。随着指纹识别的普及,人们之间的信任成本将大大降低,提高人类社会活动的效率。对于想从事和已经从事网络商务的公司来讲,确认交易人的身份是解决信用问题的第一步,而且是最重要的一步。在信息时代,一种安全便捷的身份认证方式显得越发重要。“在网络上,没有人知道你是一只狗,”在这种情况下,任何基于网络环境下的交往活动都被蒙上了一层技术意义的灰色。不可避免,所有基于这种网络技术基础之上的经济活动也因此被深深打上了不真实和不被信任的烙印。随着科技的进步,指纹识别技术已经开始慢慢进入计算机世界中。目前许多公司和研究机构都在指纹识别技术领域取得了很大突破性进展,推出许多指纹识别与传统IT技术完美结合的应用产品,这些产品已经被越来越多的用户所认可。本系统使用Visual C+ 6.0对指纹图片进行识别前的预处理工作,希望不吝指正。关键词:指纹、图像、预处理、指纹识别技术。AbstractThe fingerprint recognition takes one bioassay technology, has provided for humanitys individuals definition so far most quickly and the credible method. Along with fingerprint recognition popularization, between peoples trust cost will reduce greatly, raises the efficiency which the human society moves. Regarding wanted to be engaged in with already was engaged in the network commerce the company saying that the seal bargain persons status was solves the credit problem first step, moreover was most important one step. In the information age, one security convenient status authentication way appears even more important. “in the network, nobody knew that you are a dog,” in this case, any based on network environment under contact by Mongolia in a technical significance gray. Inevitable, possessed the economic activity therefore deeply has also been gotten based on this kind of networking foundation above not real and not the brand mark which trusted. Along with the technical progress, the fingerprint recognition technology already started to enter in slowly the computer world. At present many companies and the development facility have made the very big breakthrough progress in the fingerprint recognition area of technology, promotes many fingerprint recognitions and the traditional IT technology perfect union application product, these products were already approved by more and more users.Before this system uses Visual the C+ 6.0 for fingerprint pictures to carry on the recognition the pretreatment work, hoped that the liberal with points out mistakes.Key word: Image, pretreatment, fingerprint recognition technology. 目录摘要IAbstractII第1章 指纹识别概述11.1 指纹识别技术11.1.1 指纹识别的简介11.1.2 指纹识别的关键技术11.1.3 指纹识别的研究历程11.2 预处理技术21.3指纹识别技术的应用21.4指纹识别的可靠性3第2章 指纹识别系统的需求分析52.1 指纹识别系统的目标52.2 指纹识别系统的功能需求52.2.1 指纹图象的点运算52.2.2 指纹图像的几何变换52.2.3 指纹图像的图像增强52.2.4 指纹图像的形态学变换52.2.5 指纹图像的图像分割52.2.6 查看直方图62.3 指纹识别系统的性能需求62.3.1 运行平台的低要求62.3.2 系统的实时性62.3.3 系统的有效性62.4 指纹识别系统的结构62.4.1 指纹识别系统框架图62.4.2 指纹识别系统模块功能划分82.4.3指纹识别模块82.5 开发工具8第3章 指纹识别系统中预处理的设计与实现93.1 预处理功能模块的设计93.2 预处理模块的详细设计113.2.1 点运算模块113.2.2 几何变换模块143.2.3 图像增强模块183.2.4 形态学变换模块203.2.5 图像分析模块223.2.6 查看模块243.3 预处理实验结果与分析263.3.1 预处理实验结果263.3.2 预处理结果的分析34第4章 系统工程目录说明354.1 系统工程目录354.2 系统主要的类364.2.1 CDlgIntensity类的成员函数与成员数据364.2.2 CDlgLinerPara类的成员函数与成员数据374.2.3 CDlgMidFilter类的成员函数与成员数据394.2.4 CDlgPointStre类的成员函数与成员数据404.2.5 CDlgPointThre类的成员函数与成员数据424.2.6 CDlgPointWin类的成员函数与成员数据444.2.7 CDlgSmooth类的成员函数与成员数据45第5章 系统的调试、运行与测试485.1 程序设计中出现的问题与解决方法485.1.1 点运算485.1.2 几何变换505.1.3 图像增强525.1.4 形态学变换和图像分析535.2 系统测试部分结果显示555.2.1 图像信息载入出错显示:555.2.2 功能处理过程中出错提示:555.2.3 提示用户保存信息显示:555.2.4 主界面显示:55第6章 结论57参考文献58致谢59附录6079中原工学院计算机学院毕业(设计)论文第1章 指纹识别概述1.1 指纹识别技术1.1.1 指纹识别的简介指纹识别技术通过分析指纹的局部特征,从中抽取详尽的特征点,从而可靠地确认个人身份。指纹识别的优点是指纹作为人体独一无二的特征,它的复杂度可以提供用于鉴别的足够特征,具有极高的安全性。相对于其他身份认证技术,指纹识别是一种更为理想的身份认证技术,指纹识别不仅具有许多独到的信息安全优点,更重要的是具有很高的实用性、可行性,已经广泛应用于金融、电子商务以及安全性能要求教高的行业中。目前多数指纹识别系统是将指纹图象采集到计算机中,利用计算机进行识别。国外一些公司生产的独立指纹识别系统,价格比较高昂。这些都限制了指纹识别技术的普及。因此,研究开发快速、识别率高、廉价的独立指纹识别系统具有很大的市场前景和重要的科学研究价值。1.1.2 指纹识别的关键技术指纹识别的关键技术有:图象提取分割,阈值变换,细化,平滑,线性变换等。首先通过扫描设备获得数据,然后对得到的图象进行分割,把所需要的信息分离出来,在此基础上进行预处理,图像像素、色素等数据,对该图像的信息进行分析,并且对各个信息进行处理,为后来的指纹特征提取与指纹识别做必要的准备。对于图象的提取与分割,指纹识别目前实现了很多算法。各个算法的选择要严谨,数据不能有遗漏、重复,也不可把不必要的数据放入算法内。1.1.3 指纹识别的研究历程中国是世界上公认的“指纹术”发祥地,在指纹应用方面具有非常悠久的历史。追溯中华民族的指纹历史,可以上溯到6000年以前的新石器时代中期。在半坡遗址出土的陶器上就印有清晰可见的指纹图案。距今有5000年历史的红山文化遗址处(今天的内蒙赤峰市东效红山),考古发现的古陶罐上有3组几何曲线画,是3枚相同的、典型的箕形指纹画,每枚指纹画都有一条中心线和6条围线。在位于青海省乐都县柳湾墓地的马家窖文化,出土了距今5000年的人像指纹彩陶壶。其上绘有4幅原始螺旋形指纹画。嵴线的起点、终点的细节特征都很明显,在两组画之间绘制一个三角,一个中心花纹配左右两个三角纹,组成了一幅完整的斗形指纹画。指纹其实是比较复杂的,与人工处理不同,许多生物识别技术公司并不直接存储指纹的图象。多年来在各个公司及其研究机构产生了许多数字化的算法(美国有关法律认为,指纹图象属于个人隐私,因此不能直接处理指纹图象)。但指纹识别算法最终都归结为在指纹图象上找到并比对指纹的特征。在经历了近10年缓慢的自然增长后,指纹识别技术即将迎来一个跳跃性发展的黄金时期。专家们保守估计,未来5年,我国将有近百亿元的市场等待着企业去开拓。指纹识别技术的巨大市场前景,将对国际、国内安防产业产生巨大的影响。1.2 预处理技术指纹识别预处理技术通过分析指纹的局部特征,从中抽取详尽的特征点,从而可靠地确认个身份。指纹识别的优点指纹作为人体独一无二的特征,它的复杂度可以提供用于鉴别的足够特征,具有极高的安全性。相对于其他身份认证技术,指纹识别是一种更为理想的身份认证技术,指纹识别不仅具有许多独到的信息安全优点,更重要的是具有很高的实用性、可行性,已经广泛应用于金融、电子商务以及安全性能要求教高的行业中。 目前多数指纹识别预处理是将指纹图象采集到计算机中,利用计算机进行识别。外一些公司生产的独立指纹识别系统,价格比较高昂。些都限制了指纹识别技术的普及。因此,研究开发快速、识别率高、廉价的独立指纹识别系统具有很大的市场前景和重要的科学研究价值。 1.3指纹识别技术的应用指纹识别技术已经成熟,其应用日益普遍,除了刑事侦察用之外,在民用方面已非常广泛,如指纹门禁系统、指纹考勤系统、银行指纹储蓄系统、银行指纹保管箱、指纹医疗保险系统、计划生育指纹管理系统、幼儿接送指纹管理系统、指纹献血管理系统、证券交易指纹系统、指纹枪械管理系统、智能建筑指纹门禁管理系统、驾驶员指纹管理系统等。指纹门禁系统和指纹考勤系统是开发和使用得最早的一种出入管理系统,包括对讲指纹门禁、联机指纹门禁、脱机指纹门禁等等。在入口将个人的手指按在指纹采集器上,系统将已登录在指纹库中的指纹(称为已经注册)进行对比,如果两者相符(即匹配),则显示比对成功,门就自动打开。如不匹配,则显示“不成功”或“没有这个指纹”,门就不开。在指纹门禁系统中,可以是一对一的比对(onetoone matching),也可以是一对几个比对(onetofew matching)。前者可以是一个公司、部门,后者可以是一个家庭的成员、银行的营业厅、金库、财务部门、仓库等机要场所。在这些应用中,指纹识别系统将取代或者补充许多大量使用照片和ID系统。 把指纹识别技术同IC卡结合起来,是目前最有前景的一个应用之一。该技术把卡的主人的指纹(加密后)存储在IC卡上,并在IC卡的读卡机上加装指纹识别系统,当读卡机阅读卡上的信息时,一并读入持卡者的指纹,通过比对就可以确认持卡者是否是卡的真正主人,从而进行下一步的交易。指纹IC卡可取代现行的ATM卡、制造防伪证件等。ATM卡持卡人可不用密码,避免老人和孩子记忆密码的困难。近年来,互联网带给人们方便与利益已,也存在着安全问题。指纹特征数据可以通过电子邮件或其它传输方法在计算机网络上进行传输和验证,通过指纹识别技术,限定只有指定的人才能访问相关的信息,可以极大地提高网上信息的安全性。网上银行、网上贸易、电子商务等一系列网络商业行为就有了安全性保障。指纹社会保险系统的应用为养老金的准确发放起了非常有效的作用。避免了他人用图章或身份证复印件代领,而发放人员无法确定该人是故世的问题,要凭本人的活体指纹,才可准确发放养老金。1.4指纹识别的可靠性指纹识别技术是成熟的生物识别技术。因为每个人包括指纹在内的皮肤纹路在图案、断点和交叉点上各不相同,是唯一的,并且终生不变。通过他的指纹和预先保存的指纹进行比较,就可以验证他的真实身份。自动指纹识别是利用计算机来进行指纹识别的一种方法。它得益于现代电子集成制造技术和快速而可靠的算法理论研究。尽管指纹只是人体皮肤的一小部分,但用于识别的数据量相当大,对这些数据进行比对是需要进行大量运算的模糊匹配算法。利用现代电子集成制造技术生产的小型指纹图像读取设备和速度更快的计算机,提供了在微机上进行指纹比对运算的可能。另外,匹配算法可靠性也不断提高。因此,指纹识别技术己经非常简单实用。由于计算机处理指纹时,只是涉及了一些有限的信息,而且比对算法并不是十分精确匹配,其结果也不能保证100%准确。指纹识别系统的特定应用的重要衡量标志是识别率。主要包括拒识率和误识率,两者成反比关系。根据不同的用途来调整这两个值。尽管指纹识别系统存在着可靠性问题,但其安全性也比相同可靠性级别的“用户ID+密码”方案的安全性要高得多。拒识率实际上也是系统易用性的重要指标。在应用系统的设计中,要权衡易用性和安全性。通常用比对两个或更多的指纹来达到不损失易用性的同时,极大提高系统的安全性。第2章 指纹识别系统的需求分析2.1 指纹识别系统的目标在提取图像信息的基础上,对所提取的各个信息进行图像预处理,实现对指纹图像的的保存读取,读取带有各种复杂情况的指纹图片,对该图片进行预处理,能为后来的指纹识别服务。2.2 指纹识别系统的功能需求2.2.1 指纹图象的点运算点运算里面包括:图像反色,线性变换,阈值变换,灰度拉伸,灰度均衡。其中图像反色是线性变换的特殊情况;灰度的阈值变换可以让一幅图像变成黑白二值图;灰度拉伸又叫对比度拉伸,它是最基本的一种灰度变换,使用的是最简单的分段线性变换函数,它的主要思想是提高图像处理时灰度级的动态范围,适用于低对比度图像的处理;灰度均衡是以累计分布函数变换为基础的直方图修正法,它可以产生一幅灰度级分布概率均匀的图像。也就是说,经过灰度均衡后的图像在每一级灰度上都具有相同数量的像素点,对应灰度直方图的每一级灰度具有相同的高度。灰度均衡同样也属于改进图像的方法,灰度均衡后的图像具有最大的信息量。2.2.2 指纹图像的几何变换几何变换里包括:垂直镜像,图像转至,图像缩放,图像旋转。该模块对指纹图片进行相对简单的处理,对不符合或是放置不正确的指纹图片进行放大、缩小、旋转,对图片进行矫正。2.2.3 指纹图像的图像增强图像增强包括:图像平滑,中值滤波,梯度锐化。图象平滑与图象锐化的目的:去噪声,使图象清晰,处理后噪声也会增强,中值滤波法是一种非线性平滑技术,它将每一象素点的灰度值设置为该点某邻域窗口内的所有象素点灰度值的中值。2.2.4 指纹图像的形态学变换该模块功能如下:细化。细化之后的图片为指纹图像的大致轮廓,为后期的指纹特征点提取与指纹识别做准备。2.2.5 指纹图像的图像分割该模块对指纹进行阈值分割。进行阈值分割后的图片是提取出了有价值的指纹图片的信息,分离出了部分无用信息。2.2.6 查看直方图该功能可以查看该指纹图像的直方图。2.3 指纹识别系统的性能需求2.3.1 运行平台的低要求由于课题涉及到图形图象处理方面的工作,所以运行速度是比较关键的,为了方便实用和学习,该系统需要能够在普通PC机上运行。2.3.2 系统的实时性指纹预处理又是系统的核心所在,但是由于预处理过程中的计算量很大,所以会造成重建速度缓慢的情况,考虑到系统的交互性,重建速度的高要求是必不可缺的,所以就应尽可能的在不影响效果显示的前提下,考虑如何加快重建的速度。2.3.3 系统的有效性预处理时不应丢失图像信息,应尽可能多的显示指纹图象的细节。2.4 指纹识别系统的结构2.4.1 指纹识别系统框架图如图2-1所示。与已有指纹匹配开始参数初始化启动指纹采集流程数据库打开指纹采集器指纹登记指纹对比指纹预处理特征点提取不匹配匹配否是否录入通过是退出进入系统进行指纹采集图2-1:系统框架图2.4.2 指纹识别系统模块功能划分预处理是指纹识别过程中的一个重要环节。输入图像由于图像采集环境的不同,如光照明暗程度以及设备性能的优劣等,往往存在有噪声,对比度不够等缺点。另外,距离远近,焦距大小等又使得人脸在整幅图像中间的大小和位置不确定。为了保证指纹图像中大小,位置以及指纹图像质量的一致性,必须对图像进行预处理。预处理后的指纹图片是为后期的识别工作做准备。2.4.3指纹识别模块根据已经提取的指纹特征,把特征存储起来,对于目前的指纹进行匹配,看有无匹配的指纹。2.5 开发工具选择合适的系统编程语言Visual C+,方便进行图象图形处理。第3章 指纹识别系统中预处理的设计与实现预处理部分是整个系统的核心,这部分关系到整个系统的系统的成败,本模块采用面向对象的程序设计思路,面向对象设计方法是基于信息隐蔽和抽象数据类型概念,把系统中所有资源,如数据、模块以及系统都看成“对象”,每个对象封装数据和方法,而方法实施对数据的处理。3.1 预处理功能模块的设计预处理模块框架图如图3-1所示。指纹识别系统的研究与设计预处理二 几何变换查看图像增强点运算线性变换形态学变换图像分析阈值变换灰度拉伸灰度均衡垂直镜像图像转置图像缩放图像旋转平滑中值滤波梯度锐化阈值分割直方图图像反色细化图3-1:预处理的功能框架图3.2 预处理模块的详细设计3.2.1 点运算模块(1)设计思路数字图像处理技术的内容非常丰富,例如图像在生成、获取、传输过程中、受光源、成像系统的影响,不可避免的要造成图像像质的降低,这时就需要图像增强;计算机识别目标时就需要提取目标的形状和结构特征等。这些都可以通过点运算来实现。对于指纹图片,我们通过这个步骤可以提取出我们需要的信息,也可以进行简单的图像变换,以适应不同指纹图像的要求。点运算都是像素到像素的运算,可以表示为:B(x,y)=fA(x,y), 介绍灰度图像的几种常用的点运算:灰度直方图定义:灰度直方图是灰度值的函数,描述的是图像中该灰度值的像素个数。其横坐标表示像素的灰度值,纵坐标表示该灰度值在图像中出现的频率(或者像素的个数)。有时候只想得到指定灰度范围内的直方图,比如L到H之间的绘图直方图,则只需要计算L到H之间的各个灰度值的出现频率。拉伸:灰度的拉伸和线性变换有点类似,都用到了线性变换。不同之处在于灰度的拉伸是不完全的线性变换,而是分段进行线性变换。灰度的拉伸把原图灰度值在x1-x2之间的灰度值拉伸到y1-y2。灰度拉伸的函数表达式为: y1*x/x1 xx1f(x)= (y2-y1)*(x-x1)/(x2-x1)+y1 x1=xx2(2)模块实现1.图像反色函数原型:void CCh1_1View:OnPointInvert() BeginWaitCursor();LinerTrans(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB), fA, fB);pDoc-SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该函数调用图像反色函数LinerTrans(),LinerTrans()函数中的指针lpSrc是指向DIB第i行,第j个象素的指针,通过斜率-1截距255对图像中的每一个像素进行线性计算,该函数是指纹图像线性变换的特殊情况LinerTrans()函数的代码见附录。2线性变换函数原型:void CCh1_1View:OnPointLiner() BeginWaitCursor();LinerTrans(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB), fA, fB);pDoc-SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该函数也调用线性变换函数LinerTrans(),不同的是该函数是可以让用户自行设定斜率和截距的,LinerTrans()函数的代码见附录。3.阈值变换函数原型:void CCh1_1View:OnPointThre() BeginWaitCursor();ThresholdTrans(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB), bThre);pDoc-SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用阈值变换函数ThresholdTrans(),此函数允许用户设定阈值,根据用户设定的阈值,对图片进行处理大于该阈值的赋255,小于该阈值的则为0,函数代码见附录。4.灰度拉伸函数原型:void CCh1_1View:OnPointStre() BeginWaitCursor();GrayStretch(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB), bX1, bY1, bX2, bY2);pDoc-SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用灰度拉伸函数GrayStretch(),此函数让用户设定两个点的坐标,根据公式bMapi = (BYTE) bY1 * i / bX1进行线性变换后,再通过公式*lpSrc = bMap*lpSrc计算新的灰度值,函数代码见附录。5.灰度均衡函数原型:void CCh1_1View:OnPointEqua() BeginWaitCursor();InteEqualize(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB);pDoc-SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用灰度均衡函数InteEqualize(),此函数通过公式lpSrc = (unsigned char *)lpDIBBits + lLineBytes * i + j;lCount*(lpSrc)+; 对灰度值的计数,通过公式bMapi = (BYTE) (lTemp * 255 / lHeight / lWidth);计算出新的灰度值,函数代码见附录。3.2.2 几何变换模块(1)设计思路图像几何变换是计算机图像处理领域中的一个重要组成部分,也是值得探讨的一个重要课题。我们在处理图像时往往会遇到需要对图像进行几何变换的一些问题。图像几何变换是图像显示技术中的一个重要组成部分,也是我们学习和探讨的一个重要课题。在图像几何变换中主要包括图像的缩放、旋转、转置、垂直等内容。其中灰度的线性变换函数f是一个一维线性函数f(x) = A*x+B其中A表示斜率,x表示输入的灰度值,B表示在y轴的截距,f(x)表示输出图像的灰度值(当然应当调整到0255范围内)。当A1时,输出图像的对比度增大A1时,输出图像的对比度减少当A=1,B!=0时,仅对原图的所有像素灰度值进行上下移动,其效果是使图像更亮或者更暗。当A255时,要取f(x)=255,当f(x)SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);elseMessageBox(分配内存失败!, 系统提示 , MB_ICONINFORMATION | MB_OK);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用垂直镜像函数MirrorDIB(),此函数针对每行图像左半部分进行操作,然后将倒数第i行,第j个象素复制到倒数第i行,倒数第j个象素复制到倒数第i行,进行图像的垂直转换,函数代码见附录。2.图像转置函数原型:void CCh1_1View:OnGeomTrpo() BeginWaitCursor();if (TransposeDIB(lpDIB)pDoc-SetModifiedFlag(TRUE);pDoc-InitDIBData();SetScrollSizes(MM_TEXT, pDoc-GetDocSize();pDoc-UpdateAllViews(NULL);elseMessageBox(分配内存失败!, 系统提示 , MB_ICONINFORMATION | MB_OK);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用TransposeDIB()函数转置DIB,针对每行图像每列进行操作,互换源DIB的宽度和高度,函数代码见附录。3.图像缩放函数原型:void CCh1_1View:OnGeomZoom() BeginWaitCursor();hNewDIB = (HDIB) ZoomDIB(lpDIB, fXZoomRatio, fYZoomRatio);if (hNewDIB != NULL)pDoc-ReplaceHDIB(hNewDIB);pDoc-InitDIBData();pDoc-SetModifiedFlag(TRUE);SetScrollSizes(MM_TEXT, pDoc-GetDocSize();pDoc-UpdateAllViews(NULL);elseMessageBox(分配内存失败!, 系统提示 , MB_ICONINFORMATION | MB_OK);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用ZoomDIB()进行图像缩放,首先由用户输入缩放的比例,然后根据缩放后的比例进行计算出缩放后的图像的高度和宽度,通过公式i0 = (LONG) (i / fYZoomRatio + 0.5);j0 = (LONG) (j / fXZoomRatio + 0.5)计算出该象素在源DIB中的坐标,最终将计算后的图片输出出来,函数代码见附录。4.图像旋转函数原型:void CCh1_1View:OnGeomRota() BeginWaitCursor();hNewDIB = (HDIB) RotateDIB(lpDIB, iRotateAngle);if (hNewDIB != NULL)pDoc-ReplaceHDIB(hNewDIB);pDoc-InitDIBData();pDoc-SetModifiedFlag(TRUE);SetScrollSizes(MM_TEXT, pDoc-GetDocSize();pDoc-UpdateAllViews(NULL);elseMessageBox(分配内存失败!, 系统提示 , MB_ICONINFORMATION | MB_OK);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用RotateDIB()函数进行图像旋转,由用户设定旋转地角度,该函数通过原图像的四个角的坐标和旋转地角度计算出新的图像的四个角的坐标,然后通过计算正弦和余弦,确定新图像的高度和宽度。最终将新的指纹图像输出出来,函数代码见附录。3.2.3 图像增强模块(1)设计思路增强图象中的有用信息,它可以是一个失真的过程,其目的是要增强视觉效果。将原来不清晰的图像变得清晰或强调某些感兴趣的特征,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果的图像处理方法。图像增强按所用方法可分成频率域法和空间域法。前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。具有代表性的空间域算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。图像增强的目的是改善图像的视觉效果,针对给定图像的应用场合,有目的地强调图像的整体或局部特性,扩大图像中不同物体特征之间的差别,满足某些特殊分析的需要。其方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。图像增强技术根据增强处理过程所在的空间不同,可分为基于空域的算法和基于频域的算法两大类。基于空域的算法处理时直接对图像灰度级做运算基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。基于空域的算法分为点运算算法和邻域去噪算法。点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。邻域增强算法分为图像平滑和锐化两种。平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。锐化的目的在于突出物体的边缘轮廓,便于目标识别。常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。(2)模块实现1.图像平滑函数原型:void CCh1_1View:OnEnhaSmooth() BeginWaitCursor();if (:Template(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB), iTempH, iTempW, iTempMX, iTempMY, aValue, fTempC)pDoc-SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);elseMessageBox(分配内存失败!, 系统提示 , MB_ICONINFORMATION | MB_OK);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用Template()函数,通过不同的模版或者用户自行设定模版获得相应的系数然后再通过乘以相应的系数之后平滑的图片就输出出来了,函数代码见附录。2.中值滤波函数原型:void CCh1_1View:OnENHAMidianF() BeginWaitCursor();if (:MedianFilter(lpDIBBits, :DIBWidth(lpDIB), :DIBHeight(lpDIB), iFilterH, iFilterW, iFilterMX, iFilterMY)pDoc-SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);elseMessageBox(分配内存失败!, 系统提示 , MB_ICONINFORMATION | MB_OK);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用MedianFilter()函数,该函数通过两个for循环for (k = 0; k iFilterH; k+)for (l = 0; l SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);elseMessageBox(分配内存失败!, 系统提示 , MB_ICONINFORMATION | MB_OK);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用GradSharp()函数,该函数由用户设定阈值,通过阈值的比较,小于该阈值的不变,大于该阈值的则设定为255。具体代码见附录。3.2.4 形态学变换模块(1)设计思路细化算法的分类:依据是否使用迭代运算可以分为两类:第一类是非迭代算法,一次即产生骨架,如基于距离变换的方法。游程长度编码细化等。第二类是迭代算法,即重复删除图像边缘满足一定条件的像素,最终得到单像素宽带骨架。迭代方法依据其检查像素的方法又可以再分成串行算法和并行算法,在串行算法中,是否删除像素在每次迭代的执行中是固定顺序的,它不仅取决于前次迭代的结果,也取决于本次迭代中已处理过像素点分布情况,而在并行算法中,像素点删除与否与像素值图像中的顺序无关,仅取决于前次迭代的结果。在经典细化算法发展的同时,起源于图像集合运算的形态学细化算法也得到了快速的发展。 Hilditch、Pavlidis、Rosenfeld细化算法:这类算法则是在程序中直接运算,根据运算结果来判定是否可以删除点的算法,差别在于不同算法的判定条件不同。其中Hilditch算法使用于二值图像,比较普通,是一般的算法; Pavlidis算法通过并行和串行混合处理来实现,用位运算进行特定模式的匹配,所得的骨架是8连接的,使用于01二值图像 ;Rosenfeld算法是一种并行细化算法,所得的骨架形态是8连接的,使用于01二值图像 。 后两种算法的效果要更好一些,但是处理某些图像时效果一般,第一种算法使用性强些。索引表细化算法:经过预处理后得到待细化的图像是0、1二值图像。像素值为1的是需要细化的部分,像素值为0的是背景区域。基于索引表的算法就是依据一定的判断依据,所做出的一张表,然后根据魔鬼要细化的点的八个邻域的情况查询,若表中元素是1,若表中元素是1,则删除该点(改为背景),若是0则保留。因为一个像素的8个邻域共有256中可能情况,因此,索引表的大小一般为256。具体细化方法:满足下列四个条件的点可以删除p3 p2 p9p4 p1 p8p5 p6 p7细化删除条件为: (1)、2 Nz(p1) SetModifiedFlag(TRUE);pDoc-UpdateAllViews(NULL);elseMessageBox(分配内存失败或者图像中含有0和255之外的像素值!, 系统提示 , MB_ICONINFORMATION | MB_OK);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();该功能调用ThinDIB()函数,通过判断区域内的像素值,白色用0代表,黑色用1代表,排除不必要的像素,使图像只含有0和255两种灰度值,最终通过pDoc-UpdateAllViews(NULL)更新视图。函数代码见附录。3.2.5 图像分析模块(1)设计思路图像分割就是将图像分成各具特性的区域, 并提取感兴趣目标的技术和过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于道路修建合同标准文本
- 个人水泥供货合同标准文本
- 2025餐饮特许经营合同
- 三河市房租租赁合同范例
- 202A简约合同范本
- 2025【科技公司员工试用期合同书】科技公司员工转正合同
- 2025《合同法》违约赔偿细则
- 媒体发布与关系维护合同(2篇)
- 月饼购销合同范本简单
- 2025至2030年中国印刷铝盖数据监测研究报告
- 老年人安全用药与护理
- 黑色三分钟生死一瞬间第9、10部
- 适老化住宅改造服务行业深度调研及发展战略咨询报告
- 2025年郑州黄河护理职业学院单招职业技能测试题库及答案1套
- 2025年上半年甘肃省农垦集团限责任公司人才招聘380人易考易错模拟试题(共500题)试卷后附参考答案
- GB/T 45236-2025化工园区危险品运输车辆停车场建设规范
- 中考语文文学批注-病句表达欠妥(含答案)
- 2025年河南经贸职业学院单招职业技能测试题库完整
- 春夏季疾病预防
- 二年级课间安全
- 法律、法规、规章、规范性文件和标准的区别
评论
0/150
提交评论