2013年数学建模碎纸片的拼接复原模型
2013全国数学建模竞赛B题优秀论文

基于最小二乘法的碎纸片拼接复原数学模型摘要首先对图片进行灰度化处理,然后转化为0-1二值矩阵,利用矩阵行(列)偏差函数,建立了基于最小二乘法的碎纸片拼接数学模型,并利用模型对图片进行拼接复原。
针对问题一,当两个数字矩阵列向量的偏差函数最小时,对应两张图片可以左右拼接。
经计算,得到附件1的拼接结果为:08,14,12,15,03,10,02,16,01,04,05,09,13,18,11,07,17,00,06。
附件2的拼接结果为:03,06,02,07,15,18,11,00,05,01 ,09,13, 10,08,12,14,17,16,04。
针对问题二,首先根据每张纸片内容的不同特性,对图片进行聚类分析,将209张图片分为11类;对于每一类图片,按照问题一的模型与算法,即列偏差函数最小则进行左右拼接,对于没有拼接到组合里的碎纸片进行人工干预,我们得到了11组碎纸片拼接而成的图片;对于拼接好的11张图片,按照问题一的模型与算法,即行偏差函数最小则进行上下拼接,对于没有拼接到组合里的碎纸片进行人工干预。
我们最终经计算,附件3的拼接结果见表9,附件4的拼接结果见表10。
针对问题三,由于图片区分正反两面,在问题二的基础上,增加图片从下到上的裁截距信息,然后进行两次聚类,从而将所有图片进行分类,利用计算机自动拼接与人工干预相结合,对所有图片进行拼接复原。
经计算,附件5的拼接结果见表14和表15该模型的优点是将图片分为具体的几类,大大的减少了工作量,缺点是针对英文文章的误差比较大。
关键字:灰度处理,图像二值化,最小二乘法,聚类分析,碎纸片拼接一、问题重述碎纸片的拼接复原技术在司法鉴定、历史文献修复与研究、军事情报获取以及故障分析等领域都有着广泛的应用。
近年来,随着德国“斯塔西”文件的恢复工程的公布,碎纸文件复原技术的研究引起了人们的广泛关注。
传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。
特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。
碎纸片拼接复原的数学模型_杨武

