资源描述
山东建筑大学
课 程 设 计 说 明 书
题 目: 视频监控中行人的检测
课 程: 数字图像处理课程设计
院 (部): 信息与电气工程学院
专 业: 电子信息工程
班 级: 电信112
学生姓名: 杨永林
学 号: 2011081237
指导教师: 张运楚、杨红娟、张君捧
完成日期: 2014年11月
山东建筑大学课程设计说明书
目录
摘要 2
一、绪论 3
课题研究背景及意义 3
二、设计要求与目的 4
三、视频监控中行人的检测与识别方案论证与选择 4
3.1常用检测算法 4
3.1.1背景消除法 4
3.1.2光流场法 4
3.1.3帧间差分法 4
3.2空间域滤波器 5
四、设计内容 7
4.1背景减法运动目标检测 7
4.2 阈值的选取 8
4.3 形态学滤波 8
4.4检测过程 9
五、实验结果及分析 10
六、总结与感谢 12
参考文献 13
附录1程序代码 14
摘要
视频监控在安检、交通、工业生产等方面得到了广泛的应用。为了能实时分析、跟踪、判别监控对象,并在异常事件发生时提示、对视频监控中出现的行人进行检测显得尤为重要。
本文研究基于MATLAB的视频监控中的行人检测。尤其是要从计算机视觉的角度出发构建一个对象检测器,对实时视频中的对象进行搜索并对它们进行检测。从图像序列中找到关心的对象,即行人,从而确定图像区域中的行人。
本文的行人检测,即首先将行人检测出来,再对确定包含行人的图像进行处理。
。
关键词:MATLAB 视频监控 行人检测
一、绪论
课题研究背景及意义
在现代社会中,视频监控系统随处可见。视频监控系统使人们的工作生活更加方便,更加安全,提高了效率。然而,目前视频监控网络多数只停留在原始视频的录像阶段。虽然有些系统具有移动侦测报警的功能,但实际监控任务大部分仍是由人工来完成。随着视频监控规模逐渐扩大,依靠人工方式进行实时监控所暴露出来的局限性越发突出,既没有足够多数量的屏幕供观看,也不可能安排足够多的人员24小时盯着屏幕看,同时面临着海量视频数据检索的问题。因此对于利用计算机视觉的相关技术实现智能化的视频监控系统的需求越来越迫切。
在自己人为设定的环境下,我们具体实现了行人检测,验证算法的是否有效,并且改进算法,使算法更加符合实际应用。我们的要求是在实时的视频监控中,系统能够实时检测行人,没有明显的延时,保证监控画面的流畅,并且有较高的正确率。
二、设计要求与目的
1.根据已知设计要求分析视频监控中行人的检测设计功能,确定视频监控中行人的检测设计的方法,画出流程图,编写实现程序,并进行调试,完成系统软件设计。
2.基本教学要求:每人一台计算机,计算机安装matlab、visio等软件。
三、视频监控中行人的检测与识别方案论证与选择
3.1常用检测算法
传统的交通监控方法,如电磁感应环线圈式车辆检测器,不能识别车辆的行驶方向,不能进行车辆分类等。雷达波检测器只能检测运动目标,但对目标缓行和目标静止的情况不能有效地提取背景,可能无法做出准确的检测。
近年来,国内外学者对视频图像的运动目标检测和识别做了许多研究,常见的方法有背景差分法、光流场法以及图像差分法。
3.1.1背景消除法
背景消除法是目前运动分割检测中一种很常见的方法,也称为背景差分法,通过比较当前图像与背景图像的差异实现目标运动区域的检测。
3.1.2光流场法
光流场法检测是利用目标随时间变化所产生的光流特性进行检测。光流的含义是图像亮度状况的运动,当目标运动时,在图像上对应的目标的亮度也在变化,表现出一种类似运动的直观感觉。通过光流法可以得到位移向量的光流场,从来初始化目标的轮廓,便于后续基于轮廓的跟踪算法有效地检测和跟踪目标。
3.1.3帧间差分法
帧间差分法(也可简称为帧差法)可以提取出物体的运动信息。帧差法根据公式中计算需要帧的个数可以分为二帧差分法、三帧差分法等。帧差法的基本假设是在视频序列中相邻两帧的视频序列图像是连续性,若画面中没有待检测的目标,那么相邻帧图像的变化非常小;而有运动目标进入画面时,会引起比较明显的帧差。如采用前后相邻两帧做差,通过相邻两帧的差异检测运动目标的方法成为二帧差分法,这也是运动目标检测中最简单也最常用的运动目标检测方法
表1常用检测算法对比
背景消除法
光流场法
二帧差法
三帧差法
所得信息
目标位置、大小、形状等
目标位置、大小、形状等
目标边界
目标边界、位置
复杂度
小
大
小
较小
难点
背景选取机制、背景更新
复杂度高
空洞
空洞、滞后性
适用情况
摄像固定;
实时性要求不高;
对目标信息要求较高;
有光照、光线、天气等影响
摄像固定;
对目标信息要求高;
背景已知或者容易获取;
光照、光线、天气等影响小;
摄像固定;
实时性要求高;
对目标信息要求不高;
摄像固定;
实时性要求高;
对目标信息要求不太高;
3.2空间域滤波器
(1)均值滤波器
均值滤波也被称为“邻域平均法”,是图像增强算法中很实用的空间域去噪算法。通常,图像中相邻像素的灰度或色彩有极强的相关性,因此灰度和色彩也能更改是连续地、缓慢变化。椒盐噪声表现为明显的黑色点(椒噪声)和白色点(盐噪声),这些点与周围非噪声点对比强烈,可以通过周围的非噪声点对噪声点进行处理,达到平滑噪声的效果,均值滤波是一种线性滤波器,但模糊效应比较严重,去噪的同时会引起细节信息的丢失。
(2)中值滤波器
中值滤波通常选取含有奇数个点的滑动模板,将模板中各点的灰度值排序,选取中值代替模板中心像素的的灰度值,
(3)改进中值滤波器
为了降低中值滤波带来的模糊,本文对中值滤波算法进行了改进,对中值滤波前期进行预处理,通过统计分析和判决条件来搜索图像的噪声区域,把图像分成非噪声部分和噪声部分两类区域,对非噪声区域不进行去噪处理,也就不会带来模糊效应,对噪声区域采取去噪处理,去除噪声,改进算法在保持中值滤波原有去噪能力的基础上进一步降低了去噪引起的模糊效应。这种改进算法更有针对性地滤波可能的椒盐噪声点,同时避免滤波引起的非噪声点的模糊现象,去噪性能更好。
四、设计内容
4.1背景减法运动目标检测
背景差分算法的实质是:实时输入的场景图像与背景图像进行差分,可以较准确的分割出运动目标。但是背景差分算法也有其天然的缺陷,随着时间的推移,场景的光线、树叶的遮挡、或者运动物体滞留都会很大程度的破坏已经建立好的背景图像。为了解决这些问题,最好的方法便是使用背景建模和背景更新算法来弥补。前面已经讨论过相关问题,因此,本文假设背景处于理想情况下进行背景差分算法的研究。设(x, y)是二维数字图像的平面坐标,基于背景减法的二值化数学描述为:
Di(x,y)=|Ii(x,y)-Bi(x,y)|
1,Di>T
Mi(x,y)=
0,Di≤T
Ii(x,y)表示图像序列中当前帧的灰度图像,Bi (x, y)表示当前帧背景的灰度图像,Mi(x,y)表示相减后的二值化结果,T表示对应的相减后灰度图像的阈值,选取固定阈值T=15,基于背景减法的MATLAB仿真,如图2:
图2 背景差分实验
Surendra算法计算出背景图像,左图为原始输入图像,右图为二值化图像,左下图为背景差分法得出的形态学滤波的图像。实验结果表明:背景差分算法也可以有效地检测出运动目标。由于背景建模算法的引入,使得背景对噪声有一定的抑制作用,在差分图像中“雪花”较帧间差分算法有所减少。同时,使用背景差分算法检测出的运动物体轮廓,比帧间差分法的检测结果更清晰。因此,在背景建模与背景更新处于比较理想的状态下,背景差分算法得到的差分结果略好于帧间差分的结果。
4.2 阈值的选取
Surendra算法提取背景及目标提取都需对图像二值化。分割阈值的选取虽看似简单,但直接影响目标的分割效果,阈值T增大,虽然可以一定量的减少环境对效果的影响,但同时也会将差分结果中变化不明显的区域作为前景被忽略掉;阈值T减小,效果却又恰恰相反。
进行阈值计算时还应注意迭代速度和精度的矛盾。
4.3 形态学滤波
由于刮风、气流等原因,背景中部分物体小幅度晃动;光线的变化等不确定因素,会使得视频图像产生大量噪声,当差值图像二值化后,仍然有很多无用的噪声斑点。因此,需要采用数学形态学方法,对分割后的二值图像进行形态学滤波。
(1)结构元素
结构元素被形象的称为刷子或探针,是膨胀和腐蚀操作中最基本的组成部分。
(2)腐蚀和膨胀
腐蚀和膨胀是许多形态学算法的基础。腐蚀操作会去掉物体的边缘点,细小物体所有的点都会被认为是边缘点,因此会整个被删去。再做膨胀时,留下来的大物体会变回原来的大小,而被删除的小物体则永远消失了。膨胀操作会使物体的边界向外扩张,如果物体内部存在小空洞的话,经过膨胀操作这些洞将被补上,因而不再是边界了。再进行腐蚀操作时,外部边界将变回原来的样子,而这些内部空洞则永远消失了。
(3)开启和闭合
开启就是相对图像进行腐蚀,然后膨胀其结果。闭合就是先对图像进行膨胀,然后腐蚀其结果。开启一般使对象的轮廓变得光滑,断开狭窄的间断和消除细的突出物。闭合同样使轮廓线变得光滑,但是开启相反的是,它通常消除狭窄的间断和长细的鸿沟,消除小的孔洞,并填补轮廓线中的断裂开启。
4.4检测过程
五、实验结果及分析
1.视频起始阶段基本无光线改变,人物捕捉略正常
2.视频中段,由于光线变化以及人手抖动,使得悲剧也被捕捉到,当然会在实际使用中,此情况会被改善。
3.视频结尾光线恢复正常,但由于人工拍摄的局限性,镜头抖动,捕捉画面略差。
本文着重研究了利用背景减法进行目标检测在Matlab中的实现方法。利用Matlab图像处理功能来实现经典的图像处理方法,简化了算法,达到了检测目标的预期效果,为后面的目标跟踪、目标分类等奠定了基础。
六、总结与感谢
在此论文撰写过程中,要特别感谢相同小组同学的帮助和理解,。没有同学们的帮助也就没有今天的这篇论文。求知之路充满了突然的快乐和成就感。在做课程设计得过程中,张云楚老师不断的激发我们对知识的探索,和对新事物的研究意识,还要感谢杨红娟老师和张君捧老师对我们学习的督促,让我们不再那么懒惰。
在查询资料时,老师给我们提供了很重要的资料,本文参考了大量的文献资料,在此,向各学术界的老师们表示感谢!
参考文献
[1] 孔晓东.智能视频监控技术研究[D].上海:上海交通大学,2008.
[2] 虹.数字图像处理基础[M].北京:科学出版社,2005.
[3] Gavrila D. The visual analysis cf human movemalt: A survey[J].Compurer Vision and Image Understanding, 1999, 73(1):82298
[4] 常好丽.运动行人检测与跟踪方法研究[D] .陕西:西北工业大学,2006.
[5] 常好丽,史忠科.基于单目视觉的运动行人检测与跟踪方法[J].交通运输工程学报,2006.
[6] 何东健,耿楠,张义宽编著,数字图像处理[M].西安:西安电子科技大学出版社,2008.5
[7] 冈萨雷斯.数字图像处理(MATLAB)中文版[M].北京:电子工业出版社,2007
[8] 刘志敏,扬杰,施鹏飞.数学形态学的图像分割算法[D].计算机工程与科学,1998,20 (4):21.
[9] 章毓晋.图像分割.北京:科学出版社,2001.
[10] 王树伟,杨鸲.Matlab 6.5辅助图像处理[M].电子工业出版社,2003.
附录1程序代码
clear all;
close all;
clc;
% read a avi file information, 'cartest.avi' 为待处理的视频文件,格式为.avi
fileinfo = aviinfo('D:\12.avi');
numFrames = fileinfo.NumFrames;
%为了避免占用太大的内存,选取200帧的截取视频
clipframes = 200;
Clips = floor(numFrames/clipframes);
%读取视频的第一帧作为背景图像
Fref = aviread('D:\12.avi',10);
Iref =Fref.cdata;
%设定阈值
Threh = 15;
% 定义一个结构元素
se=strel('disk',3);
for m = 1:Clips
% 计算影片剪辑开始和结束的帧指数m
startframe = (m - 1)* clipframes + 1;
if m == Clips
endframe = numFrames -1;
else
endframe = m * clipframes;
end
%从AVI文件读第m个影片剪辑帧
movclip =aviread('D:\12.avi',[startframe:endframe]);
for k = 1 : (endframe - startframe +1)
Icurr = movclip(k).cdata;
%计算当前帧与参考帧之间的绝对差异
Idiff = abs(double(rgb2gray(Iref)) - double(rgb2gray(Icurr)));
% 利用threholding检测运动目标
Ifg = Idiff >Threh;
%利用IMOPEN算法进行形态学滤波,去除椒点噪声
Ifg2 = imopen(Ifg,se);
figure(1);
subplot(2,2,1), imshow(Icurr),title('Current Image ');
subplot(2,2,2), imshow(Ifg), title('Foreground Image(moving object) ');
subplot(2,2,3), imshow(Ifg2), title('filtered by morphological opening operation ');
pause(0.01);
end
end
14
展开阅读全文