基于帧差法的运动目标检测的matlab代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档