【数学建模】碎纸片的拼接复原

news2024/11/16 12:41:42

2013高教社杯全国大学生数学建模竞赛B题

  • 问题一
    • 模型一
    • 模型二
      • 条件设立思路
    • 问题求解

问题一

已知 d i d_i di为第 i i i张图片图片的像素矩阵
已知 d i d_i di都是 n ∗ m n*m nm二维矩阵
假设有 N N N张图片

模型一

我们认为对应位置像素匹配为
d i [ j ] [ 1 ] = d k [ j ] [ m ] d_i[j][1]=d_k[j][m] di[j][1]=dk[j][m]
那么就有
图片之间匹配度数组
A [ i ] [ k ] = ∑ j = 1 m d i [ j ] [ 1 ] = d k [ j ] [ m ] A[i][k] = \displaystyle\sum_{j=1}^m d_i[j][1]=d_k[j][m] A[i][k]=j=1mdi[j][1]=dk[j][m]
其中 A [ i ] [ k ] A[i][k] A[i][k]表示第 i i i张图片放在第 k k k图片后面的匹配度
建立模型:
目标是总匹配度最大
设立0/1变量 x i j = 1 x_{ij}=1 xij=1表示选择第 i i i张在第 j j j张后面,并且 A [ i ] [ j ] A[i][j] A[i][j]表示为 A i j A_{ij} Aij
已知起始图片为 a a a,终止图片为 b b b
{ max ⁡ ∑ i = 1 N ∑ j = 1 N x i j A i j ∑ j = 1 N x i j = 1 , i = a , i = j ∑ i = 1 N x i j = 1 , j = b , j = i i = 1 , . . . , N , j = 1 , . . . , N \begin{cases} \max \displaystyle\sum_{i=1}^N \displaystyle\sum_{j=1}^N x_{ij}A_{ij}\\ \displaystyle\sum_{j=1}^N x_{ij} = 1 , i \cancel{=} a , i \cancel{=} j \\ \displaystyle\sum_{i=1}^N x_{ij} = 1 , j \cancel{=} b , j \cancel{=} i \\ i = 1,...,N , j = 1,...,N \end{cases} maxi=1Nj=1NxijAijj=1Nxij=1,i= a,i= ji=1Nxij=1,j= b,j= ii=1,...,N,j=1,...,N

模型二

我们认为对应位置像素匹配不成功的差异为
∣ d i [ j ] [ 1 ] − d k [ j ] [ m ] ∣ |d_i[j][1]-d_k[j][m]| di[j][1]dk[j][m]
那么就有
图片之间差异度数组
A [ i ] [ k ] = ∑ j = 1 m ∣ d i [ j ] [ 1 ] − d k [ j ] [ m ] ∣ A[i][k] = \displaystyle\sum_{j=1}^m |d_i[j][1]-d_k[j][m]| A[i][k]=j=1mdi[j][1]dk[j][m]
其中 A [ i ] [ k ] A[i][k] A[i][k]表示第 k k k张图片放在第 i i i图片后面的差异度
建立模型:
目标是总差异度最小

设立0/1变量 x i j = 1 x_{ij}=1 xij=1表示选择第 j j j张在第 i i i张后面,并且 A [ i ] [ j ] A[i][j] A[i][j]表示为 A i j A_{ij} Aij
已知起始图片为 a a a,终止图片为 b b b
得到目标 min ⁡ ∑ i = 1 N ∑ j = 1 N x i j A i j \min \displaystyle\sum_{i=1}^N \displaystyle\sum_{j=1}^N x_{ij}A_{ij} mini=1Nj=1NxijAij
要保证除开起始图片,每个图片都有前一张与其对应
∑ i = 1 N x i j = 1 , j = a \displaystyle\sum_{i=1}^N x_{ij} = 1 , j \cancel{=} a i=1Nxij=1,j= a
同时除开终止图片也是,要有后一张与其对应
∑ j = 1 N x i j = 1 , i = b \displaystyle\sum_{j=1}^N x_{ij} = 1 , i \cancel{=} b j=1Nxij=1,i= b

条件设立思路

将其看作类似最短路问题
已知起点 a a a,终点为 b b b,图中每个节点都与其他节点有边,求从起点到终点的最短路问题,并且需要经过每一个节点!

目标依旧不变。
min ⁡ ∑ i = 1 N ∑ j = 1 N x i j A i j \min \displaystyle\sum_{i=1}^N \displaystyle\sum_{j=1}^N x_{ij}A_{ij} mini=1Nj=1NxijAij
要保证除开起始图片,每个图片都有前一张与其对应,实际上是除开起点,每个节点的入度都为1
$\displaystyle\sum_{i=1}^N x_{ij} = 1 , j \cancel{=} a $
同理除开终点每个节点出度为1
∑ j = 1 N x i j = 1 , i = b \displaystyle\sum_{j=1}^N x_{ij} = 1 , i \cancel{=} b j=1Nxij=1,i= b
避开自环存在
x i i = 0 , i = 1 , . . , N x_{ii} = 0 ,i=1,..,N xii=0,i=1,..,N
现在唯一的问题就是可能会出现,起点连几个点就到终点,其他点连成环。

目前解决办法,多次运行,如果出现上述情况,手动排除
假设 3 − > 4 − > 5 − > 6 − > 3 3->4->5->6->3 3>4>5>6>3成环了
那么 x 34 + x 45 + x 56 + x 63 = 4 x_{34}+x_{45}+x_{56}+x_{63}\cancel{=} 4 x34+x45+x56+x63= 4

所以模型如下:
A [ i ] [ k ] = ∑ j = 1 m ∣ d i [ j ] [ 1 ] − d k [ j ] [ m ] ∣ A[i][k] = \displaystyle\sum_{j=1}^m |d_i[j][1]-d_k[j][m]| A[i][k]=j=1mdi[j][1]dk[j][m]
{ min ⁡ ∑ i = 1 N ∑ j = 1 N x i j A i j ∑ i = 1 N x i j = 1 , j = a ∑ j = 1 N x i j = 1 , i = b i = 1 , . . . , N , j = 1 , . . . , N \begin{cases} \min \displaystyle\sum_{i=1}^N \displaystyle\sum_{j=1}^N x_{ij}A_{ij}\\ \displaystyle\sum_{i=1}^N x_{ij} = 1 , j \cancel{=} a \\ \displaystyle\sum_{j=1}^N x_{ij} = 1 , i \cancel{=} b \\ i = 1,...,N , j = 1,...,N \end{cases} mini=1Nj=1NxijAiji=1Nxij=1,j= aj=1Nxij=1,i= bi=1,...,N,j=1,...,N

问题求解

数据处理:
MATLAB

d =cell(1,19);
for i = 1:19
    imageName=strcat(num2str(i-1,'%03d'),'.bmp');
    d{i}=imread(imageName);
end
a = cell(19,19);
for i = 1:19
    for j = 1:19
        sum = 0;
        for jj = 1:1980
            sum = sum + abs( double(d{i}(jj,72))-double(d{j}(jj,1)) );% j在i后面的差值
        end
        a{i,j} = sum; % 顺序是 i j
    end
end
xlswrite('D:\homewrok\建模\纸片\201391394826489\2013年全国大学生数学建模竞赛B题附件\附件1\a.xls', a);

lingo

sets:
 aa/1..19/:;
 cc(aa,aa):x,d;
endsets
data:
 a = 9;
 b = 7;
 d = @ole('D:\homewrok\建模\纸片\201391394826489\2013年全国大学生数学建模竞赛B题附件\附件1\a.xls','A1:S19');
enddata
min = @sum(cc(i,j):x(i,j)*d(i,j));
@for(aa(i)|(i#ne#b):@sum(aa(j):x(i,j))=1);
@for(aa(j)|(j#ne#a):@sum(aa(i):x(i,j))=1);
@for(cc(i,j)|(i#eq#j):x(i,j)=0);
@for(cc(i,j):@bin(x(i,j)));

@for(aa(j):x(b,j)=0);
@for(aa(i):x(i,a)=0);

第一次

                       X( 1, 7)        1.000000            25661.00
                       X( 2, 5)        1.000000            33616.00
                      X( 3, 17)        1.000000            14639.00
                      X( 4, 11)        1.000000            31383.00
                       X( 5, 6)        1.000000            22300.00
                      X( 6, 10)        1.000000            24650.00
                      X( 8, 18)        1.000000            33594.00
                      X( 9, 15)        1.000000            27544.00
                     X( 10, 14)        1.000000            26131.00
                      X( 11, 3)        1.000000            22137.00
                      X( 12, 8)        1.000000            21828.00
                     X( 13, 16)        1.000000            12228.00
                     X( 14, 19)        1.000000            21352.00
                     X( 15, 13)        1.000000            18222.00
                      X( 16, 4)        1.000000            24331.00
                      X( 17, 2)        1.000000            29574.00
                      X( 18, 1)        1.000000            26993.00
                     X( 19, 12)        1.000000            27268.00

发现没有出现上面担心的问题
MATLAB

d =cell(1,19);
for i = 1:19
    imageName=strcat(num2str(i-1,'%03d'),'.bmp');
    d{i}=imread(imageName);
end
ansd = [d{9},d{15},d{13},d{16},d{4},d{11},d{3},d{17},d{2},d{5},d{6},d{10},d{14},d{19},d{12},d{8},d{18},d{1},d{7}];
imshow(ansd);

在这里插入图片描述

同理做附件二:

d =cell(1,19);
for i = 1:19
    imageName=strcat(num2str(i-1,'%03d'),'.bmp');
    d{i}=imread(imageName);
end
ansd = [d{4},d{7},d{3},d{8},d{16},d{19},d{12},d{1},d{6},d{2},d{10},d{14},d{11},d{9},d{13},d{15},d{18},d{17},d{5}];
imshow(ansd);

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1700715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

引入安全生产培训云平台,实现“人人讲安全、个个会应急”

引入安全生产培训云平台,旨在全面提升企业及员工的安全意识与应急处理能力,通过数字化手段实现“人人讲安全、个个会应急”的目标。这一平台的构建和应用,不仅促进了安全知识的普及,还极大提高了培训的效率与效果。以下是该平台几…

【赠书第24期】Java项目开发实战(微视频版)

文章目录 前言 1 项目选择与需求分析 1.1 项目选择 1.2 需求分析 2 系统设计 2.1 系统架构设计 2.2 数据库设计 2.3 接口设计 3 编码实现 3.1 环境搭建 3.2 编码规范 3.3 编码实现 4 测试与部署 4.1 单元测试 4.2 系统测试 4.3 部署与上线 5 总结与展望 6 推…

挖矿宝藏之系统日志

什么是日志? 日志是指系统或应用程序在运行过程中产生的记录文件,这些文件记录了系统或应用程序的运行情况、错误信息、用户操作等。 日志的主要作用 记录信息:日志可以记录系统或应用程序的启动、运行、停止等状态信息,以及用户的…

262 基于matlab的一级倒立摆仿真

基于matlab的一级倒立摆仿真,在对一级倒立摆进行数学建模的基础上,对模型进行线性化,得到其状态空间模型,利用二次型最优控制方法得出控制率。输出角度和位置优化曲线。程序已调通,可直接运行。 262 一级倒立摆仿真 状…

adb环境搭建

1.安装jdk adb正常使用的前提条件:安装jdk,网上很多可以找找,或者翻翻之前记录的。 2.安装adb 2.1.下载Android_sdk 通过网盘下载,网盘链接:https://pan.baidu.com/s/1r4Y_2-nkKs2a2h9mdrueWg,e5wv。下载成…

关系代数、函数依赖、Armstrong公理及软考试题解析

注:本文面向于软考高级—系统架构设计师,具体来说是数据库部分,知识点偏零碎化。想要系统学习数据库原理的,可考虑去看《数据库原理》,清华大学出版社或其他出版社皆可。 概述 概念 关系,就是二维表。特…

2024年上半年软件设计师试题及答案(回忆版)

目录 基础知识选择题案例题1.缺陷识别的数据流图2.球队、球员、比赛记录的数据库题3.用户、老师、学生、课程用例图4.算法题5.程序设计题 基础知识选择题 树的节点,度为4的有4个,度为3的有8个,度为2个有6个,度为1的有10个&#x…

spring boot整合j2cache 配置项目全局键标识 帮助定位是哪个项目产生的缓存

我们利用 j2cache 存进 redis的缓存 key 可以加个全局标识 这样 到时看缓存 方便别人看是哪个项目存进去的 例如 这里 我们存入的 book 我们 keys * 查看 就知道是个book 但不知道具体来自那套系统 我们在 j2cache.properties 中加上 redis.namespace 项目全局键标识 我们…

【方法】ZIP压缩文件的密码如何设置和取消?

ZIP是一种常见的压缩文件格式,今天来分享一下,ZIP压缩文件如何设置密码保护,以及如何取消密码,不清楚的小伙伴一起来看看吧! 设置ZIP文件密码: 想要给ZIP压缩包设置密码,需要用到支持ZIP格式的…

移动云主机ECS搭建Kubernetes集群:详细步骤与指南

目录 云主机 ECS:云计算的强大引擎什么是云主机ECS?为何选择云主机ECS? 使用移动云ECS进行Kubernetes集群搭建1. 环境准备2. 安装步骤2.1 在每一个节点上执行的操作2.1.1 系统准备2.1.2 安装Docker2.1.3 安装Kubernetes的安装组件 2.2 在Mast…

一篇文章讲透排序算法之堆排序

1.前言 在学习这篇文章之前,请大家先学习堆这一数据结构中堆的概念,向下调整算法,向下调整建堆。 有关堆的实现方式请参考:堆的实现 堆排序就是利用堆里面学习过的知识点进行排序,如何进行排序呢? 2.堆…

linux centos nginx配置浏览器访问后端(tomcat日志)

1、配置nginx访问tomcat日志路径 vim /usr/local/nginx/conf/nginx,conflocation ^~ /logs {autoindex on;autoindex_exact_size on;autoindex_localtime on;alias /home/tomcat/apache-tomcat-9.0.89-1/logs;}###配置讲解### 1、location ^~ /logs { … }: location&#xf…

抖音IP地址频繁变动:背后的原因与解读

在抖音这个短视频平台的日常使用中,不少用户可能注意到了自己的IP地址有时会频繁变动。这种现象不仅引起了用户的好奇,也引发了关于个人隐私、账号安全以及平台政策的一系列讨论。那么,抖音IP地址换来换去什么意思?这背后又隐藏着…

最新ETF市场全景画像

根据天软指数基金因子库,分析宽基、行业和主题ETF表现,目前已全部上线公众号,更多内容可关注天软公众号!

2024年上半年系统架构设计师——案例第二题——UML相关

这个只记到一个大概了 主题干,说明人员访客系统 题目1 9分 问序列图信息类型和特点 题目2 序列图填空 好像是10分吧 访客系统的序列图 题目3 6分 说明软件分析和设计时的和UML图有关原则?

RocketMq源码解析四:生产者Producer启动

一、主要接口和类 生产者服务核心接口和类的关系如下图所示: MQProducer是生产者解耦,这里找几个有代表性的方法 // 同步发送消息 SendResult send(final Message msg) throws MQClientException, RemotingException, MQBrokerException,InterruptedExce…

如何使用Cloudways搭建WordPress网站

如今,搭建网站已经变得非常简单,这主要得益于开源的CMS建站系统的兴起。即使是不懂编程的人也能轻松搭建自己的网站,这些CMS系统提供了丰富的主题模板和插件,使用户可以通过简单的拖放和配置操作来建立自己的网站。 WordPress是目…

mysql中单表查询的成本

大家好。我们知道MySQL在执行一个查询时,经常会有多个执行方案,然后从中选取成本最低或者说代价最低的方案去真正的执行查询。今天我们来聊一聊单表查询的成本。 那么到底什么是成本呢?这里我们说的成本或者代价是由两方面组成的&#xff1a…

全新交友盲盒+付费进群二合一源码 包含全套源码+教程

盲盒交友脱单系统源码,带教程,免授权这套源码已经替你们搭建测试过了 附带进群系统,定位是正常的 申明需要无限回调,没有回调的搭建出来不能用不要说源码不能用 全新系统方便大家使用,已经录制好详细的教程&#xf…

解决问题的多样手段:不止律师

在我们日常生活和工作中,总是会遇到各种各样的问题。有时我们会不由自主地想到找律师打官司,认为这是解决问题的唯一途径。然而,解决问题其实有很多手段,律师和法庭只是其中的一种。事实上,只要能够发现问题并及时解决…