碎纸片拼接复原matlab程序

合集下载

基于Matlab GUI碎纸机破碎文档的恢复

基于Matlab GUI碎纸机破碎文档的恢复

基于Matlab GUI碎纸机破碎文档的恢复文章详细阐述了基于Matlab GUI对单面印刷文档经碎纸机破碎的碎片(既纵切又横切)的恢复,结合计算机对碎片的匹配搜索和人工干预,提高文档恢复的效率,达到文档的恢复。

标签:Matlab GUI;聚类分析;人工干预1 概述破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。

传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。

特别是,当碎纸片数量巨大,人工拼接很难在短时间内完成任务[1-3]。

随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。

文章基于Matlab GUI对破碎文档(既纵切又横切)的复原实现人机互动,并给出了提高文档复原效率的方法。

2 图像采样图象采样就是按照图像空间的坐标测量该坐标测量该位置上像素的灰度值。

方法如下:对连续的f(x,y)进行等间隔采样,在(x,y)平面上,将图像均分成均匀的小网格,每个小网格的位置可以用整数坐标表示,于是采样值就对应于一个M×N数字矩阵。

这样就获得了数字图像中关于像素的两个属性:位置和灰度。

位置由采样点的两个坐标确定,也就对应了网格行和列;而灰度表明了该像素的明暗程度。

Matlab读入图象的函数为imread(filename,format)。

而文章讨论的碎片图像格式为bmp的8位灰度图像,每一像素的取值范围为0~255。

3 碎片的分类3.1 碎片特征提取准确地确定碎片的特征对碎片的分类起着重要作用,原始的碎片图像中可利用的像素点较多,而碎片图像中能有效反应碎片的特征的像素需要恰到好处地提取。

文字的笔画有粗细之分,由此,不考虑笔画的粗细,文字的轮廓更能体现碎片的特征。

运用边缘检测的方法,实现对文字轮廓的确定。

(a)(b)图1 边缘化处理前后对比图将每行边缘轮廓像素通过累加法,得到一个180维的向量。

边缘轮廓像素在180维的向量的每一分量的值呈现一定的规律,图2为图1(a)的累加向量。

碎纸片拼接复原的数学方法

碎纸片拼接复原的数学方法

碎纸片拼接复原的数学方法拼图游戏,一种看似简单却富含深度的游戏,给人们带来了无穷的乐趣。

然而,大家是否想过,这样的游戏其实与数学有着密切的?让我们一起探索碎纸片拼接复原背后的数学方法。

碎纸片拼接复原,其实就是一个计算几何问题。

在数学领域,欧几里得几何和非欧几里得几何是两个基本而又重要的分支。

欧几里得几何主要研究的是在平面上两点之间的最短距离,这是我们日常生活中常见的几何学。

而非欧几里得几何则研究的是曲面上的几何学,这种几何学并不符合我们日常生活中的直觉。

碎纸片拼接复原的问题就是一种非欧几里得几何问题。

在计算机科学中,图论是研究图形和网络的基本理论。

其中,图形遍历算法可以用来解决碎纸片拼接复原问题。

这种算法的基本思想是:从一点出发,尽可能多地遍历整个图形,并在遍历的过程中对图形进行重建。

对于碎纸片拼接复原问题,我们可以将每一张碎纸片看作是图中的一个节点,当两张碎纸片拼接在一起时,它们就形成了一个边。

通过这种方式,我们可以将所有的碎纸片连接起来,形成一个完整的图形。

在计算机科学中,碎纸片拼接复原问题被广泛应用于图像处理、数据恢复等领域。

例如,在数字图像处理中,如果一张图片被切割成若干块,我们可以通过类似的方法来恢复原始的图片。

在数据恢复领域,当一个文件被删除或格式化时,我们也可以通过类似的方法来恢复文件。

碎纸片拼接复原的问题不仅是一个有趣的拼图游戏,更是一个涉及计算几何、图论等多个领域的数学问题。

