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

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:19imageName=strcat(num2str(i-1,'%03d'),'.bmp');d{i}=imread(imageName);
end
a = cell(19,19);
for i = 1:19for j = 1:19sum = 0;for jj = 1:1980sum = sum + abs( double(d{i}(jj,72))-double(d{j}(jj,1)) );% j在i后面的差值enda{i,j} = sum; % 顺序是 i jend
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.00X( 2, 5)        1.000000            33616.00X( 3, 17)        1.000000            14639.00X( 4, 11)        1.000000            31383.00X( 5, 6)        1.000000            22300.00X( 6, 10)        1.000000            24650.00X( 8, 18)        1.000000            33594.00X( 9, 15)        1.000000            27544.00X( 10, 14)        1.000000            26131.00X( 11, 3)        1.000000            22137.00X( 12, 8)        1.000000            21828.00X( 13, 16)        1.000000            12228.00X( 14, 19)        1.000000            21352.00X( 15, 13)        1.000000            18222.00X( 16, 4)        1.000000            24331.00X( 17, 2)        1.000000            29574.00X( 18, 1)        1.000000            26993.00X( 19, 12)        1.000000            27268.00

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

d =cell(1,19);
for i = 1:19imageName=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:19imageName=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.mzph.cn/web/16457.shtml

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

相关文章

C++:单例模型、强制类型转换

目录 特殊类的设计不能被拷贝的类实现一个类,只能在堆上实例化的对象实现一个类,只能在栈上实例化的对象不能被继承的类 单例模式饿汉模式懒汉模式饿汉模式与懒汉模式的对比饿汉优缺点懒汉优缺点懒汉模式简化版本(C11) 单例释放问…

索引失效的场景有哪些?

一.概念 索引失效是指在查询时,数据库引擎无法使用索引来加速查询,从而导致查询性能下降。常见的索引失效原因有以下几种: 索引列没有被包含在查询条件中。如果查询条件中没有包含索引列,那么数据库引擎无法使用索引来加速查询。…

域提权漏洞系列分析-Zerologon漏洞分析

2020年08⽉11⽇,Windows官⽅发布了 NetLogon 特权提升漏洞的⻛险通告,该漏洞编号为CVE-2020-1472,漏 洞等级:严重,漏洞评分:10分,该漏洞也称为“Zerologon”,2020年9⽉11⽇&#xff…

WinRAR技巧:如何让多个文件压缩到更小!?

但我们要压缩多个文件的时候,可能会出现压缩后的体积仍然过大,或者需要将文件再压缩到更小,这种情况下,小编之前建议过大家将文件压缩成7z格式就会更加压缩体积。今天分享另一个技巧,帮助我们将多个文件压缩到更小。 …

【网络安全】勒索软件ShrinkLocker使用 windows系统安全工具BitLocker实施攻击

文章目录 威胁无不不在BitLocker 概述如何利用BitLocker进行攻击如何降低影响Win11 24H2 装机默认开启 BitLocker推荐阅读 威胁无不不在 网络攻击的形式不断发展,即便是合法的 Windows 安全功能也会成为黑客的攻击工具。 卡巴斯基实验室专家 发现 使用BitLocker的…

以不变应万变:在复杂世界中保持初心,坚持原则

在这个日新月异、瞬息万变的世界里,人情世故也显得尤为复杂。我们常常会因为忙碌的生活、工作压力以及人际关系的纠葛而感到迷茫和疲惫。在面对这些复杂局面的同时,如何保持内心的平静,坚持自己的原则,并在变幻莫测的环境中持续成…

ClickHouse架构概览 —— Clickhouse 架构篇(一)

文章目录 前言Clickhouse 架构简介Clickhouse 的核心抽象列和字段数据类型块表 Clickhouse 的运作过程数据插入过程数据查询过程数据更新和删除过程 前言 本文介绍了ClickHouse的整体架构,并对ClickHouse中的一些重要的抽象对象进行了分析。然后此基础上&#xff0…

乘风破浪,创维汽车旗舰店落户安徽

