1 简介

运动目标的检测是数字图像处理和模式识别以及计算机视觉领域研究的主要内容之一,也是计算机视觉研究的一个重要领域.对基于背景差分法的视频目标检测的算法进行了研究.以Matlab为主体研究工具,对视频中的运动目标进行检测.对背景差分法的原理和算法进行了研究,并对其进行了详细的讨论和分析.利用中值滤波背景模型来提取背景,并对目标的阴影进行检测与抑制.实验结果表明,采用该算法对运动目标进行检测具有良好的准确性和稳定性.

背景差分法的原理是利用当前图像与背景图像的差分以提取运动区域的一种运动检测方法。根据灰度等特征的变化来判断,即利用当前图像与背景做差分,若差分值大于某一阈值时,则认为检测到目标。在背景差分算法中,背景图像选取的准确性直接导致最后目标检测的精确性。理想状况下,一般认为背景图像保持静止,并且当运动目标区域的像素值发生变化时,背景的像素值保持不变。背景差分法的公式为:

【目标检测】基于背景差分法实现车辆检测附matlab代码_目标检测

【目标检测】基于背景差分法实现车辆检测附matlab代码_ide_02

2 部分代码

clc
clear
close all
%获取帧图像
video_path='video.avi';%把视频放到程序的文件夹,这里填视频名即可
video_obj=VideoReader(video_path);
frameNum=video_obj.NumFrames;
file_name='image_run';%新建文件夹名称
if ~exist(file_name,'dir')%如果没有这个文件夹
mkdir(file_name);%那就新建一个这个文件夹
end
for i=1:frameNum
image_name=strcat('./',file_name,'/im_',num2str(i),'.png');%用字符串和数字组合图片的路径+文件名
frame=read(video_obj,i);
imwrite(frame,image_name,'png');%写入图像文件
end
threshold=20;%差分阀值
imshow(originalPic)
rectangle('position',max_rect,'EdgeColor','r');%找到边界赋值对应边界为红色
chafen1_name=strcat('./',file_name2,'/im_',num2str(p),'.png');%用字符串和数字组合图片的路径+文件名
imwrite(originalPic,chafen1_name,'png');
end
writerObj=VideoWriter('动态检测_run.avi');%定义一个视频文件用来存动画
open(writerObj);%打开该视频文件
for p=1:frameNum-1
framename=strcat('./',file_name2,'/im_',num2str(p),'.png');%组合图片的路径+文件名
frame=imread(framename);
writeVideo(writerObj,frame);%把帧写入视频
end
close(writerObj);%关闭视频文件句柄
disp('完成检测');

3 仿真结果

【目标检测】基于背景差分法实现车辆检测附matlab代码_ide_03

【目标检测】基于背景差分法实现车辆检测附matlab代码_ide_04

4 参考文献

[1]汪国强, 盖琪琳, 于怀勇,等. 基于背景差分法的视频目标检测算法研究[J]. 黑龙江大学工程学报, 2014, 5(4):5.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【目标检测】基于背景差分法实现车辆检测附matlab代码_差分_05

【目标检测】基于背景差分法实现车辆检测附matlab代码_差分_06