通过运用这些数学方法,我们可以有效地解决这个问题,从而更好地理解和应用这些数学理论。

在我们的日常生活中,我们经常会遇到一些破碎的物品,例如碎镜子、破碎的瓷器,或是碎纸片等。

这些物品的复原过程都需要一种科学的方法来帮助他们重新拼接起来。

这种科学方法就是碎纸片拼接复原技术。

碎纸片拼接复原技术是一种基于数学模型的方法,它通过比较碎纸片边缘的形状、纹理、颜色等特征,来找到碎纸片之间的相似性和关联性,从而将它们拼接起来。

碎纸片拼接

碎纸片拼接

碎纸片拼接与复原摘要本文讲述的是碎纸片拼接复原的问题。

碎纸片拼接复原在情报和考古方面用的较多,有很大的使用价值。

在实际操作中,人工拼接的准确度极高,但随着碎片数量增大,拼接难度将大大提高,这时必须借助计算机来处理,最后辅以人工干预来完成。

针对本文提出的问题,我们的模型不区分文字语言,把图像的灰度值作为建立模型的关键切入点。

使用matlab里的imread函数读入BMP图像,并取得其灰度值矩阵,矩阵中每一元素为图像每一像素的灰度值,通过对其边缘的灰度值进行匹配,求出其拼接顺序。

本文中匹配这一步骤采取求图片两边的一列像素灰度值进行求差绝对值,并将求其均值最小作为匹配原理,匹配度必须小于0.1。

第一问中只涉及到单面碎纸片,而且仅把单张纸进行纵向切碎成规则长条状,所以只需对其左右端像素的灰度值进行采集,然后进行匹配,将匹配度最高的两边连起来。

不过有两条纸的左边和右边全为白色,则将其单独列出来,作为复原后纸张的左右端,最后进行人工校正。

第二问中的纸片数量增多,且涉及到横纵同时切碎的纸片,所以不能直接沿用第一问的方法。

但通过观察,横切出的每一横条上碎纸片文字具有明显的共同点,可以进行快速匹配。

首先确定出第一行,通过寻找灰度矩阵最上面全为255的行数最多的图像,作为拼出第一行的碎片。

再用与刚才相似的方法,不过须取列为255最多的图片作整个复原图第一列。

最后从第二行第二个开始,从左至右从上到下依次匹配上碎片,最后结果需进行人工校正。

第三问由于涉及到双面纸的问题,可以继续沿用第二问的方法,不过拼接标准需要改为两面灰度值匹配度之和,将纸片拼接好后,最后再人工检查其是否拼接完全正确。

此模型还可用于彩色图像的拼接,用RGB颜色系统,同样是导出每一像素的RGB 值,构成矩阵,用与文中相似的办法进行破碎彩色图像的拼接。

关键词:拼接复原图像处理灰度值矩阵匹配1 问题重述B题碎纸片的拼接复原破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。

2013 数模国赛 B题 碎纸片的拼接复原

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给出的中、英文各一页文件的碎片数据进行拼接复原。

碎纸片的拼接复原算法及MATLAB实现

碎纸片的拼接复原算法及MATLAB实现

承诺书我们仔细阅读了《全国大学生数学建模竞赛章程》和《全国大学生数学建模竞赛参赛规则》(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。

我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。

我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。

我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。

如有违反竞赛章程和参赛规则的行为,我们将受到严肃处理。

我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。

我们参赛选择的题号是(从A/B/C/D中选择一项填写): B我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):楚雄师范学院参赛队员(打印并签名) :1. 陈志明2. 施明杰3. 阮秀婷指导教师或指导教师组负责人(打印并签名):(论文纸质版与电子版中的以上信息必须一致,只是电子版中无需签名。

以上内容请仔细核对,提交后将不再允许做任何修改。

如填写错误,论文可能被取消评奖资格。

)日期: 3013 年 9 月 16 日赛区评阅编号(由赛区组委会评阅前进行编号):编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):碎纸片的拼接复原算法及MATLAB实现摘要:对于只有纵切的情形,文章通过比较当前待拼碎片与剩余碎片的信噪比psnr[1,3,4]的值来确定两碎片是否为邻接碎片;拼接算法首先连续调用右拼函数直到拼接到原图右边界,然后连续调用左拼函数直到拼接到原图左边界,从而得到整幅复原图像;对于单面纵横交错切的情形,文章对首先采用纵切拼接算法将碎片拼接成多幅横条图片,然后将各横条图片矩阵转置[2],再次采用纵切拼接算法拼接;两种情形的拼接,都存在人为参与;实验证明,我们的算法对纵切情形是有效的,对纵横切情况是可行的。

