基于规则碎纸片文字特征的拼接复原算法_第1页
基于规则碎纸片文字特征的拼接复原算法_第2页
基于规则碎纸片文字特征的拼接复原算法_第3页
基于规则碎纸片文字特征的拼接复原算法_第4页
基于规则碎纸片文字特征的拼接复原算法_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

其中:条件1是判断碎纸片是否处于同一行,即Step2;条件2是判断特征矩阵纵列是否有连续的4个1,即Step4;公式1是和;:与每一张碎片匹配完成后能匹配的数组;:与每一张碎片匹配完成后能不能匹配的数组;:碎片的匹配率;:各张碎片匹配率中的最大值。Step4:优化处理,找到匹配度排序建立最大横向匹配率和最大纵向匹配率两个目标规划模型进行优化。目标1:目标2:而对于英文的碎片拼接,处理方法与中文的碎片拼接类似,但是在约束条件上有一些微小的差异:每一个字符所占的像素变了,行间距改变了等等。但是只需要对中文的优化模型进行稍微改动即可,同中文的碎纸片拼接模型一样,英文的碎片拼接也建立了最大横向匹配率和最大纵向匹配率两个目标规划模型进行优化。目标1:目标2:结果如下:表2针对样本的匹配率排序000001002003……205206207208第一0.83110.8……1111第二0.820.9410.450.7510.61第三0.730.880.860.290.7310.480.67第四0.730.880.830.120.520.890.450.66第五0.680.830.740.120.440.870.450.64第六0.620.790.680.110.420.860.420.61第七0.60.750.670.080.390.850.370.58第八0.570.740.670.070.31第九0.570.70.650.070.330.740.120.5第十0.570.550.650.040.320.730.070.52.对匹配进行进一步确认通过对最大匹配率模型的求解,可以得到每一张碎纸片与其余208张的匹配率,见表1,通过对该表的统计,我们发现匹配率都很高的情况下,结果可能与事实不符,这时就要加入人工干预。VB是一种可视化编程,面向对象的程序设计思想,事件驱动的编程机制,结构化的程序设计语言,因此我们通过VB来实现人工干预。首先我们根据处于边缘的纸片特征矩阵的特点,可以确定原文件位于左上角的碎纸片,其二值化矩阵的第一行和第一列均为0,且满足页边距大小。然后以该纸片为准,选出与其横向匹配率最高的10张碎纸片(见表2)。通过文字内容和逻辑判断进行匹配,若人工判断匹配(见图8),那么便记录下该纸片的编号,若不匹配(见图9),则从剩余的碎纸片中继续匹配。又以新的纸片为准,继续横向匹配,若匹配至第19张,则跳到下一行(见图10),以左上角的碎片为准,进行纵向匹配,匹配方法与横向的相同,匹配完第二行第一个碎片后又继续进行横向匹配;若无法匹配至最后一列,则自动往下进行一次纵向匹配,接着又进行横向匹配,直至最后一列,此时弹出对话框,要求重新输入起始图片编号。但是这种匹配过程中,肯定会出现图片空白的情况,我们比对实时的结果输出,确定空白位置,并依照其位置周围的图片号继续进行匹配,直至最后完全匹配。图7匹配顺序走向图图8碎纸片匹配图9碎纸片不匹配图10切换至纵向匹配问题3的模型建立与求解Step1:计算匹配率方法的改进我们继续延用第二问的模型,模型的建立与求解与问题2的步骤和方法一致,但是在求解碎纸片的匹配率上,我们让每张碎纸片的a、b两面分别于其余碎纸片的a、b两面进行匹配,如图11:图11碎片a、b两面匹配其中:表示同一张碎纸片a、b两面对应的特征矩阵表示另一张碎纸片a、b两面对应的特征矩阵箭头是带有方向性的,由表示以对应的碎纸片为准,用对应的碎纸片进行匹配,即对应的碎纸片在左,对应的碎纸片在右。由此可以得到4个匹配率,我们选取其中最大的匹配率作为对的匹配率。结果如下:编号000001002003004……2052062072080000.240.8100.5700.6200.570001000000000002000000000003000000000004000000000………………20300000……00002040000000002050.380.4800.900.900.6202060101000002070.50.600.900.9500.350208000000000Step2:利用匹配率排序的结果进行最终匹配然后按照碎纸片的编号顺序进行循环,再给每一张碎纸片挑出匹配率最大的前10张碎纸片,用VB窗口分别对这10张碎纸片的两个面进行人工判断,最终得到附件5的碎纸片复原顺序。按照我们最终得到的碎纸片编号顺序进行拼接,即得到原文件。结果见附录。六、模型评价与推广(一)模型的评价1)优点:1.充分利用了碎片边缘文字信息,按照字符的特点,如笔画、行间距等特点进行条件筛选,特别是利用了字符的笔画是连续的这个特征,建立了以寻找最大匹配率对应的碎纸片为目标的模型,操作简便,容易理解,匹配快。2.将自动拼接与人工干预很好的结合。在选择匹配碎片时,对于一张碎片同时有多张匹配碎片时,加入人工干预,从中进行筛选,将计算机与人脑有机结合,既减小了计算机机械化拼接造成的误差,又大大减少了纯手工拼接的工作量,高效、准确。对于中等偏少量的碎纸片拼接问题,该模型能很好的解决。2)缺点:1.对于大量的碎纸片拼接,所需要的人工干预就会变多,碎片拼接复原就会需要大量时间,匹配过程就会变得繁琐。所以在大量碎纸片拼接问题的推广上,就有一定的局限性。(二)改进改进:我们考虑通过图论的方法求出最大匹配链,从而减少人工干预。我们得到了各张碎纸片之间的匹配率,由于每一张碎纸片可能同时与多张碎纸片有相等的最大匹配率,但是随着链的增长,对每一条链上每相邻两个匹配碎片的匹配率相加,直至最后一张碎纸片,选出最大匹配链即为最佳匹配方案。(见图12)图12碎片匹配链但是这样得到的最大匹配链是整体匹配程度较高的方案,对于局部的匹配程度可能较低,这时就需要加入人工干预,将局部匹配不好的碎纸片挑出来,根据文字内容进行重新匹配。虽然用图论解决该题仍然需要人工干预,但是局部匹配不好的碎纸片毕竟是少数,从而又在原模型的基础上减少了人工干预,将更多的工作交给计算机进行处理,减轻了相关人员的负担。七、参考文献[1]张翠,基于点线的文档图片数字水印与碎片拼接,研究生学位论文,中国海洋大学,2011;[2]罗智中,基于文字特征的文档碎纸片半自动拼接,计算机工程与应用,华东交通大学,2012,48(5):2-4;[3]张廓,基于边缘匹配的图像检索的研究,学位论文,南昌大学,2006;[4]刘胜文,许高升,池英,灰度匹配与边缘强度匹配对比研究,/view/4f768f8dcc22bcd126ff0c9b.html,2013/09/15;[5]胡轶、胡青阳、於文雪,基于模板和小图片的拼图方法探究,中国像图形学报,第14卷第11期:2-5,2009;[6]盛慧,顾国庆,运用区域标定自动机的文字图像拼接算法,计算机应用与软件,第22卷第11期:1-3,2005;[7]刑楠,张婧,周一,李桥伟,朱虹,王栋,基于文字特征的碎纸机破碎文档恢复方法,发明专利申请,西安理工大学,2012。八、附件附件一复原结果8141215310216145913181171706附件二复原结果3627151811051913108121417164附件三复原结果4954651431862571921781181909511221292891188141611978676999162961317963116163726177205236168100766214230412314719150179120861952618718381484616124358118912210313019388167258910574711568313220017803320219815133170205851521652760141283159821991351273160203169134393151107115176943484183904712142124144771121499713616412758431251318210919716184110187661061502117315718120413914529641112015921804837755544206101049817217159720813815812668175451740137535693153701663219689146102154114401512071551401851081174101113194119123附件四复原结果1917511154190184210418064106414932204653967147201148170196198941131647810391801012610061728146865110729401581869824117150559589230374612719194931418812112610515511417618215122572027116582159139112963138153533812312017585501601879720331204110811613673362071351576431994517379161179143208217496111933142168621695419213311818916219711270846014681741371958491721569623991229018510913218195691671631661881111442063130341311025271781714266205101577414583134551856351691831524481771282001315212514019387894872121771240102115附件五复原结果(第一面)136b47a20a164b81b189b29a18b108a66a110a174b183b150a155a140a125a111b78b5a152a147a60b59a14a79a144a120b22a1244b192a25b44a178a76b36a10b89a143b200b86b187b131b56b138a45a137b61b94b98a121a38a30a42b84b153a186b83a39b97a175a72b93a132b87a198b181b34a156a206b173b194b169b161a11b199b90a203b162b2a139b70b41a170b151b1b166b115b65b191a37b180a149b107a88b13a24a57a142a208a64b102b17b12a28b154b197a158a58a207a116b179b184b114a35a159a73b193b163a130a21b202a53b177b16b19b92b190b50a201a31a171b146a172a122a182a40a127a188a68b8b117b167a75b63b67a46a168a157a128a195a165b106a204b141a135b27a80b0b185a176a126b74b32a69a4a77a148b85b7b3b9b145a82b205a15b101a118b129b62a52a71b33b119a160b95a51b48a133a23b54b196b112a103a55b100b106b91a49b26b113a134a104a6a123a109a96b43a99a附件五复原结果(第二面)78b111b125a140a155a150a183b174b110a66a108a18b29a189b81b164b20a47a136b89a10b36a76b178a44a25b192a124b22a120b144a79a14a59a60b147a152a5a186b153a84b42b30a38a121a98a94b61b137b45a138a56b131b187b86b200b143b199b11b161a169b194b173b206b156a34a181b198b87a132b93a72b175a97a39b83a88b107a149b180a37b191a65b115b166b1b151b170b41a70b139b2a162b203b90a114a184b179b116b207a58a158a197a154b28b12a17b102b64b208a142a57a24a13a146a171b31a201a50a190b92b19b16b177b53b202a21b130a163a193b73b159a35a165b195a128a157a168a46a67a63b75b167a117b8b68b188a127a40a182a122a172a3b7b85b148b77a4a69a32a74b126b176a185a0b80b27a135b141a204b106a23b133a48a51b95a160b119a33b71b52a62a129b118b101a15b205a82b145a9b99a43a96b109a123a6a104a134a113a26b49b91a106b100b55b103a112a196b54b程序附录:MATLAB:%%%%%%%%第一题%%%%%%%%%%%%clearallclcsymszijiand=0;%图片的起始帧序列号,d是当前图像的末尾的序号b='附件2\0';%读取图片文件的路径,其中0是所有图片名字的公共部分e='.bmp';%统一的文件的格式forn=0:18%要读入的图片数,根据需要调整m=int2str(d);ifn<10s=strcat(b,'0',m,e);elses=strcat(b,m,e);end[A,map]=imread(s);%读入的一张图像[x,y]=size(A);fori=1:x%像素规整forj=1:yifA(i,j)>128A(i,j)=0;elseA(i,j)=255;endendendzong(:,1,d+1)=A(:,1);%zong(1980,2,19)zong(:,2,d+1)=A(:,y);d=d+1;%自加以读入下一张图像endforjj=1:19max=0;forzz=1:19k=0;forkk=1:1980ifzong(kk,2,jj)==zong(kk,1,zz)k=k+1;endendifmax<kmax=k;zuizhong(jj)=zz-1;%%%%zuizhong代表与此数列位次jj相对应的照片的最匹配的照片的编号zz-1endendendxlswrite('F:\结果\1.2.xls',zuizhong)%%%%%%%%第二题%%%%%%%%%%%%横向clearallclcsymszijiand=0;%图片的起始帧序列号,d是当前图像的末尾的序号b='附件3\';%读取图片文件的路径,其中0是所有图片名字的公共部分e='.bmp';%统一的文件的格式biao=zeros(2,20);%统计上下或左右都白的图片zz=1;hh=1;forn=0:208%要读入的图片数,根据需要调整m=int2str(d);ifn<10s=strcat(b,'00',m,e);elseifn<100s=strcat(b,'0',m,e);elses=strcat(b,m,e);end[A,map]=imread(s);%读入的一张图像[x,y]=size(A);fori=1:x%像素规整forj=1:yifA(i,j)>128A(i,j)=0;elseA(i,j)=255;endendendzong(:,:,d+1)=A;zuoyou(:,1,d+1)=A(:,1);%zuoyou(1)存储左右边界信息zuoyou(:,2,d+1)=A(:,72);shangxia(:,1,d+1)=A(1,:);%shangxia(2)存储上下边界信息shangxia(:,2,d+1)=A(180,:);d=d+1;%自加以读入下一张图像zy=0;sx=0;jiao=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%检测上下都白或左右都白fork=1:xifA(k,y)==255||A(k,1)==255zy=1;endendforp=1:yifA(1,p)==255||A(x,p)==255sx=1;endendifzy==0biao(1,zz)=n;zz=zz+1;endifsx==0biao(2,hh)=n;hh=hh+1;end%%%%%%%%%%%%%%%%%%%%%%%%%检测结束返回左右都白、上下都白的编号endbiao%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读入图像和初步处理%%%%%%%%%%%%%%%%%%%%%%开始计算横向匹配度jieguo=zeros(209,209);fori=1:209pipeidu=0;zzz=0;n=0;%%%%%%%%%%%%%%寻找第一个字的最低点(参考是n,比照是m)pan=0;%%%%%%%%%%%%%%在第一行是零的情况下判断是否经过了1的范围ifsum(zong(1,:,i))==0fork=1:180ifsum(zong(k,:,i))~=0n=k;pan=1;endifsum(zong(k,:,i))==0&pan==1&sum(zong(k+10,:,i))==0%%%%%%%%%%连续十行都是0且经过了1区间breakendendelsefork=1:180ifsum(zong(k,:,i))==0&sum(zong(k+10,:,i))==0%%%%%%%%%%连续十行都是0n=k-1;breakendendend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%比照组m的计算forj=1:209pi=0;unpi=0;zuijia=1;pan=0;m=0;ifsum(zong(1,:,j))==0fork=1:180ifsum(zong(k,:,j))~=0m=k;pan=1;endifsum(zong(k,:,j))==0&pan==1&sum(zong(k+10,:,j))==0%%%%%%%%%%连续十行都是0且经过了1区间breakendendelsefork=1:180ifsum(zong(k,:,j))==0&sum(zong(k+10,:,j))==0%%%%%%%%%%连续十行都是0m=k-1;breakendendend%%%%%%%%%%%%%%%%%%%最低点比较判断是否要进行匹配度分析panduan=0;ifabs(m-n)<=3panduan=1;end%%%%%%%%%%%%%%%%%进行匹配度分析ifpanduan==1forkk=1:180ifzuoyou(kk,2,i)==255&kk<179&kk>2ifsum(zuoyou((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%匹配度列表sss=pi+unpi;ifsss~=0zzz=pi/sss;endjieguo(i,j)=zzz;endendendA=jieguo%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%前十匹配度zong=zeros(10,209);yi=zeros(10,1);forjj=1:10yi(jj)=1;endfori=1:209max=0;k=1;[zhi,wei]=sort(A(:,i),'descend');zong(1:10,i)=wei(1:10,1);zong(1:10,i)=zong(1:10,i)-yi;lv(1:10,i)=zhi(1:10,1)ifsum(A(:,i))==0zong(:,i)=0endendzongdlmwrite('F:\结果\2.1.1.txt',zong)xlswrite('F:\结果\2.1.1.xls',lv)%%%%%%%%第二题%%%%%%%%%%%%纵向clearallclcsymszijiand=0;%图片的起始帧序列号,d是当前图像的末尾的序号b='附件3\';%读取图片文件的路径,其中0是所有图片名字的公共部分e='.bmp';%统一的文件的格式biao=zeros(2,20);%统计上下或左右都白的图片zz=1;hh=1;forn=0:208%要读入的图片数,根据需要调整m=int2str(d);ifn<10s=strcat(b,'00',m,e);elseifn<100s=strcat(b,'0',m,e);elses=strcat(b,m,e);end[A,map]=imread(s);%读入的一张图像[x,y]=size(A);fori=1:x%像素规整forj=1:yifA(i,j)>128A(i,j)=0;elseA(i,j)=255;endendendzong(:,:,d+1)=A;zuoyou(:,1,d+1)=A(:,1);%zuoyou(1)存储左右边界信息zuoyou(:,2,d+1)=A(:,72);shangxia(:,1,d+1)=A(1,:);%shangxia(2)存储上下边界信息shangxia(:,2,d+1)=A(180,:);d=d+1;%自加以读入下一张图像zy=0;sx=0;jiao=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%检测上下都白或左右都白fork=1:xifA(k,y)==255||A(k,1)==255zy=1;endendforp=1:yifA(1,p)==255||A(x,p)==255sx=1;endendifzy==0biao(1,zz)=n;zz=zz+1;endifsx==0biao(2,hh)=n;hh=hh+1;end%%%%%%%%%%%%%%%%%%%%%%%%%检测结束返回左右都白、上下都白的编号endbiao%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读入图像和初步处理%%%%%%%%%%%%%%%%%%%%%%开始计算纵向匹配度jieguo=zeros(209,209);fori=1:209pipeidu=0;zzz=0;n=0;%%%%%%%%%%%%%%寻找第一个字的最低点(参考是n,比照是m)pan=0;%%%%%%%%%%%%%%在第一行是零的情况下判断是否经过了1的范围ifsum(zong(180,:,i))==0fork=180:-1:1ifsum(zong(k,:,i))~=0n=k;pan=1;endifsum(zong(k,:,i))==0&pan==1&sum(zong(k-10,:,i))==0%%%%%%%%%%连续十行都是0且经过了1区间breakendendelsefork=180:-1:1ifsum(zong(k,:,i))==0&sum(zong(k-10,:,i))==0%%%%%%%%%%连续十行都是0n=k-1;breakendendend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%比照组m的计算forj=1:209pi=0;unpi=0;zuijia=1;pan=0;m=0;ifsum(zong(1,:,j))==0fork=1:180ifsum(zong(k,:,j))~=0m=k;pan=1;endifsum(zong(k,:,j))==0&pan==1&sum(zong(k+10,:,j))==0%%%%%%%%%%连续十行都是0且经过了1区间breakendendelsefork=1:180ifsum(zong(k,:,j))==0&sum(zong(k+10,:,j))==0%%%%%%%%%%连续十行都是0m=k-1;breakendendend%%%%%%%%%%%%%%%%%%%最低点比较判断是否要进行匹配度分析n=180-n;ccc=abs(m+n-40);panduan=0;ifmod(ccc,70)<=10panduan=1;end%%%%%%%%%%%%%%%%%进行匹配度分析ifpanduan==1forkk=1:72ifshangxia(kk,2,i)==255&kk<71&kk>2ifsum(shangxia((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%寻找最大匹配度sss=pi+unpi;ifsss~=0zzz=pi/sss;jieguo(i,j)=zzz;endendendendxlswrite('F:\zongxiangpipei.xls',jieguo)A=jieguo%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%前十匹配度zong=zeros(10,209);yi=zeros(10,1);forjj=1:10yi(jj)=1;endfori=1:209max=0;k=1;[zhi,wei]=sort(A(:,i),'descend');zong(1:10,i)=wei(1:10,1);zong(1:10,i)=zong(1:10,i)-yi;lv(1:10,i)=zhi(1:10,1)ifsum(A(:,i))==0zong(:,i)=0endendzongdlmwrite('F:\结果\2.1.2.txt',zong)xlswrite('F:\结果\2.1.2.xls',lv)%%%%%%%%第三题%%%%%%%%%%%%横向clearallclcsymszijiand=0;%图片的起始帧序列号,d是当前图像的末尾的序号b='附件5\';%读取图片文件的路径,其中0是所有图片名字的公共部分e='a.bmp';%统一的文件的格式biao=zeros(2,20);%统计上下或左右都白的图片zz=1;hh=1;f='b.bmp';forn=0:208%要读入的图片数,根据需要调整m=int2str(d);ifn<10s=strcat(b,'00',m,e);elseifn<100s=strcat(b,'0',m,e);elses=strcat(b,m,e);end[A,map]=imread(s);%读入的一张图像[x,y]=size(A);fori=1:x%像素规整forj=1:yifA(i,j)>128A(i,j)=0;elseA(i,j)=255;endendendzong(:,:,d+1)=A;zuoyou(:,1,d+1)=A(:,1);%zuoyou(1)存储左右边界信息zuoyou(:,2,d+1)=A(:,72);shangxia(:,1,d+1)=A(1,:);%shangxia(2)存储上下边界信息shangxia(:,2,d+1)=A(180,:);d=d+1;%自加以读入下一张图像zy=0;sx=0;jiao=0;endd=0;forn=0:208%要读入的图片数,根据需要调整m=int2str(d);ifn<10s=strcat(b,'00',m,f);elseifn<100s=strcat(b,'0',m,f);elses=strcat(b,m,f);end[A,map]=imread(s);%读入的一张图像[x,y]=size(A);fori=1:x%像素规整forj=1:yifA(i,j)>128A(i,j)=0;elseA(i,j)=255;endendendzong1(:,:,d+1)=A;zuoyou1(:,1,d+1)=A(:,1);%zuoyou(1)存储左右边界信息zuoyou1(:,2,d+1)=A(:,72);shangxia1(:,1,d+1)=A(1,:);%shangxia(2)存储上下边界信息shangxia1(:,2,d+1)=A(180,:);d=d+1;%自加以读入下一张图像zy=0;sx=0;jiao=0;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读入图像和初步处理%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%开始计算横向匹配度jieguo=zeros(209,209);fori=1:209pipeidu=0;zzz=zeros(4);forj=1:209pi=0;unpi=0;zuijia=1;panduan=1;ifpanduan==1forkk=1:180ifzuoyou(kk,2,i)==255&kk<179&kk>2ifsum(zuoyou((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%匹配度列表sss=pi+unpi;ifsss~=0zzz(1)=pi/sss;endsss=0;pi=0;unpi=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%forkk=1:180ifzuoyou(kk,2,i)==255&kk<179&kk>2ifsum(zuoyou1((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%匹配度列表sss=pi+unpi;ifsss~=0zzz(2)=pi/sss;endsss=0;pi=0;unpi=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%forkk=1:180ifzuoyou1(kk,2,i)==255&kk<179&kk>2ifsum(zuoyou((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%匹配度列表sss=pi+unpi;ifsss~=0zzz(3)=pi/sss;endsss=0;pi=0;unpi=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%forkk=1:180ifzuoyou1(kk,2,i)==255&kk<179&kk>2ifsum(zuoyou1((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%匹配度列表sss=pi+unpi;ifsss~=0zzz(4)=pi/sss;endjieguo(i,j)=max(zzz(:));endendend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%A=jieguo;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%前十匹配度zong=zeros(10,209);yi=zeros(10,1);forjj=1:10yi(jj)=1;endfori=1:209max=0;k=1;[zhi,wei]=sort(A(:,i),'descend');zong(1:10,i)=wei(1:10,1);zong(1:10,i)=zong(1:10,i)-yi;lv(1:10,i)=zhi(1:10,1);ifsum(A(:,i))==0zong(:,i)=0;endendzongdlmwrite('F:\结果\3.1.txt',zong)xlswrite('F:\结果\3.1.xls',lv)%%%%%%%%第三题%%%%%%%%%%%%纵向clearallclcsymszijiand=0;%图片的起始帧序列号,d是当前图像的末尾的序号b='附件5\';%读取图片文件的路径,其中0是所有图片名字的公共部分e='a.bmp';%统一的文件的格式biao=zeros(2,20);%统计上下或左右都白的图片zz=1;hh=1;f='b.bmp';forn=0:208%要读入的图片数,根据需要调整m=int2str(d);ifn<10s=strcat(b,'00',m,e);elseifn<100s=strcat(b,'0',m,e);elses=strcat(b,m,e);end[A,map]=imread(s);%读入的一张图像[x,y]=size(A);fori=1:x%像素规整forj=1:yifA(i,j)>128A(i,j)=0;elseA(i,j)=255;endendendzong(:,:,d+1)=A;zuoyou(:,1,d+1)=A(:,1);%zuoyou(1)存储左右边界信息zuoyou(:,2,d+1)=A(:,72);shangxia(:,1,d+1)=A(1,:);%shangxia(2)存储上下边界信息shangxia(:,2,d+1)=A(180,:);d=d+1;%自加以读入下一张图像zy=0;sx=0;jiao=0;endd=0;forn=0:208%要读入的图片数,根据需要调整m=int2str(d);ifn<10s=strcat(b,'00',m,f);elseifn<100s=strcat(b,'0',m,f);elses=strcat(b,m,f);end[A,map]=imread(s);%读入的一张图像[x,y]=size(A);fori=1:x%像素规整forj=1:yifA(i,j)>128A(i,j)=0;elseA(i,j)=255;endendendzong1(:,:,d+1)=A;zuoyou1(:,1,d+1)=A(:,1);%zuoyou(1)存储左右边界信息zuoyou1(:,2,d+1)=A(:,72);shangxia1(:,1,d+1)=A(1,:);%shangxia(2)存储上下边界信息shangxia1(:,2,d+1)=A(180,:);d=d+1;%自加以读入下一张图像zy=0;sx=0;jiao=0;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读入图像和初步处理%%%%%%%%%%%%%%%%%%%%%%开始计算纵向匹配度jieguo=zeros(209,209);fori=1:209pipeidu=0;zzz=zeros(4);n=0;forj=1:209pi=0;unpi=0;zuijia=1;panduan=1;ifpanduan==1forkk=1:72ifshangxia(kk,2,i)==255&kk<71&kk>2ifsum(shangxia((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%寻找最大匹配度sss=pi+unpi;ifsss~=0zzz(1)=pi/sss;jieguo(i,j)=zzz(1);endsss=0;pi=0;unpi=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%forkk=1:72ifshangxia(kk,2,i)==255&kk<71&kk>2ifsum(shangxia1((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%寻找最大匹配度sss=pi+unpi;ifsss~=0zzz(2)=pi/sss;jieguo(i,j)=zzz(2);endsss=0;pi=0;unpi=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%forkk=1:72ifshangxia1(kk,2,i)==255&kk<71&kk>2ifsum(shangxia((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%寻找最大匹配度sss=pi+unpi;ifsss~=0zzz(3)=pi/sss;jieguo(i,j)=zzz(3);endsss=0;pi=0;unpi=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%forkk=1:72ifshangxia1(kk,2,i)==255&kk<71&kk>2ifsum(shangxia1((kk-2):(kk+2),1,j))>=255pi=pi+1;elseunpi=unpi+1;endendend%%%%%%%%%%%%%%%%%%寻找最大匹配度sss=pi+unpi;ifsss~=0zzz(4)=pi/sss;jieguo(i,j)=zzz(4);endsss=0;pi=0;unpi=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%endendendA=jieguo;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%前十匹配度zong=zeros(10,209);yi=zeros(10,1);forjj=1:10yi(jj)=1;endfori=1:209max=0;k=1;[zhi,wei]=sort(A(:,i),'descend');zong(1:10,i)=wei(1:10,1);zong(1:10,i)=zong(1:10,i)-yi;lv(1:10,i)=zhi(1:10,1)ifsum(A(:,i))==0zong(:,i)=0endendzongdlmwrite('F:\结果\3.2.txt',zong)xlswrite('F:\结果\3.2.xls',lv)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%最后拼接工程(VB语言)Dimpipei(9,208)AsSingle,a,b,weiDimzuizhong(10,18)AsSingle,ii,jj,zong,wei2Dimpipei2(9,208)AsSingle,ii2,jj2PrivateSubCommand1_Click()wei=0a=Text1.Textb=Text2.Textc=Text3.Texts=a+b+".bmp"Picture1.Picture=LoadPicture(s)OpencForInputAs#1'打开输入文件。Fori=0To9Forj=0To208Input#1,pipei(i,j)NextjNextiClose#1'关闭文件。pi=pipei(wei,Val(b))Ifpi<10Thenxia=a+"00"+Trim(Str(pi))+".bmp"ElseIfpi<100Thenxia=a+"0"+Trim(Str(pi))+".bmp"Elsexia=a+Trim(Str(pi))+".bmp"EndIfPicture2.Picture=LoadPicture(xia)Picture2.Width=Picture1.WidthPicture2.Height=Picture1.HeightPicture2.Left=Picture1.Left+Picture1.WidthEndSubPrivateSubCommand2_Click()Ifzong=0Thenii=ii+1wei=0zuizhong(ii,jj)=pipei(wei,b)'记录下匹配序列b=pipei(wei,b)'对b重新赋值Ifii>10Then'如果横向到头则提示纵向匹配ii=0jj=jj+1pp=MsgBox("请进行纵向匹配")EndIfIfb<10Thenxia=a+"00"+Trim(Str(b))+".bmp"ElseIfpi<100Thenxia=a+"0"+Trim(Str(b))+".bmp"Elsexia=a+Trim(Str(b))+".bmp"EndIfPicture1.Picture=LoadPicture(xia)'显示下一个待匹配图ooo=pipei(wei,b)Ifooo<10Thenooo=a+"00"+Trim(Str(ooo))+".bmp"ElseIfpi<100Thenooo=a+"0"+Trim(Str(ooo))+".bmp"Elseooo=a+Trim(Str(ooo))+".bmp"EndIfPicture2.Picture=LoadPicture(ooo)Else'纵向匹配的情况ii2=ii2+1wei=0zuizhong(ii2,jj2)=pipei(wei2,b)'记录下匹配序列b=pipei(wei2,b)'对b重新赋值Ifii2>10Then'如果横向到头则提示纵向匹配ii2=0jj2=jj2+1pp=MsgBox("请进行横向匹配")zong=0EndIfIfb<10Thenxia=a+"00"+Trim(Str(b))+".bmp"ElseIfpi<100Thenxia=a+"0"+Trim(Str(b))+".bmp"Elsexia=a+Trim(Str(b))+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论