数学建模 B题 碎纸片的拼接复原__MATLAB源程序

第一问:

采用灰色关联分析(有误差,待优化):

clc; clear;
% 第一问代码 文件名: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:n
   byz(:, 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;
        else
            break;
        end
    end
    if sum==h                             % 如果 最左列255个数和行数一样,说明他属于第一张图片
        f=i;
    end
end

paixu=zeros(1,n);                       % 定义 n列向量,用来排序
index=1;
paixu(index) = f;                        % 选择第一张图片

guanliandu = ones(n, 1);

rho = 0.4;            % 分辨系数

% cankao = byy(:, 9);
% t = repmat(cankao, [1, n]) - byz(:,:) ;
% mmin = min(min(abs(t)));
% mmax = max(max(abs(t)));
% xishu = (mmin + rho .* mmax) ./ (t +rho .* mmax);
% guanliandu = mean(xishu)
% [gsort, ind] = sort(guanliandu, ‘descend‘)

i = 9;
flag = zeros(19, 1);
while index <= 18
        cankao = byy(:, i);
        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(2);
        index = index + 1;
        paixu(index) = i;
end

%
%  9    15    13    16     4    11     3    17     2     5     6    10   14    19    12     8    18     1     7
%  4     7     3     8    16    19    12     1     6     2    10    14    11     9    13    15    18   17     5

% 通过 系数的排序进行合成图片,在此之前,无论用什么方法,只需要求出关于关联系数的排序就好了
temp = image{ paixu(1) };
for i=2:n
    temp=[temp image{ paixu(i)} ];       %将排序好的图片存放与temp
end

imshow(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:n
   byz(:, 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;
        else
            break;
        end
    end
    if sum==h                             % 如果 最左列255个数和行数一样,说明他属于第一张图片
        f=i;
    end
end

paixu=zeros(1,n);                       % 定义 n列向量,用来排序
index=1;
paixu(index) = f;                        % 选择第一张图片

%依据连续性模型需找匹配点
for i=2:n                                   % n - 1 张图片
    max=0;
    for j=1:n                               % n 张图片
        sumofbp = 0;                   % 选取非白色点进行匹配,匹配过程中,非白色点的总数记为sumofb
        xishu = 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;
                else
                    xishu = xishu;
                end;
            end
        end
    if xishu > max
       max = xishu;
       signal = j;
    end
  end
    index=index+1;
    paixu(index)=signal;                       %存放排好序的图片序号
end

temp = image{ paixu(1) };

for i=2:n
    temp=[temp image{ paixu(i)}];       %将排序好的图片存放与temp
end

imshow(temp)                                    %完整显示整张纸片

(中英文都可以复原)

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

时间: 2024-10-26 23:25:11

数学建模 B题 碎纸片的拼接复原__MATLAB源程序的相关文章

2017数学建模B题摘要

刚刚过去的全国大学生数学建模竞赛有参加的吗,大家觉得难度怎么样呢,反正我觉得自己组实力还不够,就当是锻炼自己的能力,分享一下我们的摘要吧! "拍照赚钱"的任务定价 摘  要 在信息化时代,"拍照赚钱"已成为移动互联网下的一种自助式服务模式,通过用户下载 APP,注册成为 APP 的会员,然后从 APP 上领取需要拍照的任务,赚 取APP 对任务所标定的酬金.本文主要研究了用户任务执行情况变量与gps纬度.gps 经度.任务标价之间的函数关系问题.在充分理解题意及合理

数学建模2012A题部分解答基于R语言

1 library(xlsx) 2 library(nortest) 3 library(Kendall) 4 library(stats) 5 6 chart1 <- read.xlsx("E:/迅雷下载/cumcm2012problems/A/附件1-葡萄酒品尝评分表.xls",stringsAsFactors = FALSE,sheetIndex = 1,header = F,encoding = "UTF-8") 7 chart2 <- read

数学建模竞赛题目

建模意义 思考方法 数学建模是一种数学的思考方法,是运用数学的语言和方法,通过抽象.简化建立能近似刻画并"解决"实际问题的一种强有力的数学手段. 数学建模就是用数学语言描述实际现象的过程.这里的实际现象既包涵具体的自然现象比如自由落体现象,也包含抽象的现象比如顾客对某种商品所取的价值倾向.这里的描述不但包括外在形态,内在机制的描述,也包括预测,试验和解释实际现象等内容. 我们也可以这样直观地理解这个概念:数学建模是一个让纯粹数学家(指只研究数学而不管数学在实际中的应用的数学家)变成物理

2018数学建模国赛总结(A题/编程选手视角)

2018数学建模已经告一段落了,先说说基本情况吧,我们队伍专业分别为:金融(A),会计(B),计算机(我),配置还算可以,他们俩会数据分析软件也会写论文,我可以写代码,画图.他们俩打过美赛(M奖),我只打过算法竞赛.这里特别提出,有会写论文的队友很重要,不是说会latex会排版就算会,还要知道论文基本架构,遣词造句,专业术语等等. 题目下来的晚上,我们就确定了A题,因为B题的话我们基本没有专业知识能用上的,什么都要现学,其实特别想做C题,推荐系统啊,经济学分析啊我们都做过,可惜选不了….确定题目

2015年“深圳杯”数学建模夏令营-B题:DNA序列的k-mer index 问题

这是一个山科大的同学给我的一个问题,向我询问一下思路,对于数学建模,我没太多的了解,所以只能用计算机程序的方法来解答. 这是具体的问题: 这个问题来自 DNA序列的k-mer index问题. 给定一个DNA序列,这个系列只含有4个字母ATCG,如 S ="CTGTACTGTAT".给定一个整数值k,从S的第一个位置开始,取一连续k个字母的短串,称之为k-mer(如k= 5,则此短串为CTGTA), 然后从S的第二个位置, 取另一k-mer(如k= 5,则此短串为TGTAC),这样直至

2019美国大学生数学建模竞赛B题(思路)

建模比赛已经过去三天了,但留校的十多天里,自己的收获与感受依然长存于心.下面的大致流程,很多并没有细化,下面很多情况都是在假设下进行的,比如假设飞机能够来回运送药品,运货无人机就只运货,在最大视距下侦查等. 题目下载:点击下载 首先,因为这道题中的变量太多,我们需要对变量的数量进行减小. 一.变量设置 二.约束条件 1.从基地运输到医院的药包量必须满足医院的需求. 2.无人机最大行驶距离能否满足来回医院. 三.目标函数 1.计算基地到医院的时间: 2.我们希望时间最优(最短),则取满足约束条件b

数学建模竞赛“爱你不容易,爱你不后悔”

2011年6月份高中毕业,就读本科,2013年暑假8月份,参加学校为期一个月的数学建模培训,然后9月份的第二个周末在东南大学参加为期三天的全国大学生数学建模竞赛,"意外"获得全国大学生数学建模竞赛二等奖:2015年6月份本科毕业,攻读硕士研究生,2016年暑假,因实习没有参加学校组织的数学建模培训,9月份的第三个周末在南京邮电大学参加为期4.5天的全国研究生数学建模竞赛,"如愿"获得全国研究生数学建模竞赛一等奖,随后在重庆大学参加"华为杯"第十三

数学建模比赛论文的基本结构

一.常用的三种结构 一 二 三 1.摘要 1.摘要 1.摘要 2.问题重述 2.问题的提出与重述.问题的分析 2.问题的叙述.背景的分析 3.问题的分析 3.变量假设 3.模型的假设.符号说明 4.模型假设 4.模型建立 4.模型建立 5.符号说明 5.模型求解 5.模型求解 6.模型建立 6.模型分析与检验 6.模型检验 7.模型求解 7.模型的评价与推广 7.模型评价 8.结果分析.验证.模型检验及修正 8.参考文献 8.参考文献 9.模型评价 9.附录 9.附录 10.参考文献     1

数学建模笔记(一)

问题:全国大学生数学建模竞赛2012年A题第一题第一小问--分析附件1中两组评酒员的评价结果有无显著性差异. 工具:Excle.SPSS19中文版 以两组红葡萄酒的评分为例,综合运用t检验.方差分析.χ2检验,符号检验和秩和检验分别求解.其中t检验和方差分析属于参数检验,需要总体服从正态分布且需要检验方差齐性.χ2检验.符号检验和秩核检验属于非参数检验. 1)首先用Excle对原数据进行处理,得到品酒员对酒样的总评分: 注:其中4号品酒员对酒样20色调的评分缺失,用其他九位品酒员的评分均值替代.