碎纸片的拼接还原研究

碎纸片的拼接还原研究

碎纸片的拼接复原摘要碎纸片的拼接复原是一门借助计算机,把大量碎纸片重新拼接成初始纸张的技术。

针对问题一,本文首先利用碎纸片图像灰度矩阵的边缘矩阵,建立了两个碎纸片之间的匹配度函数,求得了每一张图片之间左右边缘匹配度矩阵。

然后根据左边边缘位置的碎片的左边空白部分最多的特点,确定了左边位置的碎纸片。

接着根据拼接碎纸片的拼接复原时,所有碎纸片匹配度之和取极大值的原则,采用贪心算法,得到了所有碎纸片的初始位置,拼接复原了附件1和附件2中纸片。

针对问题二,由于附件3碎片数量太多,并且碎片的拼接复原,是一个以碎纸片总匹配度为目标函数的组合优化问题。

所以本文采用遗传算法将碎纸片的编号作为基因,并将基因均匀分成19段,按顺序每一段对应一个初始纸片列位置,进行了求解。

然后,根据边缘碎纸片某些边的空白部分多的特征,对初始基因进行了优化。

接着,根据碎纸片的黑色像素密度不同的特点,将碎纸片分成三类,根据同类纸片优先匹配的原则,对遗传算法的运行过程进行了优化,拼接复原了附件3和附件4中纸片。

针对问题三,随着碎纸片量的增多,计算量急剧增加。

在上述拼接复原碎纸片的基础上,又引进了同行位置碎纸片的上部(或下部)空白位置宽度相近的聚类思想。

先对每个类内部拼接,在合并所有类并做一次整体拼接。

由于时间有限,我们未能完成最后一次的整体的拼接,但我们会在比赛后继续探究。

关键词:边缘矩阵匹配度函数遗传算法聚类一、问题重述碎片拼接实际用途已经越来越广泛,传统上拼接复原工作由人工完成,碎片拼接的准确率较高,但效率很低。

并且当碎片数量很大时,人工短时间内拼接出来几乎是不可能的。

所以开发碎纸的拼接技术,以提高拼接复原效率已成为越来越多人的期望。

现在,在碎纸片是规则的情况下,题目要求我们在以下条件建立碎纸片拼接复原模型和算法。

1.来自同一页印刷文字文件(中文、英文各一页)的碎纸机破碎纸片(仅纵切)拼接复原,并将附件1和附件2复原。

2.对碎纸机既纵切又横切文件的情形,将碎纸片拼接完整。

纸片纵切拼接原理及其编程

纸片纵切拼接原理及其编程

1. 对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,并针对附件1、附件2给出的中、英文各一页文件的碎片数据进行拼接复原。

如果复原过程需要人工干预,请写出干预方式及干预的时间节点。

复原结果以图片形式及表格形式表达(见【结果表达格式说明】)。

用MATLAB 中的imread ()函数,把图片进行量化处理,得到对应能够反映出图像特性的矩阵。

每张图片是以72⨯1980的矩阵存在于matlab 软件中 量化即要求使用多大范围的数值来表示图像采样之后的每一个点。

量化的结果是图像能够容纳的颜色总数,它反映了采样的质量。

