Photo1_1:

clear;clc;
path='E:\B\附件1\';
files=dir('E:\B\附件1\*.bmp');
% objdir='E:\B\附件1\';
% bgfile=[objdir,['00' int2str(i)],'.bmp'];
% lengthf=length(files);
% for i=1:lengthf
% img=imread(strcat('E:\B\附件1\',files(i).name));
% imshow(img);
% end
% bg=imread([path,files(1).name]);
% imshow(bg);
% imageinfo([path,files(1).name])
xsmat=ones(19,19);
for i=1:19
imi=imread([path,files(i).name]);
[mrow,mcol]=size(imi);
for j=1:19
imj=imread([path,files(j).name]);
timi=im2double(imi);
timj=im2double(imj);
xssum=sum(abs(timi(:,mcol)-timj(:,1)));%计算图像i和图像j的相似度。
xsmat(i,j)=xssum;
end
end
first=0;last=0;
for i=1:19
img=imread([path,files(i).name]);
[ro,co]=size(img);
tot=0;
for j=1:ro
if(img(j,1)==255)
tot=tot+1;
end
end
if tot==ro
first=i;
break;
end
end
que=[];
que=[que first];
flag=1;
pos=1;
tf=first;
while(flag==1)
t=255*255*254;
tp=0;
for i=1:19
if i~=tf
if t>xsmat(tf,i)
t=xsmat(tf,i);
tp=i;
end
end
end
tf=tp;
pos=pos+1;
que=[que tp];
if pos==19
flag=0;
end end tim=[];
for i=1:19
im=imread([path files(que(i)).name]);
tim=[tim im];
end
imshow(tim);

  Photo1_2:

clear;clc;
path='E:\B\附件2\';
files=dir('E:\B\附件2\*.bmp');
xsmat=ones(19,19);
for i=1:19
imi=imread([path,files(i).name]);
[mrow,mcol]=size(imi);
for j=1:19
imj=imread([path,files(j).name]);
timi=im2double(imi);
timj=im2double(imj);
xssum=sum((timi(:,mcol)-timj(:,1)).^2);%计算图像i和图像j的相似度。
xsmat(i,j)=xssum;
end
end
first=0;last=0;
for i=1:19
img=imread([path,files(i).name]);
[ro,co]=size(img);
tot=0;
for j=1:ro
if(img(j,1)==255)
tot=tot+1;
end
end
if tot==ro
first=i;
break;
end
end
que=[]
que=[que first];
flag=1;
pos=1;
tf=first;
while(flag==1)
t=255*255*254;
tp=0;
for i=1:19
if i~=tf
if t>xsmat(tf,i)
t=xsmat(tf,i);
tp=i;
end
end
end
tf=tp;
pos=pos+1;
que=[que tp];
if pos==19
flag=0;
end end tim=[];
for i=1:19
im=imread([path files(que(i)).name]);
tim=[tim im];
end
imshow(tim);

  

photo2_1_a:

clear;clc;
path='E:\B\附件3\';
files=dir('E:\B\附件3\*.bmp');
fl=length(files); eig=[];%特征向量矩阵
for i=1:fl
imi=imread([path,files(i).name]);
[ro,co]=size(imi);
thresh=graythresh(imi);%图像二值化;
imj=im2bw(imi,thresh);
t=[];
for j=1:ro
if min(imj(j,:))==0
t=[ t 0];
else
t=[t 1];
end
end
eig=[eig t'];
end P=eig;
net=newc(minmax(P),11,0.1);
net.trainParam.epochs=200;
net=init(net);
% net=newsom(P,[11]);
net=train(net,P);
Y=sim(net,P);
y=vec2ind(Y);
% y=kmeans(P',11); % 测试分类
te=[];
for i=1:11
tot=0;
for j=1:209
if y(j)==i
tot=tot+1;
end
end
te=[te tot];
end c1=[];c2=[];c3=[];c4=[];c5=[];c6=[];c7=[];c8=[];c9=[];c10=[];c11=[];
for i=1:fl
if y(i)==1 c1=[c1 i];
elseif y(i)==2 c2=[c2 i];
elseif y(i)==3 c3=[c3 i];
elseif y(i)==4 c4=[c4 i];
elseif y(i)==5 c5=[c5 i];
elseif y(i)==6 c6=[c6 i];
elseif y(i)==7 c7=[c7 i];
elseif y(i)==8 c8=[c8 i];
elseif y(i)==9 c9=[c9 i];
elseif y(i)==10 c10=[c10 i];
else c11=[c11 i];
end
end
c1=sort(c1);c2=sort(c2);c3=sort(c3);c4=sort(c4);c5=sort(c5);c6=sort(c6);c7=sort(c7);c8=sort(c8);c9=sort(c9);c10=sort(c10);c11=sort(c11);
%人工干预

  

photo2_1_b:

% 求最左边的图片
leftque=[];
cntnum=zeros(fl,1);
maxnum=0;
tmax=0;tpos=0;
for i=1:fl
imi=imread([path,files(i).name]);
[ro,co]=size(imi);
thresh=graythresh(imi);%图像二值化;
imj=im2bw(imi,thresh);
tot=0;
for j=1:co
if min(imj(:,j))==1
tot=tot+1;
else
break;
end
end
if i==8
maxnum=tot;
end
if tmax<tot
tmax=tot;tpos=i;
end
cntnum(i)=tot;
end for i=1:fl
if cntnum(i)>=maxnum
leftque=[leftque i];
end
end
leftque; %构建209*209相似度矩阵
x2smat=ones(209,209);
for i=1:fl
imi=imread([path,files(i).name]);
% thresh=graythresh(imi);
% tmi=im2bw(imi,thresh);
for j=1:fl
imj=imread([path,files(j).name]);
% thresh=graythresh(imj);
% tmj=im2bw(imj,thresh);
timi=im2double(imi);
timj=im2double(imj);
x2ssum=sum(abs(timi(:,co)-timj(:,1)));
x2smat(i,j)=x2ssum;
end
end

  

photo2_1_c:

%%组合每行碎片
c=[ 8 1 33 46 54 57 69 71 94 127 138 139 154 159 167 175 176 197 209;
169 2 19 24 27 31 42 51 63 77 87 88 101 121 143 148 180 192 196;
50 3 12 23 29 55 58 66 92 96 119 130 142 144 179 187 189 191 193;
15 4 13 32 40 52 74 83 108 116 129 135 136 160 161 170 177 200 204;
90 5 41 102 103 109 114 115 118 120 124 141 147 152 155 156 186 195 208;
126 14 17 22 67 107 110 111 140 146 151 158 174 182 183 185 188 198 205 ;
30 6 11 38 45 49 56 60 65 76 93 99 105 112 172 173 181 202 207;
62 7 20 21 37 53 64 68 70 73 79 80 97 100 117 132 163 164 178;
39 9 10 25 26 36 47 75 82 89 104 106 123 131 149 162 168 190 194;
72 16 18 28 34 61 81 84 86 133 134 153 157 166 171 199 201 203 206;
95 35 43 44 48 59 78 85 91 98 113 122 125 128 137 145 150 165 184];
p1=c(1,:);p2=c(2,:);p3=c(3,:);p4=c(4,:);p5=c(5,:);p6=c(6,:);p7=c(7,:);p8=c(8,:);
p9=c(9,:);p10=c(10,:);p11=c(11,:); q1=cocom(p1);%根据相似度求每列的顺序
q2=cocom(p2);q3=cocom(p3);q4=cocom(p4);q5=cocom(p5);q6=cocom(p6);q7=cocom(p7);
q8=cocom(p8);q9=cocom(p9);q10=cocom(p10);q11=cocom(p11);
f1=[8 209 139 159 127 69 176 46 175 1 138 54 57 94 154 71 167 33 197 ];
f2=[169 101 77 63 143 31 42 24 148 192 51 180 121 87 196 27 2 88 19];
f3=[50 55 66 144 187 3 58 193 179 119 191 96 12 23 130 29 92 189 142];
f4=[15 129 4 160 83 200 136 13 74 161 204 170 135 40 32 52 108 116 177];
f5=[90 147 103 155 115 41 152 208 156 141 186 109 118 5 102 114 195 120 124];
f6=[126 14 183 110 198 17 185 111 188 67 107 151 22 174 158 182 205 140 146];
f7=p7(q7);
f8=[62 20 79 68 70 100 163 97 132 80 64 117 164 73 7 178 21 53 37];
f9=[39 149 47 162 25 36 82 190 123 104 131 194 89 168 26 9 10 106 75];
f10=[72 157 84 133 201 18 81 34 203 199 16 134 171 206 86 153 166 28 61];
f11=[95 35 85 184 91 48 122 43 125 145 78 113 150 98 137 165 128 59 44];
tm1=[];tm2=[];tm3=[];tm4=[];tm5=[];tm6=[];tm7=[];tm8=[];tm9=[];tm10=[];tm11=[];
for i=1:19
tpim=imread([path,files(f1(i)).name]);
tm1=[tm1 tpim];
tpim1=imread([path,files(f2(i)).name]);
tm2=[tm2 tpim1];
tpim2=imread([path,files(f3(i)).name]);
tm3=[tm3 tpim2];
tpim3=imread([path,files(f4(i)).name]);
tm4=[tm4 tpim3];
tpim4=imread([path,files(f5(i)).name]);
tm5=[tm5 tpim4];
tpim5=imread([path,files(f6(i)).name]);
tm6=[tm6 tpim5];
tpim6=imread([path,files(f7(i)).name]);
tm7=[tm7 tpim6];
tpim7=imread([path,files(f8(i)).name]);
tm8=[tm8 tpim7];
tpim8=imread([path,files(f9(i)).name]);
tm9=[tm9 tpim8];
tpim9=imread([path,files(f10(i)).name]);
tm10=[tm10 tpim9];
tpim10=imread([path,files(f11(i)).name]);
tm11=[tm11 tpim10];
end %%组合11张横向碎片 %first 50 tm3;
[a,b]=size(tm3);
eu=[];ed=[];%tm矩阵的第一行和最后一行;
eu=[eu tm1(1,:);tm2(1,:);tm3(1,:);tm4(1,:);tm5(1,:);tm6(1,:);tm7(1,:);tm8(1,:);tm9(1,:);tm10(1,:);tm11(1,:)];
ed=[ed tm1(a,:);tm2(a,:);tm3(a,:);tm4(a,:);tm5(a,:);tm6(a,:);tm7(a,:);tm8(a,:);tm9(a,:);tm10(a,:);tm11(a,:)];
eu=im2double(eu);
ed=im2double(ed);
ei=zeros(11,11);
for i=1:11
for j=1:11
eimat(i,j)=sum(abs(ed(i,:)-eu(j,:)));
end
end first=3;
q2ue=[];ff=ones(11,1);
q2ue=[q2ue first];ff(first)=-1;
flag=1;
pos=1;
tf=first;
while(flag==1)
t=255*255*254;
tp=0;
for i=1:11
if i~=tf && ff(i)~=-1;
if t>eimat(tf,i)
t=eimat(tf,i);
tp=i;
end
end
end
tf=tp;ff(tf)=-1;
pos=pos+1;
q2ue=[q2ue tp];
if pos==11
flag=0;
end
end
% imshow(tm4)
fim=[tm3;tm8;tm2;tm9;tm10;tm4;tm11;tm6;tm7;tm1;tm5;];
imshow(fim);

  

cocom函数:

function fc=cocom(p)%根据相似度求行的排列顺序
load x2smat.mat
p1=p;tp1=p1;
fc=[1];
lo=1;tp1(1)=-1;
flag=1;tot=0;
while(flag==1)
tot=tot+1;
tpo=0;
min=255*255*255;
for i=1:19
if i~=lo && tp1(i)~=-1
if min>x2smat(p1(lo),p1(i))
min=x2smat(p1(lo),p1(i));
tpo=i;
end
end
end
fc=[fc tpo];
lo=tpo;
tp1(lo)=-1;
if tot==18
flag=0;
end
end
% la=0;
% for i=1:19
% if tp1(i)~=-1
% la=i;
% end
% end
% fc=[fc la];

  Photo2_2_a:

clear;clc;
path='E:\B\附件4\';
files=dir('E:\B\附件4\*.bmp');
fl=length(files); eig=[];%特征向量矩阵
for i=1:fl
imi=imread([path,files(i).name]);
[ro,co]=size(imi);
thresh=graythresh(imi);%图像二值化;
imj=im2bw(imi,thresh);
t=[];
for j=1:ro
if sum(imj(j,:))<56
t=[t 1];
else
t=[t 0];
end
end
eig=[eig t'];
end P=eig;
net=newc(minmax(P),11,0.1);
net.trainParam.epochs=250;
net=init(net);
% net=newsom(P,[11]);
net=train(net,P);
Y=sim(net,P);
y=vec2ind(Y);
% y=kmeans(P',11); % 测试分类
te=[];
for i=1:11
tot=0;
for j=1:209
if y(j)==i
tot=tot+1;
end
end
te=[te tot];
end c1=[];c2=[];c3=[];c4=[];c5=[];c6=[];c7=[];c8=[];c9=[];c10=[];c11=[];
for i=1:fl
if y(i)==1 c1=[c1 i];
elseif y(i)==2 c2=[c2 i];
elseif y(i)==3 c3=[c3 i];
elseif y(i)==4 c4=[c4 i];
elseif y(i)==5 c5=[c5 i];
elseif y(i)==6 c6=[c6 i];
elseif y(i)==7 c7=[c7 i];
elseif y(i)==8 c8=[c8 i];
elseif y(i)==9 c9=[c9 i];
elseif y(i)==10 c10=[c10 i];
else c11=[c11 i];
end
end
c1=sort(c1);c2=sort(c2);c3=sort(c3);c4=sort(c4);c5=sort(c5);c6=sort(c6);c7=sort(c7);c8=sort(c8);c9=sort(c9);c10=sort(c10);c11=sort(c11);
%人工干预

  Photo2_2_b:

% 求最左边的图片
leftque=[];
cntnum=zeros(fl,1);
maxnum=0;
tmax=0;tpos=0;
for i=1:fl
imi=imread([path,files(i).name]);
[ro,co]=size(imi);
thresh=graythresh(imi);%图像二值化;
imj=im2bw(imi,thresh);
tot=0;
for j=1:co
if min(imj(:,j))==1
tot=tot+1;
else
break;
end
end
if i==172
maxnum=tot;
end
if tmax<tot
tmax=tot;tpos=i;
end
cntnum(i)=tot;
end for i=1:fl
if cntnum(i)>0
leftque=[leftque i];
end
end
leftque=[19 20 70 81 86 132 159 171 191 201 208];leftque=leftque+1; %构建209*209相似度矩阵
x2smat=ones(209,209);
for i=1:fl
imi=imread([path,files(i).name]);
% thresh=graythresh(imi);
% tmi=im2bw(imi,thresh);
for j=1:fl
imj=imread([path,files(j).name]);
% thresh=graythresh(imj);
% tmj=im2bw(imj,thresh);
timi=im2double(imi);
timj=im2double(imj);
x2ssum=sum(abs(timi(:,co)-timj(:,1)));
x2smat(i,j)=x2ssum;
end
end

  Photo2_2_c:

%%组合每行碎片
c=[
10 11 17 19 36 43 45 56 57 67 75 84 135 146 153 158 172 184 206;
6 25 30 31 38 41 47 52 59 60 87 93 99 108 118 128 151 159 187;
16 21 37 42 44 46 74 77 80 109 117 136 137 144 162 174 180 200 208;
2 32 39 51 54 64 86 98 121 124 130 139 140 154 160 161 176 188 204;
8 22 34 50 55 62 63 113 119 120 134 143 163 169 170 190 193 198 209;
7 18 27 29 79 81 92 95 101 102 104 114 147 149 165 171 197 199 202;
20 23 58 72 83 89 94 106 115 122 127 142 152 156 166 177 183 195 203;
4 14 26 28 35 70 96 111 112 131 133 145 164 167 168 179 182 189 207;
9 15 24 48 61 69 71 85 91 97 100 110 123 138 157 173 175 186 196;
1 13 49 53 73 78 82 88 90 103 116 125 126 129 132 141 178 194 201;
3 5 12 33 40 65 66 68 76 105 107 148 150 155 181 185 191 192 205];
p1=c(1,:);p2=c(2,:);p3=c(3,:);p4=c(4,:);p5=c(5,:);p6=c(6,:);p7=c(7,:);p8=c(8,:);
p9=c(9,:);p10=c(10,:);p11=c(11,:); q1=cocom(p1);%根据相似度求每列的顺序
q2=cocom(p2);q3=cocom(p3);q4=cocom(p4);q5=cocom(p5);q6=cocom(p6);q7=cocom(p7);
q8=cocom(p8);q9=cocom(p9);q10=cocom(p10);q11=cocom(p11);
f1=[172 43 67 206 11 158 75 146 84 135 56 19 57 36 17 10 184 153 45];
f2=[87 52 108 30 41 159 187 99 25 118 151 6 60 59 93 31 38 47 128];
f3=[21 42 109 117 137 74 37 208 136 16 77 44 200 46 174 80 162 180 144];
f4=[160 140 2 130 64 139 154 54 39 124 121 176 86 51 161 188 98 204 32];
f5=[209 22 8 50 62 120 34 143 169 63 170 55 193 134 119 190 163 198 113];
f6=[202 149 171 197 199 95 114 165 79 104 92 81 102 27 101 7 18 29 147];
f7=[20 195 94 142 89 122 127 106 156 115 177 183 152 23 58 203 72 166 83];
f8=[133 182 96 70 168 164 167 189 112 145 207 4 131 35 14 111 26 28 179];
f9=[71 85 61 15 69 175 138 196 9 48 173 157 97 24 100 123 91 186 110];
f10=[82 78 129 201 132 53 126 141 194 88 90 49 73 13 178 125 1 103 116];
f11=[192 76 12 155 191 185 3 105 181 65 107 5 150 33 205 66 40 68 148];
tm1=[];tm2=[];tm3=[];tm4=[];tm5=[];tm6=[];tm7=[];tm8=[];tm9=[];tm10=[];tm11=[];
for i=1:19
tpim=imread([path,files(f1(i)).name]);
tm1=[tm1 tpim];
tpim1=imread([path,files(f2(i)).name]);
tm2=[tm2 tpim1];
tpim2=imread([path,files(f3(i)).name]);
tm3=[tm3 tpim2];
tpim3=imread([path,files(f4(i)).name]);
tm4=[tm4 tpim3];
tpim4=imread([path,files(f5(i)).name]);
tm5=[tm5 tpim4];
tpim5=imread([path,files(f6(i)).name]);
tm6=[tm6 tpim5];
tpim6=imread([path,files(f7(i)).name]);
tm7=[tm7 tpim6];
tpim7=imread([path,files(f8(i)).name]);
tm8=[tm8 tpim7];
tpim8=imread([path,files(f9(i)).name]);
tm9=[tm9 tpim8];
tpim9=imread([path,files(f10(i)).name]);
tm10=[tm10 tpim9];
tpim10=imread([path,files(f11(i)).name]);
tm11=[tm11 tpim10];
end %组合11张横向碎片 %first 50 tm3;
[a,b]=size(tm3);
eu=[];ed=[];%tm矩阵的第一行和最后一行;
eu=[eu tm1(1,:);tm2(1,:);tm3(1,:);tm4(1,:);tm5(1,:);tm6(1,:);tm7(1,:);tm8(1,:);tm9(1,:);tm10(1,:);tm11(1,:)];
ed=[ed tm1(a,:);tm2(a,:);tm3(a,:);tm4(a,:);tm5(a,:);tm6(a,:);tm7(a,:);tm8(a,:);tm9(a,:);tm10(a,:);tm11(a,:)];
eu=im2double(eu);
ed=im2double(ed);
ei=zeros(11,11);
for i=1:11
for j=1:11
eimat(i,j)=sum(abs(ed(i,:)-eu(j,:)));
end
end first=3;
q2ue=[];ff=ones(11,1);
q2ue=[q2ue first];ff(first)=-1;
flag=1;
pos=1;
tf=first;
while(flag==1)
t=255*255*254;
tp=0;
for i=1:11
if i~=tf && ff(i)~=-1;
if t>eimat(tf,i)
t=eimat(tf,i);
tp=i;
end
end
end
tf=tp;ff(tf)=-1;
pos=pos+1;
q2ue=[q2ue tp];
if pos==11
flag=0;
end
end
% imshow(tm7)
fim=[tm11;tm6;tm2;tm7;tm4;tm3;tm5;tm9;tm8;tm1;tm10];
imshow(fim);

  

2013B题碎纸片拼接的更多相关文章

  1. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  2. hdu5355 Cake

    Problem Description There are m soda and today is their birthday. The 1-st soda has prepared n cakes ...

  3. 结队编程--java实现

    1.GitHub地址:https://github.com/caiyouling/Myapp 队友:钟小敏 GitHub地址:https://github.com/zhongxiao136/Myapp ...

  4. 算法题:给出一组数字,拼接一个最大的值 PHP

    举例如下:'9235','42','9','5','8','32','136','343','45' 则拼接的最大的数为 : 9-9235-8-5-45-42-343-32-136 网上坑多,想了很久 ...

  5. leetCode刷题(找到两个数组拼接后的中间数)

    There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...

  6. 一题多解(三)—— Python 字符串的拼接

    1. format def event_log(name, time): print('Event: {}, happens at {}'.format(name, str(time))) 2. 使用 ...

  7. C算法编程题(三)画表格

    前言 上一篇<C算法编程题(二)正螺旋> 写东西前还是喜欢吐槽点东西,要不然写的真还没意思,一直的想法是在博客园把自己上学和工作时候整理的东西写出来和大家分享,就像前面写的<T-Sq ...

  8. leetcode刷题全纪录(持续更新)

    2.Add Two Numbers 原题链接https://leetcode.com/problems/add-two-numbers/ AC解: public ListNode addTwoNumb ...

  9. 44个 Javascript 变态题解析 (上\下)

    第1题 ["1", "2", "3"].map(parseInt) 知识点: Array/map Number/parseInt JavaS ...

随机推荐

  1. 路飞学城-Python爬虫集训-第三章

    这个爬虫集训课第三章的作业讲得是Scrapy 课程主要是使用Scrapy + Redis实现分布式爬虫 惯例贴一下作业: Python爬虫可以使用Requests库来进行简单爬虫的编写,但是Reque ...

  2. 2019-3-16-win10-uwp-鼠标移动到图片上切换图片

    title author date CreateTime categories win10 uwp 鼠标移动到图片上切换图片 lindexi 2019-03-16 14:43:46 +0800 201 ...

  3. 全栈之路-杂篇-前端Http请求封装优化

    在项目开发过程中,代码的封装是很有必要的,我觉得这是程序员进阶的一个重要的技能,不会封装代码,你的代码看起来乱的一批,基本上不能维护,像一次性塑料袋一样,用完一次就失去了价值,这同时也会无缘无故的增加 ...

  4. Ionic cordova-plugin-splashscreen

    1.添加插件 cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git 2.设置启动画面 在根目录下面r ...

  5. Django项目:CRM(客户关系管理系统)--83--73PerfectCRM实现CRM模板统一

    {#king_index.html#} {## ————————73PerfectCRM实现CRM模板统一————————#} {% extends "master/sample.html& ...

  6. Yaf--个人封装yaf的框架+swoole+elasticsearch(Window+linux版)

    这是基于c写底层的yaf框架集成PDO+predis+读写分离+composer+全局异常处理+多模块开发+Log日志记录简单容易上手的框架 注意:window版没有swoole和Smarty主要用作 ...

  7. linux 获取外网ip地址

    curl ifconfig.me 私有ip地址,获取公网ip

  8. [jeecms]获取父栏目下的子栏目名称

    [@cms_channel_list parentId='父栏目id'] [#list tag_list as c] <a href="${c.url}">${c.na ...

  9. 爬虫的终极形态:nightmare

    爬虫的终极形态:nightmare nightmare 是一个基于 electron 的自动化库(意思是说它自带浏览器),用于实现爬虫或自动化测试.相较于传统的爬虫框架(scrapy/pyspider ...

  10. js前台中获取后台传的值

    后台controller String ifOffice = "yes";req.setAttribute("ifOffice", ifOffice); 前台j ...