基于视频分析的目标检测.doc
目录摘要4关键字4Abstract4Key words41 绪论41.1 背景及意义41.2 国内外的研究现状51.3 论文的主要工作及结构安排61.3.1 论文项目以及主要工作61.3.2 论文结构安排62 软件编程环境及工具62.1 软件编程环境62.2 软件编程工具73 目标检测算法研究73.1 目标检测主要方法83.1.1 光流法83.1.2 背景差分法83.1.3 时间差分法83.2 本论文所用目标检测方法93.2.1 单一背景差分检测法93.2.2 高斯模型提取背景检测目标法104目标提取及后续处理算法124.1图像平滑滤波124.1.1 中值平滑滤波法134.1.2 高斯平滑滤波法134.2 阈值选取算法154.2.1 固定阈值法154.2.2 自适应阈值法164.2.3 最大类间方差法164.3 目标形态学处理算法175 软件处理效果分析195.1 软件的技术路线图205.2 软件效果分析215.2.1 鼠标绘制ROI区域215.2.2 去除小的噪声矩形框215.2.3 清除走出检测区域的目标225.2.4 目标计数以及舒适程度判断245.2.5 软件运行计数的准确性276 总结与展望316.1 项目总结316.2 项目展望317 致谢32参考文献32基于视频分析的目标检测系统设计摘要:视频分析是计算机视觉技术的分支,旨在通过目标检测提取分离目标物,实现预计的功能。本论文以苏州留园景区游客为目标物,主要采用背景差分的方法检测分离出目标。经过一系列的算法处理之后,达到对人数进行统计并且判断游客的舒适程度的目的。其中比较了在目标检测和提取分离中各种算法的效果,包括背景提取、平滑滤波,阈值选取等等,最终选择了相对效果较好的算法完成预计的功能。关键字:视频分析,目标检测,计数The system design of target detection based on the video analysisAbstract: Video analysis is a branch of computer vision technology, which aims to realize the expected function by the means of the technology of target detection to separate the target. In this paper , the tourist of the scenic spot of Suzhou Liuyuan are the target object , detecting and separating the target object by means of background subtraction . After the processing of a series of arithmetic achieve the purpose of counting the number of people and judging the comfortable degree of the tourists. In the paper, we compared the result of many arithmetic of target object, include the extracting the background, smoothing filtering, choosing of threshold and so on, and finally choose the better arithmetic to complete the expected function. Key words: Video analysis, target detection, counting 1 绪论1.1 背景及意义视频分析是通过计算机图像视觉这个以数字图像处理为基础、近年来发展迅猛的新兴学科这一分析技术,使用目标检测的方法提取出场景内的目标物,之后用户可以根据目标物来分析视频中的内容,再根据视频的内容来实现预设定的功能。因此可以说,视频分析的实质是一种算法,基础便是数字图像处理。而目前,利用计算机图像处理技术来进行智能视频分析已经越来越流行实际运用于各个方面,如交通中的车流总量、速度、距离、密度等等。具体的功能实现也很多,例如颜色检测,高度检测,延误检测,计数功能,目标密度检测等等。 近些年,随着人们日常生活水平的提高,心里追求也越来越高,在繁忙的工作之余,旅游成为了人们陶冶情操的一种休闲方式。但是由于节假日局限性,很多人的出游时间都相同,这就导致了景区人数出现暴涨的情况。人数的暴增不仅为游区工作人员带来了管理难度,也同时影响着游人的舒适程度。本项目就是利用计算机视频分析技术,实现对感兴趣区域内的人物数量进行实时统计的功能,主要目的就是为了判断在一定区域内的人是否拥挤,即他们的舒适程度。1.2 国内外的研究现状 近些年,由于智能化技术的普及使用,市场渐渐不满足于现有的智能化技术的种类,从而促使我国的视频分析技术有了快速的增长。视频分析技术的研究和发展主要体现在算法即目标检测和识别的研究和发展上。目前,对于目标检测,国内外众多高校都有研究,国外如美国麻省理工,英国牛津大学等都专门设立了针对运动目标检测的研究组或者实验室,国内的中国科学院北京自动化研究所下属的模式识别国家重点实验室等等。而国内外的学者们早已不再单纯的从一种方法入手研究目标检测,背景差分算法简单,实时性高,但是动态背景会出现很大的问题;帧间差分法可用于动态背景和静态背景,但是对噪声的抗干扰能力很弱;而光流法处理结果准确,但是运算量大,解决算法复杂度是一个很大的难题。众多学者开始改变单一方法,例如Lee Yee Siong等人将HS和LK光流法同时进行了处理,将两者结合了起来,并将滤波处理运用起来,检测效果的效果很好;1龚涛,刘怡等针对帧差法的噪声敏感的特性,提出基于相关配准的三帧差分算法2等等。之后很多学者糅合众多算法,将各算法的优点发挥出来,避开缺点,也同样得到了很好的效果,例如刘静,王玲等将混合高斯模型背景法和三帧差分法结合起来,利用三帧差分法检测目标,提高灵敏度,又引入混合高斯模型和阈值的运算,减小噪声对处理效果的影响,减少算法运算量;3孙承志,熊田忠等人提出将差分法和光流法结合起来,先用差分法对图像进行处理,再用光流法对预处理的图像进行计算,可以减少算法的复杂度,也让结果更加精确。4国内外对于目标检测的研究有很长的时间,且早已运用到了视频分析当中,智能检测、智能视频监控、智能银行等。其中智能视频监控特别是人脸识别这一部分是最近应用最多,也是发展最快速的一部分。英美方面已经研究了众多项目,而且在人脸识别、智能监控系统方面的研究部分成果已经投入市场,例如,美国的人脸识别技术龙头之一的Animetrics公司在视频分析监控一部分有着先进的研究,早几年应用起来的新工具Forensica GPS能够在低分辨率的监控图像或者视频中更加准确的识别目标。据称,目前该公司已经向美国国内执法部门提供了该产品。美国ISS公司SecurOS Face人脸采集与识别的产品是世界上正确识别率最高的人脸识别系统之一,人脸识别库要多于500万人,识别时间基本上不超过一秒,最快的人脸识别速度达到每秒7张人脸。国内中科院的中国大恒集团下属的北京大恒图像视觉有限公司是中国最早成立的专业的机器视觉产品开发的公司,一直专注于自己的产品技术研发等等。但是视频分析目前存在的问题或者说的目标检测的问题仍然很大,主要有背景的复杂性,光照变化、背景晃动等问题,为目标的提取带来了很大的难度;目标特征的取舍,要选取合适的目标信息比较难;遮挡问题,当目标相互遮挡时,影响跟踪的稳定性;兼顾实时性与鲁棒性,实时性往往带来运行的负担,实时性要求高就不得不降低鲁棒特性。这些问题也是目标检测、视频分析的重点问题。1.3 论文的主要工作及结构安排1.3.1 论文项目以及主要工作本论文对运动目标检测做了一定了解,对不同的背景,尤其是复杂背景下的运动目标进行了有效的提取。使用OpenCV视觉库,在Visual Studio编程环境下,采用C语言,来进行软件的编译。项目所做工作如下:1. 熟悉目标检测、视频分析相关理论知识,了解国内外的相关发展及应用;2. 学习C语言编程,OpenCV函数的应用以及完成Visual Studio的相关配置;3. 采集相关视频;4. 完成程序的编译,调试,运行。1.3.2 论文结构安排1.第一部分:绪论。这一部分主要阐述了论文的题目(基于视频分析的目标检测系统设计)的背景和意义,简单介绍了相关理论以及国内外的研究发展状况。最后概括了本篇论文的主要工作和论文的结构安排。2.第二部分:软件编程的环境及工具介绍。这一部分主要介绍了编程的环境Visual Studio 以及OpenCV视觉库。3.第三部分:目标检测算法。这一部分主要介绍了几种目标检测的算法,详细的展示了本文所用的算法以及效果的对比:(1)单一背景差分算法检测目标;(2)混合高斯模型算法提取背景检测目标。4.第四部分:目标提取处理算法。本节主要还介绍了图像处理的滤波方法:(1)中值滤波;(2)高斯滤波。阈值的选取的算法:(1)固定阈值;(2)自适应阈值;(3)大律法求阈值。以及目标形态学处理算法等。5.第五部分:软件处理效果分析。这一部分主要是阐述软件的编译、调试、运行后实际运用在视频上得到的效果以及后续的分析。6.第六部分:总结与展望。本部分将对整个项目做一个总结和对未来相关发展的展望。7.第七部分:致谢。2 软件编程环境及工具2.1 软件编程环境本软件采用Microsoft Visual Studio(简称VS)编程环境。VS是美国的微软公司研发的开发产品,这是一个完整的开发工具集,包括了整个关键生命周期(包括问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段)的大部分阶段。微软在1997年发布了VS 97版,其中包括Visual Basic 5.0、Visual C+、Visual J+等等语言。之后在98年,Visual Studio 6.0发布了,升级了所有语言的开发环境。2002年,随着.NET 口号的提出与Windows XP/Office XP的发布,微软发布了Visual Studio .NET 也就是7.0版,推出了新语言C#,用来编写.NET 框架。2003年,微软对Visual Studio 2002做了一定修改,退出2003版(7.1)。之后2005年、2007年、2010年、2012年、2013年以及2014年都发布了新的版本,最新版的即为2014年11月发布的Visual Studio 2015。而本论文的软件编程环境采用的是Visual Studio 2013 版本。2.2 软件编程工具计算机视觉发展于图像处理的基础上,在计算机科学和工程、应用数学、统计学,神经生理学、信号处理、认知科学等等的研究方面,在制造业,医学领域,军事领域等等各个领域都有着非常广阔的应用前景和发展前景。这就意味着,这种技术是学术研究和工程开发的集合体,研究人员的想法必须通过开发人员通过简单的开发工具来实现,因此,OpenCV便被推出了,结合了两方面的需求提供了一个很合适的开发工具或者说是应用的平台。OpenCV(Open Source Computer Vision Library,开源的计算机视觉库)最开始是1999年由Intel公司发起开发的,通过BSD许可证授权发行,可以免费用于研究领域和商业领域。目前已经广泛的应用于计算机视觉图像处理和模式识别的系统开发了。OpenCV在1999年被提出只是为Intel处理器做特定优化,发展到现在,最新的OpenCV为2015年4月24日发布的3.0版本,实现了有一系列的C函数和C+类构成,提供了Java、Matlab,Ruby等等语言接口的通用算法工具。本论文的软件采用Visual Studio 编译环境使用C语言,通过对OpenCV的库函数的使用,完成软件图像处理的功能。3 目标检测算法研究目标检测,是一种图像分割技术,主要是通过目标的几何、统计等特征对图像进行分割。是各种后续高级处理、应用,例如目标跟踪、目标分类、目标行为理解等等的基础。5目标检测跟据背景环境可以分为两类:静态背景和动态背景下的运动目标检测。同时,目标检测技术运用的算法也非常多,有光流法、时间差分法、背景差分等。3.1 目标检测主要方法3.1.1 光流法光流法是将运动的物体分解为单个像素点,提取目标是根据像素点的灰度值随时间变换的表观运动。6每一个像素点都有一个速度矢量,形成一个图像运动场,某一时刻,由投影关系得到图像上的点和物体上的点的对应关系,根据每个像素点的特征矢量来对图像进行分析。当有图像中有运动物体时,目标和背景的矢量不同,可以检测出运动物体的位置。7最早的光流法的算法是在1981年,当时Horn和Schunck就将速度场和灰度联系起来,得到光流计算的基本算法HS。同一年中,Lucas和Kanade又提出了LK光流算法。8虽然光流法的诞生很早,但是在实际的应用中有很大的局限性,比如,由于遮挡,噪声,多光源等等情况的出现而导致光流场不能正确的解出,而且光流法本身复杂,运用光流法的一个关键点是减少光流算法的运算复杂度和运算量。3.1.2 背景差分法背景差分法的基本思想是利用背景的参数模型来近似表示背景图像的像素值,将当前帧图像与背景图像进行差分,从而实现对运用区域的检测。9由于背景差分算法相对简单,处理速度快,因此被广泛应用。背景差分法的一个重要步骤就是背景的提取,背景中的运动物体,例如晃动的树、阴影、阳光等,背景常会有小的波动,为背景的提取带来的很大的难度。目前主要的处理背景的方法有高斯模板法,均值背景法,绝对值最小法等等。早在2000年,Stauffer和Grimson便提出了K个高斯分布的混合模型来表示背景像素的分布规律,能快速适应场景变化。10而累加均值提取背景和绝对值最小的方法也被经常运用。此外,针对噪声的情况,单阈值往往不能满足要求,因此,阈值的选取也同样重要,一般有双阈值,大律法求阈值等等方法,如张震,李丹丹等学者提出,采用自适应双阈值的方法进行背景的更近以及前景的分割。113.1.3 时间差分法背景差分主要用于背景建模比较复杂的情况,计算速度快,处理迅速,但是降低了目标的精度,而且动态背景不适用。因此引用了时间差分的方法,也称作帧间差分,使用于动态和静态背景下的目标检测,算法也相对简单,但是对噪声敏感度强。时间差分法就是两帧相邻的图像进行差分,得到差分的图像,再通过阈值的判断,确定运动目标。但是,单纯的两帧差分已经不能满足目前的图像处理的需求了,因此,出现了众多在原有的算法上的改进,例如Shainfard等提出相邻5帧的视频序列做差分处理,并且综合视频序列的RGB分量信号进行检测。12Crnojevic针对光线变化的环境,在差分算法中加入小波变换,13取得了很好的效果。3.2 本论文所用目标检测方法通常所用的目标检测方法:光流法、背景减除法、时间差分法三种在上节中有了简单介绍,而本论文选取了其中的部分完成了视频的调试,对比了其中的效果。3.2.1 单一背景差分检测法单一背景差分的方法是背景差分法最原始的方法,也是最方便、简单的一种检测目标物的方法。基本原理是:读取视频文件,将第一帧图像作为背景图像,之后的每一帧图像与背景图像进行差分,得到视频中的运动的物体,达到检测的效果。这种方法适用于静态的背景的视频中,而且其由于从操作简单、计算量少,使用该方法的系统的鲁棒性和实时性都比较高,因此利用率也相当高。效果见图1。图1 单一背景差分效果图(1)单一背景差分的效果很好,实时性鲁棒性都优于其他算法,但是,因为背景的选取只是单一的第一帧图像,因此,面对背景晃动的情况处理会出现晃动的背景。效果见图2。图 2 单一背景差分效果图(2)同时,这种方法对于视频的选取有一定的要求,关键在于,视频的第一帧图像中,没有目标物的出现,若是第一帧出现目标物,由于第一帧图像为背景,目标物便会被当成背景,之后的图像目标物移动或者不在图像范围内的时候,第一帧图像目标的位置便会成为新的目标被检测出来。效果见图3。图3 单一背景差分效果图(3)正是由于单一背景差分的方法出现的问题很明显,因此出现了背景更新的方法,随着视频的播放,背景不断的更新,最主流的方法就是混合高斯模型提取背景来检测目标的方法。3.2.2 高斯模型提取背景检测目标法高斯模型的主要原理就是用高斯概率密度函数也就是通常说的正态分布曲线来表示一个像素点,而背景图像的特定像素分布满足高斯分布。也就是说,背景模型每个像素点的组成部分中都有两个参数,即均值u和方差d。14而更新均值的步骤就是通过旧的均值图像和新一帧的图像,通过权值也就是学习率a来进行相加,公式为:ut+1,x,y=a*ut,x,y+1-a*i(x,y)(1) 其中t为帧数,a为学习率,i为当前帧的图像。得到了均值图像之后,与新图像进行运算,将大于阈值的判定为背景,反之为前景目标,公式为:e(-ix,y-ux,y2/(2*d2)>T(2) 其中T即为阈值。而混合高斯模型就是用K个(一般为3-5)高斯模型来表示图像的各个像素点的均值特征。15高斯模型是现在主流的一种背景差分的方法,重点在于背景的提取,见下图。图4 混合高斯模型背景图(1)可以看到,在背景提取的时候,混合高斯模型对于噪声的影响还是很大的,但是,随着视频播放,背景不停的更新噪声点也会不断变少,效果见下图。图5 混合高斯模型背景图(2)图6 混合高斯模型背景差分效果(1)图7 混合高斯模型背景差分效果(2)在某些情况下,混合高斯模型效果的处理上并不是很理想,而且,由于混合高斯模型的计算量较大,因此处理的实时性和鲁棒性都不及单一的背景差分的效果,这也导致了在视频播放时,出现卡顿的情况更加严重。因此,综合考虑,本论文采用单一背景差分的方法,进行项目功能的实现。4目标提取及后续处理算法4.1图像平滑滤波平滑滤波的目的是抑制和防止干扰。在视频采集时,不可避免的会出现噪声点,特别是阳光强烈,亮度大的时候,而在图像二值化之后,这些噪声点会暂时被保留下来。在图像处理时如果不去掉,就会成为目标,从而影响到后续对目标处理的准确性,为视频处理工作带来很大的难度。而且,图像平滑能使提取出来的目标物中间的小空洞得到一定的填充。因此,图像的平滑滤波是视频图像处理中目标检测之后,提取目标时的重要步骤。图8 无滤波效果噪声图OpenCV的视觉库函数中,带有cvSmooth这个滤波函数,为图像处理的滤波做了很大的简化处理,其中包括了主流的几种滤波处理方法:简单不带初读变换的模糊滤波法,简单尺度变化模糊滤波法,中直滤波法,高斯滤波法以及双向滤波法。而本论文通过对图像灰度图滤波和二值化图像滤波两个步骤,主要对比了最常用的两种滤波平滑的方法:高斯滤波法和中值滤波法,下面,详细介绍下这两种方法。4.1.1 中值平滑滤波法中值平滑滤波法可以说是图像处理的一种最常用的滤波去噪的方法,不像均值滤波法会将图像的边缘平滑化。中值滤波法的主要原理是将某像素点的邻域窗口内的所有像素值的中值取出,作为该点的像素值。具体效果如下图。图9 3*3窗口中值平滑滤波效果(左边为滤波前图,右边为滤波后图)图10 5*5窗口中值平滑滤波效果(左边为滤波前图,右边为滤波后图)通过3*3的窗口的中值滤波之后,椒盐噪声点数量明显减少,但是部分噪声点块状变大,这使得后续的去噪工作不好进行。5*5窗口的滤波效果更加明显,噪声点少但是更大,而且窗口选择越大,目标物的轮廓越模糊。4.1.2 高斯平滑滤波法高斯滤波就是通过像素点本身的像素值以及设定的邻域内的灰度值进行加权求平均得到的值作为该点的像素值,这个方法和均值滤波有点类似,但是不同的是,均值滤波采用的是无差别求均值,高斯滤波的均值求法是通过加权求得。而加权的准则是由二位离散高斯函数采样并且归一化之后得到的。而cvSmooth这个函数若采用高斯滤波,则有四个参数需要选择,第四个参数一般是非对称高斯核引用的,第一、第二个参数param1和param2是选定滤波核的大小,即选取邻域的大小,第三个参数为方差,若次参数为零,则通过param1和param2来确定,公式如下:x=param12-1*0.3+0.8(3)y=param22-1*0.3+0.8(4)得到x方向和y方向的均值,根据正态分布的图来判断加权值继而得到该像素点的加权平均值作为像素值,达到滤波平滑的效果。图11 正态分布图图12 3*3窗口高斯平滑滤波效果(左边为滤波前图,右边为滤波后图)图13 5*5窗口中值平滑滤波效果(左边为滤波前图,右边为滤波后图)对比中值滤波,很明显可以发现,在椒盐噪声的情况下,中值滤波比高斯滤波效果要好很多,高斯滤波主要是将图像模糊化,有去除噪声的效果。但是在考虑到目标物出现时,需要边缘扩充,而且高斯滤波出现之后的噪声点有规律、比较小,在后续容易去除。还有重要的一点是,高斯滤波会将目标物的中间空洞模糊化,使得在之后对目标进行形态学处理时能够更加方便。因此,对比以上结果,本论文在灰度图像时采用3*3窗口的中值滤波的平滑方法而二值化图像采用3*3窗口高斯滤波对视频图像进行处理,一来能减小运算量,二来,联系后续处理的效果比较好。4.2 阈值选取算法这里的阈值指的是在图像差分了之后,对图像进行二值化的阈值的选取。图像的二值化是提取分离目标的关键一步,在背景差分之后之后进行二值化,将图像处理成黑白的二值化图像,达到目标提取分离的目的。理论上说,背景差分之后,将差分的像素点取绝对值,再用0作为阈值,大于0的像素值为1即可。但是在实际运用中,由于背景晃动,噪声点去除不干净等等原因,阈值的选取并不简单。目前,阈值的设定有多种方法,例如最简单的固定阈值法,自适应阈值法,最大类间方差法(大津法),双峰法,迭代法等等。16本论文选取了固定阈值,自适应阈值和最大类间方差法三种阈值方法进行了比较,接下来详细介绍着三种方法。4.2.1 固定阈值法固定阈值可以说是最简单也是最直接的阈值选取方法,即选取单一阈值,将噪声点和前景目标分离开,噪声点能够在二值化时被去掉,保留目标物。因此,这个固定的值的选取就非常重要了。这里选取的是灰度值为60的阈值。图14 固定阈值二值化图像4.2.2 自适应阈值法自适应阈值是一种改进的阈值求取方法,主要的原理是,通过求取某一邻域的平均值或者加权平均值在减去一个常数(一般等于5)得到一个阈值,再进行二值化。在OpenCV的函数库中,有关于自适应阈值的函数cvAdaptiveThreshold,效果见下图。图15 自适应阈值二值化图像 可以见到,自适应阈值更偏向于提取物体的轮廓,而且,对于复杂背景和噪声影响较大,当背景复杂或者有晃动时,自适应阈值的效果并不好。4.2.3 最大类间方差法最大类间方差也叫大津法是在1979年Otsu提出,之后加以改进运用的。主要原理是计算直方图和归一化直方图之后通过直方图的零阶矩wi和一阶矩ui得到最大方差的灰度值即为阈值。w0=wk=i=1kPi (5) uk=i=1ki*Pi (6) u=i=1Mi*Pi (7)其中Pi=niN ,为灰度级为i的 像素个数ni占总像素个数N的比例,所以u为灰度值的均值。最终计算得到方差2,公式如下:2=u*wk-uk2wk*1-wk (8)k为1-M的灰度值,遍历下来,知道找到最大的方差,则相对应的灰度值就是阈值。可以理解为,图像是背景和前景两部分,当两者的类间方差最大时,表示两部分差别最大,因此选取方差最大的地方为灰度阈值点。17图16 最大类间方差阈值法二值化效果 对于以上三种阈值选取的方法,可以比较清楚的看到,固定阈值对于噪声点的去除比较到位,噪声点很少,但是目标物的提取中间的空洞比较多,自适应阈值法对于背景要求很高,而且提取的是目标物的轮廓,不适用于此环境,最大类间方差法二值化之后虽然噪声点比固定阈值多,但是,目标物的提取更为完整,便于后续处理,因此,本论文采用最大类间方差法即大津法来选取阈值,进行图像的二值化分离提取前景目标。4.3 目标形态学处理算法形态学处理主要是在图像二值化之后对目标物直接进行的一系列处理动作,包括膨胀、腐蚀操作,开、闭操作等等。膨胀和腐蚀操作简单来说就是根据原有的像素点的值在对象边界进行有规律的扩大添加和删除边界的某些像素。膨胀是在核元素的范围内取最大值(一般为1)作为中心元素的值,腐蚀是在核元素范围内取最小值(一般为0)作为中心元素的值。膨胀的作用主要是将提取分离出来的目标物进行的中间的空洞特别是边缘没有被提取出来的空缺补充起来,使目标更加完整。而腐蚀的作用主要是消除目标的边角突刺,同时,腐蚀还有一个用处就是消除剩余的噪声,因为噪声多是孤立小块的点,通过腐蚀可以去掉很多噪声点。开闭操作,开操作是先做腐蚀处理再做膨胀处理,主要作用是去掉比较小的明亮区域。闭操作先膨胀再腐蚀,可以去除掉孤立点。开闭操作区别于单一的膨胀和腐蚀操作主要的地方就在于开闭操作几乎是保留区域的,几乎不改变操作区域的大小。效果见下图。图17 形态学处理前后对比图(1)(左图为处理前,右图为处理后)图18 形态学处理前后对比图(2)(左图为处理前,右图为处理后)图19 形态学处理前后对比图(3)(左图为处理前,右图为处理后) 可以看到,经过一系的处理和对比,图像已经能比较清晰的检测和分离目标物了,而且图中,噪声点也有了很强的抑制效果,目标物的大概轮廓能辨别出来,这样,视频分析的最开始,也是最主要的部分已经完成。5 软件处理效果分析软件部分就是由一个个算法组成,在上两部分中,已经将整个软件的大部分算法有了比较详细的介绍,并且对不同的算法有了一定的对比效果分析。这一部分的主要内容就是将各种算法结合起来进行软件编译运行,实现整个项目的功能。5.1 软件的技术路线图图20 技术路线图5.2 软件效果分析5.2.1 鼠标绘制ROI区域 ROI (Region Of Interest),感兴趣区域,在视频播放处理之前,先用鼠标绘制视频图像处理的感兴趣的区域,也就是目标检测的区域,用于最后判断目标是否为感兴趣目标,同时也可以起到去除部分背景晃动和部分噪声的作用。图21 鼠标绘制ROI区域图5.2.2 去除小的噪声矩形框图22 图像检测目标矩形框面积输出 上图右边图像输出的是目标检测之后框选出来的各个矩形框的面积值,通过图片我们可以看到,画面中总共只有两个人,但是输出的面积却有很多,因为在检测的时候同时将噪声点也检测了出来,而且在两次平滑滤波以及形态学处理之后仍然没有完全去除掉。这些在处理过程中都存在。因此我们需要一个矩形框的面积阈值判断来去除这些噪声点。中间输出的31表示为第31帧图像。可以看到的是,在一帧图像输出的矩形框的面积中,有两个比较大的面积值,分别是两个主要目标,其余的都相对较小,经过多个视频输出,发现,噪声点的面积值一般在40-2000之间,而主要目标一般大于4000,为了防止噪声过大,选取2500,作为噪声阈值,大于阈值的被判定为目标,小于这个噪声面积阈值的被判定为噪声。5.2.3 清除走出检测区域的目标在视频开始播放之前,用鼠标绘制的ROI为主要的判断依据,判断目标是否走出检测区域的标准。在绘制了ROI之后,保存下ROI矩形框的位置坐标,当图像出现目标,被检测分离出来之后,用目标矩形框框住,并且,根据目标矩形框的坐标点和长度宽度来判定目标矩形的中心。在判断中心是否在ROI范围内,若不在范围内,则清除目标矩形内的目标。这样既可以清除不必要的目标,也可以清除大量噪声。图23 软件运行效果图(1)图24 软件运行效果图(2) 对比图23和图24可以看出,同一帧图像,同样的两个主要目标,图23的一个目标不在ROI矩形框内,因此只显示了一个目标框、计算一个人数,而图24的两个目标都在ROI 内,因此绘制两个目标框、计数记为2。5.2.4 目标计数以及舒适程度判断图25 软件运行效果图(1)图26 软件运行效果图(2)图27 软件运行效果图(3)图25-27可以看出软件运行的总体功能实现的效果图,在ROI区域的上方显示了人数以及人的舒适程度。人数是通过软件中的算法计算得到,在图27上可以看到的是,中间出现人有重叠遮挡的情况,虽然只有一个检测矩形框,但也识别出了实际人数。这是通过其中的一个阈值判断的,根据预先的运行时对输出的检测目标矩形框的面积进行观察,判断目标物的大小范围,然后,设定一个比单一目标稍小的面积阈值,当大于这个目标面积阈值时,在进行判断,若小于1.4倍的阈值,则判定为这个框中为1个人,若矩形框的大小在1.4倍到2.2倍之间,则判定为这个框中人数为2人,若面积在2.2到2.6之间,判断为3人,面积大于2.6则判断为4个人。人的舒适程度显示依据是,当没有人的时候,显示为“None”,当出现人物目标,但是小于设定阈值时,显示为“Comfortable”,而当出现阈值以上的目标时,判定为“Crowded”。而人数的阈值设定为单一的3个人或者4个人不是很妥当,因为范围比较大的地方,3-4个人也不会很拥挤,而有的一小块地方,1-2个人都会拥挤。因此,阈值根据检测的感兴趣区域ROI的面积和目标框的面积这两个参数来进行判定。由于目标矩形框的不确定性,我们选用之前判断目标数目多少的面积阈值来代替矩形框的面积大小。ROI区域面积除以目标面积的出来的数为区域内可容纳的最多的人数,将此人数的一般判定为拥挤的阈值,多于最大人数的一半即为拥挤。因此便会出现在画面中人多,但是显示为舒适,有时人少但是呈现出拥挤的状态。见下图。图28 软件运行效果图(4)可以看见,图27和图28为同一帧图像,但是图27的检测出3人,而图28中检测出2人,原因是有一个目标没有在检测感兴趣区域ROI范围内。图27显示的为绿色的“Comfortable”而图28显示为红色的“Crowded”,原因就是因为右边图像原则的ROI范围小,在小的范文内,虽然人数少,但是拥挤。5.2.5 软件运行计数的准确性表1 五个视频采样的实际人数和计算人数对比表整个软件最重要的功能就是计数功能,其次才是判断在检测区域的游客的舒适程度。其中便涉及到了计数的准确性。由于这个系统是实时检控的系统,因此,判断系统技术的准确性需要对每一段视频进行数据记录。具体记录规则是:从视频播放开始,每两秒记录一次数据,数据包括当前帧的检测框内的人数以及通过软件运算计算出来的人数。视频的采样也是用目标大小不同的视频,以保证采样样本的全面性。 项目人数 视频时间(s) 视频一视频二视频三视频四视频五实际人数计算人数实际人数计算人数实际人数计算人数实际人数计算人数实际人数计算人数020011110011042222111122063333211122083333223122104442113333124344323344144433333333164433223356184333112245204433112344224423332265244422222266263322223366282222233354302222224366322222335577342222335588362211325491138221133559940220033551011人数和5856464543415552102103表1的数据为选取的五个40秒时长的视频每两秒采集一个实际人数和计算人数的数据,将实际人数和计算人数相同的时间点作为准确的点,不相同的点作为不准确的点。表1可以看出在100个数据组中,准确的点有83个,不准确的共有18个,得到各个时间点的人数,通过人数计算该软件的每个视频的准确率i,再计算总的准确率P,公式如下:i=1-Ri-riRi*100% (9)P=i=1KiK (10)其中R为实际总人数,r为软件计算得到的总人数,K为视频数,此处为5。准确率精确到小数点后两位。通过上式的计算,得到的每个视频人数准确率为一次是1=96.55%,2=97.83%,3=95.35%,4=94.55%,5=99.02%。总的准确率为P=96.65%。图29-图33为五个视频中截取的图片。图29 视频一运行截图图30 视频二运行截图图31 视频三运行截图图32 视频四运行截图 图33 视频五运行截图可以看出,整个系统的