移动目标检测(帧间差分法)

以前上计算机视觉课时,老师演示了一个移动目标检测的程序。觉得好玩,回去后自己写了一个。
基于帧间差分法+阈值(门限)的移动目标检测。检测前进行了中值滤波处理,手动设置了阈值。效果一般吧。

clear all; close all; clc; mov=VideoReader('classroom.avi'); N=mov.NumberOfFrames; for i=2:N frame=read(mov,i); Pframe=read(mov,i-1); if ndims(frame)==3 x=rgb2gray(frame); else x=frame; end if ndims(Pframe)==3 y=rgb2gray(Pframe); else y=Pframe; end subplot(1,2,1); imshow(Pframe,[]); title(sprintf('第%d帧',i-1)) %差分算法 x=medfilt2(x); y=medfilt2(y); n=im2double(x); p=im2double(y); c=n-p; c=medfilt2(c); t=10/256; c(abs(c)>=t)=255; c(abs(c)<t)=0;  c=logical(c); x1=Pframe(:,:,1); x1(c)=0; x2=Pframe(:,:,2); x2(c)=255; x3=Pframe(:,:,3); x3(c)=0; xc=cat(3,x1,x2,x3); subplot(1,2,2); imshow(xc,[]); title(sprintf('第%d帧',i-1)) end

代码和测试数据下载

你可能感兴趣的:(matlab,移动目标检测)