碎纸片拼接复原(国一)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于分治算法碎纸片的拼接复原模型
摘要
本文针对不同切割方式碎纸片的拼接问题,通过对图像数字化处理得到灰度矩阵,建立了复原模型并得到复原后的图像。

针对单面仅纵切碎纸片的拼接问题,根据完整文件最左边部分无文字的特点,运用matlab编程可确定出第一碎纸片。

随后,根据贪婪算法的思想,以确定位置的碎纸片与剩余未拼接碎纸片相邻边缘灰度值的平方欧氏距离最短为目标函数,可逐步求得碎纸片的拼接顺序,进而将其复原.中文碎纸片顺序为:8、14、12、15、3、10、2、16、1、4、5、9、13、18、11、7、17、0、6;英文碎纸片顺序为:3、6、2、7、15、18、11、0、5、1、9、13、10、8、12、14、17、16、4。

本问碎纸片拼接过程没有人工干预,实现了全自动化的拼接。

对于既横切又纵切碎纸片拼接问题,本问采用分治算法的思想,先对中、英文碎纸片分别层次聚类分析,将最可能位于同一行的碎纸片归为同一类,其中中文碎纸片分为11类,英文碎纸片分为10类;再对分类后的碎纸片使用编程加人工干预的半自动拼接方式,得到11块仅横切的碎纸片块;最终对得到的11块仅横切的碎纸片块进行类间拼接,实现文件的复原。

中文碎纸片第一列顺序为:49、61、168、38、71、14、94、125、29、7、89;英文碎纸片第一列顺序为:191、201、86、19、159、20、208、70、132、171、81。

此问中有两次人工干预的过程,第一次位于类拼接处,第二次位于类间拼接处。

中文文件总共干预了33块,英文文件总共干预了40块。

考虑双面碎纸片拼接问题时,本问延续了分治算法的思想。

由于每碎纸片含有正反两面,在聚类分析时,可将正反两面的灰度值相加为一列特征值作为它们是否可能位于同一行的依据,进而将双面碎纸片分为9类。

再对这9类碎纸片使用编程加人工干预的半自动拼接方式,得到22块仅横切的碎纸片块;最终对这22块仅横切的碎纸片块进行类间拼接,实现文件的复原。

复原后文件第1面第一列顺序为:136a、5b、143a、83b、90b、13b、35b、172b、105b、9a、54b;复原后文件第2面碎纸片第一列顺序为:78b、89a、186b、199b、88b、114a、146a、165b、3b、23b、99a。

此问中有两次人工干预的过程,第一次位于类拼接处,第二次位于类间拼接处。

【关键词】:碎纸片复原贪婪算法平方欧氏距离分治算法层次聚类分析
一、问题重述
破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。

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

特别是当碎片数量巨大,人工拼接很难在短时间完成任务。

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

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

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

复原结果以图片形式及表格形式表达,表格为复原后碎片序号。

问题二:对于碎纸机既纵切又横切的情形,请设计碎纸片拼接复原模型和算法,并针对附件3、附件4给出的中、英文各一页文件的碎片数据进行拼接复原。

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

复原结果表达要求同上。

问题三:上述所给碎片数据均为单面打印文件,从现实情形出发,还可能有双面打印文件的碎纸片拼接复原问题需要解决。

附件5给出的是一页英文印刷文字双面打印文件的碎片数据。

请尝试设计相应的碎纸片拼接复原模型与算法,并就附件5的碎片数据给出拼接复原结果,结果表达要求同上。

二、问题分析
本文针对的是形状相似碎纸片的拼接问题,需提出相应的拼接模型与算法并对给定的碎纸片进行复原。

常规文档碎纸片计算机拼接方法一般利用碎片边缘的尖点特征、尖角特征、面积特征等几何特征,搜索与之匹配的相邻碎纸片并进行拼接,根据题意可知,本文所研究的碎纸片形状相似,这种基于边界几何特征的拼接方法并不适用于边缘形状相似的碎纸片。

碎纸片拼接时如果只利用碎片的边界特征,拼接效果并不理想。

本文在实行拼接过程时,不但考虑了待拼接碎纸片边缘是否匹配,还考虑了碎片字迹断线与文字是否匹配【3】。

问题一是解决来自同一页且被纵向切断的碎纸片拼接问题。

该问题本质上属于碎纸片组合优化问题。

