基于MATLAB的运动目标检测

  视频中的运动目标检测的方法非常多。运动目标检测的算法依照目标与摄像机之间的关系可以分为静态背景下运动检测和动态背景下运动检测。先简单从视频中的背景类型来讨论。
 静态背景下的目标检测,就是从序列图像中将实际的变化区域和背景区分开了。在背景静止的大前提下进行运动目标检测的方法有很多,这些方法比较侧重于背景扰动小噪声的消除,如:

1.背景差分法
2.帧间差分法
3.光流法
帧间差分法

  帧间差分法是求出图像序列中相邻两帧或多帧图像像素间的差分,并通过设定一定的阈值将其转化为二值图像,在背景静止的情况下,此方法有较好的效果。它利用视频图像相邻帧之间相关性较强的检测原理,来确定运动目标。

基于MATLAB的运动目标检测_第1张图片

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200216205751377.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MzM5NDk3,size_16,color_FFFFFF,t_70)
  function GetTargetImgs

clc; clear all; close all;
warning off all;
load pts.mat
imgFolder = fullfile(pwd, ‘target_images’);
if ~exist(imgFolder, ‘dir’)
mkdir(imgFolder);
end
nFrames = 424;
fprintf(’\n视频帧图像目标检测开始!’);
for i = 1 : nFrames
fileurl = fullfile(pwd, sprintf(‘images/%03d.jpg’, i));
Img = imread(fileurl);
bw = zeros(size(Img(:, :, 1)));
pt = pts{i};
for j = 1 : size(pt, 1)
bw(pt(j, 1), pt(j, 2)) = 1;
end
bw = logical(bw);
bw = imfill(bw, ‘holes’);
Imgr = Img(:, :, 1);
Imgg = Img(:, :, 2);
Imgb = Img(:, :, 3);
Imgr(~bw) = 0;
Imgg(~bw) = 0;
Imgb(~bw) = 255;
Img = cat(3, Imgr, Imgg, Imgb);
imwrite(Img, fullfile(imgFolder, sprintf(’%03d.jpg’, i)));
fprintf(’\n%d----%d’, i, nFrames);
end
fprintf(’\n视频帧图像目标检测完毕!\n’);

你可能感兴趣的:(基于MATLAB的运动目标检测)