2024年5月19日,创维汽车宣城家奇体验中心盛大开业。宣城市委办公室副主任师典雅、市投资促进局副局长金崇学、经开区管委会副主任汤晓峰、宣城市通信局局长梁登峰、创维汽车战区总经理刘俊、创维汽车大区总监王大明等人出席此次开业盛典,共同见证了创维汽…

内网穿透实现公网访问自己搭建的Ollma架构的AI服务器

内网穿透实现公网访问自己搭建的Ollma架构的AI服务器 [2024年5月9号我发布一个博文关于搭建本地AI服务器的博文][https://blog.csdn.net/weixin_41905135/article/details/138588043?spm1001.2014.3001.5501],今天我们内网穿透实现从公网访问我的本地AI服务器&…

全国多地入夏!对抗“高温高湿”约克VRF中央空调有妙招

随着气温飙升,北京、上海、广州、南京、天津、江苏、新疆、内蒙古部分地区等多地进入夏季状态,华北、黄淮等不少地方最高气温都超过了30℃,大街上人们短袖、短裤纷纷上阵,一派夏日炎炎的景象。 炎热夏季不仅高温频频来袭,往往还伴随着降雨带来的潮湿,天气湿热交织容易让人们身…

C++第二十弹---深入理解STL中vector的使用

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、vector的介绍 2、vector的使用 2.1、构造函数和赋值重载 2.1.1、构造函数的介绍 2.1.2、代码演示 2.2、容量操作 2.3、遍历 2.4、增删…

【STM32】 独立看门狗配置方法

什么是看门狗 看门狗(watchdog)指的是一种监控系统或程序,用于定期检测和监控其他系统或程序的运行状态,并在出现问题或故障时采取相应的措施。它可以是硬件设备,也可以是软件程序。 在计算机领域中,看门狗…

【OceanBase诊断调优】—— 排查 IO 问题的方法

本文主要介绍 OceanBase 数据库 V4.x 版本中排查 IO 问题的方法以及 IO 相关的日志和视图。 IO 相关问题 -4013 内存爆、IoControl 模块内存泄漏 目前 IO 内存爆可能的原因如下,及相应的排查方法。 其他模块使用 IO 内存后未释放导致泄漏。 日志分析。 通过关键词…

移动云:连接未来的智慧之旅

随着数字化转型的加速,云服务在各行各业中的应用越来越广泛。移动云不仅提供了灵活的计算和存储资源,还通过创新的技术手段,为企业和开发者解决了许多实际问题。在这个变革的大背景下,移动云服务作为中国移动倾力打造的云业务品牌…

​​​【收录 Hello 算法】10.4 哈希优化策略

目录 10.4 哈希优化策略 10.4.1 线性查找:以时间换空间 10.4.2 哈希查找:以空间换时间 10.4 哈希优化策略 在算法题中,我们常通过将线性查找替换为哈希查找来降低算法的时间复杂度。我们借助一个算法题来加深理解。 Question 给…

vscode 插件-01基础

翻译 Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 适用于 VS Code 的中文(简体)语言包 远程连接 Remote Development Remote Development是vscode的远程编程与调试的插件,使用这个插件可以在很多情况下代替vim…

Linux VIM指令

三种模式 命令模式:控制屏幕光标的移动,字符、字或行的删除等输入对文件的一些指令 插入模式:对文件内容进行文字输入 底行摸索:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作…

error LNK2038: 检测到“boost_log_abi”的不匹配项

最近项目上遇到了这个问题,看提示和查阅资料知道是boost版本不匹配的问题,但是项目原因换boost版本不太现实,一时竟然不知道怎么解决。 后来在同事的提示下,对于boost_log相关的代码,引用其头文件时,放到最…

云计算-关系型数据库(Relational Database)

关系数据库服务(RDS)(Relational Database Service (RDS)) Amazon RDS 可用于在云中设置和运行关系数据库。它支持多种数据库实例类型以及多个数据库引擎,如 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 数据库…

Unity环绕物体的摄像机,添加了遮挡的适应

第三人人称摄像机 支持的功能 设定目标后使用鼠标可以环绕目标点旋转,且会进行遮挡的适配,当有遮挡的时候会移动差值移动到没有遮挡的位置。 使用方式 将vThirdPersonCamera 挂在与摄像机上然后为target赋值。 如果有需要检测遮挡的层级可以修改&…