function lw_2
%使用运动累计法背景提取
%对于highway的照片处理
%提取背景
m=50;
II=imread('highwayII1.jpeg');
II=rgb2gray(II);
%BW=zeros(size(II)); %BW将属于背景的像素相加
dc=zeros(size(II)); %累加器,累加背景出现的次数
%bj=zeros(size(II)); %背景
b=II; %初始化背景为第一帧图像
a=0.15;
[x,y]=size(II);N=x*y;
T=25; %帧间差分的阈值
%aa=[0 0 0 0 0 0 0 ];
%k=1;
tic
for i=0:5:m
%im1=sprintf('highwayII%d.jpeg',i);
%im1=imread(im1);
%I1=rgb2gray(im1);
for j=i:i+4 %每5帧为一组
im2=sprintf('highwayII%d.jpeg',j+1);
im2=imread(im2);
I2=rgb2gray(im2);
I=abs(double(b)-double(I2));
%TT=sum(sum(I))/N;
p=find(I>T); %小于阈值的为背景,大于阈值的为运动点
%p=find(I<T);
dc(p)=dc(p)+1; %累加器相加
q=find(dc==3); %积累5帧
if dc(q)==3
b(q)=a*I2(q)+(1-a)*b(q); %当前帧占少数,背景帧占大数
% figure,imshow(b);
% b(q)=(1-a)*I2(q)+a*b(q);
dc(q)=0;
end
end
%if (mod(i,15)==0)
%bj=BW./i;
%aa(k)=toc;
%k=k+1;
%BJ=uint8(bj);
%figure,imshow(BJ);
%end
end
toc
%figure,plot(0:15:m,aa);
%figure,plot(0:15:m,aa,':s');
figure,imshow(b);
评论0