1. 程式人生 > >移動目標檢測(幀間差分法)

移動目標檢測(幀間差分法)

以前上計算機視覺課時,老師演示了一個移動目標檢測的程式。覺得好玩,回去後自己寫了一個。
基於幀間差分法+閾值(門限)的移動目標檢測。檢測前進行了中值濾波處理,手動設定了閾值。效果一般吧。

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