数学建模 碎纸片的拼接复原 灰色关联算法

第一问:

采用灰色关联分析(完美解决~~哈哈,调试出来了)

clc; clear;
% 第一问代码 文件名:Qusetion1.m
filename = 'E:\数学建模论文\暑假数模培训\暑假作业\2013年B题碎纸片\附件1\*.bmp'
files = dir(filename);    %批量载入图像
image = cell(1, size(files, 1)) ;  % 定义一个元组for n=1:numel(files)image{n} = imread(['E:\数学建模论文\暑假数模培训\暑假作业\2013年B题碎纸片\附件1\', files(n).name]);
end[h,z] = size(image{1,1});            % 计算一张图片矩阵的大小(行,列)% 只取最左和最右列进行灰色关联分析
% byz 存放 n 张图片的,最左列 (1980行, n列)
for k=1:nbyz(:, k) = image{1, k}(: , 1);      % 将第k张图片的最左边一列放入矩阵byz的第k列                     byy(:, k) = image{1, k}(: , z);      % 将第k张图片的最右边一列放入矩阵byy的第k列
end%利用页边距寻找第一张图片
for i=1:n                                     % 遍历附件1的所有图片 sum=0;for j=1:h                                 % 遍历 图片最左列 的所有行if byz(j,i) == 255                 % 计算255的个数 sum=sum+1;elsebreak;endendif sum==h                             % 如果 最左列255个数和行数一样,说明他属于第一张图片f=i;end
endpaixu=zeros(1,n);                       % 定义 n列向量,用来排序
index=1;
paixu(index) = f;                        % 选择第一张图片
i = f;guanliandu = ones(n, 1);
rho = 0.45;            % 分辨系数while index <= n - 1cankao = byy(:, i);byz(:, i)= nan;t = repmat(cankao, [1, n]) - byz(:,:) ;mmin = min(min(t));mmax = max(max(t));xishu = (mmin + rho .* mmax) ./ (t +rho .* mmax);guanliandu = mean(xishu);[gsort, ind] = sort(guanliandu, 'descend');i = ind(1);index = index + 1;paixu(index) = i;
end% 通过 系数的排序进行合成图片,在此之前,无论用什么方法,只需要求出关于关联系数的排序就好了
temp = image{ paixu(1) };
for i=2:ntemp=[temp image{ paixu(i)} ];       %将排序好的图片存放与temp
endimshow(temp)                                    %完整显示整张纸片

方案二:采用贪心思想解决

% 第一问代码 文件名:Qusetion1.m
files = dir('E:\数学建模论文\暑假数模培训\暑假作业\2013年B题碎纸片\附件1\*.bmp');    %批量载入图像
image = cell(1, size(files, 1))   % 定义一个元组for n=1:numel(files)image{n} = imread(['E:\数学建模论文\暑假数模培训\暑假作业\2013年B题碎纸片\附件1\', files(n).name]);
end[h,z] = size(image{1,1});            % 计算一张图片矩阵的大小(行,列)% 只取最左和最右列进行灰色关联分析
% byz 存放 n 张图片的,最左列 (1980行, n列)
for k=1:nbyz(:, k) = image{1, k}(: , 1);      % 将第k张图片的最左边一列放入矩阵byz的第k列                     byy(:, k) = image{1, k}(: , z);      % 将第k张图片的最右边一列放入矩阵byy的第k列
end%利用页边距寻找第一张图片
for i=1:n                                     % 遍历附件1的所有图片 sum=0;for j=1:h                                 % 遍历 图片最左列 的所有行if byz(j,i) == 255                 % 计算255的个数 sum=sum+1;elsebreak;endendif sum==h                             % 如果 最左列255个数和行数一样,说明他属于第一张图片f=i;end
endpaixu=zeros(1,n);                       % 定义 n列向量,用来排序
index=1;
paixu(index) = f;                        % 选择第一张图片%依据连续性模型需找匹配点
for i=2:n                                   % n - 1 张图片max=0;                                for j=1:n                               % n 张图片sumofbp = 0;                   % 选取非白色点进行匹配,匹配过程中,非白色点的总数记为sumofbxishu = 0;                         % 用来计算 灰色关联系数 (最大匹配率)for k = 2 : h-1                  % 一张图片(2, h-1)行if byy(k, paixu(index)) ~= 255       %最右一列(第k行, 当前一张图片0~18) != 255 ==> 非白色if byz(k,j) < 255 || byz(k-1,j) < 255 || byz(k+1, j) < 255     % 最左一列(k附近三行, j张图片) => 非白色xishu = xishu+1;                                                        elsexishu = xishu;end;endendif xishu > max                     max = xishu;signal = j;endendindex=index+1;paixu(index)=signal;                       %存放排好序的图片序号
endtemp = image{ paixu(1) };for i=2:ntemp=[temp image{ paixu(i)}];       %将排序好的图片存放与temp
endimshow(temp)                                    %完整显示整张纸片

(中英文都可以复原)

第二问:(等待实现).....

posted @ 2017-08-20 18:40 douzujun 阅读(...) 评论(...) 编辑 收藏

数学建模 碎纸片的拼接复原 灰色关联算法相关推荐

  1. 数学建模笔记——评价类模型之灰色关联分析

    这一篇就简单介绍一下灰色关联分析吧.灰色关联分析主要有两个作用,一是进行系统分析,判断影响系统发展的因素的重要性.第二个作用就是用于综合评价问题,给出研究对象或者方案的优劣排名. 不过这里我只能简单介 ...

  2. 数学建模:评价性模型学习——灰色关联分析法(GRA模型)

    目录 前言 一.灰色关联分析 1.什么是灰色关联分析? 2.流程介绍 二.综合评价 1.数据无量纲化处理 2.确定参考序列 3.确定权重 4.计算灰色关联系数 5.计算灰色加权关联度 6.代码 总结 ...

  3. matlab知道破碎图序号复原,基于MATLAB研究碎纸片的拼接复原.docx

    基于MATLAB研究碎纸片的拼接复原 基于 MATLAB 研究碎纸片的拼接复原晖,江彩云,朱存斌*李明珺,徐(安徽财经大学 统计与应用数学学院,安徽 蚌埠 233030)摘要:针对碎纸片自动拼接复原, ...

  4. 数学建模-关于碎纸片的拼接复原的理解(2003年建模国赛B题 附Matlab源码)

    目录 赛题解析 题目 解题思路 算法细节 运行结果 Matlab源码 赛题解析 题目 2013年B题 碎纸片的拼接复原     破碎文件的拼接在司法物证复原.历史文献修复以及军事情报获取等领域都有着重 ...

  5. 数学建模还原纸片matlab程序,碎纸片的拼接复原问题大学生数学建模全国一等奖论文.doc...

    碎纸片的拼接复原问题 摘要 为解决碎纸片的拼接复原问题,我们通过定义差异度指数.高度差,建立0-1规划模型,使用聚类分析.MATLAB搜索算法和人工干预等相结合,得到了所有附件复原序号和复原图片. 针 ...

  6. 暑假matlab最后一次训练(编程题)碎纸片的拼接复原(前2题)

    对于给定的来自同一页印刷文字文件的碎纸机破碎纸片(仅纵切),建立碎纸片拼接复原模型和算法,并针对附件1.附件2给出的中.英文各一页文件的碎片数据进行拼接复原.如果复原过程需要人工干预,请写出干预方式及 ...

  7. 碎纸片的拼接复原-基于边缘匹配思想

    目录 选题 题目背景 问题提出 问题分析 文献查找 建立数学模型 方法选取的数学思想: 建模过程 工具选择与应用 代码实现 结果 附件 选题 题目背景 破碎文件的拼接在司法物证复原.历史文献修复以及军 ...

  8. matlab彩色碎片拼接与复原_碎纸片的拼接复原算法及MATLAB实现.doc

    碎纸片的拼接复原算法及MATLAB实现 2013高教社杯全国大学生数学建模竞赛 承 诺 书 我们仔细阅读了<全国大学生数学建模竞赛章程>和<全国大学生数学建模竞赛 赛区评阅编号(由赛 ...

  9. 碎纸片的拼接复原算法及MATLAB实现

    碎纸片的拼接复原算法及MATLAB实现 摘要:对于只有纵切的情形,文章通过比较当前待拼碎片与剩余碎片的信噪比psnr[1,3,4]的值来确定两碎片是否为邻接碎片:拼接算法首先连续调用右拼函数直到拼接到 ...

最新文章

  1. 类和实例方法有什么区别?
  2. 二叉树相关性质以及数学证明
  3. 未到期的应收票据贴现时如何记账
  4. VS中安装DevExpress后在Winform的工具箱中不显示控件
  5. vmware, failed to lock the file 的解决
  6. day35-mysql之表的详细操作
  7. 禅道报表中关闭bug统计图_想要简单制作数据可视化分析报表?这个工具绝对好用...
  8. Spring Boot整合MongoDB实现增删改查
  9. 删除桌面图标的小箭头
  10. 如何设置硬盘安装linux,linux用硬盘安装时所设置选项
  11. linux服务之NTP及chrony时间同步
  12. linux光盘挂载加载过程,如何在Linux系统下挂载光盘
  13. 【问题】myeclipse启动时Tocmat错误:cound not create the view :An unexpencted expetion was thrown
  14. “汽车人”眼中的网络安全-网络安全的5W1H
  15. 集大计算机与科学的研究生,明天,我是研究生丨感谢集大,我遇见了更好的自己...
  16. Linux(6)RedHat7 基本命令五-hwclock(clock)命令详解
  17. docker 清理磁盘
  18. linux下文件的重命名方法
  19. Flutter集成友盟的SDK
  20. [Luogu4169] [Violet]天使玩偶/SJY摆棋子 [cdq分治/k-d tree]

热门文章

  1. Zabbix-监控系统
  2. java集成ogre_ogre3d环境配置 SDK安装配置及简单事例教程
  3. 非常全的各大IT公司面试题集
  4. 数组splice方法
  5. 微控制器CPU性能测试基准CoreMark
  6. 海明码的C++程序实现
  7. Android 开发之 ---- 底层驱动开发
  8. ITIL学习笔记——ITIL核心流程
  9. 安装、配置和测试Asterisk过程中遇到的问题及解决方法
  10. Directx11渲染管线概述