全国大学生数学建模B题碎纸片的拼接复原.docx
- 文档编号:26790015
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:54
- 大小:623.17KB
全国大学生数学建模B题碎纸片的拼接复原.docx
《全国大学生数学建模B题碎纸片的拼接复原.docx》由会员分享,可在线阅读,更多相关《全国大学生数学建模B题碎纸片的拼接复原.docx(54页珍藏版)》请在冰豆网上搜索。
全国大学生数学建模B题碎纸片的拼接复原
2013高教社杯全国大学生数学建模竞赛
承诺书
我们仔细阅读了《全国大学生数学建模竞赛章程》和《全国大学生数学建模竞赛参赛规则》(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。
如有违反竞赛章程和参赛规则的行为,我们将受到严肃处理。
我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。
我们参赛选择的题号是(从A/B/C/D中选择一项填写):
B
我们的参赛报名号为(如果赛区设置报名号的话):
所属学校(请填写完整的全名):
参赛队员(打印并签名):
1.
2.
3.
指导教师或指导教师组负责人(打印并签名):
(论文纸质版与电子版中的以上信息必须一致,只是电子版中无需签名。
以上内容请仔细核对,提交后将不再允许做任何修改。
如填写错误,论文可能被取消评奖资格。
)
日期:
年月日
赛区评阅编号(由赛区组委会评阅前进行编号):
2013高教社杯全国大学生数学建模竞赛
编号专用页
赛区评阅编号(由赛区组委会评阅前进行编号):
赛区评阅记录(可供赛区评阅时使用):
评
阅
人
评
分
备
注
全国统一编号(由赛区组委会送交全国前编号):
全国评阅编号(由全国组委会评阅前进行编号):
碎纸片的拼接复原
摘要
本文从开发碎纸片的自动拼接技术,以提高拼接复原效率的角度出发,研究了不同切割方式、不同语言文字和单双面打印下的破碎文件拼接还原方面的问题。
与同类研究相比,本文旨在突出研讨自动拼接技术在生活中应用问题的重要性。
针对问题一,附件1和附件2中的碎纸片都只是纵向切割的情况,运用切割边缘灰度检测模型和图论模型,对附件1和附件2中的碎纸片进行了拼接还原,得到了附件1和附件2中破碎文件复原后的排列顺序如下所示:
附件1中碎纸片文件复原顺序表(表1)
附件2中碎纸片文件复原顺序表(表2)
针对问题二,附件3和附件4中的碎纸片是横向、纵向都切割,且附件3和附件4中碎纸片上的文字是不同语言文字的情况,运用层次聚类方法、灰度检测模型、图论模型和递归收缩算法,并且加入了人工干预的影响,对附件3和附件4中的破碎文件先进行局部还原,且进行人工干预,得到了附件3中破碎文件复原后的排列顺序表(表4)和附件4中破碎文件复原后的排列顺序表(表7)。
针对问题三,附件5中的碎纸片是横向、纵向都切,且是双面打印的英文文件,拼接复原难度大大增加,所以,将在问题一、问题二的数学模型基础上,增加识别英文字母的模型,对附件5中的破碎文件进行拼接复原。
关键词:
自动拼接边缘灰度检测图论模型层次聚类递归收缩算法
一问题重述
破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。
传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。
特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。
随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。
1.对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,并针对附件1、附件2给出的中、英文各一页文件的碎片数据进行拼接复原。
2.对于碎纸机既纵切又横切的情形,请设计碎纸片拼接复原模型和算法,并针对附件3、附件4给出的中、英文各一页文件的碎片数据进行拼接复原。
3.上述所给碎片数据均为单面打印文件,从现实情形出发,还可能有双面打印文件的碎纸片拼接复原问题需要解决。
附件5给出的是一页英文印刷文字双面打印文件的碎片数据。
尝试设计相应的碎纸片拼接复原模型与算法,并就附件5的碎片数据给出拼接复原结果。
二模型假设
1、不考虑扫描破碎文件储存为图片时,光线强度对碎纸片灰度的影响。
2、假设碎纸片的扫描图片转存为灰度矩阵时,图片信息无缺失。
3、假设需要拼接还原的碎纸片均为同一规格。
三符号说明
P
碎纸片的编号
K
常数,0 碎纸片P的灰度矩阵 碎纸片p左侧第一列单个像素序列 碎纸片p左侧第一列单个像素序列 T 碎纸片两两拼接的匹配值 碎纸片P与碎纸片 的最大匹配值 所有碎纸片拼接起来时的最大匹配值 X 中文碎纸片上边界所截汉字高度 Y 中文碎纸片中部所截汉字高度 Z 中文碎纸片下边界所截汉字高度 C 同行截取的碎纸片集合 注: 未说明符号在文中用到时注明 四问题一的解答 由于附件1件中所给的图片均是纵向切割的,所以每张图片纵向的两条边,是判断相连图片的重要信息载体,我们运用边缘灰度检测模型和图论模型对问题一进行求解。 4.1(单面、纵切)碎纸片纵向边缘灰度检测[1]的模型 对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(仅纵切),每一张碎纸片都存有各不相同的信息,而每块纸片的纵向切口是互相连接的关键,我们经分析,对于仅纵切的情况,主要分析切口边界的单个像素灰度序列值进行比较。 将碎纸片信息转为灰度存为矩阵 : 由于要去比较碎纸片的纵向边界,就将矩阵 中的第一列(左边界单个像素灰度序列值)和最后一列(右边界单个像素灰度序列值)取出分别存为矩阵 和 : 要判断任意两张碎纸片( 和 )是否存在相连的关系,即可转变为判断两张碎纸片按第一张碎纸片( )左边匹配第二张碎纸片( )右边、第一张碎纸片右边( )匹配第二张碎纸片左边( )的方法,求出边界的匹配值T1和T2,比较T1和T2的大小,将最大的一个值确定为这两张碎纸片的最大匹配值 。 将所有碎纸片按两两匹配的关系进行匹配,使每张碎纸片都与其他碎纸片之间均取得最大匹配值。 4.2(单面、纵切)碎纸片拼接复原的模型 通过上一步骤的处理,我们可以得到碎纸片两两拼接时的最大匹配值,因为需要拼接还原的碎纸片来自同一页印刷文字文件,所以拼接还原出来的页面应该是完整的一页,且碎纸片的拼接顺序按从左至右或从右至左是唯一的,从而可知有最优的拼接还原顺序。 运用图论模型[2],可以得到碎纸片的最佳排序。 假设某页印刷文字文件被切割成了五块(A、B、C、D、E)其编号是任意的,两碎纸片连线上的数是它们之间的最大匹配值,如下图所示: 根据上图,建立如下表格,其中表格行列相交处表示它们之间的匹配最大值。 A B C D E A 0 30 95 5 5 B 30 0 73 3 95 C 95 73 0 1 2 D 5 3 1 0 85 E 5 95 2 85 0 运用图论模型的知识和最优原则,可得将碎纸片(A、B、C、D、E)不同方式排序时总的匹配值,然后把不同方式下取得总的匹配值中最大的排序方式(顺序)选取出来,即为最优拼接还原顺序。 (可得顺序: A-B-C-E-D) 4.3对附件1、附件2中的碎纸片的拼接还原 1)对附件1中的碎纸片的拼接还原 运用4.1和4.2建立的模型,通过Matlab编程实现,可以求得附件1中19张碎纸片两两拼接复原的匹配值,经过对19张碎纸片两两拼接复原的匹配值的筛选,可得下表: 根据上表,按照左右关系排序可以得到附件1中19张碎纸片拼接还原的顺序(从左到右): 附件1中碎纸片文件复原顺序表(表1) (附件1中的碎纸片拼接复原的全图见附录1.1) 2)对附件2中的碎纸片的拼接还原 运用4.1和4.2建立的模型,通过Matlab编程实现,可以求得附件2中19张碎纸片两两拼接复原的匹配值,经过对19张碎纸片两两拼接复原的匹配值的筛选,可得下表: 根据上表,按照左右关系排序可以得到附件2中19张碎纸片拼接还原的顺序(从左到右): 附件2中碎纸片文件复原顺序表(表2) (附件2中的碎纸片拼接复原的全图见附录1.2) 五问题二的解答 针对附件3、附件4中横、纵都切的来自同一页印刷文字文件的碎纸片,由于分割出的碎纸片数量超过200张,数量较多,各图片之间的切割边界上的信息有限,若采用问题一中建立的模型求解,结果不理想。 经过分析,对于像附件3类似的横纵都切,且来自同一页的中文文件,由于中文在打印排版时是按点阵的方式进行的,其每个汉字所占长和宽均相等(特殊汉字除外),所以我们采用层次聚类方法、灰度检测方法和图论模型相结合,对附件3中的碎纸片进行拼接复原。 5.1(单面、横纵都切)中文碎纸片拼接复原的模型 运用层次聚类方法中的AGNES(AGglomerativeNESting)算法[3]将(单面、横纵都切)中文碎纸片进行分类。 利用中文打印排版时是点阵的规律和特点,可知,若碎纸片属于同一行的话,其文字被截断的横、纵位置相同,如下所示: 若两张碎纸片不是同一行的,则X、Y、Z将不会对应相等,如下所示: 由此可以通过对碎纸片两两比较进行行聚类,模型如下: 经过行聚类模型,可得到m类碎纸片,到此,把每一类看做是一整页,即第m类中的碎片只用考虑纵向切割,借助问题一中的模型求解,把每一类中的碎纸片进行左、右连接顺序匹配,根据得到的匹配关系加与人工干预可得到复原文件。 5.1.1(单面、横纵都切)中文碎纸片拼接复原的人工干预 1)干预时间节点: 得到每一类中的碎纸片的匹配关系后,进行人工干预,得到每一类的拼接复原顺序;然后将每一类看作整体进行纵向拼接,进行人工干预。 2)干预方式: 根据此类中的碎纸片的匹配关系进行拼接,若发现拼接无错位且词或句语义合理,则认为是正确拼接;若发现此类中的碎片不适合在此类中拼接,则将其选出,在其他类别中进行拼接。 当横向拼接完后,在进行纵向拼接,此时拼接量就很小了,手工拼接即可完成得到复原文件。 3)干预方法: 递归收缩算法[4] 假设A、B、C、D来自同一类的四张碎纸片,人工拼接时A和C可以拼在一起,则把A和C拼接后看作是一个整体,然后在和B、D拼接,一直拼接下去,这样需要拼接的块数不断减少,直到这一类碎纸片全都拼接复原出来。 5.1.2(单面、横纵都切)中文碎纸片的拼接复原 根据上面的模型可得附件3中碎纸片的初步类别(此处运用Matlab编程得到初步类别,然后经人工干预合并类别后可得表3),如下所示: 附件3中的碎纸片类别表(表3) 将表3的每一类运用问题一中的模型可得到从左向右拼接的顺序表,然后进行了人工干预加之对问题一中模型的应用,可以得到附件3中碎纸片的复原顺序表,如下所下示: 附件3中破碎文件的复原顺序表(表4) (附件3中的破碎文件拼接复原后的全图如件附录1.3) 5.2(单面、横纵都切)英文碎纸片拼接复原的模型 运用层次聚类方法中的AGNES(AGglomerativeNESting)算法[3]将(单面、横纵都切)英文碎纸片进行分类。 利用英文打印排版时和书写英文的规律可知: 英文若用四条线段将其横向分割开的化,其信息主要集中在内侧的两条横线内,如下所示: 根据此特点可知,若碎纸片属于同一行的话,其英文单词被截部分信息集中的位置处于同一水平高度,如下所示: 灰色部分表示信息集中的区域,由此可以运用第二问中处理中文碎纸片的模型进行初步分类,可得下表: 附件4中的碎纸片类别表(表5) 将表中的每一类运用问题一中的模型可得到从左向右拼接的顺序表如下所示: 附件4中的破碎文件类别拼接复原表(表6) 由于英文的拼接复原比中文的要复杂,得到上表后需进行人工干预,将空缺的部分拼接上去。 经此过程可得附件4中破碎文件的最终拼接顺序表: 附件4中破碎文件的复原顺序表(表7) (附件4中的破碎文件拼接复原后的全图如件附录1.4) 六问题三的解答 6.1(双面、横纵都切)英文碎纸片拼接复原的模型 对问题三进行分析,可知附件5中的碎纸片是横向、纵向都切,且是双面打印的英文文件,拼接复原难度大大增加,所以,将在问题一、问题二的数学模型基础上,增加识别英文字母的模型,对附件5中的破碎文件进行拼接复原。 首先对英文字母大、小写的特点和图片中字母间距、高度、宽度等进行统计分析,得出相应结论,然后对碎纸片进行识别,在运用图论模型中的收缩算法对碎纸片进行拼接复原。 七模型的检验与评价 7.1模型的检验(方法) 通过对复原出的破碎文件进行语意、语法和文件完整与否等方面的检查,可验证问题一、问题二的解答结果是否正确,以及模型的合理性。 通过编程,附件1用程序fujian1_2gaij.m(见附录2.10)进行检验、附件2用程序fujian2_2gaij.m(见附录2.11)进行检验,也可得到附件1、附件2碎纸片拼接复原的顺序和完整的复原图。 7.2模型的评价 优点: 1、运用问题一的模型对类似附件1中的破碎文件进行拼接复原时快速、方便,合理。 2、问题二中的模型加入了人工干预的成分,是的拼接复原的结果更加准确、可靠。 缺点: 由于本文建立的模型主要运用了边缘灰度检测和图论模型,在一定程度上没有充分利用碎片的信息,从而导致拼接复原过程中需要加入适当的人工干预,自动化、智能化水平降低,建立的模型还需要进一步的完善和优化。 绘制破碎文件复原的全图时,编写的程序过长。 八模型的改进和推广 8.1模型的改进 经过分析和比较,对于问题一和问题二所建立的模型的不足改进方案有: 1、可以考虑采用提取、识别汉字和字母的算法,对碎纸片进行更高层次的匹配,减小匹配时的误差,充分利用碎纸片的灰度信息。 2、对于模型求解时加入了人工干预,可以在进一步优化和完善程序,尽量降低人工干预在模型求解中占的比例,使其更加接近自动化、智能化的要求。 8.2模型的推广 本模型可以推广到彩色图片的复原,和考古时发现的大量陶瓷碎片和大量其它文件碎片进行复原,不规则碎纸片。 图片的复原运的可行性。 参考文献 [1]李了了,邓善熙,MATLAB在图像处理技术方面的应用,,2013/9/13。 [2]蒋 建,孙 蕊,图论模型的建立及转化方法,,2013/9/13。 [3]不详,层次聚类算法(PPT), [4]梁勇强,钟艳如,张庆霞,生成有向装配连接图有向割集的递归收缩算法,,2013/9/14。 附录 附录一: 附录1.1附件1中破碎文件的拼接复原全图 附录1.2附件2中破碎文件的拼接复原全图 附录1.3附件3中破碎文件的拼接复原全图 附录1.4附件4中破碎文件的拼接复原全图 附录二: 文中所涉及的程序 所有程序均用到MatlabR2011b 附录2.1 %%求附件1中碎纸片两两拼接的匹配值(fujian_1.m) clc,clear,closeall k=1; fori=0: 18 N=sprintf('%03d.bmp',i); a=imread(N);%循环导入18张图片 n=size(a,2); A(: k)=a(: 1);%分别取出每张图片首列和尾列的灰度值 k=k+1; A(: k)=a(: n); k=k+1; end n=size(A); t=0; C=zeros(38); fori=1: 2: n(1,2) forj=2: 2: n(1,2) t=0; if(j~=(i+1)&j~=i) fork=1: n(1,1) if(A(k,i)<122&A(k,j)<122) t=t+1; C(i,j)=t; end end end end end m=size(C); r=0; fori=1: 2: m(1,1) r=r+1; k=C(i,1); forj=2: m(1,2) if(C(i,j)>k) k=C(i,j); D(r,1)=i; D(r,2)=j; D(r,3)=k; end end end nd=size(D,1); fori=1: nd G(i,2)=(D(i,1)-1)/2;%图片序号 G(i,1)=(D(i,2)-2)/2;%图片序号 G(i,3)=D(i,3); end 附录2.2 %附件1中碎纸片复原全图(文件fujian1_1huatu.m) clc,clear x1=imread('008.bmp'); x2=imread('014.bmp'); x3=imread('012.bmp'); x4=imread('015.bmp'); x5=imread('003.bmp'); x6=imread('010.bmp'); x7=imread('002.bmp'); x8=imread('016.bmp'); x9=imread('001.bmp'); x10=imread('004.bmp'); x11=imread('005.bmp'); x12=imread('009.bmp'); x13=imread('013.bmp'); x14=imread('018.bmp'); x15=imread('011.bmp'); x16=imread('007.bmp'); x17=imread('017.bmp'); x18=imread('000.bmp'); x19=imread('006.bmp'); z=[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19]; imshow(z) 附录2.3 %%求附件2中碎纸片两两拼接的匹配值(fujian_2.m) clc,clear,closeall k=1; fori=0: 18 N=sprintf('%03d.bmp',i); a=imread(N); n=size(a,2); A(: k)=a(: 1); k=k+1; A(: k)=a(: n); k=k+1; end n=size(A); t=0; C=zeros(38); fori=1: 2: n(1,2) forj=2: 2: n(1,2) t=0; if(j~=(i+1)&j~=i) fork=1: n(1,1) if(A(k,i)<122&A(k,j)<122) t=t+1; C(i,j)=t; end end end end end m=size(C); r=0; fori=1: 2: m(1,1) r=r+1; k=C(i,1); forj=2: m(1,2) if(C(i,j)>k) k=C(i,j); D(r,1)=i; D(r,2)=j; D(r,3)=k; end end end nd=size(D,1); fori=1: nd G(i,2)=(D(i,1)-1)/2; G(i,1)=(D(i,2)-2)/2; G(i,3)=D(i,3); end 附录2.4 %附件2碎纸片复原全图(文件fujian2_1_huatu.m) clc,clear x1=imread('003.bmp'); x2=imread('006.bmp'); x3=imread('002.bmp'); x4=imread('007.bmp'); x5=imread('015.bmp'); x6=imread('018.bmp'); x7=imread('011.bmp'); x8=imread('000.bmp'); x9=imread('005.bmp'); x10=imread('001.bmp'); x11=imread('009.bmp'); x12=imread('013.bmp'); x13=imread('010.bmp'); x14=imread('008.bmp'); x15=imread('012.bmp'); x16=imread('014.bmp'); x17=imread('017.bmp'); x18=imread('016.bmp'); x19=imread('004.bmp'); z=[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19]; imshow(z) 附录2.5 %%对附件3中的碎纸片进行初步分类(fujian_3_fl.m) clc,clear,closeall t=0; fori=0: 208 N=sprintf('%03d.bmp',i); a=imread(N); n=size(a); t=t+1; forj=1: n(1,1) fork=1: n(1,2) if(a(j,k)>=122) a(j,k)=0;%将白点赋值为0 else a(j,k)=1;%将黑点赋值为1 end if(a(j,k)==1) b(1,t)=i; b(j+1,t)=1; end end end end nb=size(b); A=zeros(nb(1,2)); fori=1: nb(1,2) forj=1: nb(1,2) A(i,j)=inf; end end forj=1: nb(1,2)-1 fork=j+1: nb(1,2) A(j,k)=t; t=0; fori=2: nb(1,1) if(b(i,j)~=b(i,k)) t=t+1; end end end end n=size(A); fori=1: n(1,1) t=0; B(i,1)=i-1; forj=1: n(1,2) if(A(i,j)<15) t=t+1; B(i,t+1)=j-2; end end end 附录2.6 %%对附件3中初步分类的结果进行行排列(fujian_3_zx.m) clc,clear,closeall B=load('shuju2.txt'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国大学生 数学 建模 纸片 拼接 复原