121数学学习与研究2014.11碎纸片拼接复原的数学模型◎杨武李博(江苏南京农业大学工学院210000)【摘要】本文对碎片的拼接复原问题,建立了碎纸片拼接模型,编写matlab 程序,利用人机交互指令实现碎片的快速拼接.对2013年“高教社杯”全国大学生数学建模竞赛的B 题中所给11x 19个碎片文件进行拼接.【关键词】碎片拼接模型;matlab ;灰度值矩阵;Kmeans 聚类;人机交互一、研究背景及意义近年来,大量政府机关、企事业单位采用碎纸机对废弃文件或失效的机密文件进行破碎,这种破碎方法产生的碎片多为规则的.这使得在进行破碎文件的复原拼接时,只能根据文字内容进行匹配,为此,本文考虑应用当前的计算机识别技术开发碎纸片的自动拼接技术,对所有碎片搜索和筛选,寻找能够在某种指标上匹配的碎片进行拼接.提高拼接复原效率,从而大大降低人工工作量和难度.对碎片自动拼接问题的研究,不仅具有广阔的应用前景,而且具有很强的理论意义.二、图像碎片预处理首先,利用matlab 图像处理功能对碎纸片进行图像预处理.即将碎纸片数字化,转化为图片文件的数据.即一个二维数组构成的灰度值矩阵,这个矩阵存储着一张碎纸片各个像素点的颜色值,其中255表示白色,0表示黑色,图片中颜色均处在黑白、或黑白之间,图片数字化后的数字范围在0 255之间.三、碎纸片拼接模型的假设1.假设碎片原文件都存在上、下、左、右的页边距,且边距大于行间距和列间距;2.假设相邻碎片间纸张信息的损失可以忽略不计;3.假设碎纸机是沿平行或垂直于文字的方向对纸张进行切割的.四、碎纸拼接模型的建立1.挑出每行最左边的图片:根据图片的边缘留有空白部分的特性,挑选出图片最左边存在空白部分的图片作为左边界的候选图片.方法实现:计算图片左边距留白宽度:即可用灰度值矩阵中左端竖列上全为255(即左侧完全空白)的连续列数度量,由matlab 检测出每张图片的留白宽度.留白宽度排序:对上面得到的留白宽度进行排列,取排在前面的11张图片作为拼接过程的起始碎片.2.图片按行分类:根据Kmeans 聚类算法,对碎片进行按行分类.分类实现:①先根据底端一行是否为纯空白将209幅图分为下端有纯空白行和下端有被截文字两类.②对于空白行一类,下端空白行数相同或相近的纸条属于原文件同一行;③对于下端有被截文字的一类,下端被截文字高度相同或相近的纸条属于原文件同一行.④分析确定好的最左端图片的特征,依此为11个聚类中心,利用matlab 程序分类.3.对同行碎片进行拼接①拼配原则———突变数将所有的碎片进行处理后得到灰度值矩阵,分别记作M i (i =1,…,n )(n 为图片的数量)通过对每一张碎片的数据进行了分析,不难发现在每一张碎片上,同一行相邻两个点的像素值从0变为255或者从255变到0的比例仅有0.016%左右.将相邻两个像素值由0变到255或者由255变到0定义为一次突变.定义两张碎片的突变数如下:设Ri 为某张碎片M i 的最右侧一列像素值,L j 为另一张碎片M j 的最左侧一列像素值(Ri 和L j 均为180行的列向量),碎片M i 和M j 的突变数:T ij =∑180k =1flag (k )ij ,flag (k )ij =1R(k )i -L (k )j =2550R(k )i -L (k )j <{255,其中R(k )i 表示向量Ri 的第k 个分量,L (k )j 表示向量L j 的第k 个分量.②匹配过程以上面确定的最左边的碎片为起点,计算该碎片所在行的可能的碎片与其的突变数T.理论上T 值越小,两个图片的匹配的可能性最大,将T 进行由小到大的排序,在matlab 程序中让起始碎片优先与T 值最小的匹配,若匹配不成功再依次考虑T 值较大的,直至匹配成功.4.人工干预①人工干预时机:本文对209个已有碎片,分析发现若其余碎片与其的突变数仅有一个为0,则突变数为零的那个碎片一定与该碎片相匹配,一旦出现突变数均不为0,则需进行人工干预.②人工干预方法:为减少人工干预次数,做如下工作:1)计算碎片M i 灰度值矩阵最右一列Ri 与位于M i 行的其余碎片灰度值矩阵最左一列L j 的偏差平方和S 作为人工干预的指标:S =∑180i =1(Ri-L i )2.2)对偏差平方和S 由大到小进行排序,将碎片的序号放入集合US 中,S 大的最有可能与碎片M i 相匹配③在matlab 程序中让碎片M i 依次与集合US 中的图片进行匹配,每次对两个图进行匹配时,令命令窗口弹出这两个图匹配在一起的图片,进行人工观察.通过对拼接处文字字形和语义的分析,人工检查该匹配是否合理.5.纵向拼接①观察11条已拼好的横切纸条,根据所有纸条的上边缘特征确定位于原文件顶端的横切纸条,并以该纸条为起始纸条.②根据起始纸条的下边缘灰度值特征,利用上述步奏拼出整张文件.五、模型的评价与改进1.模型的优点:模型采用突变数和偏差平方和作为评价函数评定碎片间邻边的相关度,高效而且实用.能大大减少人工干预的次数.2.模型的局限性:由于研究的是碎纸机产生的碎片.该模型只考虑了对多个相同的形状规则的碎片进行拼接,且当碎片的数量增加且单个碎片的文字覆盖率越小时,更易产生灰度分布情况相似的碎片,需要进行人工干预的次数会相应增多.六、结论本文对碎纸片的匹配原则和人工干预进行了探讨和研究,建立了一个可靠高效的数学模型,利用图片数字化后数值之间的分布规律和相关度引入突变值和偏差平方和作为评价指标,利用matlab 软件实现快速拼接.并为了提高拼接准确性,巧妙地使用人机交互指令进行人工的检测干预.【参考文献】[1]何鹏飞,等.基于蚁群优化算法的碎纸拼接.计算机工程与科学,2011,33(7).[2]邓薇.MATLAB 函数速查手册.北京:人民邮电出版社,2010.[3]宋晓闯.基于灰度和几何特征的图像匹配算法研究.万方数据库,2013-09-13.。
碎纸片的拼接复原算法及MATLAB实现

