运动目标检测之帧差法

原理简介:
所谓帧差法也就是对连续图像帧做差分运算,其结果与定义好的阈值比较,若大于阈值则为运动目标值为1,否则值为0 。
帧差法一般分为两帧差分和三帧差分。
两帧差分:
取连续的两帧序列,用后一帧减去前一帧,将其结果与阈值比较即可。
三帧差分:
取连续的三帧序列 k、k+1、k+2,先让前两帧差分,再让后两帧差分,最后对这两个差分图做与运算即可。
下面利用matlab对单纯的帧差法做一下演示:
1、用三帧差分实现目标检测

clc
clear
videoObj = VideoReader('E:\PRACTICE\some\video.avi');%读视频文件
nframes = get(videoObj, 'NumberOfFrames');%获取视频文件帧个数
for k = 1: 3    %只使用前三帧
currentFrame = read(videoObj, k);%读取第k帧、k+1帧和k+2帧
Frame1=read(videoObj, k+1);
Frame2=read(videoObj, k+2);

grayFrame = rgb2gray(currentFrame);%灰度化
grayFrame_1 = rgb2gray(Frame1);%灰度化
grayFrame_2=rgb2gray(Frame2);
X = filter2(fspecial('average',3),grayFrame);  %对灰度图进行均值滤波
Y = filter2(fspecial('average',3),grayFrame_1);
Z = filter2(fspecial('average',3),grayFrame_2);
difgrayFrame= Y-X;%邻帧差  
 difgrayFrame2=Z-Y;%邻帧差 
 fdiff1=im2bw(uint8( difgrayFrame),0.05);%与阈值比较转换成二值图像  256*0.05=12.8
 fdiff2=im2bw(uint8( difgrayFrame2),0.05);%与阈值比较转换成二值图像
 f= fdiff1&fdiff2; 
 figure
 imshow(f);
end
上一篇:alcohol


下一篇:什么是MVVM模型