如何实现碎纸片的最优组合成为本问以及本文的一个难点。

可考虑碎纸片文字的特点。

由于大多数文字文档的文字行方向和表格线方向平行且单一,如果碎片的文字行或表格在碎片边缘断裂,那么与它相邻的碎纸片在边缘处一定有相同高度、相同间距的文字行或表格,凭此特征可以很容易地从形状相似的多碎片中挑选出相邻碎片。

因文字行或表格线的高度特征、间距特征的识别比字迹断线识别和文字图像的理解实现起来要容易得多,利用碎片文字行特征或表格特征拼接形状相似的碎纸片是可行的。

运用贪婪算法的思想,现考虑以下的拼接过程:
(1)根据碎纸片文字特点找出第一碎纸片,即该页的最左边那一碎片;
(2)根据第一碎纸片,依次找出后面的碎纸片,直到组合完19碎纸片。

问题二是针对同一页但被横、纵向切断的碎纸片拼接问题。

相对于第一问的不同,本问的碎纸片是即横切又纵切的情况,这增加了问题的难度。

如果继续采用问题一中拼接碎纸片的步骤,在实现过程中会发现,要找出位于完整纸片最左边的碎纸片,将会无法实现。

因为我们是根据完整纸片最左边容为空白这一特征对碎纸片进行的筛选。

但由于纸片被横、纵切,很有可能切断位置并未在文字上,而是位于文字间的空隙,这样本来位于复原后中间部分的纸片很有可能变为位于最左边的纸片,将会对碎纸片拼接复原带来错误。

由于纸片被分为209碎纸片,如果对其直接编程复原拼接,碎纸片数量较大,
难以实现。

可引入分治算法的思想,将该问题分解为便于求解的子问题。

考虑到图像在经过数字化后位于同一行的文字灰度值分布相似,可根据这一特点对碎纸片进行聚类分析。

再由聚类分析的结果,实行类拼接,最终人工微调,实现碎纸片的拼接复原。

问题三是针对来自同一页但正反面均印有文字的碎纸片拼接问题,该问题可看成对前面两问的拓展。

因此,在模型的建立和求解过程中,可以借助于前两问的模型。

该问题相对于前两问的难点在于题目只给出了碎纸片的正反面容,并未告知哪些碎纸片属于同一面。

现在碎纸片数量为438碎纸片,想要直接判别哪些碎纸片属于同一面难度较大。

可考虑借助与问题二中将碎纸片聚类的思想,先将碎纸片进行分类,分类后在同一类碎纸片互相拼接,结合人工干预,得到碎纸片拼接复原图并确定出碎纸片正反面。

三、模型假设
1、 同一附件中的碎纸片来自于同一页文件,且未缺失;
2、 假设碎纸片模型为理想模型,碎纸片厚度为零;
3、 碎纸片表面光滑平整无磨损且无污点;
4、 假设破碎纸片边缘完好无缺损。

五、建模前的准备
图形的数字化【2】
本文是根据碎纸片文字行特征来进行判定碎纸片的拼接。

故现在的关键是提取碎纸片的文字信息。

这就不得不提到matlab 对图形的处理方法,即图形的数字化。

图形的数字化是将连续色调的模拟图像经采样量化后转换成数字影像的过程。