承诺书我们仔细阅读了《全国大学生数学建模竞赛章程》和《全国大学生数学建模竞赛参赛规则》(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。
如有违反竞赛章程和参赛规则的行为,我们将受到严肃处理。
我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。
我们参赛选择的题号是(从A/B/C/D中选择一项填写): B我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):楚雄师范学院参赛队员(打印并签名) :1. 陈志明2. 施明杰3. 阮秀婷指导教师或指导教师组负责人(打印并签名):(论文纸质版与电子版中的以上信息必须一致,只是电子版中无需签名。
以上内容请仔细核对,提交后将不再允许做任何修改。
如填写错误,论文可能被取消评奖资格。
)日期: 3013 年 9 月 16 日赛区评阅编号(由赛区组委会评阅前进行编号):编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):碎纸片的拼接复原算法及MATLAB实现摘要:对于只有纵切的情形,文章通过比较当前待拼碎片与剩余碎片的信噪比psnr[1,3,4]的值来确定两碎片是否为邻接碎片;拼接算法首先连续调用右拼函数直到拼接到原图右边界,然后连续调用左拼函数直到拼接到原图左边界,从而得到整幅复原图像;对于单面纵横交错切的情形,文章对首先采用纵切拼接算法将碎片拼接成多幅横条图片,然后将各横条图片矩阵转置[2],再次采用纵切拼接算法拼接;两种情形的拼接,都存在人为参与;实验证明,我们的算法对纵切情形是有效的,对纵横切情况是可行的。
2013年数学建模B题碎纸片的拼接复原

年
9 月 15 日
赛区评阅编号(由赛区组委会评阅前进行编号) :
1
2013 高教社杯全国大学生数学建模竞赛
编 号 专 用 页
赛区评阅编号(由赛区组委会评阅前进行编号) :
赛区评阅记录(可供赛区评阅时使用) : 评 阅 人 评 分 备 注
全国统一编号(由赛区组委会送交全国前编号) :
全国评阅编号(由全国组委会评阅前进行编号) :
2
三.模型假设
1. 所有碎纸片的拼接都可以忽略边缘效应,即可无缝地融合在一起; 2. 对于仅纵切的两块待拼接的碎纸片,可用像素点灰度值矩阵的相似度大于 0.6 作为 判别标准; 3. 对既纵切又横切的碎纸片,拼接后原图形四周的像素点是 255; 4. 人工干预可以准确的选择出不确定的待拼接图形; 5. 对于既纵切又横切的两块待拼接的碎片,先进行行拼接,再进行列拼接; 6. 假设给定待拼接碎纸片边缘平滑。
二.问题分析
第一问中, 对于中、 英文的纵切单面文件, 可以选择矩阵相关性匹配算法, 在 MATLAB 中导入图形后,将图形中的变量转换为矩阵的形式,采用矩阵相似度比较法,提取待拼 接图形中第一列和最后一列像素点灰度值, 用 corr2 函数进行相似度比较, 然后根据相 关系数的大小来判断待拼接图形文字区域的相似程度,相关系数(0 表示毫不相关,-1 和 1 表示完全相关,靠近-1 或 1 表示相似程度较大) 。 由此得到待拼接图形的相应位置,从而实现文字的拼接。 第二问中,中、英文的纵横切单面文件拼接复原的处理问题,在上一问的基础上将 问题简化为 19 次行方向的碎片拼接,对一拼接的行再进行列方向上的拼接。依然使用 矩阵相关性算法,在 MATLAB 中导入图形后,将各个图形的变量转换为的相应的矩阵形 式,矩阵相似度比较,提取待拼接图形四周边缘像素点灰度值,用 corr2 函数进行相似 度比较, 然后根据相关系数的大小来判断带拼接图形文字区域的相似程度。 由于图形数 量多, 相关系数不能唯一确定一张拼接图形, 此时要进行人工干预, 筛选出合适的图形, 再对剩余的待拼接图进行矩阵相似度比较,得到行方向的图形。最后根据 MATLAB 软件 编写的程序和人工干预拼接处整张图形。 第三问中,对于中、英文的纵横切双面文件的拼接复原,在第二问的基础上需要比 较正反两面, 在比较的过程中其中一张有可能出现正反两面与另一张图像在算法中计算 出来的相关系数几乎差不多,此时可能要进行人工干预,选出那张是正面还是反面。
2013 数模国赛 B题 碎纸片的拼接复原

