数学建模 2013B碎纸片的拼接复原

一、读取所有图片

%A=imread('C:\Users\admin\Desktop\数学建模\数学建模\2013B\附件1\000.bmp');
%imshow(A);
file_path =  'C:\Users\admin\Desktop\数学建模\数学建模\2013B\附件1\';% 图像文件夹路径
img_path_list = dir(strcat(file_path,'*.bmp'));%获取该文件夹中所有jpg格式的图像
img_num = length(img_path_list);%获取图像总数量
image=cell(1,img_num);
if img_num > 0 %有满足条件的图像
        for j = 1:img_num %逐一读取图像
            image_name = img_path_list(j).name;% 图像名
            image{j} =  imread(strcat(file_path,image_name));
            fprintf('%d %d %s\n',i,j,strcat(file_path,image_name));% 显示正在处理的图像名
            %图像处理过程 省略
        end
end
%imshow(image);

二、以灰度值矩阵储存

0~255=>0/1

%仅为一个示例
thresh=graythresh(image{1});%自动获取阈值
tu = imbinarize(image{1},thresh2);%二值化
Matrix1=tu;%将二值化图像转化为矩阵

三、每张纸条最右匹配其余纸条最左

并将最匹配的存在一张[2,19]的二维表中

match=0;%匹配度计数
right=zeros(2,19);%第一行:匹配度最大的纸条编号  第二行:其匹配数
%disp(Matrix(:,1));
for i = 1:img_num %每个纸条(i)都要轮一遍
    for j=1:img_num %每个纸条的右侧都要和其余纸条(j)的左侧匹配一次
        if i==j %轮到自身左右配对,跳过
            continue
        end
        for k=1:1980 %长度为1980像素
            if Matrix{i}(k,72)==Matrix{j}(k,1)
                match=match+1;
            end
        end
        if match>right(2,i)
            right(2,i)=match;
            right(1,i)=j;
        end 
        match=0;
    end
end

在这里插入图片描述

四、求出最左侧的纸条

for i=1:19
    sum=0;
    for j=1:1980
        if Matrix{i}(j,1)==1
            sum=sum+1;
        end
    end
    if(sum>max)
        max=sum;
        leftest=i;
    end
end

五、拼接

将两个数组结合成一个,先定义一个空数组,如A= [ ],然后再把两个数组依次赋给A,见下例。

A=[]; a=[1 2]; b=[3 4];A=[A a];A =1 2
A=[A b]; A =1 2 3 4

next=leftest;
disp(leftest);
all=Matrix{next};
for i=1:18
    next=right(1,next);
    all=[all,Matrix{1,next}];   
end
imshow(all);

结果截图:
在这里插入图片描述

  • 8
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值