基于帧差法的运动目标检测的matlab代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mov=aviread('CIMG0003.A VI');
temp=size(mov);
fnum=temp(2);
for i=1:fnum,
strtemp=strcat(int2str(i),'.','JPG');
imwrite(mov(i).cdata(:,:,:),strtemp);
end%% 从视频中提出每一帧图像
o=1;
e='.jpg';
for i=1:15
u=o-1;v=o-2;
m=int2str(o);
n=int2str(u);h=int2str(v);
s=strcat(m,e);%%把字符串b与m连接后在连接e得到图像文件存储的位置
m=imread(s);%%从S处把图像读取出来
m=rgb2gray(m);%%将图像M灰度化
m=medfilt2(m,[3,3]);
if(o>=3)
s=strcat(n,e);
n=imread(s);
n=rgb2gray(n);
s=strcat(h,e);
h=imread(s);
h=rgb2gray(h);
n=medfilt2(n,[3,3]);
h=medfilt2(h,[3,3]);
q=im2double(m);%%将图像数组转换为double型 w=im2double(n); g=im2double(h);
c=q-w;j=w-g;
th=10/255;
k=find(abs(c)>=th);
c(k)=1;
k=find(abs(c)
c(k)=0;
c=bwareaopen(c,15);
se90=strel ('line',3,90);se0=strel ('line',3,0);
c=bwmorph(c,'close'); %对上述图像进行形态学闭运算 c=imdilate(c,[se90,se0]);c=bwmorph(c,'close');
c=bwareaopen(c,50);
k=find(abs(j)>=th);
j(k)=1;
k=find(abs(j)
j(k)=0;
j=bwareaopen(j,15);
j=bwmorph(j,'close'); %对上述图像进行形态学闭运算 j=imdilate(j,[se90,se0]);j=bwmorph(j,'close');
c=bwareaopen(c,50);
c=c&j;c=imerode(c,[se90,se0]);
figure,imshow(c);
a=c;b=c; d=c;f=c;
[m,n]=size(c);
%%行扫描填充
for i=1:m
for j=1:n-1
if a(i,j)>0
a(i,j+1)=1;
end
end
end
for i=1:m
for j=n:-1:2
if b(i,j)>0
b(i,j-1)=1;
end
end
end
th=a&b;
%%列扫描填充
for i=1:n
for j=1:m-1
if d(j,i)>0
d(j+1,i)=1;
end
end
end
for i=1:n
for j=m:-1:2
if f(j,i)>0
f(j-1,i)=1;
end
end
end
td=d&f;
c=th&td;
end
o=o+1;