2013高教社杯全国大学生数学建模竞赛承诺书我们仔细阅读了《全国大学生数学建模竞赛章程》和《全国大学生数学建模竞赛参赛规则》(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。
如有违反竞赛章程和参赛规则的行为,我们将受到严肃处理。
我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。
我们参赛选择的题号是(从A/B/C/D中选择一项填写): B 我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):西华大学参赛队员 (打印并签名) :1. 杨尚安2. 刘洋3. 叶军指导教师或指导教师组负责人 (打印并签名):(论文纸质版与电子版中的以上信息必须一致,只是电子版中无需签名。
以上内容请仔细核对,提交后将不再允许做任何修改。
如填写错误,论文可能被取消评奖资格。
)日期: 2013 年 09 月 15 日赛区评阅编号(由赛区组委会评阅前进行编号):2013高教社杯全国大学生数学建模竞赛编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):全国评阅编号(由全国组委会评阅前进行编号):碎纸片的拼接复原摘要本文通过分析题中相关要求及条件,建立数学模型解决了各种规则碎纸片的拼接复原问题。
针对问题一,首先将题中所给图片导入matlab软件,利用imread函数得到每张图片的文字灰度像素矩阵,再取出所有矩阵左、右列,建立像素绝对差拟配模型,得到拟配程度最高的两幅图片,进行拼接,出现不合理拼接情况则进行人工干预,最后重复上述过程,完成全部拼接并导出图像。
针对问题二,首先将全部碎片导入matlab软件,经过处理得到每张碎片中符号距离碎片上下端的像素位,再根据分类聚类思想,利用excel表格处理,将所有具有“相同”像素位的图片分为一组,得到11个分组,然后在每一个分组中建立左右连接点数目最匹配模型,再配合人工干预,将所有碎片拼接为一行图像,最后将这11行图像利用问题一中模型拼接为最终图像并打印结果。
针对问题三,首先建立一种基于K-Means局部最优性的高效聚类模型,然后根据模型利用matlab,将所给图片全部导入分类,分好类并人工调整补充后再利用matlab在每一组分类中利用问题二模型在人工干预情况下得出原始图像并打印结果。
关键词:像素绝对差拟配模型左右连接点数目最匹配模型人工干预一、问题重述破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。
传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。
特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。
随着计算机技术的发展,人们试图开发碎纸片的自动拼接技术,以提高拼接复原效率。
请讨论以下问题:1. 对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,并针对附件1、附件2给出的中、英文各一页文件的碎片数据进行拼接复原。
如果复原过程需要人工干预,请写出干预方式及干预的时间节点。
复原结果以图片形式及表格形式表达(见【结果表达格式说明】)。
2. 对于碎纸机既纵切又横切的情形,请设计碎纸片拼接复原模型和算法,并针对附件3、附件4给出的中、英文各一页文件的碎片数据进行拼接复原。
如果复原过程需要人工干预,请写出干预方式及干预的时间节点。
复原结果表达要求同上。
3. 上述所给碎片数据均为单面打印文件,从现实情形出发,还可能有双面打印文件的碎纸片拼接复原问题需要解决。
附件5给出的是一页英文印刷文字双面打印文件的碎片数据。
请尝试设计相应的碎纸片拼接复原模型与算法,并就附件5的碎片数据给出拼接复原结果,结果表达要求同上。
二、模型假设1、假设全部碎纸片边缘光滑2、假设字符色调一致3、假设字符间距相同,没有特殊情况4、假设除字符外,页面没有其他地方具有任何色彩5、假设英文字符书写标准,大小写字号均相同三、符号说明a表示灰色像素矩阵in表示灰色像素矩阵的列数m表示灰色像素矩阵的行数i表示第几个碎片ia表示某个像素点m nb表示某灰度像素点为黑色还是白色right表示灰色像素矩阵最右边列)(i(kleft表示灰色像素矩阵最左边列)w表示某个碎片灰色像素矩阵最左列与另一个碎片灰色像素矩阵最右列的差的绝对值的和四、模型建立与求解4.1问题一4.1.1问题分析整体来看,本问题要求利用数学模型,改原有手动拼接技术为自动或半自动拼接技术,完成题中所给的相应碎纸片的拼接复原工作。
具体操作,考虑所给碎纸片内容仅有汉字或英文,而没有颜色、大小、字形之分。
因此,只能利用碎纸片中相应的文字特征进行操作,考虑碎纸片扫描进入在计算机后是以图片的形式存在,而图片又是以像素的情况组成。
所以,首先可将图片导入matlab 中,以其像素为基点,得到每个图片的像素矩阵,每一像素矩阵即可表示该图片的特征。
为了利用图片像素矩阵完成图片的拼接,考虑问题一只是将原图分为了19列,每一列具有1980像素,首先可根据左端全为空白,找出原图最左一列碎片,然后利用拼接好的图片最右列像素点去匹配未拼接图片的最左列像素点,使得拼接最为吻合的即为需要拼接的图片,然后拼接,再重复上述过程,直到拼接完成。
具体操作流程如下:Array图1 问题一解答流程图4.1.2数据处理将图片导入matlab中,然后编写程序(具体代码见附录1),可得每个碎纸片灰度像素矩阵(碎片000局部像素点如下)。
图2 碎片000局部灰度像素点列4.1.3像素绝对差拟配模型建立令碎片导入matlab 编程计算所得的灰色像素矩阵为:由于碎片像素为72*1980,因此矩阵i a 也是72*1980的,矩阵每一列数据即为碎片相应列像素值,其中每个像素点im n a 表示此处为黑色或白色,用b 表示某灰度像素点为黑色还是白色,即:令)(i right 表示灰色像素矩阵最右边列,那么令)(k left 表示灰色像素矩阵最左边列,则令w 表示某个碎片灰色像素矩阵最左列与另一个碎片灰色像素矩阵最右列的差的绝对值的和。
那么有根据上述模型即可确定某一碎片灰度像素矩阵最右边列与其余未拼接碎片最左边列的绝对差值,下面讨论因差值不同而产生的匹配问题。
1、最左列的确定:当出现某一碎片灰度像素矩阵最左列均为255时,那么说明该碎片为原始图像的最左列。
2、假设出现k w w w w >>>> 321情况,那么首先将k w 对应的碎片与该基准碎片进行拼接,若拼接不合适,这时就需要人工干预,换1-k w 对应的碎片与基准碎片进行拼接。
情况如下:这是不确定的,而进行人工干预选择1-k w 对应的碎片后,将会出现下面情况:这样就能正确的完成两个碎片的拼接。
3、假设出现k w w w w ==== 321情况,这与上述情况相同。
因此,人工干预方式及时间选择也相同。
4.1.4像素绝对差拟配模型求解对于附件一中碎片复原,根据上述模型,利用matlab 软件,求解可得008碎片最左端矩阵列与006碎片最右端矩阵列均为:⎪⎪⎪⎭⎫ ⎝⎛255255 ,因此,可知008碎片为复原图最左一个碎片,006碎片为复原图最右端碎片。
其余求得所有最小的距离w 的值,根据w 的对于附录二英文复原,与上求解过程雷同,利用matlab 可得复原结果如下表,复原图4.1.5问题一综合分析综上所述,对于问题一的求解过程,未使用人工干预。
本文除使用对问题所给的碎片进行复原外,同时对具有相同属性的其他图形碎片也进行了复原,效果良好,模型稳定,可推广到所有只进行竖切的文档恢复。
4.2问题二——中文碎片复原4.2.1问题分析综合分析。
由于考虑问题二在问题一的基础上将碎片分的更加的细小,那么碎片的灰色像素矩阵数据在原有的基础上将会变得少很多,考虑使用问题一方法及模型,那么首先就要构造出与问题一相同的19个竖碎片,因此考虑将所有碎片分为19组,但经过试验分为19组后,由于空白出现太多,在每组中将11个碎片拼接在一起是相当困难的。
因此,转变思想,考虑将所给所有碎片分为11个组,在每个分组中将19张碎片拼接在一起,然后在将11个分组拼接在一起完成最后解答。
具体操作。
要想将11*19张图片分为11组,考虑文字具有行高的性质,分组中所拼接的19张碎片,所有文字具有的行高应该都是相同的。
根据这一思想,可将所有碎片导入matlab中,编程计算可得每张碎片符号距离碎片上下端的像素位,并将所有结果导入excel中,然后根据分类与聚类思想,利用excel表格处理,将碎片符号距离碎片上下端的像素位“相同”(不是绝对相等,允许误差前后波动两个像素)的点分为一组,对于出现空白位置误差较大的点可根据单边距离进行分类与聚类,若根据单边无法确定具体分入那组,那么就同时分入可能的分组中。
分组完成后那么每个分组中的图片定能拼接为一行图片,那么我们可建立左右连接点数目最匹配模型,结合人工干预,将每个分组中图片拼接在一起。
最后利用问题一中模型可将11个分组拼接在一起得到原图。
具体流程如下图:图3 问题二解答流程图4.2.2数据处理将209张碎片导入matlab中,编程得到每张碎片灰色像素矩阵,然后在利用矩阵编写程序得到每张碎片字符距离上下边界的像素位,并将其导入excel中(具体代码见得到像素位上下边缘距离后可根据上下距离“相等”(不是绝对相等,允许误差前后波动两个像素)原则,利用excel表格处理将所给数据分为11组。
其中距上边缘距离为0,在每一分组内,再利用matlab编程计算每张碎片左端与右端具有的可连接点数目(采用四舍五入原则) (具体代码见附录7) ,下表为上一分组数据的左右连接点数目:(其4.2.3 左右连接点数目最匹配模型]1[本模型属于半自动模型,需人工干预,具体步骤如下:1、选取任一分组左右连接点数目情况表,观察左右连接点数;2、选取左端连接点数目为0的碎片作为最左端碎片,并将该图片作为基准图片;3、观察基准图片右端连接点数目,从未拼接图片左端连接点数目中找寻与该数目最接近的碎片,人工控制,观察是否可连接。
若可连接则拼接上,并将新拼接上碎片作为基本图片,若不可连接,则重新找寻符合要求的碎片,观察是否可连接;4、重复3步骤,直到将图片全部连接完成。