本文采用8位储存一个点,即相当于黑-白间可用0-255个状态进行描述,其中量化后的值越接近0,则表示该点的实际颜色越接近黑色;相反量化后的值越接近255,则表示该点的实际颜色越接近白色。

将19张碎纸片经matlab 数字化后得到19个72⨯1980的矩阵。

根据附件中碎纸片的编号顺序将19个矩阵合并为一个大小为)(19⨯721368⨯1980的矩阵,矩阵中的值,越接近0,则表示该值所对应点的实际颜色越接近黑色;相反该值越接近255,则表示该点的实际颜色越接近白色。

该矩阵如下A 所示:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡212221212111=),(),(),(),(),(),(),(),(),(N M f M f M f N f f f N f f f A矩阵A 中各元素值即灰度满足条件为: ),(,),(N j M i j i f ≤≤1≤≤11≤≤0 (6.1.1)其中1980=M ,1368=N 。

假设第i 张纸片的第j 行第k 列数据为),(k j f i ,其中:⎩⎨⎧19≤≤172≤≤71-721980≤≤1)(i i k i j (6.1.2) 当71-72=i k 与i k 72=分别对应于第i 张纸片数字化后所对应矩阵的第一列与最后一列。

令)(,j w s i 为第i 张纸片的最后一列与第s 张纸片第一列第j 行数据的平方欧氏距离,该值为:271-72-72=)],(),([)(,s j f i j f j w s i s i (6.1.3)第一张碎纸片(未被纵切前最左边那张碎纸片)最左边边缘部分均为白色,经数字化处理后所对应矩阵的第一列数据值相同,在确定第一张后,采用平方欧氏距离。

数字图像处理 纸片拼接复原

数字图像处理 纸片拼接复原
G(1,1)=(tou-1)/2;
for m=1:18
[i,j]=find(T==max(T(:,tou+1)));%返回矩阵中非零元素;
y=(i-1)/2;
G(1,m+1)=y;
tou=y*2+1;
m=m+1;
End
(5)根据得出的顺序,得出图片的排序,并且输出图片
H=G+1;
P=[img{H(1)},img{H(2)},img{H(3)},img{H(4)},img{H(5)},img{H(6)},img{H(7)},img{H(8)},img{H(9)},img{H(10)},img{H(11)},img{H(12)},img{H(13)},img{H(14)},img{H(15)},img{H(16)},img{H(17)}];
imshow(P)
4实验现象
5.实验总结
在本次数字图像处理实验中,进行碎纸片复原处理,取出左右边缘的值,再对每张碎纸片的左右边缘进行对比相似度即可找出相邻图片,从而还原图片。依次想法进行程序设计,刚开始无法完全得出图片,经过多次调整和程序改进后,使得程序更加简洁,同时也得出了理想的实验结果,但在此过程中需要进行人工干预,选定第一张图片,稍显麻烦,需要进一步改进。
p=zeros(1980,38);
t1=0;
for k1=1:2:38
t1=t1+1;
p(:,k1)=im2bw(img{t1}(:,1));
end
t2=0;
for k2=2:2:38
t2=t2+1;
p(:,k2)=im2bw(img{t2}(:,72));
end
(3)构成对比矩阵,计算每两个图像边缘之间相关数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

碎纸片拼接复原是一个有趣的图像处理问题,通常需要使用计算机视觉或图像处理技术。

下面是一个简单的 MATLAB 程序示例,用于演示碎纸片拼接复原的基本思路。

请注意,这只是一个简单的示例,实际应用中可能需要更复杂的算法和技术。

这个简单的 MATLAB 程序包含了三个函数:
1.shredImage: 将原始图像切成碎片。

2.shufflePieces: 随机打乱碎纸片的顺序。

3.reconstructImage: 进行拼接复原。

请注意,这只是一个基本的示例,实际应用中可能需要更复杂的图像处理技术,例如特征匹配、拼接算法等。

相关文档
最新文档