2013全国大学生数学建模竞赛B题摘要.pptx
文本预览下载声明
2013全国大学生数学建模竞赛B题碎纸片的拼接复原
主讲人:侯晓丽
一.问题重述
对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(单面纵切、单面纵切加横切、双面纵切加横切),建立碎纸片拼接复原模型和算法,并针对附件1---附件5给出的中、英文文件的碎片数据进行拼接复原。
二.问题1的分析
根据打印文件的每行文件具有前后连续性,考虑先从读取文件数据入手,存储每幅图片对应的灰度值矩阵。依靠得到的灰度值矩阵转化为 0-1 二值矩阵,并利用相邻左右边界差异不大这一特性作为依据来建立边缘匹配度模型,来解决此问题,复原出图片的原始序列。
二.问题1的分析
步骤一:使用matlab中的imread函数可以做出图片的灰度矩阵 ,读取每张图片文件的数据,其目的是将附件中给的 bmp 格式的碎纸片图以灰度值矩阵的形式存储。再将灰度值矩阵转化为 0-1 矩阵,来得到模型的数据基础;
由于该像素图片转换后为 的矩阵,论文中无法放置,所以仅简单举例说明:
矩阵的中元素表示该位置图片的灰度,255表示为白,0为黑,图片中信息为黑白文字信息,所以矩阵中出现了介于0-255的元素。每一个图片转换后都是一个 的矩阵,矩阵中的元素的值介于0-255之间。
因为我们想做的是左右边界匹配度模型,因此我们只需要提取左右边界的数据,然后把它转换为0-1矩阵。例如可将
转化为如下的矩阵:
其中白色用0值表示,非白色用1表示。
二.问题1的分析
步骤二:基于上述 0-1 矩阵,提取每幅图片左右边界的 0-1 值,建立边缘匹配度模型,确定出图片的序列;
先观察0-1矩阵,发现有两个矩阵C6、C8均有一列为0,可确定008为左端第一张,006为右端最后一张.
以008代表的矩阵C8开始,两张图片匹配的原则可以根据下面的图1来表示。
?
将008代表的矩阵C8的第二列元素与其它矩阵的第一列元素进行两两匹配。记录元素相同的个数,个数除以1980为C8矩阵第二列对其它矩阵第一列的边缘匹配度,记为:
比较这18个数据,最大的即为与008匹配的碎纸片。然后以所找到的碎纸片的第二列开始,求出它与其它矩阵第一列的边缘匹配度,找出最大的,以此类推把19张碎纸片拼接完成。
二.问题1的分析
步骤三:根据上面的步骤,将附件1、附件2的图片进行拼接,做人工处理后以图片和表格形式展现。
三.问题2的分析
文件被纵横切后变成了11x19=209张碎纸片, 列数不变,行数由第一问中的1980变为180,显然,图片所包含的信息量少了,但是图片数量由19张变为了209张。
总体思路
三步走:分行,行内排序,行间排序
中文碎纸片的分析
基于文字特征的文档碎纸片半自动拼接,每一行的绝大多数中文文字均可认为拥有同一上界、同一下界。例如:
方法为:搜索每一张碎纸片转化后二值化矩阵 的每一行,若矩阵该行中存在数值1,则将该行全部赋值为1,若这一行元素全为0,则将该行全部赋值为0,其中1表示本行存在灰度小于255的像素,0表示不存在灰度小于255的像素,这样将209张碎纸片做出新的二值化矩阵 ,之后同4.1的分析取边缘做边缘匹配得修改后的[6]边缘匹配度矩阵 ,匹配度高则说明碎纸片的文字信息处于同一水平位置,
在矩阵 中每一行选取匹配度大于0.9的元素,进行统计分组,可以看出在取匹配度为0.9及以上时,分出了20个组,其中组内元素最多的为19,组内元素最少的为1。而最后的结果应该为11行,我们需要对这些组中的元素进行合并后得到11行,所以我们要先考虑元素数量为19的组,再考虑其他元素数多的组,对组内图片进行5.1中的边缘匹配,匹配后的结果在与元素数少的组做匹配与人工处理。
以序号2的组为例,该组包含19个元素,对于组内的19个元素的原始二值化矩阵进行上述中的边缘匹配,结果如下:
对应的图片为
加以人工干预,通过对文章的内容、文章的结构、文章的形式的观察人工拼接,得到如下结果。
其他组做相同处理, 再通过一定的人工干预可以得到拼接复原后的的11横行碎纸片,在同样使用问题1的边缘匹配方法,将得到的11行的碎纸条的长边进行边缘匹配做出 的匹配度矩阵后找最大匹配度作为连接的碎纸条,同样为了防止出现两白边匹配造成碎纸片连接混乱的现象,要加以限制。方法为:若在组内做边缘匹配出现匹配度为1的情况,则暂时不连接此碎纸片,从剩余的碎纸片出发做边缘匹配与其他碎纸片连接,直到11张拼接后的碎纸片均已覆盖。最后加以人工处理,得到完整的原文件。
三.问题2的分析
英文碎纸片的分析
通过观察可以发现英文字母的主要的部分拥有同一上界和同一下界,例如:
将图片中每一行中黑色像素数少于13的及字母的次要部分转变为二值化矩阵中的0,将每一行中黑色像素大于等于13的及字母的主要部分转化为二值化矩阵中的1,这样得到
显示全部