i=imread('timgTM2N5JWK.jpg');
j=imread('timgTM2N5JWK1.jpg');
i1=rgb2gray(i);
j1=rgb2gray(j);
i2=medfilt2(i1,[2,2]);
j2=medfilt2(j1,[2,2]);
z=double(imsubtract(i2,j2));
subplot(221),imshow(z);title('图像与背景图像相减')
zmax=max(max(z));
zmin=min(min(z));
tk=(zmax+zmin)/2;
bcal=1;
zsize=size(z);
while(bcal)
ifore=0;
iback=0;
isum=0;
backsum=0;
for i=1:zsize(1)
for j=1:zsize(2)
tmp=z(i,j);
if(tmp>=tk)
ifore=ifore+1;
isum=isum+double(tmp);
else
iback=iback+1;
backsum=backsum+double(tmp);
end
end
end
zo=isum/ifore;
zb=backsum/iback;
tktmp=uint8((zo+zb)/2);
if(tktmp==tk)
bcal=0;
else
tk=tktmp;
end
end
z1=im2bw(z,double(tk)/255);
z2=medfilt2(z1,[7,7]);
z3=bwareaopen(z2,300);
subplot(222),imshow(z2);title('小面积区域去除后的图像')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
zsize=size(z3);%横向填充
for i=1:zsize(1) n=0;
x=zeros(1,400);
y=1;
for j=1:zsize(2)
if(z3(i,j)==1)
x(1,y)=j;
y=y+1;
n=n+1;
liebiao=j;
end
end
if((n>=100)&&(liebiao-x(1,1)>150))
for m=x(1,1):liebiao
z3(i,m)=1;
end