想用MATLAB做一个提取运动目标的功能,如图
代码如下但是现象极其糟糕
不知道错误处在哪里
请各位大神指教
fileName = 'video.avi';
obj = VideoReader(fileName);%输入视频位置
numFrames = obj.NumberOfFrames;% 帧的总数
for k = 1 : 206% 读取帧
frame = read(obj,k);%读取第几帧
frame1=read(obj, k+1);
frame2=read(obj, k+2);
grayframe=rgb2gray(frame); %彩色转化成灰度图
grayframe1 = rgb2gray(frame1);%灰度化
grayframe2=rgb2gray(frame2);
difgrayframe= grayframe - grayframe1;%邻帧差
difgrayframe2= grayframe1 - grayframe2;%邻帧差
level1 = graythresh(difgrayframe);
level2 = graythresh(difgrayframe2);
fdiff1=im2bw(abs(difgrayframe),level1);%与阈值比较转换成二值图像
fdiff2=im2bw(abs(difgrayframe2),level2);%与阈值比较转换成二值图像
f= fdiff1&fdiff2; %得到移动的区域
pause(0.01);
k1=medfilt2(f,[3,3]); %进行3*3模板中值滤波
k2 = bwmorph(k1,'close'); %闭运算
figure(1);
imshow(k2);
end