end else
while (all(i2(j,:)==1)) a=a-1; c=c+1; j=j-1; end end
A(i,1)=a;
if any(i2(j,:)==0)
while (any(i2(j,:)==0)) b=b+1; d=d+1; j=j-1; end else
while (all(i2(j,:)==1)) b=b-1; d=d+1; j=j-1; end end
A(i,2)=b; A(i,3)=c+d; A(i,4)=i+791; end
xlswrite('D:\\question1.xls',A,'A210:D418');
附录六:
%%%%%%%%%%%%%注意!!!运行时将附件解压至D盘%%%%%%%%%%%%%% %%%%%%%%%%%%%该程序用来对图片的二值矩阵进行分类 A=zeros(209,5); for i=1:209
str='D:\\附件\\附件3\\';
I=imread([str,num2str(i),'.jpg']);%依次读取每一幅图像 i1=rgb2gray(I); %i1灰度图像
i2=im2bw(i1); % i2是二值图像,不需要 a=0;b=0;c=0;d=0; j=1;
if any(i2(1,:)==0)
while (any(i2(j,:)==0)) a=a+1; c=c+1; j=j+1; end else
while (all(i2(j,:)==1)) a=a-1;
21
c=c+1; j=j+1; end end
A(i,1)=a;
if any(i2(j,:)==0)
while (any(i2(j,:)==0)) b=b+1; d=d+1; j=j+1; end else
while (all(i2(j,:)==1)) b=b-1; d=d+1; j=j+1; end end
A(i,2)=b; A(i,3)=c+d; A(i,5)=i; if A(i,3)<30 A(i,4)=0;
elseif A(i,3)>30&&A(i,3)<=34 A(i,4)=1;
elseif A(i,3)>=40&&A(i,3)<=43 A(i,4)=2;
elseif A(i,3)>=44&&A(i,3)<=48 if A(i,1)>0 A(i,4)=3; else
A(i,4)=4; end
elseif A(i,3)>=50&&A(i,3)<=53 if A(i,1)>0 A(i,4)=5; else
A(i,4)=6; end
elseif A(i,3)>55&&A(i,3)<=60 if A(i,1)>0 A(i,4)=7; else
A(i,4)=8; end
elseif A(i,3)>61&&A(i,3)<=66 if A(i,1)>0 A(i,4)=9; else
A(i,4)=10;
22
end
elseif A(i,3)>67&&A(i,3)<=70 A(i,4)=11;
elseif A(i,3)>76&&A(i,3)<=78 A(i,4)=12; elseif A(i,3)>80 A(i,4)=13; end end
xlswrite('D:\\photo3.xls',A); %将矩阵导入excel表里
附录七:
%以下程序的运行,请注意文件存放的位置!!! %此程序运行需要时间较长,请耐心等待!!! %请使用经格式转化器转化后的JPG格式图片
A=zeros(209,209);
a=A(:,1);%共209个纸条 l=A(:,1);%共209个纸条 for j=1:209
str='D:\\附件\\附件3\\';
I=imread([str,num2str(j),'.jpg']);%依次读取每一幅图像 i1=rgb2gray(I); %i1灰度图像
i2=im2bw(i1); % i2是二值图像,一个180*72的矩阵 a=i2(:,1); %取纸片左边缘 for i=1:209
I=imread([str,num2str(i),'.jpg']); %依次读取每一幅图像 i1=rgb2gray(I); %i1灰度图像 i2=im2bw(i1); % i2是二值图像 mi=i2(:,72); %取纸片左边缘 ni=a-mi;
A(j,i)=sqrt(dot(ni,ni)); %用以判断差距 end end
xlswrite('D:\\photo31.xls',A); %将矩阵元素导入excel表格 for i=1:209
for j=1:209
if(A(i,j)==0) l(i)=l(i)+1; end end end
for i=1:209
if(l(i)>=11) i end end
23
附录八:
%以下程序的运行,请注意文件存放的位置!!! %请使用经格式转化器转化后的JPG格式图片。
%%%%%%选取以008作为开始第9组的行排序%%%%%%% A=zeros(19,19);
a=[1,8,33,46,54,57,69,71,94,127,138,139,154,159,167,175,176,197,209;]%共十九个纸条 for j=1:19
str='D:\\附件\\附件3\\'; s=a(j)
I=imread([str,num2str(a(j)),'.jpg']);%依次读取每一幅图像 i1=rgb2gray(I); %i1灰度图像 i2=im2bw(i1); % i2是二值图像 t=i2(:,72); %取纸片右边缘 for i=1:19
I=imread([str,num2str(a(i)),'.jpg']); %依次读取每一幅图像 i1=rgb2gray(I); %i1灰度图像 i2=im2bw(i1); % i2是二值图像 mi=i2(:,1); %取纸片左边缘 ni=t-mi;
A(j,i)=sqrt(dot(ni,ni)); end end
%%%%%%%%判断相邻图片并自动连接%%%%%%%%%% r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];%记录和纸片右相邻的纸片 g=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];%记录和纸片右相邻的纸片 for i=1:19 k=A(i,1); r(i)=1; for j=1:19
if(k>A(i,j)&&j~=2) k=A(i,j); r(i)=a(j); g(i)=j
end end end
first=2;
str='D:\\附件\\附件3\\';
z= imread([str,num2str(a(first)),'.jpg']); for m=1:18 x=z;
y=imread([str,num2str(r(first)),'.jpg']);%记录下一张纸条
24
z = [x,y]; first=g(first); end
imshow(z) %请打开图片显示窗口查看拼接结果
附件九:
图15 附件三的拼接图片
附录十:
25
2013全国数学建模竞赛B题优秀论文