2013高教社杯全国大学生数学建模竞赛B题碎纸片的拼接复原首先分析问题:对于第一问分析如下对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,并针对附件1、附件2给出的中、英文各一页文件的碎片数据进行拼接复原。
如果复原过程需要人工干预,请写出干预方式及干预的时间节点。
求matlab图像拼接程序clear;I=imread('xingshi32.bmp');if(isgray(I)==0)disp('请输入灰度图像,本程序用来处理128 *128的灰度图像!');elseif (size(I)~=[128,128])disp('图像的大小不合程序要求!');elseH.color=[1 1 1]; %设置白的画布figure(H);imshow(I);title('原图像');zeroImage=repmat(uint8(0),[128 128]);figure(H); %为分裂合并后显示的图设置画布meansImageHandle=imshow(zeroImage);title('块均值图像');%%%%%设置分裂后图像的大小由于本图采用了128像素的图blockSize=[128 64 32 16 8 4 2];%%设置一个S稀疏矩阵用于四叉树分解后存诸数据S=uint8(128);S(128,128)=0;threshold=input('请输入分裂的阈值(0--1):');%阈值threshold=round(255*threshold);M=128;dim=128;%%%%%%%%%%%%%%%%% 分裂主程序%%%%%%%%%%%while (dim>1)[M,N] = size(I);Sind = find(S == dim);numBlocks = length(Sind);if (numBlocks == 0)%已完成break;endrows = (0:dim-1)';cols = 0:M:(dim-1)*M;rows = rows(:,ones(1,dim));cols = cols(ones(dim,1),:);ind = rows + cols;ind = ind(:);tmp = repmat(Sind', length(ind), 1);ind = ind(:, ones(1,numBlocks));ind = ind + tmp;blockValues= I(ind);blockValues = reshape(blockValues, [dim dim numBlocks]);if(isempty(Sind))%已完成break;end[i,j]=find(S);set(meansImageHandle,'CData',ComputeMeans(I,S));maxValues=max(max(blockValues,[],1),[],2);minValues=min(min(blockValues,[],1),[],2);doSplit=(double(maxValues)-double(minValues))>threshold;dim=dim/2;Sind=Sind(doSplit);Sind=[Sind;Sind+dim;(Sind+M*dim);(Sind+(M+1)*dim)];S(Sind)=dim;end对于第二问于碎纸机既纵切又横切的情形,请设计碎纸片拼接复原模型和算法,并针对附件3、附件4给出的中、英文各一页文件的碎片数据进行拼接复原。
CUMCM2013-碎纸片的拼接复原(全国一等奖)

二.模型假设
1.假设所有附件中给出的碎纸片图像不存在重叠部分;
2
2.假设文件中的碎纸片没有缺失; 3.假设全部碎纸片形状相同且规整。
三.符号说明及有 i 个像素点 每张碎片横向有 j 个像素点
i
j
lij
d ij
Xk
i , j 处图象的灰度值
两碎纸片边缘灰度的偏差距离 任意纸片的右特征向量 任意纸片的左特征向量 中文碎片中心位置的高度
4.3 基于模式相似性测度的偏差距离模型 模式识别中最基本的研究问题是样品与样品之间或类与类之间相似性测度 3 的问 题, 我们采用近邻准则判断两张碎纸片图像边缘灰度信息的相似性, 将任意纸片 k k n 的右特征向量 X k 作为模板,用其他每一张纸片的左特征向量 Yt 模板做比较,观察与哪 个与模板最相似,就是模板的近邻,即 t 纸片排在 k 纸片的右边。 计算模式相似性测度的距离算法有欧式距离、马氏距离、夹角余弦距离等,针对中 英文文本,我们分别测试了不同的距离算法:
次优解 次优解
最优解
最优解
绝对距离在中文识别中的效果评价图
欧式距离在中文识别中的效果评价图
图 1 纸片特征匹配中最优解区分度对比 (横坐标为进行匹配的纸片序号,纵坐标为匹配距离)
当我们对中文碎纸片进行匹配时, 采用绝对距离及欧氏距离作为距离函数都具有较 好的区分度。从图像上可以看出,采用欧式距离,使得每张纸片的期望拼接对象,与潜 在会引起匹配错误的次优匹配对象具有更大的区分度,所以,一般情况下,采用欧式距 离作为距离函数会使得匹配效果更好,有趣的是,在作英文内容的纸片匹配时,情况相 反。 因此, 在之后的算法中, 我们将更灵活的使用这两种距离函数, 而不会固定为一种。 最终得到的附录一及附录二的图片排序表格如下所示:
2013国赛 碎纸片的拼接复原数学建模B解题思路分析