一幅图像可以定义为一个二维函数),(y x f ,其中x 和y 是平面坐标,f 在坐标点),(y x 处的振幅称为图像在该点的亮度。

黑白图像的亮度用灰度来表示,而彩色图像是由单个的二维图像组合而成的。

图像的数字化过程如下面的流程图1所示:
图1 图形的数字化流程图
根据上图1图形数字化流程图,对以上步骤进行具体解释:
(1)图形的采样
图形的采样即要求要用多少点来描述一幅图像,采样结果质量的高低用图像的分辨率来衡量。

简单来讲,对二维空间上连续的图像,在水平和垂直方向上等间距地分割成矩形网状结构所形成的微小方格称为像素点。

一幅图像就被采样成有限个像素点构成的集合。

本题中所给碎纸片为bmp 格式,运用matlab 程序读取后,该图像数字化为72⨯1980个像素点。

(2)量化
量化即要求使用多大围的数值来表示图像采样之后的每一个点。

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

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

由破碎图片的数量可知,本题中的复原图像经过采样和量化后的结果是一个实数矩阵。

由采样过程可知,该矩阵大小为1368⨯1980。

matlab 中读入图像的数据类型为unit8,而在矩阵中使用的数据类型为double 。

因此,要把图像经相应程序读入后的矩阵中的值转换成double 精度类型;如果不转换,在对unit8进行加减时会产生溢出。

现一幅图像经过采样、量化与数据转换三个步骤后,该数字图像在matlab 中可以很自然地表示为矩阵,如下面矩阵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
其中1980=M ,1368=N 。

六、模型的建立与求解
6.1 被纵切后碎纸片的拼接复原模型
本问是解决来自同一页且被纵向切断的碎纸片拼接问题。

该问题本质上属于碎纸片组合优化问题。

由于所给碎纸片形状相似,无法使用尖点特征、尖角特征、面积特征等几何特征来实现碎纸片的拼接。

可考虑碎纸片文字的特点。

文字文档的文字行方向和表格线方向平行且单一,如果碎片的文字行或表格在碎片边缘断裂,那么与它相邻的碎纸片在边缘处一定有相同高度、相同间距的文字行或表格,凭此特征可以很容易地从形状相似的多碎片中挑选出相邻碎片。

因文字行或表格线的高度特征、间距特征的识别比字迹断线识别和文字图像的理解实现起来要容易得多,利用碎片文字行特征或表格特征拼接形状相似的碎纸片是可行的。

但考虑到计算机对图像拼接问题的缺陷,可在拼接过程中适当的加人工干预的过程。

6.1.1 被纵切后碎纸片的拼接复原模型的建立
(一) 碎纸片特征分析
由于本问是根据碎纸片相应的文字信息来进行拼接。

碎纸片文字信息包含字体的大小、高度以及亮度等容。

为了将碎纸片文字的信息提取出来,对碎纸片进行数字化处理。

该过程并不复杂,只需运用matlab 相应的程序即可。

在将图片输入到matlab 中时,图片是以72⨯1980的矩阵存在于matlab 软件中。

每一点值的大小是由该点颜色所决定。

经过数据的量化与转换后,该值大小为0-1。

其中该值越接近0,则表示该值所对应点的实际颜色越接近黑色;相反该值越接近1,则表示该点的实际颜色越接近白色。

(二) 贪婪算法思想
本问采用贪婪算法的部分思想,实现19仅纵切碎纸片的拼接复原。

贪婪算法是一种对某些求最优解问题的更简单、更迅速的设计技术。

用贪婪法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,通过每一步贪心选择,可得到问题的一个最优解。

本问根据碎纸片文字特点找出第一碎纸片,即该页的最左边那一碎片。

在找到第一碎纸片后,运用贪婪算法的思想,在剩余18碎纸片求最优解,寻找与第一碎纸片匹配的碎纸片;依此类推,逐步寻找第i 碎纸片的匹配纸片,直到19碎纸片均被匹配。

(三)平方欧氏距离定义
将19碎纸片经matlab 数字化后得到19个72⨯1980的矩阵。

根据附件中碎纸片的编号顺序将19个矩阵合并为一个大小为)(19⨯721368⨯1980的矩阵,矩阵中的值,即像素,取值为0-1。

其中该值越接近0,则表示该值所对应点的实际颜色越接近黑色;相反该值越接近1,则表示该点的实际颜色越接近白色。

该矩阵如下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)
(四)碎纸片拼接模型
为了寻找已经确定好位置的第i 碎纸片最相匹配的碎纸片,根据图2碎纸片拼接流程图可知,即要求确定好位置的第i 碎纸片最后一列与其拼接碎纸片的第一列平方欧氏距离总和最小,数学表达式如下:
⎪⎩
⎪⎨⎧1≤≤0∈19≤≤1∑1980
1=),(.)
(min ,k j f R
s i t s j w i j s i (6.1.4) 根据前面的分析过程,本问借助了贪婪算法的思想。

现根据目标函数作最优选择,每做一次贪心选择就将未实现拼接的碎纸片集合。

R 为未匹配碎纸片的集合。

集合R 中碎纸片数量n 为:i n -19=。

(五) 拼接流程
现提取碎纸片所对应的矩阵的第一列与最后一列数据。

由于本问讨论的是纸片仅被纵切的情况,分析可发现第一碎纸片(未被纵切前最左边那碎纸片)最左边边缘部分均为白色,经数字化处理后所对应矩阵的第一列数据值相同,为1。

可根据该特点确定该碎纸片。

在确定完第一碎纸片后,计算第一碎纸片的最后一列数据与其他18碎纸片所对应矩阵的第一列数据的距离总和,该距离采用平方欧氏距离。

当该距离总和最小时,该碎纸片即与第一匹配。

因为未被纵切时,图形在水平与垂直方向上的灰度(即亮度)是连续变化的。

若两碎纸片可实现拼接时,第一碎纸片最后一列数据与其匹配那碎纸片第一列数据对应连续变化,即两组数据对应的平方欧氏距离总和最小。

在确定了第二碎纸片后,可根据上述方法依次找出后面的17碎纸片拼接次序。

碎纸片拼接流程图如下图2所示:
图2 碎纸片拼接流程图
6.1.2 被纵切后碎纸片的拼接复原模型的求解
现根据matlab编程求解,可得到复原后的图片以及相应的表格。

中文与英文复原后图片见附录1与附录2。

将中文碎纸片序号按复原后顺序填入下表1,英文填入下表2。

复原后碎纸片序号(中文)
008 014 012 015 003 010 002 016 001 004 005 009 013 018 011 007 017 000 006
复原后碎纸片序号(英文)
00 3
00
6
00
2
00
7
01
5
01
8
01
1
00
00
5
00
1
00
9
01
3
01
00
8
01
2
01
4
01
7
01
6
00
4 根据模型建立过程中第一碎纸片的确立方法,即编程寻找19碎纸片数字化所对应
矩阵的第一列数据为1的碎纸片。

由上面两表可看出中文第一碎纸片为008,最后一碎纸片为006;英文第一碎纸片为003,最后一碎纸片为004。

6.1.3 结果分析
本问使用matlab编程,将碎纸片数字化处理,得到灰度值矩阵。

提取该矩阵中相应信息,即文字行或表格线的高度、间距等特征,运用计算机实现智能拼接。

分析上述过程可发现,本问并未有人工干预,实现了理想的自动化碎纸片拼接过程。

6.2 被横、纵切后碎纸片的拼接复原模型
6.2.1 被横、纵切后碎纸片的拼接复原模型的建立
相对于第一问的不同,本问的碎纸片是即横切又纵切的情况,这增加了问题的难度。

如果继续采用问题一中拼接碎纸片的步骤,将很难实现。

因为我们是根据完整纸片最左边容为空白这一特征对碎纸片进行的筛选。

但由于纸片被横、纵切,很有可能切断位置
并未在文字上,而是位于文字间的空隙,这样本来位于复原后中间部分的纸片很有可能变为位于最左边的纸片,将会对碎纸片拼接复原带来错误。

由于纸片被分为209碎纸片,如果对其直接编程复原拼接,碎纸片数量较大,难以实现。

在求解该问题时,由于该问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。

对于这类问题,可先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。

如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。

这就是分治策略的基本思想。

分治算法一般解题步骤为:
(1)分解,将要解决的问题划分成若干规模较小的同类问题;
(2)求解,当子问题划分得足够小时,用较简单的方法解决;
(3)合并,按原问题的要求,将子问题的解合并构成原问题的解。

现引入分治算法思想,根据其解题步骤,划分以下三步来实现碎纸片的拼接复原:
(1)分解:将碎纸片数字化后矩阵的灰度值作为评判指标,运用层次聚类法对209碎纸片进行聚类;
(2)求解:由聚类所得结果,运用贪婪算法对同类碎纸片进行拼接;再由拼接结果,人工干预得到11仅被横切的碎纸片;
(3)合并:对11仅被横切的碎纸片运用模型一中的方法实现整纸片的拼接复原。

Ⅰ 碎纸片的层次聚类【4】
一幅黑白照片,它在水平与垂直方向上的亮度变化是连续的,在经过数字化后,即表现为它所对应矩阵的灰度值取值是连续的。

进而可以了解到,若两碎纸片位于复原文件中同几行时,那么其对应矩阵灰度值在纵向上分布近似,可根据这一特点对碎纸片进行聚类分析。

层次聚类分析是根据观察值或变量之间的亲疏程度,将最相似的对象结合在一起,以逐次聚合的方式,它将观察值分类,直到最后所有样本都聚成一类。

本问需对209碎纸片进行分类,属于对样本(个案),即Q 型聚类。

Q 型聚类使具有共同特点的样本聚齐在一起,以便对不同类的样本进行分析。

将209碎纸片经matlab 数字化后得到209个72⨯180的矩阵,将矩阵进行行相加运算,得到209个1⨯180的列向量,对应于分别评判209碎纸片的180个指标。

现采用平方欧氏距离测度样本间距离,可将209个碎纸片样本看为n 维空间中的点,
维数n 代表描述样本的指标数()180=n ,第i 碎纸片()T i a a a x 221= 与第j 碎纸片
()T
n j b b b x 21=间距离为),(j i x x d ,n 维平方欧氏距离公式),(j i x x d 为: ∑1=2-=n
i i i j i b a x x d )(),( (6.2.1)
选用 Ward 法计算类间的距离。

设第i 类碎纸片离差平方和为i D ;第j 类碎纸片离差平方和为j D ;i G 表示第i 类碎纸片的集合;j G 表示第j 类碎纸片的集合。

()()
()()()()⎪⎪⎪

⎪⎪⎪⎨⎧--=--=--=∑∑∑⋃∈∈∈x x x x D x x x x D x x x x D k T G G x k ij
j j T G x j j j i i T G x i i i j i k j j i i (6.2.2)
其中,
⎪⎪⎪⎪

⎪⎪⎪⎪⎨⎧+1=1=1=∑∑∑⋃∈∈∈j I k j j I i G G x k j i G x j j j G x i i i x n n x x n x x n x (6.2.3) i n 表示第i 类碎纸片的数量,j n 表示第j 类碎纸片的数量。

现定义:
j i ij j i D D D G G D --=),( (6.2.4)
事实上,若i G ,j G 部碎纸片间距离很小,则它们能很好地各自聚为一类,并且这两类又能够充分分离(即ij D 很大),这时必然有j i ij j i D D D G G D --=),(很大。

因此,按定义可以认为,两类i G ,j G 之间的距离很大。

Ⅱ 碎纸片类拼接
(一)类拼接模型的建立
在经过Ⅰ碎纸片的聚类后,假设将碎纸片分为了m 类,第i 类所含碎纸片数量为i n ,i 的取值为m ~1。

现需对这m 类碎纸片进行类拼接。

拼接规则借助模型一中碎纸片拼接模型目标函数。

将209碎纸片经matlab 数字化后得到209个72⨯180的矩阵。

矩阵中的值,即像素,取值为0-1。

其中该值越接近0,则表示该值所对应点的实际颜色越接近黑色;相反该值越接近1,则表示该点的实际颜色越接近白色。

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

假设第i 纸片的第j 行第k 列数据为),(k j f i 。

令)(,j w s i 为第i 纸片的最后一列与第s 纸片第一列第j 行数据的平方欧氏距离,该值为:
21-72=)],(),([)(,j f j f j w s i s i (6.2.5)
为了寻找与第i 碎纸片相匹配的碎纸片,那么第i 碎纸片最后一列与其拼接碎纸片的第一列平方欧氏距离总和最小,数学表达式如下:





1





1
∑180
1=
)
,
(
.
)
(
min
,
k
j
f
R
s
n
i
t s
j
w
i
i
j
s i
(6.2.6)
由贪婪算法的思想,现根据目标函数作最优选择,每做一次贪心选择就将未实现拼接的碎纸片集合。

R为未匹配碎纸片的集合。

集合R中碎纸片数量n为:i
n
n
i
-
=。

上述拼接过程会无条件的拼接下去,直到第i类碎纸片中
i
n碎纸片被拼接完成。

很显然,这样的拼接过程是错误的。

我们需知道何时拼接结束,因此定义无效匹配碎纸片。

无效匹配碎纸片即该碎纸片在上述拼接方式下,有两以上的碎纸片与之匹配。

无效匹配碎纸片共分为三类,如下图3所示:
图3 无效匹配碎纸片
第一类:碎纸片左边缘或者右边缘无容,即为空白;
第二类:碎纸片左边缘或者右边缘刚好以字结束,即字全部存在于碎纸片中,它的匹配碎纸片边缘无容;
第三类:碎纸片边缘空白部分占大多数,有文字部分占少数,该类无效匹配碎纸片多存在于英文碎片中。

因此,根据上述分析,按照正确的拼接方式,与第i碎纸片相匹配的碎纸片满足以下数学表达式:





1


-
-
-



1
3
2
1
180
1=

)
,
(
.
)
(
min
,
k
j
f
R
R
R
R
s
n
i
t s
j
w
i
i
j
s i
(6.2.7)
其中,R为未匹配碎纸片的集合,
1
R为第一类无效碎纸片集合,
2
R为第二类无效
碎纸片集合,
3
R为第三类无效碎纸片集合。

类拼接过程分为以下三步:
Step1:由模型一思路,先找出第i类碎纸片中第一碎纸片,然后根据贪婪算法的思想,按照上述碎纸片匹配规则,依次找出后面的拼接碎纸片,直到找到无效匹配碎纸片结束;
Step2:在步骤1完成后,第i类碎纸片集合中会有少数量的碎纸片未被拼接。

令剩余未被拼接碎纸片中序号最小的碎纸片为中心纸片,按照上述拼接规则,对该中心纸片与剩余纸片进行匹配,直到找到无效匹配碎纸片结束。

依此类推,直到第i类碎纸片集合中所有碎纸片都进行了匹配;
Step3:完成上面两步后,得到了计算机不能再横向拼接的碎纸片块。

现进行人工干预,拼成11块相当于仅被横切的碎纸片块。

(二)类拼接算法设计
主算法:
从左或从右边缘开始拼接(以从左边开始拼接为例)
1、start,读入数据,变量初始化,确定左边缘为白色的纸片集合left_white,并定义一
个记录已经已经拼接过的图片集合note;
2、判断集合left_white是否为空,若为空,则跳至9,否则i=i+1,并继续;
3、从集合left_white中选取一个纸片作为拼接开始的起点left_white(i),并赋值给表示
当前待拼接变量Current
4、判断当前待拼接的纸片Current是否属于已经拼接过的集合note,若属于,则返回2;
否则继续;
5、判断拼接的总数是否大于18,即一行的长度,若是则跳至8,否则继续;
6、将当前待拼接的纸片Current与未拼接的纸片按子算法一进行运算,确定与当前待
拼接的纸片Current相匹配的纸片集合next;
7、判断集合next的元素个数是否大于1,若是,则表示产生了两个及以上的匹配纸片,
拼接无法进行下去,跳至8;否则将next赋值给Current,并返回4;
8、输出拼接完成的纸片,并存入文件夹中;
9、算法结束
子算法1:
实现Step1的子算法:
1、读取待拼接图片,找出待拼接图片的右边缘;
2、将右边缘与其他图片的左边缘分别相比较,分别计算平方欧式距离distance
3、返回使距离最小的拼接图片。

子算法2:
实现Step2的子算法:
1、读取待拼接的图片,找出待拼接图片的左边缘和右边缘;
2、将待拼接图片的右边缘分别和其他图片的左边缘计算平方欧式距离distance1;
3、将待拼接图片的左边缘分别和其他图片的右边缘计算平方欧式距离distance2;
4、比较distance1与distance2,若最小值出现在distance1中,则返回对应图片,并采
取自左向右拼接的方式;否则返回对应图片,采取自右向左拼接的方式。

Ⅲ碎纸片块类间拼接
在经过Ⅱ碎纸片分类,以及运用matlab编程加人工干预的方法拼接后,得到11块仅横向拼接的碎纸片块。

现需对这11块仅横向凭借的碎纸片块进行块间拼接。

该11块仅横向拼接的碎纸片块与问题1中仅被纵向切割的碎纸片类似,根据碎纸片块上下边缘部分容可将这11块碎纸片分为两种类型,其中第一种类型为上下边缘部分含有部分文字信息,第二种类型为碎纸片块上下边缘无文字全为空白。

对于第一种碎纸片块可借助模型1仅纵切碎纸片拼接模型的方法,将该种类碎纸片实现拼接。

而对于第二种碎纸片块而言,它相当于上面Ⅱ碎纸片类拼接中我们所定义的无匹配碎纸片(即在评判条件为碎纸片间灰度值平方欧式距离最短的情况下,该碎纸片有多于1碎纸片可与之匹配),现无法编程实现拼接过程,故引入人工干预过程。

人工干预实现碎纸片拼接的原则为:段间文字的间距为一定值。

相关文档
最新文档