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

摘要

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

本文围绕几种不同类型的碎纸片拼接复原,建立碎纸片距离模型、旅行商模型和聚类分析模型,结合利用改良圈算法、聚类算法和少量的人工干预对几种不同类型的碎纸片拼接复原问题进行分析求解。

针对问题一,首先利用matlab对文件中的图片进行数值化处理,通过对每张碎纸片数值化矩阵左右两侧的分析,找到原图最左侧和最右侧的碎片序号a,b;建立碎纸片距离模型,以表示第两张碎纸片之间的距离,通过任意两张碎纸片之间的距离差异建立以第张碎纸片为起点,第张碎纸片为终点的旅行商模型,利用改良圈算法对模型求解,得到碎纸片拼接复原图及碎纸片序列(见附录1)。

针对问题二,首先利用matlab对文件中的图片进行数值化处理,计算每张碎纸片的180行像素点的纵向向量,通过180个纵向向量将209张碎纸片聚类为12类,再通过人工干预将碎纸片均分为11类;通过对每张碎纸片数值化矩阵左右两侧的分析,找到每一类的起始碎纸片和终止碎纸片,建立同问题一的碎纸片距离模型,利用改良圈算法将11类碎纸片拼接复原成11行,使得问题转化成11行碎纸片的拼接复原问题;利用同问题一的方法拼接复原11行碎纸片得到碎纸片拼接复原原图及碎纸片序列(见附录2)。

针对问题三,首先利用matlab对文件中的图片进行数值化处理,计算每面碎纸片的特征因子,通过每面碎纸片的特征因子将每张碎纸片与剩余208张双面碎纸片即416张图片进行配对,并加入人工干预将每张碎纸片的两面数值化为0和1(即正反面两类);计算出每张碎纸片(包含两个面)360行像素点的纵向向量,通过360个纵向向量将209张碎纸片分为11类,利用问题二的求解方式对问题进行求解,最终得到碎纸片拼接复原的复原图及碎纸片序列(见附录3)。

关键词:碎纸片的拼接复原、碎纸片距离、旅行商、聚类分析、改良圈算法、特征因子

 


仅做学习交流,代码详情见链接,原创转载请联系作者,侵权必究

资源免费下载,0积分下载

(19条消息) 碎纸片拼接复原.zip-其它文档类资源-CSDN下载

碎纸片拼接复原.zip_数学建模碎纸片拼接复原题目-Matlab文档类资源-CSDN下载

  • 45
    点赞
  • 289
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 26
    评论
### 回答1: 2013数学建模B是关于纸片拼接的问。这个问的目标是通过拼接多张长方形纸片来覆盖一个特定形状的图案。 要解决这个问,我们需要编写一段代码。首先,我们需要引入相关的库,如numpy和matplotlib。然后,我们可以定义一个函数用来计算纸片拼接方式。 在该函数中,我们可以使用一个二维数组来表示拼接图案的形状。对于每个图案,我们可以定义它的位置和方向。然后,我们可以使用循环来遍历所有可能的纸片拼接方式。 在每个循环迭代中,我们可以计算拼接图案的完整性。如果图案被完全覆盖,则可以将这个拼接方案添加到结果列表中。 最后,我们可以使用matplotlib库将所有的完整拼接方案可视化。这样可以方便我们理解和分析结果。 在编写代码时,我们应该注意到以下几点: 1. 我们需要采用递归或者回溯的方式来处理多次纸片拼接。 2. 我们可以使用numpy库来处理矩阵运算,提高计算效率。 3. 我们需要使用循环来遍历不同的纸片位置和方向,并选择合适的拼接方式。 总结起来,通过设计合适的算法和编写相应的代码,我们可以有效地解决2013数学建模B纸片拼接的问。这将帮助我们找到能够覆盖特定图案的纸片拼接方式,并且便于进一步研究和分析。 ### 回答2: 2013数学建模B是关于纸片拼接的问纸片是由一系列正方形格子组成的,每个格子有两种颜色,要求将纸片拼接成一个整体,并且要求相邻格子的颜色不能相同。 要解决这个问,可以使用代码来进行模拟拼接的过程。首先,可以定义一个二维数组来表示纸片,数组的每个元素代表一个格子,可以用0和1来表示两种颜色。然后,可以编写一个函数来检查相邻格子的颜色是否相同,如果相同则返回False,否则返回True。 接下来,可以编写一个递归函数来进行拼接操作。从纸片的某一个位置开始,分别尝试将下一个格子放置在其上、下、左、右四个方向上,然后递归调用函数进行拼接。在递归函数中,需要进行边界条件的判断,避免越界。如果成功拼接完所有的格子,则找到了一个有效的拼接方案,可以将其记录下来。 最后,在主函数中调用递归函数,遍历所有可能的起始位置,找到所有有效的拼接方案。在找到方案的同时,可以统计拼接方案的数量,并将每个方案输出,以供分析和参考。 总的来说,通过编写纸片拼接的代码,可以对2013数学建模B进行求解。该代码通过模拟纸片拼接的过程,使用递归函数来穷举所有可能的拼接方案,并找到所有有效的方案。这样就可以是解决问,得到了纸片拼接的结果。 ### 回答3: 2013数学建模B是关于纸片拼接的问。在这个问中,我们需要编写一个代码来实现给定纸片拼接方案。 首先,我们需要将纸片的形状和尺寸输入到代码中。可以使用一个矩阵来表示每个纸片的形状,其中0表示没有纸片,1表示有纸片。例如,对于一个4x4的纸片,我们可以使用一个4x4的矩阵来表示它的形状。 接下来,我们需要定义拼接的规则。可以使用一些条件来限制纸片拼接方式。例如,我们可以定义两个纸片只能拼接在相邻的边上,而不能拼接在角上。 然后,我们可以编写一个递归函数来实现纸片拼接。这个函数将遍历每个位置,检查当前位置是否为空,如果为空,则尝试将其他纸片拼接在这个位置上。如果成功拼接,则递归调用函数来尝试将下一个纸片拼接在剩余的空位置上。如果不能拼接,则回溯到上一个位置,并尝试其他的拼接方式,直到找到合适的拼接方案或所有的尝试都失败为止。 最后,我们可以输出拼接后的纸片。可以将纸片的形状打印出来,或者保存成一个矩阵,其中1表示有纸片,0表示没有纸片。 对于该问的解决方案,需要根据实际情况来具体编写代码。以上是一个简单的思路和步骤,可以根据问的具体要求来进一步完善代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ACanary

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值