2, 图片为文字,所以可以确认文字的形状,但大多为残字,故 可以补全剩余部分。 #根据残字,进行文字预算,找到字体可能是的字,补全字体,找图 片能补全的部分。 3, 图片文字都为从左到右书写,有固定的行。 #文字又从左到右书写,故可以对字的上下画线,从而将文字的拼接, 改为图形线性的匹配。 4,图片可能正反双面,也就是说可以双向确定但是,由于不知道什 么是正面,什么是反面,所以无法确定,故可以将其当做一副。 #广范围查询。 ¥还可以计算他的下一个或上一个字的位置。
பைடு நூலகம்
故可以对字的上下画线从而将文字的拼接4图片可能正反双面也就是说可以双向确定但是由于不知道什么是正面什么是反面所以无法确定故可以将其当做一副
残纸碎片平拼接
图片信息:
1, 图片边缘完整,语言不是普通话,故无法用语法辨别。 2, 图片为文字,所以可以确认文字的形状,但大多为残 字,故可以补全剩余部分。 3, 图片文字都为从左到右书写,有固定的行。 4,图片可能正反双面,也就是说可以双向确定但是,由 于不知道什么是正面,什么是反面,所以无法确定,故可 以将其当做一副。
(完整word版)2013年数学建模b题

精心整理碎纸片的拼接复原【摘要】:碎纸片拼接技术是数字图像处理领域的一个重要研究方向,把计算机视觉和程序识别应用于碎纸片的复原,在考古、司法、古生物学等方面具有广泛的应用,具有重要的现实意义。
本文主要结合各种实际应用背景,针对碎纸机绞碎的碎纸片,基于计算机辅助对碎纸片进行自动拼接复原研究。
针对问题1,依据图像预处理理论,通过matlab程序处理图像,将图像转化成适合于计算机处理的数字图像,进行灰度分析,提取灰度矩阵。
对于仅纵切的碎纸片,根据矩阵的行提取理论,将。
建中的任一列与矩阵值,序列号。
将程序进行循环操作,得到最终的碎片自动拼接结果。
、;分别作为新生成的矩阵、。
,将矩阵中的任一列分别与矩阵中每一列代入模型,所得p值对应的值即为横排序;将矩阵中的任一行分别于矩阵中的任一行代入模型,所得q值对应的值即为列排序。
循环进行此程序,得计算机的最终运行结果。
所得结果有少许误差,需人工调制,更正排列顺序,得最终拼接结果。
针对问题3,基于碎纸片的文字行列特征,采用遗传算法,将所有的可能性拼接进行比较,进行择优性选择。
反面的排序结果用于对正面排序的检验,发现结果有误差,此时,进行人工干预,调换碎纸片的排序。
【关键词】:灰度矩阵欧式距离图像匹配自动拼接人工干预一、问题重述破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。
传统上,大量的纸质物证复原工作都是以人工的方式完成的,准确率较高,但效率很低。
特别是当碎片数量巨大,人工拼接不但耗费大量的人力、物力,而且还可能对物证造成一定的损坏。
随着计算机技术的发展,人们试图把计算机视觉和模式识别应用于碎纸片复原,开展对碎纸片自动拼接技术的研究,以提高拼接复原效率。
试讨论一下问题,并根据题目要求建立相应的模型和算法:、附件4(1)(2)(3)(4)纸片的自动拼接。
问题1:根据图像预处理理论,通过程序语言将图像导入matlab程序,对图像进行预处理,将碎纸片转换成适合于计算机处理的数字图像形式,并对数字图像进行灰度分析,提取灰度矩阵。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
承诺书我们仔细阅读了《全国大学生数学建模竞赛章程》和《全国大学生数学建模竞赛参赛规则》(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。
如有违反竞赛章程和参赛规则的行为,我们将受到严肃处理。
我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。
我们参赛选择的题号是(从A/B/C/D中选择一项填写): B我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):参赛队员 (打印并签名) :1.2.3.指导教师或指导教师组负责人 (打印并签名):(论文纸质版与电子版中的以上信息必须一致,只是电子版中无需签名。
以上内容请仔细核对,提交后将不再允许做任何修改。
如填写错误,论文可能被取消评奖资格。
)日期: 2013 年 9 月 10 日赛区评阅编号(由赛区组委会评阅前进行编号):编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):全国评阅编号(由全国组委会评阅前进行编号):碎纸片的拼接复原模型摘要:本文针对碎纸片的拼接复原问题,提出了互相关匹配模型。
首先对附件图片数值化处理并建立矩阵;然后根据图像页边距特点定位最左边和最右边的碎片;按照每张碎片中的文字部分所在位置,提取同一行碎片,利用互相关函数横向拼合。
在第一问中,附件一、二仅作横向相关性比较即可;在第二、三问中,需要提取同一行碎片横向拼接,并将横向拼合完整的碎片进行竖向拼合,经过人工干预得到结果。
最终结果见附录。
关键词:拼接复原;互相关;矩阵;数值化;人工干预一、问题重述在司法物证复原、历史文献修复以及军事情报获取等领域的破碎文件的拼接上,传统的拼接复原工作需由人工完成,准确率较高,但效率很低。
尤其是当碎片数量巨大时,人工拼接很难在短时间内完成任务。
随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。
我们需要用算法分别设计出附件1至附件5的拼接方法及拼接结果。
二、模型假设1. 忽略实际拼接中边缘的整齐性;2. 不需要考虑实际拼接中破碎文件大小是否一致;3. 忽略碎片边缘的损耗,认为拼接后是完整的图片;4. 在模型的建立过程中重视算法与建模思想,淡化程序的编写;5.文字的行间距一定。
三、符号说明jk ρ 互相关系数(11jk ρ-≤≤)()j f t 相关像素数组1()k f t 相关像素数组2 i P 图像像素值矩阵i Q 处理后图像像素值矩阵 ,mn mn a b 矩阵元素四、问题的分析1. 已知条件的分析第一,对碎片尺寸和数量的分析。
附件1和附件2的图片尺寸均为721980⨯,碎片数量均为19;附件3、附件4和附件5的图片尺寸均为72180⨯,碎片数量均为1119⨯。
由于纵列有11个,像素值180,总值111801980⨯=,因此,所有拼接后的图像尺寸一致,均为⨯。
第二,对碎片边界的分析。
对于附件1、2,所有碎片上行和下行像素值为白。
其中,一张碎片位于最左端,最左列像素值均为白;一张碎片位于最右端,最右列像素值均为白。
对于附件3、4、5,拼接后图像四边像素值为白,碎片也存在边像素值全为白的情况,因此需要分类讨论。
切割线为长度完全相等的直线,因此切割线两边应有很大的相似度,灰度值相似。
第三,对碎片正反性的分析。
附件5存在正反面情况,同一块用a 、b ,但根据题意分析,我们无法确定碎片的正反,即a 可能是正面,也可能是反面。
因此拼合时,应当注意统一序号在同一平面出现的单一性,例如,000a 在设定正面出现以后,000b 一定在反面。
第四,对碎片像素白色行的分析对于中文,同一行的所有碎片文字是横向对齐的,因此白色开始的位置是一样的。
因此可以提取出同一行的碎片。
2. 拼接方法的分析由于碎片是长方形,有四条边,因此边的拼接有优先顺序。
由于长边特征较为明显,采样点多,因此优先横向拼接,然后纵向拼接。
当电脑拼接无法完成时,采取人工干预。
五、模型的分析与求解1. 方法的确立根据对问题的分析,我们得知此问题需要计算离散序列之间的相关性,因此我们需要使用互相关系数计算和矩阵的计算。
2. 模型的建立 1. 1图像数字化由于电脑中图像的大小是由像素数量表示,而每个像素点均由一个数值表示,因此利用matlab 读取灰度图像的像素值,第n 副图用矩阵表示为:在第一问中,n=72,m=1980;在第二问、第三问中,n=72,m=180。
1. 2数据预处理由于互相关函数需要比较正负范围相等的数组,因此我们将n P 的每个数值减去max 2a,使mn a 在[-max 2a ,max 2a]范围内,即1. 3相关性的计算由于碎片大小完全一致,切割线完全竖直且交界处长度完全相等,并且切割线无损,图像可以完全拼接,因此相邻两个图形交接处相似。
由于图像已经数字化处理,因此可以由边界相应像素数值的相关性来确定两张图是否相邻。
对于相关性的计算,我们使用互相关函数。
互相关函数公式为:公式中,分子表示的是两组离散数值的相似程度,分母则起到归一化作用,相邻两边的数组分别为序列)()(t f t f k j 、。
当1jk ρ→时,两组数相似程度最大,即两张图片最有可能相邻; 当1jk ρ→-时,两组数相似程度最小,即两张图片不相邻。
根据这个公式,即可算出两个图边缘的相关度。
1. 4图像的拼接 1. 4. 1 第一问附件一:首先,根据图像页边距白边特点定位最左边为白色的碎片,i P 的第一列列向量为11211255255(0255)255m a a a a -⎛⎫ ⎪- ⎪≤≤ ⎪ ⎪-⎝⎭…,将i=1,2,……19分别带入计算,仅当i=15时,112112552550255m a a a -⎛⎫⎪- ⎪= ⎪ ⎪-⎝⎭…,因此,最左边碎片为014。
然后,令72()j j f t b =1()k j f t b =,将014矩阵数据带入()j f t 中分别计算jk i ρ,当取得取max ρ时,i-1即为相邻碎片。
同理,即可拼接整幅图。
结果见附录。
同理可得附件二结果。
Matlab 附件一拼接图1. 4. 2 第二问首先,确定最左边碎片。
因为碎片存在非左边仍有白边的情况,例如附件4的图,如下图所示。
(由于底色是白色与文档背景相同,进行了对比度降低处理。
)附件因此,需要提取多组行向量,根据是否均为0确定最左碎片,同理可确定最右碎片。
左碎片满足条件如下:式中,r的大小由实际图像左边缘白边像素数量决定。
在附件3中,r取15时,满足条件的碎片数量为11。
利用同一行碎片文字垂直位置相同的特点,根据最左边碎片的文字的垂直位置特点,确定图像所在行。
同第二问,分别计算同一行序列的互相关系数,取最大值拼合。
然而,这样只能拼接出11个横行碎片,用互相关函数拼接部分碎片后,最后用人工干预完成白边部分的拼合。
结果如附件所示。
1. 4. 3 第三问由于是两面混合,首先忽视两面性,认为所有碎片是在同一平面上,进行整体拼接,则图像应该为2219个碎片,在进行最左边和最右边计算时会出现22个碎片。
然后根据第二问方法,进行横向碎片的拼接,纵向碎片的拼接。
最后进行人工干预。
由于图像是由两面组成的,因此两张图片的对称点(第n列和第20-n列对称)数字相同字母不同,例如199b 在一个面的第4行、第19列,那么199a就在另一面的第4行、第1列。
因此正反两面的对应行所在位置一致,可以人工将图拼合完整。
效果如如下,结果见附件。
Matlab 附件五拼接图六、模型评价模型优点:1、模型具有坚实可靠的数学基础,经过实践数据分析证明,互相关函数在本题中应用的可行性,简化了对模型问题的分析;2、模型能较好的优化人工干预次数。
模型缺点:1、附件3、4、5在拼接时没有完全脱离人工干预;2、在实际推算中,模型会产生较大的运算量;3、模型在现实生活中的应用有待优化,因为现实中很少有完全规则的文字碎片。
参考文献:[1]屈婉玲等编,离散数学,北京:高等教育出版社 ,2008[2]同济大学数学系编,工程数学——线性代数同济第五版,北京:高等教育出版社,2007[3](美)奥本海姆等着刘树棠译,信号与系统(第二版),北京:电子工业出版社 2013[4]张志涌等编着,精通MATLAB R2011a,北京:北京航空航天大学出版社 ,2011[5](美)穆尔着,高会生,刘童娜,李聪聪译,MATLAB实用教程(第二版),北京:电子工业出版社 ,2010[6](美)莫勒(Moler,)着喻文健译,MATLAB数值计算,北京:机械工业出版社,2006[7](美)冈萨雷斯()等着阮秋琦等译,数字图像处理(MATLAB版),北京:电子工业出版社 ,2005[8](美)冈萨雷斯等着阮秋琦译,数字图像处理的MATLAB实现(第2版),北京:清华大学出版社 ,2013[9](美)罗森着袁崇义等译,离散数学及其应用,北京:机械工业出版社 ,2011附录附录一模型结果附件4结果:附录三效果图附录四效果图附录五效果图1 附录五效果图2附录二部分源程序(由于源程序篇幅过长,打印不便,因此只附上部分程序)使用软件:MatlabI000=imread('')I001=imread('')I002=imread('')I003=imread('')I004=imread('')I005=imread('')I006=imread('')I007=imread('')I008=imread('')I009=imread('')I010=imread('')I011=imread('')I012=imread('')I013=imread('')I014=imread('')I015=imread('')I016=imread('')I017=imread('')I018=imread('')P=[I000,I001,I002,I003,I004,I005,I006,I007,I008,I009,I010,I011,I012,I013,I0 14,I015,I016,I017,I018]% 最左计算函数function F=borderright(x)for j=1:1:19y(j)=0for i=1:1:1980if(x(i,72*(j-1)+1)==255)y(j)=y(j)+0elsey(j)=y(j)+1endendif(y(j)==0)F=jendendendfunction d=split(x,y,m)maxx=[0,0]for j=1:1:19z(j)=0if((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:1980if((x(i,72*y)<255)&&(x(i,72*(j-1)+1))<255)z(j)=z(j)+1elsez(j)=z(j)+0endendelsez(j)=0endif(z(j)>maxx(1))maxx=[z(j),j]endendd=maxx(2)endfunction two(x,a,b)for i=1:1:afor j=1:1:bif(x(i,j)<255)x(i,j)=0endendendf3=0f4=0f5=0f3=double(f3)f4=double(f4)f5=double(f5)p=0bai=0HENG=[19,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;20,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;70,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;81,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;86,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1; 132,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1; 145,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1; 159,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1; 171,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1; 191,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1; 201,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;] for k=1:1:11a=HENG(k,1)for i=2:1:19for b=1:1:208f3=0f4=0f5=0for c=1:1:180f1=Q(c+a*180,72)f2=Q(c+b*180,1)f3=f3+Q(c+a*180,72)*Q(c+b*180,1)f4=f4+f1*f1f5=f5+f2*f2endr(b)=f3/sqrt(f4*f5)if r(b)>pp=r(b)h=bendr(b)=0endp=0HENG(k,i)=ha=hfor c=1:1:180bai=bai+Q(c+a*180,72)endif ((bai==22950)&&(i==19))msgbox('àTà2')endif ((bai==22950)&&(i<19))msgbox('1t1t£?è?1¤?é?¤°é')breakendbai=0endendf3=0f4=0f5=0f3=double(f3)f4=double(f4)f5=double(f5)p=0bai=0% 初始化数组% HENG=[49,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,141; % 61,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,36;% 168,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,18; % 38,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,74;% 71,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,60;% 14,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,176; % 94,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,43;% 125,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,145; % 29,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,59;% 7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,196;% 89,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,123;] for k=1:1:11a=HENG(k,19)for i=18:-1:1for b=1:1:208f3=0f4=0f5=0r(b)=0if b~=105for c=1:1:180f1=Q(c+a*180,1)f2=Q(c+b*180,72)f3=f3+Q(c+a*180,1)*Q(c+b*180,72)f4=f4+f1*f1f5=f5+f2*f2endr(b)=f3/sqrt(f4*f5)if r(b)>pp=r(b)h=bendendendp=0HENG(k,i)=ha=hfor c=1:1:180bai=bai+Q(c+a*180,1)endif (bai>22000)&&(i>1)msgbox('1t1t£?è?1¤?é?¤°é') breakendbai=0endend。