运动目标检测_帧差法

1.帧差法原理

帧差法的实现非常简单:

运动目标检测_帧差法_第1张图片

如图可见,由目标运动引起的运动变化区域包括运动目标在前后两帧中的共同位置(图中黑色区域)、在当前帧中新显露出的背景区域和新覆盖的背景区域三部分。

数学原理:


2.MATLAB仿真与实践

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author: Ziheng H. Shen @Tsinghua Univ.
%HybridGaussModel @Digital Image Process Practice
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;close all;clear all;
video = VideoReader('768x576.avi');
numFrame = video.NumberOfFrames;
%% 计算帧差
for i = 1 : 1: numFrame
    frame0 = read(video,i);
    frame1 = read(video,i+1);
    frameSub = abs(rgb2gray(frame1)-rgb2gray(frame0));
    %使用最大类间方差法找合适阈值
    thr = graythresh(frameSub);
    object = im2bw(frameSub, thr);
    %利用形态学进行二值图像处理
    disk = strel('disk',1);
    figure(i);
    subplot(1,3,1);imshow(frame0,[]);
    subplot(1,3,2);imshow(frame1,[]);
    subplot(1,3,3);imshow(imdilate(imdilate(imerode(object,disk),disk),disk));
end
输出结果:

运动目标检测_帧差法_第2张图片
运动目标检测_帧差法_第3张图片

你可能感兴趣的:(图像处理,目标跟踪,OpenCV)