1、2013高教社杯全国大学生数学建模竞赛承 诺 书我们仔细阅读了全国大学生数学建模竞赛章程和全国大学生数学建模竞赛参赛规则(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。如有违反竞赛章程和参赛
2、规则的行为,我们将受到严肃处理。我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。我们参赛选择的题号是(从A/B/C/D中选择一项填写): B 我们的参赛报名号为(如果赛区设置报名号的话): 所属学校(请填写完整的全名): 参赛队员 (打印并签名) :1. 2. 3. 指导教师或指导教师组负责人 (打印并签名): (论文纸质版与电子版中的以上信息必须一致,只是电子版中无需签名。以上内容请仔细核对,提交后将不再允许做任何修改。如填写错误,论文可能被取消评奖资格。) 日期: 2013 年 9 月 10 日赛
3、区评阅编号(由赛区组委会评阅前进行编号):2013高教社杯全国大学生数学建模竞赛编 号 专 用 页赛区评阅编号(由赛区组委会评阅前进行编号):赛区评阅记录(可供赛区评阅时使用):评阅人评分备注全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):碎纸片的拼接复原模型摘 要: 本文针对碎纸片的拼接复原问题,提出了互相关匹配模型。首先对附件图片数值化处理并建立矩阵;然后根据图像页边距特点定位最左边和最右边的碎片;按照每张碎片中的文字部分所在位置,提取同一行碎片,利用互相关函数 横向拼合。在第一问中,附件一、二仅作横向相关性比较即可;在第二、三问中,需要提取同一行碎
4、片横向拼接,并将横向拼合完整的碎片进行竖向拼合,经过人工干预得到结果。最终结果见附录。 关键词:拼接复原;互相关;矩阵;数值化;人工干预 一、问题重述在司法物证复原、历史文献修复以及军事情报获取等领域的破碎文件的拼接上,传统的拼接复原工作需由人工完成,准确率较高,但效率很低。尤其是当碎片数量巨大时,人工拼接很难在短时间内完成任务。随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。我们需要用算法分别设计出附件1至附件5的拼接方法及拼接结果。二、模型假设1. 忽略实际拼接中边缘的整齐性;2. 不需要考虑实际拼接中破碎文件大小是否一致;3. 忽略碎片边缘的损耗,认为拼接后是
5、完整的图片;4. 在模型的建立过程中重视算法与建模思想,淡化程序的编写;5. 文字的行间距一定。三、符号说明 互相关系数() 相关像素数组1 相关像素数组2 图像像素值矩阵 处理后图像像素值矩阵 矩阵元素四、问题的分析1. 已知条件的分析第一,对碎片尺寸和数量的分析。附件1和附件2的图片尺寸均为,碎片数量均为19;附件3、附件4和附件5的图片尺寸均为,碎片数量均为。由于纵列有11个,像素值180,总值,因此,所有拼接后的图像尺寸一致,均为13681980。第二,对碎片边界的分析。对于附件1、2,所有碎片上行和下行像素值为白。其中,一张碎片位于最左端,最左列像素值均为白;一张碎片位于最右端,最右
6、列像素值均为白。对于附件3、4、5,拼接后图像四边像素值为白,碎片也存在边像素值全为白的情况,因此需要分类讨论。切割线为长度完全相等的直线,因此切割线两边应有很大的相似度,灰度值相似。第三,对碎片正反性的分析。附件5存在正反面情况,同一块用a、b,但根据题意分析,我们无法确定碎片的正反,即a可能是正面,也可能是反面。因此拼合时,应当注意统一序号在同一平面出现的单一性,例如,000a在设定正面出现以后,000b一定在反面。第四,对碎片像素白色行的分析对于中文,同一行的所有碎片文字是横向对齐的,因此白色开始的位置是一样的。因此可以提取出同一行的碎片。2. 拼接方法的分析由于碎片是长方形,有四条边,
7、因此边的拼接有优先顺序。由于长边特征较为明显,采样点多,因此优先横向拼接,然后纵向拼接。当电脑拼接无法完成时,采取人工干预。五、模型的分析与求解1. 方法的确立根据对问题的分析,我们得知此问题需要计算离散序列之间的相关性,因此我们需要使用互相关系数计算和矩阵的计算。2. 模型的建立1. 1图像数字化由于电脑中图像的大小是由像素数量表示,而每个像素点均由一个数值表示,因此利用matlab读取灰度图像的像素值,第n副图用矩阵表示为:在第一问中,n=72,m=1980;在第二问、第三问中,n=72,m=180。1. 2数据预处理由于互相关函数需要比较正负范围相等的数组,因此我们将的每个数值减去,使在
8、 -,范围内,即1. 3相关性的计算由于碎片大小完全一致,切割线完全竖直且交界处长度完全相等,并且切割线无损,图像可以完全拼接,因此相邻两个图形交接处相似。由于图像已经数字化处理,因此可以由边界相应像素数值的相关性来确定两张图是否相邻。对于相关性的计算,我们使用互相关函数。互相关函数公式为:公式中,分子表示的是两组离散数值的相似程度,分母则起到归一化作用,相邻两边的数组分别为序列。当时,两组数相似程度最大,即两张图片最有可能相邻;当时,两组数相似程度最小,即两张图片不相邻。根据这个公式,即可算出两个图边缘的相关度。1. 4图像的拼接1. 4. 1 第一问附件一:首先,根据图像页边距白边特点定位
9、最左边为白色的碎片,的第一列列向量为,将i=1,2,19分别带入计算,仅当i=15时,因此,最左边碎片为014。然后,令,将014矩阵数据带入中分别计算,当取得取时,i-1即为相邻碎片。同理,即可拼接整幅图。结果见附录。同理可得附件二结果。Matlab 附件一 拼接图1. 4. 2 第二问首先,确定最左边碎片。因为碎片存在非左边仍有白边的情况,例如附件4的图002.bmp,如下图所示。(由于底色是白色与文档背景相同,进行了对比度降低处理。)附件4-002.bmp因此,需要提取多组行向量,根据是否均为0确定最左碎片,同理可确定最右碎片。左碎片满足条件如下:式中,r的大小由实际图像左边缘白边像素数
10、量决定。在附件3中,r取15时,满足条件的碎片数量为11。利用同一行碎片文字垂直位置相同的特点,根据最左边碎片的文字的垂直位置特点,确定图像所在行。同第二问,分别计算同一行序列的互相关系数,取最大值拼合。然而,这样只能拼接出11个横行碎片,用互相关函数拼接部分碎片后,最后用人工干预完成白边部分的拼合。结果如附件所示。1. 4. 3 第三问由于是两面混合,首先忽视两面性,认为所有碎片是在同一平面上,进行整体拼接,则图像应该为个碎片,在进行最左边和最右边计算时会出现22个碎片。然后根据第二问方法,进行横向碎片的拼接,纵向碎片的拼接。最后进行人工干预。由于图像是由两面组成的,因此两张图片的对称点(第
11、n列和第20-n列对称)数字相同字母不同,例如199b在一个面的第4行、第19列,那么199a就在另一面的第4行、第1列。因此正反两面的对应行所在位置一致,可以人工将图拼合完整。效果如如下,结果见附件。Matlab 附件五 拼接图六、模型评价模型优点:1、模型具有坚实可靠的数学基础,经过实践数据分析证明,互相关函数在本题中应用的可行性,简化了对模型问题的分析;2、模型能较好的优化人工干预次数。模型缺点:1、附件3、4、5在拼接时没有完全脱离人工干预;2、在实际推算中,模型会产生较大的运算量;3、模型在现实生活中的应用有待优化,因为现实中很少有完全规则的文字碎片。参考文献:1屈婉玲等编,离散数学
12、,北京:高等教育出版社 ,20082同济大学数学系编,工程数学线性代数 同济第五版,北京:高等教育出版社 ,20073(美)奥本海姆等著 刘树棠译,信号与系统(第二版),北京:电子工业出版社 20134张志涌等编著,精通MATLAB R2011a,北京:北京航空航天大学出版社 ,20115(美)穆尔 著,高会生,刘童娜,李聪聪 译,MATLAB实用教程(第二版),北京:电子工业出版社 ,20106(美)莫勒(Moler,C.B)著 喻文健译,MATLAB数值计算,北京:机械工业出版社,20067(美)冈萨雷斯(Gonzalez.R.C.)等著 阮秋琦等译,数字图像处理(MATLAB版),北京:
13、电子工业出版社 ,20058(美)冈萨雷斯等著 阮秋琦译,数字图像处理的MATLAB实现(第2版),北京:清华大学出版社 ,20139(美)罗森著 袁崇义等译,离散数学及其应用,北京:机械工业出版社 ,2011附录附录一 模型结果附件1结果:列数12345678910111213141516171819序号008014012015003010002016001004005009013018011007017000006附件一效果图 附件二效果图附件2结果:列数12345678910111213141516171819序号0030060020070150180110000050010090130
14、10008012014017016004附件3结果:行列12345678910111213141516171819104905406514318600205719217811819009501102212902809118814120610190780670690991620961310790631161630720061770200520363168100076062142030041023147191050179120086195026001087018403814804616102403508118912210313019308816702500800910507450711560831
15、322000170800332021980151331702050851521650270606014128003159082199135012073160203169134039031051107115176709403408418309004712104212414407711214909713616412705804381250131821091970161841101870661061500211731571812041391459029064111201005092180048037075055044206010104098172171059100072081381581260681
16、750451740001370530560931530701660321961108914610215411404015120715514018510811700410111319411912320附件4结果:行列1234567891011121314151617181911910750111541901840021041800641060041490322040650390671472201148170196198094113164078103091080101026100006017028146308605110702904015818609802411715000505905809203
17、003704612740191940931410881211261051551141761821510220572020711650825159139001129063138153053038123120175085050160187097203031602004110811613607303620713501507604319904517307916117914372080210070490611190331421680621690541921331181891621971128070084060014068174137195008047172156096023099122090185109
18、91321810950691671631661881111442060031300340131100250271781017104206620501015707414508313405501805603501600918315204411081077128200131052125140193087089048072012177124000102115附件5结果:行列123456789101112131415161718191136a047b020b164a081a189a029b018a108b066b110b174a183a150b155b140b125b111a078a2005b152b1
19、47b060a059b014b079b144b120a022b124a192b025a044b178b076a036b010a089b3143a200a086a187a131a056a138b045b137a061a094a098b121b038b030b042a084a153b186a4083b039a097b175b072a093b132a087b198a181a034b156b206a173a194a169a161b011a199a5090b203a162a002b139a070a041b170a151a001a166a115a065a191b037a180b149a107b088a60
20、13b024b057b142b208b064a102a017a012b028a154a197b158b058b207b116a179a184a114b7035b159b073a193a163b130b021a202b053a177a015a019a092a190a050b201b031b171a146b8172b122b182a040b127b188b068a008a117a167b075a063a067b046b168b157b128b195b165a9105b204a141b135a027b080a000a185b176b126a074a032b069b004b077b148a085a00
21、7a003a10009a145b082a205b015a101b118a129a062b052b071a033a119b160a095b051a048b133b023a11054b196a112b103b055a100a106a091b049a026a113b134b104b006b123b109b096a043b099b行列123456789101112131415161718191078b111b125a140a155a150a183b174b110a066a108a018b029a189b081b164b020a047a136b2089a010b036a076b178a044a025b1
22、92a124b022a120b144a079a014a059a060b147a152a005a3186b153a084b042b030a038a121a098a094b061b137b045a138a056b131b187b086b200b143b4199b011b161a169b194b173b206b156a034a181b198b087a132b093a072b175a097a039b083a5088b107a149b180a037b191a065b115b166b001b151b170b041a070b139b002a162b203b090a6114a184b179b116b207a0
23、58a158a197a154b028b012a017b102b064b208a142a057a024a013a7146a171b031a201a050a190b092b019b015b177b053b202a021b130a163a193b073b159a035a8165b195a128a157a168a046a067a063b075b167a117b008b068b188a127a040a182b122a172a9003b007b085b148b077a004a069a032a074b126b176a185a000b080b027a135b141a204b105a10023b133a048a
24、051b095a160b119a033b071b052a062a129b118b101a015b205a082b145a009b11099a043a096b109a123a006a104a134a113a026b049b091a106b100b055b103a112a196b054a附录三效果图 附录四效果图 附录五效果图1 附录五效果图2附录二 部分源程序(由于源程序篇幅过长,打印不便,因此只附上部分程序)使用软件:MatlabI000=imread(000.bmp)I001=imread(001.bmp)I002=imread(002.bmp)I003=imread(003.bmp)I00
25、4=imread(004.bmp)I005=imread(005.bmp)I006=imread(006.bmp)I007=imread(007.bmp)I008=imread(008.bmp)I009=imread(009.bmp)I010=imread(010.bmp)I011=imread(011.bmp)I012=imread(012.bmp)I013=imread(013.bmp)I014=imread(014.bmp)I015=imread(015.bmp)I016=imread(016.bmp)I017=imread(017.bmp)I018=imread(018.bmp)P=I
26、000,I001,I002,I003,I004,I005,I006,I007,I008,I009,I010,I011,I012,I013,I014,I015,I016,I017,I018% 最左计算函数function F=borderright(x)for j=1:1:19 y(j)=0 for i=1:1:1980 if(x(i,72*(j-1)+1)=255) y(j)=y(j)+0 else y(j)=y(j)+1 end end if(y(j)=0) F=j endendendfunction d=split(x,y,m)maxx=0,0for j=1:1:19 z(j)=0 if(
27、j=(m(1)+1)&(j=(m(2)+1)&(j=(m(3)+1)&(j=(m(4)+1)&(j=(m(5)+1)&(j=(m(6)+1)&(j=(m(7)+1)&(j=(m(8)+1)&(j=(m(9)+1)&(j=(m(10)+1)&(j=(m(11)+1)&(j=(m(12)+1)&(j=(m(13)+1)&(j=(m(14)+1)&(j=(m(15)+1)&(j=(m(16)+1)&(j=(m(17)+1)&(j=(m(18)+1)&(j=(m(19)+1) for i=1:1:1980 if(x(i,72*y)255)&(x(i,72*(j-1)+1)maxx(1) maxx=z(
28、j),j endendd=maxx(2)end function two(x,a,b)for i=1:1:a for j=1:1:b if(x(i,j)p p=r(b) h=b end r(b)=0endp=0HENG(k,i)=ha=h for c=1:1:180 bai=bai+Q(c+a*180,72)end if (bai=22950)&(i=19)msgbox()endif (bai=22950)&(ip p=r(b) h=b end endendp=0HENG(k,i)=ha=h for c=1:1:180 bai=bai+Q(c+a*180,1)endif (bai22000)&(i1) msgbox() breakend bai=0endend