for i=1:10
picname=sprintf('%d-rgb.jpg',i);
picname="F:\matlab\附件1\"+picname; %读取附件1中的照片
picture=imread(picname);
a=picture(1,:,: ); %设a为图像左边缘第一个像素点
b=picture(700,:,: ); %设b为图像右边缘第一个像素点
c=picture(:,1,:); %设c为图像上边缘第一个像素点
d=picture(:,600,:); %设d为图像下边缘第一个像素点
x{i}=a; %将所有图片左边缘的RGB值存入x中
y{i}=b; %将所有图片右边缘的RGB值存入y中
z{i}=c; %将所有图片上边缘的RGB值存入z中
k{i}=d; %将所有图片下边缘的RGB值存入k中
end
orignal=k{6}; %人眼确认第一张照片为第六张
orignal=double(orignal); %将RGB值转化为数值型
order=[6 0 0 0 0;0 0 0 0 0];
for ii=2:5 %找出位于第一层的四张照片
rr=1000000000000;
zz=0;
for n=1:10
ss=z{n}; %ss代表第n个图片的上边缘的RGB值
ss=double(ss); %将RGB值转化为数值型
for j=1:700
mm=(ss(j,1,1)-orignal(j,1,1)).^2+(ss(j,1,2)-orignal(j,1,2)).^2+(ss(j,1,3)-orignal(j,1,3)).^2;
zz=mm+zz; %将原始图片与进行对比的图片的上边缘对应的R G B值分别做差然后进行平方再家相加,作为判断依据
end
zz=sqrt(zz); %对上面所求结果开根号
if zz<rr
rr=zz;
v=n; %嵌套判断,用v来将所嵌套循环次数n记录下来
end
end
orignal=k{v}; %判断出第v张为第二张图片
orignal=double(orignal); %将RGB值转化为数值型
order(1,ii)=v; %将第一行图片序列按v的值以此排列进order中
end
for nn=1:5 %进行第二行循环
orignal=y{order(1,nn)};%设最初第二行第一张照片为第二行第一列照片
orignal=double(orignal);%将RGB值数值化
rrr=100000000000;
for iii=1:10
sss=x{iii};%sss代表第iii个图片的左边缘值
sss=double(sss);%将RGB值转化为数值型
zzz=0;
for jj=1:600
mmm=(sss(1,jj,1)-orignal(1,jj,1)).^2+(sss(1,jj,2)-orignal(1,jj,2)).^2+(sss(1,jj,3)-orignal(1,jj,3)).^2;
zzz=mmm+zzz;%将原始图片与进行对比的图片的上边缘对应的R G B值分别做差然后进行平方再家相加,作为判断依据
end
zzz=sqrt(zzz); %对上面所求结果开根号
if zzz<rrr
rrr=zzz;
h=iii; %嵌套判断,用h来将所嵌套循环次数n记录下来
end
end
order(2,nn)=h; %将第二行图片序列按v的值以此排列进order中
end
a=sprintf('%d-rgb.jpg',order(1,1));
a="F:\matlab\附件1\"+a;
image1=imread(a);
for i=2:5
b=sprintf('%d-rgb.jpg',order(1,i));
b="F:\matlab\附件1\"+b;
image2=imread(b);
c=[image1,image2];
image1=c;
imshow(c);
end
a=sprintf('%d-rgb.jpg',order(2,1));
a="F:\matlab\附件1\"+a;
image1=imread(a);
for n=2:5
b=sprintf('%d-rgb.jpg',order(2,n));
b="F:\matlab\附件1\"+b;
image2=imread(b);
d=[image1,image2];
image1=d;
imshow(d);
end
imshow([c;d])
04-25
03-08
03-08
01-08
01-04
07-19
02-09
07-14
04-06
04-06
03-08
08-26
07-03
03-31
02-26
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交