重新做下2013年国模 B题 碎纸片拼接,只怪当年太年轻啊,现在再看这道题就是单人solo的节奏。。。。。。。。

1,2太简单,就不做了,3,4选第四题做一下,第3题是中文,字方方正正,比英文要简单,第5题相比第3,4题难度没有太大提高,但太烦了,也不做了。。。

先说下参赛时的思路:

因为碎片大小只有180*72,最右一列的信息太少,所以我又多用了2列(并非全部使用),用之前1,2问拼接出来的完整纸片作为训练集合,训练了一个神经网络,用前一张纸片的末3列信息生成下一张纸片第一列的预测,然后与剩下的纸片作对比,然后选择差异小的进行拼接。先给大家看下效果

只生成第一列的预测,为了方便观看,拉宽了一点,上下各有2个像素的盲区,作对比时默认忽略。

实际效果非常好!

当时存在的问题:

1.想将碎纸片分成11组(行),不知道有效的算法

2.如果直接选择差异最小的进行组合,会出现如下图的坑爹状况。

现在顺着原来的思路重新做一下,以下正文:

一、对碎片的初步处理

读入碎片,选择0.1为阈值进行二值化,并用1减去二值化后的矩阵,此时白色像素对应元素为0,黑色对应1。

选择0.1是因为当时希望处理后的209个矩阵元素和的方差最小。

二、将碎片分为11组

采用K均值算法

K均值算法是一种无监督学习的聚类算法,具体可以搜一下,下面举一个二维的例子:(图片来自http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html)

要解决的问题:将平面上的点分成2组(图a)

步骤:

1.在平面上随机选择2个点作为中心c1, c2(图b)

2.计算各点到2个中心的距离,若Pi点到c1点距离比到c2近,就认为这个点属于c1,反之亦然(图c)

3.将中心点移动到各自点簇的中心(图d)

4.重复步骤2,3,重新计算距离,重新划分点簇(图e)

5.最终结果(图f)

由于起始点是随机选取的,最大迭代次数(步骤2,3的重复次数)也可以自己设定,所以最终结果也存在一定的随机性。

回到这道题,将碎片逐行求和,生成一个180维的向量(也可以简化下),作为坐标,然后执行K均值算法。

由于K均值算法不能保证均分,可以多次执行,将其中含有19个元素的点簇的逐步提取出来

第一次执行,k=12(比11效果好),分出5组

第二次,k=7,分出3组

第三次,k=3,分出1组

最后38张碎片,总是分成20+18,暂时放置。

三、逐行拼接

将组内的矩阵纵向求和,得到72维的向量,根据头尾0的长度,很容易就选出了最左和最右的碎片,记为L,R。

执行神经网络,生成一个19*19的距离矩阵Dij,元素dij表示第i张碎片的预测值与第j张碎片实际值的差异(我采用的是均方误),越小即表示这两个碎片连接的可能性越大。

现在我们要解决一个固定起点与终点的open的旅行商问题(Open Traveling Salesman Problem ,不知道open怎么翻译,开放的旅行商问题?)

简述下旅行商问题:有n座城市,一个商人要从其中某一个城市出发,唯一走遍所有的城市,再回到他出发的城市,求最短的路线,即求图论中的Hamilton回路。

open就是指最后不用回到起始城市。

将此问题改写成一个0-1规划问题,然后扔到Lingo里面求得全局最优解。得到碎片的顺序,一步到位,拼接成功:

也可以对距离矩阵D略作处理,转换成不open的TSP:

令D(L,R)=充分大,D(R,L)=充分小,这样保证形成的回路中,L与R永远不会相连,R与L必定相连。

最后考察18+20的2组碎片,记为class_18,class_20:

在class_20中,搜索到了2个左侧碎片,L1,L2,而class_18中没有找到左侧碎片。那我们可以认为L1,L2有一个是属于class_18的。

将L1,L2分别与剩下的18块进行拼接,进行人工干预,此时遇到了问题,不知道什么原因,很长时间没有解出来,迫不得已,放弃传统解法,选用了遗传算法,得下面2组序列

很容易就将剩下的2组碎片分组。

传统算法可以保证是全局最优解,而遗传算法只能保证是局部最优,故所得序列不一定准确,需多次执行,进行人工干预微调。

最终,我们将209个小碎片拼接成了11个横向碎片。

四、整体拼接

将11个碎片读入并进行与之前相同的处理,对每个矩阵横向求和,得到11个180维的向量,向量中的元素即代表了对应行的黑色像素的个数,根据0的长度,我们很容易得到了最上最下两片碎片。

现在我们希望求得行间距与字的高度。

考虑到t,y,i等字母,上下会多出那么一部分,为去除这部分的影响,做如下处理:

向量中元素如果大于100,则重新赋值为1,否则为0。

这样,统计出字高约为23,行间距约为40。

根据上方纸片的字高与行间距信息,预测下一张纸片的信息,作对比,生成一个11*11的距离矩阵,又是一个TSP问题,求解,最后得到整体的序列,拼接成功。

