本文主要是介绍运动目标检测_帧差法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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: numFrameframe0 = 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
这篇关于运动目标检测_帧差法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!