2013年数学建模B题碎纸片的拼接复原
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
碎纸片的拼接复原
摘 要
破碎文件拼接在现实生活中发挥着极大的作用, 但由于传统人工拼接效率低, 自动 拼接技术随之产生, 可以让自动拼接比手工效率高。 本文针对碎纸片的自动拼接问题建 立相应的数学模型,最后针对各个问题建立模型并求解。 针对问题一单面纵切碎纸片进行复原, 首先对图形进行预处理, 即将图形转化成像 素点的灰度值并在 MATLAB 软件中得到相应的矩阵;然后在拼接前进行人工干预,找出 首个图形并采用矩阵相似度函数(corr2())计算与其他碎片的二维相关系数。根据相 关系数大小得到与其相关性最大的碎纸片的序号数, 认为该碎纸片就是待拼接图形的下 一个碎纸片,然后再计算该纸片与其他纸片的相关系数,逐一类推。最终将整张中文的 图形拼接起来,得到 008,014,012,015,003,010,002,016,001,004,005,009,013,018, 011,007,017,000,006 的拼接顺序号;同理可以得到完整正确的英文图形序列号为 003,002,015,011,006,007,018,000,005,001,009,013,010,008,012,014,017,016,004 ,在这过程中人工干预的次数只有在初始化是进行一次,成功率是极大。 针对问题二单面既纵切又横切碎纸片进行复原, 简单来说就是将无数的小碎片拼接 成大碎片,先 MATLAB 软件编写程序取出第一列,然后对第一列的每一个图像找出行顺 序,最后由小碎片拼接成大碎片。从而选出列方向上的 11 个图像;然后采用和问题一 类似的解决方式先对一行进行排序, 对于在算法中出现 NaN 的情况和得到相关系数较弱 的要进行相关的人工干预,试拼出图形;检验合理后,对已拼接出的行进行排序,最后 进行列排序来得到最终拼接结果(详见表 5,表 6,图 4) 。在这一过程中出现 NaN 和相 关系数<0.7 的情况下都有可能会进行人工干预,出现这一情况的可能会很少。 针对问题三双面既纵切又横切碎纸片进行复原, 可以在问题二的基础上进行适当的 多次比较,由于正反两面都有能符合拼接规则,得到拼接结果,这时候需要进行人工干 预,干预次数可能会在题目二的基础上增加几次,但是出现这种情况的次数也是很少。 本文还分析了碎纸片自动拼接方法的优缺点,研究了碎纸片内文字的获取方法, 提出了碎纸片自动拼接算法。根据算法编写了 MATLAB 程序,文章最后还给出了其他的 改进方向,以用于实际应用。 关键词: 矩阵相似度函数 二维相关系数 图形拼接复原 贪婪法
1
一.问题重述
随着在司法文件的复原、历史文献修复以及军事情报获取等领域中破碎文件拼接 的重要性,以及传统拼接复原的低效率,碎纸片自动拼接技术应运而生。针对碎片数量 巨大, 人工拼接难以实现的情况下, 对各种破碎情况以及合适的复原破损文件的方法的 研究是很重要的。附件 1-5 提供了相关图片。请参考附件提供的图片,对下列三个问题 进行了数学的建模,程序的编写以及拼接的整体思路: 问题一: 对给定的仅纵切的单面中、英文打印文件建立碎纸片拼接复原模型和算 法,进行拼接复原,并用图片及表格形式表达复原结果。必要时可进行人工干预,但需 注明干预方式及干预的时间节点。 问题二: 对给定的既纵切又横切的单面中、英文打印文件建立碎纸片拼接复原模 型和算法,进行拼接复原,并用图片及表格形式表达复原结果必要时可进行人工干预, 但需注明干预方式及干预的时间节点。 问题三:对给定的既纵切又横切的双面中、英文打印文件建立碎纸片拼接复原模型 和算法,进行拼接复原,并用图片及表格形式表达复原结果。必要时可进行人工干预, 但需注明干预方式及干预的时间节点。
年
9 月 15 日
赛区评阅编号(由赛区组委会评阅前进行编号) :
1
2013 高教社杯全国大学生数学建模竞赛
编 号 专 用 页
赛区评阅编号(由赛区组委会评阅前进行编号) :
赛区评阅记录(可供赛区评阅时使用) : 评 阅 人 评 分 备 注
全国统一编号(由赛区组委会送交全国前编号) :
全国评阅编号(由全国组委会评阅前进行编号) :
我们参赛选择的题号是(从 A/B/C/D 中选择一项填写) : 我们的参赛报名号为(如果赛区设置报名号的话) : 所属学校(请填写完整的全名) : 参赛队员 (打印并签名) :1. 2. 3. 指导教师或指导教师组负责人 云南大学滇池学院 刘明华 赵刚 陈一凡 (打印并签名): 杨金华 日期:
B
2013
2013 高教社杯全国大学生数学建模竞赛
承
诺
书
我们仔细阅读了中国大学生数学建模竞赛的竞赛规则. 我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网 上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。 我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的 资料(包括网上查到的资料) ,必须按照规定的参考文献的表述方式在正文引用处和参 考文献中明确列出。 我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规 则的行为,我们将受到严肃处理。
五.模型的建立与求解
5.1 针对问题一的模型建立与求解 5.1.1 建模思路 把每个中文图形像素点灰度值的第一列和最后一列的变量集合提取出来,根据观 察法,在变量表格中可以看出中文图形中 008 图的第一列像素点的灰度值均为 255,在 数据的初始化条件下(即开始进行拼接时刻) ,进行人工干预,并将其视为第一个待拼 接破碎文件,然后根据公式: ( Amn A)( Bmn B ) m n r ( ( Amn A) 2 )( ( Bmn B ) 2 )
2
三.模型假设
1. 所有碎纸片的拼接都可以忽略边缘效应,即可无缝地融合在一起; 2. 对于仅纵切的两块待拼接的碎纸片,可用像素点灰度值矩阵的相似度大于 0.6 作为 判别标准; 3. 对既纵切又横切的碎纸片,拼接后原图形四周的像素点是 255; 4. 人工干预可以准确的选择出不确定的待拼接图形; 5. 对于既纵切又横切的两块待拼接的碎片,先进行行拼接,再进行列拼接; 6. 假设给定待拼接碎纸片边缘平滑。
序 号
0
1
2
Βιβλιοθήκη Baidu
3
4
5
6
7
8
9
相 似 0.1333 0.2251 0.2483 NaN 0.1327 0.2304 0.8292 0.1 度 序 10 11 12 13 14 15 16 17 号
四.名词解释和变量说明
I i : 由图形像素点转换成的矩阵(0 i 72) ; 2. A j : 矩阵 I i 的第一列; (0 j 18) ;
1.
3. B j :
I 矩阵 i 的最后一列; (0 i 18) ;
4. KKA : 取出前 columns 列是 255 的图像的位置; 5. KKB : 取出前 lines 列是 255 的图像的位置; 6.imshow: 得到完整图片的指令; 7.imread: 读入图片后转化为像素矩阵的指令;
-0.012 0.0316 0.7996 0.0034
0.0812 0.1386 0.2323 (注:第一行表示图形 000~018,每一列表示与其对应的其相关系数)
从中选择相关系数最高的 0.7996 作为匹配结果,即与图形 008 紧邻的下一个图形 为图形 014;依次类推以下过程,选取相关系数最高的 0.8504 作为下一列的匹配结果, 即与图形紧邻的下一个图形为图形 012,逐一取出相关系数最高的值进行拼接最后拼接 结果 008 014 012 015 003 010 002 016 001 004 005 009 013 018 011 007 017 000 006 对于英文图形, 把每个英文图形像素点灰度值的第一列和最后一列的变量集合提取 出来,在变量表格中可以看出英文图形中 003 图的第一列像素点的灰度值均为 255,在 数据的初始化条件下(即开始进行拼接时刻) ,进行人工干预,即将其视为第一个待拼 接破碎文件,然后在 MATLAB 中写出计算相关系数函数,使图形 003 的最后一列和其余 所有图形的第一列相对应,计算出相应的相关系数,然后选取其中相关度最高的,最为 其匹配值。 (见附录 5,6,7,8,9) 5.1.4 程序运行结果 表 2 英文图形相似度比较
m n m n
, …………(1) 其中 r 为相关系数,Amn 为第 m 行第 n 列的矩阵,Bmn 为第 m 行第 n 列的矩阵,A 为
Amn 的平均矩阵, B 为 Bmn 平均矩阵 应用 corr2()函数, 计算出每个图形的最右一列和其余图形的最左一列像素的相似 度,计算出来的函数返回值在-1 到 1 之间,其中 0 表示完全不相关,1 或-1 表示完全
4
表 1 中文图形相似度比较
序 号 相 似 度 序 号 相 似 度 序 号 相 似 度
0
1
2
3
4
5
6
7
0.2433 0.2393 -0.0076 0.1782 0.1651 0.2218 0.1806 0.0776 8 NaN 16 9 10 11 12 13 14 15
0.0849 0.1749 0.129 17 18
二.问题分析
第一问中, 对于中、 英文的纵切单面文件, 可以选择矩阵相关性匹配算法, 在 MATLAB 中导入图形后,将图形中的变量转换为矩阵的形式,采用矩阵相似度比较法,提取待拼 接图形中第一列和最后一列像素点灰度值, 用 corr2 函数进行相似度比较, 然后根据相 关系数的大小来判断待拼接图形文字区域的相似程度,相关系数(0 表示毫不相关,-1 和 1 表示完全相关,靠近-1 或 1 表示相似程度较大) 。 由此得到待拼接图形的相应位置,从而实现文字的拼接。 第二问中,中、英文的纵横切单面文件拼接复原的处理问题,在上一问的基础上将 问题简化为 19 次行方向的碎片拼接,对一拼接的行再进行列方向上的拼接。依然使用 矩阵相关性算法,在 MATLAB 中导入图形后,将各个图形的变量转换为的相应的矩阵形 式,矩阵相似度比较,提取待拼接图形四周边缘像素点灰度值,用 corr2 函数进行相似 度比较, 然后根据相关系数的大小来判断带拼接图形文字区域的相似程度。 由于图形数 量多, 相关系数不能唯一确定一张拼接图形, 此时要进行人工干预, 筛选出合适的图形, 再对剩余的待拼接图进行矩阵相似度比较,得到行方向的图形。最后根据 MATLAB 软件 编写的程序和人工干预拼接处整张图形。 第三问中,对于中、英文的纵横切双面文件的拼接复原,在第二问的基础上需要比 较正反两面, 在比较的过程中其中一张有可能出现正反两面与另一张图像在算法中计算 出来的相关系数几乎差不多,此时可能要进行人工干预,选出那张是正面还是反面。
图 1 单面仅纵切待拼接图形程序流程图 根据图 1 我们需要把像素点提出来作为一个灰度值矩阵,然后再从中提出灰度矩 阵的第一列和最后一列,组成新的矩阵,进行人工干预,确定第一个图形之后,根据矩 阵相关性匹配,得到待拼接图形的顺序,最终得到拼接结果。 5.1.3 求解方法 先用 MATLAB 中的 imread 命令读取 19 张图片,每一张图片构成 1920 72 的矩阵, 得到相应的灰度值,然后利用 MATLAB 编写程序,使用相关系数匹配法得出边缘像素点 的相似度。 接着提取所有矩阵中第一列和最后一列组成新的数组; 并计算相关系数的匹 配。根据前面分析,对于中文图形 008 进行初始化人工干预,然后在 MATLAB 中写出计 算相关系数函数,使图形 008 的最后一列分别和其余所有图形的第一列进行 corr2()算 法的计算,计算出相应的相关系数,然后选取其中相关度最高的,作为其匹配值。 (见 附录 1,附录 2,附录 3,附录 4) 程序运行结果:
3
相关。如果两个矩阵中有任何一个元素相同,结果即为 NAN;如果函数的返回值的绝对 值为 0.8- -1 为极强相关,0.6- -0.8 为强度相关,0.4- -0.6 为中强度相关,当我们 算出来的值在 0.6 至 1 时,我们就认为两张图片可以拼在一起,依次进行,直至将 19 张图形拼完为止。 5.1.2 模型建立