《数学建模期末作业.pdf》由会员分享,可在线阅读,更多相关《数学建模期末作业.pdf(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数数学学建建模模期期末末作作业业-CAL-FENGHAI.-(YICAI)-Company One1指纹识别技术研究指纹识别技术研究摘要摘要目前大部分研究认为指纹具有唯一性,可以作为个人身份验证的凭证,因此指纹识别技术一直以来就会研究热点,而随着移动设备对指纹识别的使用,指纹识别技术更需要进一步研究与改进。本文主要研究了指纹识别从采集到匹配所采用的算法。指纹识别的主要步骤是图像预处理、特征点提取、匹配。在指纹预处理过程上,本文对预处理方法进行分析筛选,选择了最优的方案处理;在提取上,采用 3*3 矩阵遍历提取的算法,并且对于提取的特征点进行筛选,保证了特征点的准确度与代表性;在匹配部分,采取了
2、使用距离与角度的匹配,保证了在指纹图像在旋转一定角度后的匹配鲁棒性。关键词关键词指纹识别;预处理;特征提取;匹配一、一、问题的重述问题的重述指纹自古便被作为人身份的鉴别工具,而且随着指纹学的研究基本成熟,指纹识别越来越多的使用,但是靠人工对比指纹卡鉴别速度慢、效率低。随着计算机技术的发展,人们开始研究使用计算机识别指纹的技术,以提高效率。1.对于采集到的指纹图像进行预处理,将图形中的噪点,冗余信息剔除,并将图像转化成为二值图像以便于处理,最后要将图形中指纹纹线细化为单像素宽的轨迹,以便于提取特征点。2.提取特征点,主要是提取出指纹中具有代表性的端点和分叉点作为特征点提取出来。3.匹配,就是将已
3、经提取到的两幅图的特征点集进行匹配。二、模型假设模型假设1.不考虑提取过程中未提取到指纹中心点的的指纹图像。2.假设指纹图像是没有巨大伤痕的。3.假设指纹图像是基本清晰可是别的。2三、变量说明三、变量说明四、指纹图像预处理四、指纹图像预处理直接采集到的原始图像并不能满足提取特征点的要求,会存在很多的噪声。这些噪声点由采集仪器,环境因素,人为操作等所产生的各类噪声所组成。如采样和量化产生的高频散粒噪声、光照不均引起的低频噪声以及采集头上的污渍所引入的噪声;手指被弄脏,手指有刀伤、疤、痕、干燥、湿润或撕破等。【1】这些噪声严重影响了指纹图像的特性,致使指纹图像包含的部分细节特征不清晰甚至出现丢失,
4、同时引入许多虚假的特征信息,如果直接对原始指纹图像进行特征提取,势必会影响指纹识别结果的准确性。所以,在提取特征之前需要对采集到的指纹图像进行预处理,以去除噪声信号,使其变成一幅纹线结构清晰特征信息明显的二值点线图。主要流程如下图 41所示:原图归一化分割二值化细化图41图像预处理流程归一化归一化首先需要将指纹图像与背景图分离开,所以首先进行归一化处理。归一化利用公式如下 41 所示:【2】V0(I(i,j)Mi)2若I(i,j)M;M0Vi (4-1)G(i,j)V0(I(i,j)Mi)2若I(i,j)M;M0Vi2V0(I(i,j)Mi)2V(I(i,j)M)0iMi,则把灰度值M0如果M
5、0归一ViVi化为 255 背景处理,其中M0和V0为期望的均值和方差,根据实际情况而定,Mi和Vi为指纹图像的均值和方差。3分割分割分割图像基于块特征的指纹图像分割,本文处理将采用均值方差法【3】。该算法基于背景区灰度方差小,而指纹区方差大的思想,将指纹图像分成块,计算每一块的方差,如果该块的方差小于阈值为背景,否则为前景。具体步骤分以下三步:(1)将图像分块,将其分为 NN 的方块。(2)计算出每一块的均值和方差。(3)如果方差很小,接近于 0 就认为是背景,对于方差不为零的区域在进行阈值分割算法。二值化二值化二值化是对分割后的图像的进一步处理,使图像灰度值只有两个值(黑、白)。以便于进一
6、步处理。二值化即选择某一阈值,对于大于阈值的灰度置为 1,小于阈值的灰度值都置为 0,如下 42 公式:【4】1,x T公式 42 二值化公式fx0,x T但是由于原始指纹图像不同区域深浅不一,如对整幅图像用同一阈值进行二值分割,会造成大量有用信息的丢失。所以我们可以选用局部阈对图像进行二值化。局部阈值法即选取 NN 的块,求该区域的阈值并对该区域二值化,可以 有 效 地 保 证 信 息 的 可 靠 性。二 值 化 结 果 如 下 图4-3所 示:4图 4-2 二值化细化细化二值化以后还需要将纹线宽度细化为单像素才便于提取特征点,本文细化采用 MATLAB 里的 bwmorph 函数对图像进行
7、细化。代码为:w=bwmorph(u,thin,Inf);细化图如下图 4-4 所示:图 4-3 细化图五、特征点的提取五、特征点的提取5特征点提取概述特征点提取概述特征点提取是指纹识别的关键,特征点指能代表指纹特异性的指纹纹路信息。一般说来,这种特征应有以下性质:【5】(1)单一性:要求这种特征能够充分体现指纹的唯一性。(2)可测试性:适用于指纹匹配算法,便于在匹配算法中应用。(3)紧凑性:要求提取的特征不应包含指纹唯一性以外的冗余信息,并且信息量要尽量小,便于存储、管理和计算。(4)鲁棒性:要求这种特征对噪声的存在与指纹形变不敏感。为了比较两个指纹是否相同,需要从指纹图像中提取出能表示指纹
8、唯一性的特征。Galton 提出的指纹细节点是人工指纹匹配中最常用的特征。指纹由脊线和谷线交替构成,在大多数地方纹线连续且相互平行,而某些局部不连续的地方构成了细节点。Galton 定义了 4 种细节点类型:分叉点,端点,环、岛,并指出细节点具有唯一性,可以用于指纹匹配。但是基本上的特征点都是由两类最基本的特征点构成的,即端点和分叉点。本文提取的特征点即最基本的特征点,端点和分叉点【6】。提取到特征点后并不可直接使用,因为由于指纹纹路的复杂性,往往产生很多特征点,其中很多都是伪特征点,需要我们剔除,所以提取到端点和分叉点以后需要去除为特征点。端点提取概述端点提取概述特征点提取去采用 33 的块
9、进行遍历提取,端点的判断条件为:周围的 8邻域两两相邻当且仅当存在 2 个不同值。如下图 5-1 所示:(1)(2)6(3)(4)图 5-1端点提取的四种情况分叉点提取概述分叉点提取概述特征点提取去采用 33 的块进行遍历提取,分叉点的判断条件为:周围的8 邻域两两相邻当且仅当存在 6 个不同值。如下图 5-2 所示:(1)(2)(3)(4)图 5-2分叉点提取的四种情况7伪特征点剔除伪特征点剔除因为采集、预处理过程中的空因素和提取算法的原因,提取到的特征点中会存在很多为特征点。为了不影响后续的识别,必须进行剔除。文本中剔除的伪特征点主要有三种:指纹范围外的点、指纹边沿的端点、断点,并根据这三
10、种伪特征点的特征进行剔除。在伪特征点剔除算法中,主要使用到了特征点距离的概念,特征点p1和p2间距离用欧式距离计算,见式(5-1):Dp1,p2xp1 xp2y2p1 yp22(5-1)下面是三类伪特征点的筛选方法:第一类:指纹范围外的点,本文中范围用了 17。此时把它和周围 8 点记为0,并在上述基础上减去不是特征点的个数。第二类:指纹边沿的端点,【7】观察细化图可以发现,真正的端点的在它周围半径R R 2,为平均纹线宽度,本文中8。在R范围内没有其它特征点存在,则是真的端点。而周围有其他特征点的,则可以认为是指纹的边沿端点,即第二类特征点。如下图所示,展示了局部的端点标记,在图中绿色标记的
11、是真正的端点,而红色标记的则是指纹边沿的端点,即第二类伪特征点。图 5-3 第二类伪特征点对比第三类为断点:断点,【8】即被认定为端点且在 12 的上半范围或下半范围,具有被确定为端点的特征点的点,则认为是第三类为特征点,即端点。如下图所示,展示了局部的端点标记,其中绿色的为较长纹线的端点,判断为真特征点;而很短的纹线(一般是有假信号)的端点则根据 12 的范围,被判断为断点,即第三类伪特征点。8图 5-4 第三类伪特征点对比六、匹配六、匹配指纹匹配算法综述指纹匹配算法综述对于指纹识别的算法人们已经有了很多研究,也提出了很多匹配的算法,目前来看主要有两类:一类是基于图形的匹配方式,包括点模式匹
12、配和基于图论的方法;另一类是采用人工神经网络的方法。图形匹配是针对纹线几何形状及其特征点拓扑结构的匹配方式,它的原理是基于相似变换的方法把两个特征点集中的相对应点匹配起来,这些相似变换可以是平移变换、旋转变换、伸缩变换等线性变换,可以在一定程度内允许少量伪特征点的存在、真正特征点的丢失以及轻微的特征点定位偏差,且对图像的平移和旋转也不敏感。但这种方法有两点不足:一是匹配速度比较慢;二是对指纹图像的质量要求比较高,低质量的图像匹配效果不佳,下面对这些算法进行一些简要的介绍【8】。Ranade 和 RSeinfeld 提出了点模式匹配的松弛算法,其思想是寻找一对匹配点,使得反映匹配程度的相似变换最
13、大,则将该点对作为基准点对,然后根据相似变换的计算结果调整待识别图像的位置,统计最终的匹配点对数,给出匹配结果。Stookinan 等提出的基于 Hough 变换的方法,把点模式匹配转化成对转换参数的 Hough 空间中的峰值检测。这种方法的缺点在于当特征点数目较少(少于 30 个)时,很难在 Hough 空间里积累起足够大的证据来保证一个可靠的匹配,另外,该方法有计算量较大的缺点。Sparrows 与 AKHrechak 等都提出了基于结构信息的特征匹配方法,而9DKISenor 与 SG.zaky 使用图来表示指纹特征,并用图匹配的方法来匹配指纹图像。这类方法利用了指纹图像的拓扑结构,允许
14、一般的图像平移旋转、特征点丢失以及伪特征点的存在,但是这类方法的准确性在很大程度上依赖于所提取的指纹特征信息及分类信息的准确性。采用人工神经网络的指纹匹配方法也有很多。Vinod 将非对称神经网络应用于指纹匹配中,提出了一种基于非对称神经网络的点模式匹配算法,而田捷等人将遗传算法应用于指纹匹配中,提出了基于遗传算法的指纹图匹配方法,利用指纹图像的结构信息进行初匹配,缩小搜索空间,然后采用遗传算法和补偿算法匹配指纹图像,有较强的抗噪声与非线性形变的能力。但由于神经网络固有的反复处理特性,速度难以得到提高,计算量偏大,因此不适合用于对实时性要求较高的在线指纹识别系统【9】。指纹中心点的提取指纹中心
15、点的提取因为中心点一般位置固定,以指纹中心点定位具有鲁棒性强,准确性高的有点,所以本文采用中心点为参考等进行匹配。以中心点为参考进行匹配,首先需要寻找中心点。本文采用了基于 Sobel 算子的指纹中心点定位,这里选取的中心是指纹中心的一个小区域,先求出指纹图像的点方向,相邻 8 个灰度值之和的平均值,再求这 8 个灰度值与平均值之差的和,最小和所在的方向即此点所在指纹脊线的方向,如此得到点方向图。把点方向图分为若干块 1616 大小的小块,对每块计算直方图,其峰值方向即为块方向,即每块中点的主导方向。然后在这个粗的块方向图上按照以下原则去搜索中心区域,逐行检查块方向数组。然后再根据求出各个方向
16、的角度以及相邻 8 个灰度值之和的平均值,再求这 8 个灰度值与平均值之差的和,最小和所在的方向即此点所在指纹脊线的方向,如此得到点方向图。该方法求取的中心点具有很强的鲁棒性【10】。建立匹配集合建立匹配集合提取特征点的过程将两类特征点存储进一个三列的矩阵中,其中分别存储特征点的类型、横坐标、纵坐标。本文采用将各特征点以中心点为参考,把获得的 x,y 坐标转化成为以中心点为远点的极坐标形式,即距离中心点的距离 d与中心点所成角度。求距离 d 的公式为公式 5-1,求角度的公式(6-1)如下:p0,p1y1y0 arctan (6-1)x1x0一组转换前后的数据,如下图 6-1:10 xysty
17、le39971497816110811031781106112111311011219311398511408411488211531821157761158112216118911733811749921781911192911201891205196220715712081581dstyle15.2315-1.1659136.6742-1.1193128.1603-0.1067196.89690.7635173.00680.0137180.0062-0.0125189.8220-0.20181109.1421-0.24051110.3540-0.24721118.6002-0.247011
18、39.43100.53431128.8449-0.27511125.00400.00802149.89330.54731157.8892-0.48061141.5097-0.08492165.60500.50421160.2529-0.12511169.4344-0.13021191.85670.45902179.97780.25851181.20150.2624111213170122018112249512391131240133124113412478712471042248861248881251114225117912561141260131126016412601732264291
19、2641091268113126812312681481269158127014012711391189.42280.31671199.67220.35821191.6690-0.08361206.00970.00971208.16580.10591209.26780.11011215.3416-0.11171214.1145-0.03272216.4486-0.11581216.2267-0.10661218.02060.01382228.35940.30241223.02020.01351.227.87940.08791233.10510.22941235.31470.26662245.1
20、224-0.34111231.0087-0.00871235.00850.00851235.30620.05101237.89490.15621240.63460.19661238.76770.12181239.64140.11711122772812822837389881112112246.9413248.9739250.0600250.0000-0.15452-0.08851-0.092110.123321)原始数据 2)匹配集图 6-2建立匹配集匹配方法匹配方法指纹匹配其实就是匹配两个三维向量集,但是由于匹配集大小不同,所以指纹匹配一直是模式识别中的一个难题。一个好的匹配算法需要做到匹
21、配准确,鲁棒性高。本文的算法采用步骤为:(1)从一个匹配集中依次取出每个点(2)(3)将取出的每个点与另一个点集中的所有点依次对比对比方法为:特征点类型相同,且d 的差和的差小于标准要求,则匹配点加一(4)遍历所有点后,若匹配点个数大于等于两组集合中点个数小的那组的点个数的 60%,则认为匹配成功,否则匹配失败。实验实验在对原来指纹用去签字笔模拟手指受到外界影响后的对比试验,如下图 6-3 所示:13图 6-3实验结果图实验结果为:match(0.bmp,1.bmp)时间已过 9.620100 秒。ans=匹配率:73.3696%匹配成功七、模型的评价与推广七、模型的评价与推广(1)本模型完成
22、了指纹图像的预处理,特征点提取和匹配。达到了使用计算机帮助人们完成指纹识别的工作。(2)本模型的创造性在于使用块遍历方式搜寻特征点,并采用极坐标的三维向量方式匹配指纹,使得提取快捷,匹配准确性高。(3)本模型的最大缺点时匹配时间长,无法达到一些实际使用的要求。还需要再预处理和伪特征点剔除的过程中减少对整幅图像的操作,以减少时间。(4)细化后图像出现突出状毛刺,会被误识为特征点且不易去伪。改进细化图像的方法。14八、参考文献八、参考文献1 杜彦蕊,李丹指纹识别技术探究中国教育技术装备,2010,3:612 张雄,贺贵明,一种指纹宏观曲率特征提取算法.武汉大学软件工程国家重点实验室.2002.11
23、3 李惠芳基于方向图的指纹图像自适应二值化算法研究北京师范大学学报(自然科学版),2009,45(3):2502534田捷,陈新建,张阳阳.指纹识别技术的新进展.自然科学进展,2006.16(4):400-405 崔艳秋,基于 MATLAB 的指纹识别系统设计,20096 陈倩基于细节特征的指纹识别算法研究武汉理工大学硕士论文,20087 王爱丽,指纹识别算法研究,20088 李晨丹,徐进,指纹图像预处理和特征提取算法的MATLAN 实现.计算机工程与科学.9 孙玉明,王紫婷基于Matlab 的指纹识别系统的研究与实现电脑知识与技术,2009,34(5):9803980410 陈戈珩,王飞,基
24、于 Matlab 的 Sobel 算子的指纹中心点定位.现代电子技术.2009.8九、源代码九、源代码MATLAB 程序:function R=match(a,b)%UNTITLED2 匹配函数%a,b 为指纹图像名称tic;t1=imread(a);t2=imread(b);subplot(2,2,1);imshow(t1);title(原图一);subplot(2,2,2);imshow(t2);title(原图二);t3,x=getTezheng(a);hx,wx=size(x);x1=zeros(0,3);x2=zeros(0,3);for i=1:hx if x(i,3)=1 x1(
25、i,1)=x(i,1);x1(i,2)=x(i,2);15 x1(i,3)=x(i,3);else x2(i,1)=x(i,1);x2(i,2)=x(i,2);x2(i,3)=x(i,3);endendt4,y=getTezheng(b);hy,wy=size(y);y1=zeros(0,3);y2=zeros(0,3);for i=1:hy if y(i,3)=1 y1(i,1)=y(i,1);y1(i,2)=y(i,2);y1(i,3)=y(i,3);else y2(i,1)=y(i,1);y2(i,2)=y(i,2);y2(i,3)=y(i,3);endendsubplot(2,2,3)
26、;imshow(t3);title(特征图一);hold onplot(x1(:,2),x1(:,1),ro);plot(x2(:,2),x2(:,1),go);subplot(2,2,4);imshow(t4);title(特征图二);hold onplot(y1(:,2),y1(:,1),ro);plot(y2(:,2),y2(:,1),go);m=distance(x);n=distance(y);m1,n1,o1=size(m);m2,n2,o2=size(n);count=0;for i=1:m1 for j=1:m2 if(m(i,3)=n(j,3)&abs(m(i,1)-n(j,
27、1)2&abs(m(i,2)-n(j,2)0.6)R=匹配率:,num2str(count/max(m1,m2)*100),%匹配成功;else R=匹配率:,num2str(count/max(m1,m2)*100),%匹配失败;endtoc;endfunction R1,R2=getTezheng(x)%UNTITLED 获取特征点集%此处显示详细说明I=imread(x);m,n=size(I);I=double(I);%归一化M=0;var=0;for x=1:m for y=1:n M=M+I(x,y);endendM1=M/(m*n);for x=1:m for y=1:n var
28、=var+(I(x,y)-M1)*(I(x,y)-M1);endendvar1=var/(m*n);for x=1:m for y=1:n if I(x,y)=M1 I(x,y)=150+sqrt(100*(I(x,y)-M1)*(I(x,y)-M1)/var1);else I(x,y)=150-sqrt(100*(M1-I(x,y)*(M1-I(x,y)/var1);end endend%分割M=10;H=fix(m/M);L=fix(n/M);aveg1=zeros(H,L);17var1=zeros(H,L);for x=1:H;for y=1:L;aveg=0;var=0;for i=
29、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)*(I(i+(x-1)*M,j+(y-1)*M)-aveg1(x,y)+var;end end var1(x,y)=var/(M*M);endendGmean=0;Vmean=0;for x=1:H for y=1:L Gmean=Gmean+aveg1(x,y);Vmean=Vmean+var1(x,y);endendGmea
30、n1=Gmean/(H*L);Vmean1=Vmean/(H*L);gtemp=0;gtotle=0;vtotle=0;vtemp=0;for x=1:H for y=1:L if Gmean1aveg1(x,y)gtemp=gtemp+1;gtotle=gtotle+aveg1(x,y);end if Vmean1var1(x,y)vtemp=vtemp+1;vtotle=vtotle+var1(x,y);end end18endG1=gtotle/gtemp;V1=vtotle/vtemp;gtemp1=0;gtotle1=0;vtotle1=0;vtemp1=0;for x=1:H fo
31、r y=1:L if G1aveg1(x,y)gtemp1=gtemp1+1;gtotle1=gtotle1+aveg1(x,y);end if 0var1(x,y)T1&var1(x,y)T2 moban(x,y)=1;end if aveg1(x,y)T3&var1(x,y)T2 moban(x,y)=1;end endendfor x=2:H-1 for y=2:L-1 if moban(x,y)=1 if moban(x-1,y)+moban(x-1,y+1)+moban(x,y+1)+moban(x+1,y+1)+moban(x+1,y)+moban(x+1,y-1)+moban(x
32、,y-1)+moban(x-1,y-1)(3*(sum1+sum2+sum3+sum4+sum5+sum6+sum7+sum8)/8)sumf=summin;else sumf=summax;end20 if sumf b Im(x,y)=128;else Im(x,y)=255;end endendfor i=1:m for j=1:n Icc(i,j)=Icc(i,j)*Im(i,j);endendfor i=1:m for j=1:n if(Icc(i,j)=128)Icc(i,j)=0;else Icc(i,j)=1;end;endend%二值化后处理Im=Icc;In=Im;for
33、a=1:4 for i=2:m-1 for j=2:n-1 if Im(i,j)=1 if Im(i-1,j)+Im(i-1,j+1)+Im(i,j+1)+Im(i+1,j+1)+Im(i+1,j)+Im(i+1,j-1)+Im(i,j-1)+Im(i-1,j-1)=7 In(i,j)=1;end end endendIm=In;end21%细化u=In;w=bwmorph(u,thin,Inf);I=w;R1=I;%特征提取xxx=0;Im=I;tezheng=zeros(m,n,3);for i=2:m-1 for j=2:n-1 if Im(i,j)=1 a=0;if Im(i-1,j)
34、=Im(i-1,j+1)a=a+1;end if Im(i-1,j+1)=Im(i,j+1)a=a+1;end if Im(i,j+1)=Im(i+1,j+1)a=a+1;end if Im(i+1,j+1)=Im(i+1,j)a=a+1;end if Im(i+1,j)=Im(i+1,j-1)a=a+1;end if Im(i+1,j-1)=Im(i,j-1)a=a+1;end if Im(i,j-1)=Im(i-1,j-1)a=a+1;end if Im(i-1,j-1)=Im(i-1,j)a=a+1;end if a=6%tezheng(i,j,1)=i;tezheng(i,j,2)=j
35、;tezheng(i,j,3)=1;xxx=xxx+1;I(i,j)=0;22分叉点判断 I(i-1,j)=1;I(i-1,j+1)=1;I(i,j+1)=1;I(i+1,j+1)=1;I(i+1,j)=1;I(i+1,j-1)=1;I(i,j-1)=1;I(i-1,j-1)=1;%1 表示分叉点 2 表示端点 end if a=2%端点判断 tezheng(i,j,1)=i;tezheng(i,j,2)=j;tezheng(i,j,3)=2;xxx=xxx+1;I(i,j)=0;I(i-1,j)=1;I(i-1,j+1)=1;I(i,j+1)=1;I(i+1,j+1)=1;I(i+1,j)=
36、1;I(i+1,j-1)=1;I(i,j-1)=1;I(i-1,j-1)=1;end end endend%特征提取后处理Izz=I;for i=1:m%去除边界点 for j=1:n if tezheng(i,j,3)=0 if i-17m|j-17n tezheng(i,j,3)=0;xxx=xxx-1;%消除端点 Izz(i-1,j)=0;Izz(i-1,j+1)=0;Izz(i,j+1)=0;Izz(i+1,j+1)=0;Izz(i+1,j)=0;Izz(i+1,j-1)=0;Izz(i,j-1)=0;Izz(i-1,j-1)=0;else a=0;b=0;c=0;d=0;a=I(i+
37、1,j)+I(i+2,j)+I(i+3,j)+I(i+4,j)+I(i+5,j)+I(i+6,j)+I(i+7,j)+I(i+8,j)+I(i+9,j)+I(i+10,j)+I(i+11,j)+I(i+12,j);b=I(i-1,j)+I(i-2,j)+I(i+3,j)+I(i-4,j)+I(i-5,j)+I(i-6,j)+I(i-7,j)+I(i-8,j)+I(i-9,j)+I(i-10,j)+I(i-11,j)+I(i-12,j);c=I(i,j+1)+I(i,j+2)+I(i,j+3)+I(i,j+4)+I(i,j+5)+I(i,j+6)+I(i,j+7)+I(i,j+8)+I(i,j+
38、9)+I(i,j+10)+I(i,j+11)+I(i,j+12);d=I(i,j-1)+I(i,j-2)+I(i,j-3)+I(i,j-4)+I(i,j-5)+I(i,j-6)+I(i,j-7)+I(i,j-8)+I(i,j-9)+I(i,j-10)+I(i,j-11)+I(i,j-12);if(a=1&b=1&c=1&d=1)tezheng(i,j,3)=0;%消除端点 xxx=xxx-1;23 Izz(i-1,j)=0;Izz(i-1,j+1)=0;Izz(i,j+1)=0;Izz(i+1,j+1)=0;Izz(i+1,j)=0;Izz(i+1,j-1)=0;Izz(i,j-1)=0;Iz
39、z(i-1,j-1)=0;end end end endend%消除断点for i=17:m-17 for j=17:n-17 if tezheng(i,j,3)=2 for x=i-12:i+12 for y=j-12:j-1 if tezheng(x,y,3)=2 tezheng(i,j,3)=0;tezheng(x,y,3)=0;xxx=xxx-1;Izz(i-1,j)=0;Izz(i-1,j+1)=0;Izz(i,j+1)=0;Izz(i+1,j+1)=0;Izz(i+1,j)=0;Izz(i+1,j-1)=0;Izz(i,j-1)=0;Izz(i-1,j-1)=0;Izz(x-1,y
40、)=0;Izz(x-1,y+1)=0;Izz(x,y+1)=0;Izz(x+1,y+1)=0;Izz(x+1,y)=0;Izz(x+1,y-1)=0;Izz(x,j-1)=0;Izz(x-1,y-1)=0;end end end end endend%获得特征点集pipei=zeros(0,3);ddd=1;for i=10:m-10 for j=10:n-10 if ddd=xxx+1 if tezheng(i,j,3)=0 pipei(ddd,1)=tezheng(i,j,1);pipei(ddd,2)=tezheng(i,j,2);pipei(ddd,3)=tezheng(i,j,3);ddd=ddd+1;end end24 endendR2=pipei;endfunction R=distance(x)%UNTITLED3 转化为极坐标点集%此处显示详细说明m,n=size(x);d=zeros(m,3);for i=1:m d(i,1)=sqrt(x(1,1)-x(i,1)2+(x(1,2)-x(i,2)2);d(i,2)=atan(x(i,2)-x(1,2)/(x(i,1)-x(1,1);d(i,3)=x(i,3);endR=d;end25