clear all
clc
close all
%先读入图片。
%个事你可以改的。
di = dir('*.bmp');
I={};
n=length(di);
for k= 1:n
I{k} = imread(di(k).name);
end
%提取图片矩阵的最后一列保存到a、第一列保存到b。
a={};
b={};
for j=1:n
a{j}=I{j}(:,end);
b{j}=I{j}(:,1);
end
%判断第一列和最后一列的对应的黑点概率来做拼接。
g=0.0;
gl=[];
q=[];
p=[];
for m=1:n
S=I{m};
for i=1:n
ai=find(a{m}==0);
bi=find(b{i}==0);
c=intersect(ai,bi);
g=length(c)/max([length(ai) length(bi)]);
gl=[gl g];
if g>0.4396
q=[q m];
p=[p i];
S=[S I{i}];
end
end
end
%拼接和复原图片。
SS=[];
[c, ia, ib] = setxor(q,p);
SS=I{q(ia)};
k=length(q);
SS=[SS I{p(ia)}];
sq=[q(ia) p(ia)];
for i=1:k
while p(ia)~=q(i)
[t,h]=find(q==p(ia));
SS=[SS I{p(h)}];
sq=[sq p(h)];
ia=h;
end
end
AA=im2double(SS);
% AA=im2uint8(SS);
F=-1*AA+1;
AA=(premnmx(AA)+1)/2;
% imshow(F)
% figure
% % im2bw(F,0.5);
f=(premnmx(F)+1)/2;
figure;imtool(imadjust(f,[],[],1));
[J,T]=histeq(AA);%
% figure,imshow(J)
disp('图片的排列顺序')
% cell2mat(a)%吧cell转换成double型
disp(sq-1)
警告: PREMNMX is an obsolete function.
Use MAPMINMAX instead, type HELP PREMNMX for bug warning.
警告: Some maximums and minimums are equal. Those inputs won't
be transformed.
警告: PREMNMX is an obsolete function.
Use MAPMINMAX instead, type HELP PREMNMX for bug warning.
警告: Some maximums and minimums are equal. Those inputs won't
be transformed.
图片的排列顺序
Columns 1 through 13
8 14 12 15 3 10 2 16 1 4 5 9 13
Columns 14 through 19
18 11 7 17 0 6