2013年国模 B题 碎纸片拼接相关推荐

  1. (数学建模)2013年国赛B题-碎纸片复原python代码

    数字图像处理的期末大作业 成绩出来了,感觉一般般,做个记录 代码图片文件:数学建模2013年国赛B题碎纸片复原(纵切和横纵切两问)-统计分析文档类资源-CSDN下载 目录 第一问 碎纸片拼接--纵切 ...

  2. 2013年数学建模国赛B题(碎纸片拼接复原的设计与实现)优秀论文.doc

    本博客下载链接包含修改的word版本, 可免费下载阅览学习, 也可作为数学建模相关课程作业修改上交: 链接:https://pan.baidu.com/s/1KBg5K-XXvFy5hAw8QHoIz ...

  3. 华为杯数学建模优秀论文_数学建模经典例题(2013年国赛A题与优秀论文)

    数学建模经典例题 (更多往期经典例题可点击文章最后相关推荐哦) 相关推荐 数学建模经典例题(2000年国赛B题与解题思路) 数学建模经典例题(2001年国赛A题与优秀论文) 数学建模经典例题(2001 ...

  4. 2013数学建模B题碎纸片拼接复原参考资料

    2013 B 碎纸片拼接复原问题 破碎文件的拼接在司法物证复原.历史文献修复以及军事情报获取等领域都有着重要的应用.传统上,拼接复原工作需由人工完成,准确率较高,但效率很低.特别是当碎片数量巨大,人工 ...

  5. 数学建模2013年B题——碎纸片拼接复原

    摘要 基于目前传统的手工拼接复原碎纸片的现状和碎纸片拼接复原的实际需求,本文通过对5个附件中的碎纸片文件进行半自动复原,以研究碎纸片复原的模型和算法,希望通过此种模型和算法减少碎纸片复原的效率.准确度 ...

  6. 针对2013年B题碎纸片拼接问题(附件一、附件二)

    题目链接:https://blog.csdn.net/CSDN___CSDN/article/details/82051821 http://www.shumo.com/wiki/doku.php?i ...

  7. 2003年国赛数学建模B题碎纸片拼接复原问题参考

    一.MATLAB思路 Step 1:读取图片内容 Step 2:生成匹配率矩阵 Step 3:生成邻接关系 Step 4:寻找第一张图片 Step 5:生成拼接顺序并储存 Step 6:完整图片呈现 ...

  8. ​2021年数模国赛A题国二摘要及经验分享(回忆篇,附部分代码)

    以2021年数模国赛A题为例,主要分享内容有:如何写好国赛摘要.部分解题思路和排版技巧.接下来,干货走起. 题目重述:" FAST "主动反射面的形状调节 中国天眼( FAST ) ...

  9. 2022数模国赛B题无人机第一题第一小问的简单编程

    前言 2022年国赛B题是关于无人机定位的抽象模型,总体难度不大.接下来简单介绍一下第一题第一小问的程序实现,当时国赛仓促,写的比较简略,仅供参考. 背景介绍 无源定位 第一个关键词是无源定位,无源定 ...

最新文章

  1. Linux网络编程实例分析
  2. 还在纠结垃圾分类问题?带你用Python感受ImageNet冠军模型SENet的强大
  3. HTTPS 证书配置
  4. 模拟电路技术之基础知识(六)
  5. Sales and Distribution (SD)
  6. 线性代数问卷调查反馈——Find The Determinant III,Takahashi‘s Basics in Education and Learning
  7. Springboot 项目中 xml文件读取yml 配置文件
  8. understand的安装
  9. 韩顺平 php 聪明的小猫代码,聪明的小猫作文150字
  10. PyTorch 1.0 中文官方教程:PyTorch 介绍
  11. Mercurial的Git客户端 gitifyhg
  12. 构造函数创建私有变量(防继承)
  13. Qt入门(1)——初识Qt
  14. 计算机模拟技术在材料中的应用,浅谈计算机模拟技术在材料科学中的应用.doc...
  15. python报表自动化系列 - 获得指定目录下所有文件名
  16. PID神经网络控制【神经网络二十六】
  17. python随机生成二维列表_对python产生随机的二维数组实例详解
  18. nrf52 iic使用
  19. JVC摄像机mp4视频丢失恢复方法
  20. 7-86 小明的晚饭 (50分)

热门文章

  1. check 和nocheck
  2. 一个好的浏览器是多么重要,强烈推荐一个好用的浏览器.........
  3. 蓝色音箱改装电源_神改装:用小度音箱改装DIY音频AUX口,结局是大跌眼镜
  4. 一个帅哥到一个老头的历程
  5. 《花雕学AI》07:AI脑洞大开-盘点最火爆人工智能ChatGPT的23种新颖用法
  6. visio2013都提示“正在配置请稍后”
  7. 提高机器学习模型性能的五个关键方法
  8. invalid vcs root mapping 怎么解决_一加黑鲨华硕OPPO等手机root后微信指纹支付不可用怎么解决...
  9. 云测试 入门 笔记
  10. arduino电子时钟 简易版