基于帧差法和背景差分法的背景提取及检测模型
时间:2022-10-12 02:00:01 sitemap
基于MATLAB视频车辆检测系统
1、课题背景
改革开放后,随着经济的快速发展,交通问题开始影响人们的生产和生活。由于汽车所有权的急剧增加和城市交通问题的日益严重,交通问题开始成为人们关注的社会热点。近年来,交通事故频繁发生,有效的交通监测和管理迫在眉睫。
本文主要介绍了基于视频的车辆检测方法。对于问题1,首先应用像素 视频图像背景采用直方图分析法和分块直方图分析法提取,发现两者提取 背景差别不大。然后我们应用基于统计块的背景更新方法来解决这个问题的背景 背景更新的特点变化不大。然后我们介绍了提取前景的方法,针对帧差法 以及背景差异法各自的优缺点,我们采用了综合考虑这两种方法的改进检测方法。通过二值化获得更清晰的前景轮廓。基于阴影干扰的消除HIS空 实现阴影检测算法;然后,我们通过数学形态学去除阴影干扰的前景 孤立点、毛刺和桥梁形成(连接两个区域的小点),以确保前景的总体位置和形状 状不变。最后,通过在视频图像中设置多个虚拟线圈来检测交通参数。
二、建立模型
2.1、背景提取:
2.1.1 构建和更新背景模型
构建和更新背景模型是背景差异法的关键步骤。运动检测采用背景差异法,首先构建背景模型,然后使用当前图像和背景图像进行差异操作,区域划分差异图像,提取运动区域。在交通场景中,背景环境发生了很大的变化,如环境光会随着时间的推移而逐渐变化,建筑物、树木或云投射到地面的阴影也会随着光的变化而变化,临时停在路边的车辆等,这将使背景逐渐或突变。为了保证背景模型的强度和检测结果的准确性,需要实时更新背景。但是, 如果更新太频繁,很容易将一些不应该属于背景的运动物更新到背景中,从而创造出来
测试结果不准确;如果背景更新速度太慢,原始背景模型不能很快适应,导致误拍率的提高。我们的目标是建立一个准确的背景模型,它可以快速适应外部条件的变化,并及时响应,以提高测试结果的准确性。
2.1.1.基于统计的背景模型
基于概率统计理论的统计建模方法。理论上,所谓静态背景,就是图像序列中灰度不变或变化小的像素。从统计学的角度看,背景中像素的灰度值可以看作是一个统计的结果,即图像序列中各个像素在统计上最可能出现的值。这种方法建立的背景模型在静止区域和真实的背景相似度比较高,而在包含运动区域时就与真实背景产生偏差,因为运动区域的灰度变化影响了均值结果,适用于背景大部分时间可见、运动目标数量少的情况。此外,为了确保较小的估计偏差,需要计算较长的视频序列平均值,背景更新速度慢。
方法一
像素直方图分析是一种基于统计数据的背景提取方法。其主要特点是,一般来说,提取的背景优于时域平均方法,具有良好的抗噪声干扰性。其缺点是操作速度慢,操作量大,在即时有效提取背景方面仍存在不足。
实现过程如下:
在一定时间内,视频中图像序列特定像素位置频率最高的像素值为背景像素值,通过存储视频中每个像素位置在序列时间轴方向上的方形图信息
(即在一定时间内统计像素位置每个可能像素值的次数),以像素位置直方图峰值对应的像素值作为背景像素值。这样,对某个位置的像素进行直方图统计,就成为对每个区域的问题段落像素灰度的次数进行统计。
参数包括:
设Nb为直方图灰度区间总数;Nd统计直方图的总帧数;Ns为了启动背景更新程序的帧间隔数,即每隔Ns 帧,背景更新一次。
为了减少算法对内存的需求,可以将直方图灰度参数分为区间段,但仍不能避免直方图统计分析计算每个像素的缺点;同时,区间段越多,图像可用的灰度级越少,不利于背景提取中的连续整数灰度
值的图像。灰度值的不连续性太大,我们使用该算法提取的背景图像的失真率单在视觉上大大提高。相反,如果要在一定程度上提高算法的执行速度,增加每个区间段包含的灰度级数,就要想办法减少灰度区间总数。但从另外一方面,灰度区间总数减小,背景提取的可用的灰度等级数目也会随之大幅减小,从而使得大块的斑块会相互粘连,背景变得更加失真和模糊。

综合考虑以上两点,将灰度范围和帧数设置为256(即最大范围)和200帧,获得以下视频图片背景:
通过区间直方图法获得的背景
方法二
与像素直方图分析法相比,分块直方图分析法做了以下改进。由于相邻像素之间具有相关性,从一个像素点至另一个相邻像素点其灰度值变化较小,故可将图片分割成大小相同的块状区域用于快速提取背景。具体操作如下:首先,将视频图像分割成相同大小的像素块,注意使快内像素点具有非常接近的灰度值, 取得的像素块不宜过大,然后我们对像素块而不是以前的每个像素点进行直方图统计,以显著减少算法的计算时间。同时,为了使每个间隔只包含一个连续灰度,将直方图灰度间隔的总数定为最大灰度级加1,从而保持图像灰度在空间中的连续性。由于选择块统计,操作次数可以减少到原始像素
直方图分析法次数的1/ m2 ,这大大降低了算法的计算量,增加了直方
图分析方法的背景估计速度,其中m为每个块的长度。然而,图像边界中的像素通常有很大的偏差,因此当我们使用分块直方图分析法进行统计时, 非边界灰度值相度值的像素点可以获得更好的统计图像,而增加灰度值差的边界区域会在图像边界处产生锯齿。如果统计图像较小且块较大,锯齿现象更为明显,因此选择合适的图片和块尺寸也非常重要。在这里,我们将原始图像分成原始图像
为2X收入背景如下:
2×2分块直方图获得背景
2.1.1.基于统计分块处理的背景更新方法:
背景重构算法是基于统计结果,没有确定性模型,因此不能通过调整模型参数来实现背景的自适应更新。在这种情况下,有两种常用的背景更新方法:一种是定期更新,即确定在一定时间间隔内更新背景,可以适应背景的缓慢变化。另一种是实时背景更新,即在更新背景时,如果当前帧和背景图像差异后的差异图像中的变化像素数和所有像素数比大于某个阈值
(通常是80%)如果这种情况在接下来的几帧中连续发生,图像序列将被重新提取以更新背景。这种方法可以及时响应场景中环境的变化。对于某些特殊情况,如固定区域中的差分图像像像素,在很长一段时间内显示为变化状态,
本文的背景更新算法是基于上述两种方法,采用全局更新和部分更新相结合的方法。在背景差小的像素变化统计表,记录每个像素点的变化频率,然后根据统计结果和像素之间的相邻关系对背景进行分块处理, 采用不同的频率更新不同的块,使运动区域清晰突出,并及时响应局部变化,让我们更容易把目标集中在我们感兴趣的地区; 同时,当所有像素变化大于设定阈值时,全球背景更新。实验表明,中值灰度分类算法接近实际背景,运动车噪声影响较小。实验表明,中值灰度分类算法接近实际背景,运动车噪声影响较小。根据统计块处理后的背景更新算法,在运动区域对目标的测试结果, 背景更新方法也比原算法强。在检测过程中,需要提取多帧图像进行背景更新重构,存在一定的延迟问题,但对长期监控检测影响不大。背景更新一些移动速度非常慢或停止时间超过一定时间阈值的运动目标

时被作为背景的一部分,而这种情况并不会对车辆检测产生过多影响,本文暂时不对它作任何处理。
区间直方图的背景更新
2.2前景提取与二值化:
2.2.1基于视频的车辆检测
2.2.1.1帧间差分法
帧间差分法是基于运动图像序列中,相邻两帧或三帧图像间具有强相关性而 提出的检测方法。在摄像头固定的情况下,对连续图像序列中的相邻两帧或三帧 图像采用基于像素的时间差分,并且通过阈值化来去除静止的物体,提取图像中 的运动区域。这种检测方法只对运动物体敏感,对光照变化不敏感,不需考虑背 景缓变的影响,非常适合于动态变化的环境,而且运算简单,检测速度快,车辆 定位准确,适用于实时性要求较高的应用环境。其缺点:一是不能检测出静止或 运动速度过慢的物体,对于高速运动的物体又会使得分割区域远远大于真实目标, 其分割区域与目标运动速度相关;二是如果物体内部的灰度比较均匀,相邻帧差 可能在目标重叠部分形成较大空洞,严重时造成分割结果不连通,不利于进一步 的物体分析与识别。在实际应用中,帧间差分法往往是许多复杂检测算法的基础, 通过将它与其它算法结合来提高整体的检测效果。
2.2.1.1背景差分法
背景差分法是目前运动分割中最常用的一种方法,它适用于摄像机静止的情况,或自然环境的缓慢变化,其最简单的实现是从视频序列中预先抽取不含前景运动物体的的一帧或几帧图像的平均作为背景,然后利用当前帧与背景图像的
差分来检测运动区域,进行背景消去。若所得到的像素数大于某一阈值,则判定被监视场景中有运动物体,从而得到运动目标。这种差分法对于复杂背景下的运动物体检测效果较好,一般能够提供最完整的特征数据,计算量小,实用价值大。缺点是在实际应用中,这种方法对于场景的变化,如光照和外来无关事件的干扰等特别敏感,需要采用一定的算法进行背景模型的动态更新。目前人们大都致力于研究如何实现背景图像的建模和自适应更新,使背景能够不断接近理想状态, 以减少场景变化对视频图像检测分割的影响。
与帧差法相比,背景差分法可以检测出短时间静止的车辆(长时间静止的车辆可以归为背景),也不受车速快慢的限制。应用背景差分法进行运动目标检测的研究中主要致力于开发不同的背景模型,以减少场景变化对运动目标分割的影响。这两种方法都是基于统计学背景模型法,这种方法估计出的背景图像在包含运动的区域与真实背景会产生偏差,而影响运动目标的提取。
本文采用了一种基于背景差分与帧间差分相结合的运动目标检测算法。由于背景差分法和帧间差分法的实现算法都比较简单,计算量小,易满足实时性的要求,并且背景差分法还可以比较完整的检测出运动目标,但缺点是对光照的环境条。件非常敏感,容易产生误操作;而帧间差分法对光照等环境不敏感,但帧间差分法却不能完全检测出运动目标。因此把这两种算法结合起来,实现优势互补。
2.2.1.2综合背景差分与帧间差分法(改进检测法)
改进的车辆检测方法是将背景差分与帧间差分相结合来实现运动目标的检测。由于背景差分法和帧间差分法的实现算法都比较简单,计算量小,易满足.实时 性的要求,并且背景差分法还可以比较完整的检测出运动目标,但缺点是对光照 的环境条件非常敏感,容易产生误操作;而帧问差分法对光照等环境条
件不敏感,但帧间差分法却不能完全检测出运动目标。因此把这两种算法结合起来,实现优势互补,它可以改善因物体内部纹理较少而在帧间差分时造成空洞甚至分裂的现象。
具体步骤如下:
- 背景差分法提取运动目标
假设提取的当前背景模型色Bn(x, y) ,当前帧图像为 I n(x, y) ,则前景二值图像
DBn
( x, y)= 1 if In(x,y)-Bn(x,y) >threshold
0 else
式中阈值threshold应适当选择,从而可以较好地过滤残留的背景部分。它主要与摄像装置有关,可以通过实验来确定。上述简单的运动目标提取方法并不可靠, 原因是提取的背景并不等同于当前帧的背景,这样在当前帧减去背景帧后有可能出现非运动目标残留的情况。因此,在改进的算法中加入了差分信息,可以达到较高的提取准确度。
- 结合对称差分提取运动目标
对称差分是将当前帧与前后两帧的差分图像进行与操作,容易损失差分信息。如果将两幅帧差图像累加,然后再阈值化,就可以很好地抑制差分的噪声。
假设相邻三帧图像为In-1(x,y) ,In(x,y) ,In(x,y) 计算相邻两帧的差分图像:
DFn(x, y) I n(x, y) - I n-1(x, y)
DFn1(x, y) I n1(x, y) - I n(x, y)
DM n
(x, y)
255
(x, y)
(x, y)
if DFn( x, y) DFn1( x, y) 255
else
DFn DFn1
对累加差分图像DM n(x, y) 进行阈值化,得到二值图像:
D ( x, y) 1
n
0
if DM n( x, y) Th else
式中阈值Th 可由图像全局自适应阈值方法获得。
- 改进的运动目标提取方法
改进的运动目标提取方法结合了前面所述的背景差法和改进的对称差分的思想, 将上面获得的前景二值图与差分二值图像进行或运算,公式如下:
(x, y) 1
0
M
n
DBn( x, y) 1
OR
else
Dn( x, y) 1
式中, DBn(x, y) 是背景差分法提取的前景二值图像, Dn(x, y) 是差分二值图,
M n(x, y) 即为所求的运动目标图像。
实验结果表明这种方法能够快速有效地提取复杂交通场景下的运动车辆。
改进检测法的二值化图像
2.3阴影检测及消除方法
通过前面的背景建模和图像检测,在检测出的图像中多多少少存在阴影的干扰,当阴影面积较大时还会覆盖邻近的车辆,致使算法误将多个车辆检测为一个车辆,对后期识别造成困难,使系统的整体性能下降,所以必须消除阴影。
2.3.1阴影的形成特点
阴影是因为场景中物体对光源的遮挡产生的,可分为本影和半影,本影是指入射光源被完全阻挡后在物体表面形成的较暗区域,半影是指入射光源被部分阻挡后在物体表面形成的半明半暗区域,并非所有的光影都产生半影,以平行光束入射到物体表面的阴影只能产生本影。本影又可分为自身阴影和投射阴
影,当物体背离光源照射方向时,在其表面形成自身阴影,当物体不透明时在其遮挡光线的场景区域中形成投射阴影。对于车辆的阴影分割,多以自然日光为入射光源,产生的是平行光束,因此不会形成半影区域。自身阴影区域位于车身区
域的一部分,并不影响车辆本身的外形,而与车身区域相连的投射阴影
影响车型参数的提取,所以一般的阴影分割算法都是指对投射阴影的分割。消除阴影是运动车辆检测中一个比较难的问题,这是由其自身的特点决定的:首先, 运动车辆的自身阴影也是运动的,并且它的大小、位置和灰度都是不可预测的, 很难对其建立统一的模型;其次,阴影与车辆连在一起并以相同的速度运动,这样用简单的运动检测方法很难将阴影和车辆区分开。下面介绍的阴影分割方法, 都是在一定的假设环境下或特定的模型空间中有效。
2.3.2基于HIS 空间的阴影检测算法
基于上述问题,本文采用了一种在HIS空间中进行的阴影检测算法。HIS彩色系统模型是根据视觉原理定义了三个互不相关的颜色属性,色调(H)、亮(I)、饱和度(S),其中,H是表面呈现近似红、黄、绿、蓝等颜色的一种或几种的目视感知属性,用R,G,B三个分量中的最小值去减另外两个分量,得到该像
素所对应的光谱色,然后由这两个分量的比值来确定;S是颜色具有“白光”的程度,定义为R,G,B三个分量中最小的分量除以亮度值;I是物体表面相对明暗特性,定义为R、G、B三个分量的平均值。HIS空间中三分量H,I,S具有相对独立性,可分别对它们进行控制,能够准确定量地描述颜色特征,因而在图像处理和分析中,常常把RGB空间转换为HIS空间。之所以考虑在HIS空间进行,是因为HIS 空间不仅可以更接近人的色觉反映,而且能更精确地反映一些灰度信息和色彩信息,特别对于图像中极亮和极暗的物体也能很好地反映出相应的信息。具体算法如下:
1 V c(i, j) & &
S(i, j)
V
(i, j)
(i, j)
(i, j) & &
b
S c Sb T s
H (i, j) H (i, j) T
0
c b H
otherwise
其中V c,S 和Hc 为当前帧的色度、饱和度和亮度,V b,S 和Hb 为背景模型
c
b
的色度、饱和度和亮度,T s,T H 分别表示饱和度、亮度分量的阈值。
阴影消除后的二值化图像
3.4图像的后处理
在实际应用中,对图像进行二值化以后,分割后已经能大致显示出车辆的轮廓图,但由于光线的反射、车辆车窗灰度及车身灰度或路面太接近等原因,分割后的图像不可避免地存在横向及竖向的断层,区域边缘也不太平滑,目标内部总是或多或少、或大或小存在一些空洞,同时一些噪声也可能被当作运动
区域分割出来。对于比较集中的噪声可以通过判断运动区域的大小加以剔除,因为在交通场景中运动目标所占的区域总是比可能的噪声要大。但是对于孤立点噪声和运动区域的空洞,必须进行处理。图像处理的目的就是去除干扰、噪声和差异,使系统关心的特征更加明显,将图像变成适合计算机进行特征提取的形式。现有的滤波算法很多,常用的有以下几种:均值滤波、中值滤波、高斯滤波、带通(包括低通、高通、带通和带阻)滤波、数学形态学滤波等,其对不同的噪声有不同的滤除效果,如高斯滤波对高斯噪声的处理效果最好,中值滤波可有效的滤除脉冲型噪声,而且对图像的边缘有较好的保护,带通滤波对图像有平滑和锐化作用,形态学滤波对随机噪声有很好的滤除效果,而且可以分割或连接相邻区域。根据差分图像的噪声随机分布的特点,本文选用数学形态学滤波来滤除噪声。
1)数学形态学滤波除噪声
数学形态学是一种应用于图像处理和模式识别领域的新理论和新方法。它主要以积分几何、几何代数及拓扑论为理论基础,将对象模型化,对集合进行研究, 它认为集合结构等信息存在于对象之间的关系可通过结构元素联系,用具有一定
形态的结构元素去度量和提取图像中的对应形状,以达到图像分析和识别的目的。结构元素是对象集合的一个子集,比较简单而且一定是凸的紧致集合,它与图像 处理的模板有相似作用,但性能比模板更强,它对图像进行移位、交、并等集合 运算构成形态学的各种处理算法。
各种形态学算法都是以腐蚀和膨胀这两种最基本的运算为基础,这两种运算的不同组合构成开、闭等基本运算,这些基本运算再进一步组合便可实现复杂的处理功能。腐蚀的作用是消除物体边界点,如果两个物体间有细小的连接,通过腐蚀运算可以将两个物体分开。通过竖向膨胀运算,物体的边缘扩大,所以必须采用一次腐蚀运算,以使物体消除增加的边界点。视频检测中容易出现车辆粘连问题,通过腐蚀在一定程度上可以将有细小连接的车俩分开。
其基本运算表示如下:
设 A 为图像集合,B 为结构元素,S 为结构元素分布区域,Φ为空集。
膨胀和腐蚀
膨胀:膨胀算子为 ,A 被 B 膨胀记为 A B ,其定义为:
A B { x (B) I A }
x
^ ^
即B首先做关于原点的映射 B ,然后平移X,这里A与 B 的交集不为空集,也就是
^
说 B 的位移与A至少有一个非零元素相交。膨胀运算具有扩大图像的作用,对填
补图像分割后物体中形成的空洞很有效。
对一幅二值离散图像做二值膨胀运算,一般采用下面的定义式:
D(m, n) A B max{ A(m i, n j) B(i, j) 1}
(i, j )1
其中D为膨胀结果,D(m,n)表示像素点(m,n)的取值(0或1)。腐蚀:腐蚀算子为,A被B腐蚀记为 AB ,定义为:
AB { x (B)x A}
上式表明A被B腐蚀的结果是所有B被X平移后包含于A的点X的集合。
腐蚀有收缩图像的作用,可以消除原图边界上不光滑的凸起部分,可以把小于结构元素的物体去掉。
二值腐蚀运算的表示形式为:
E(m, n) AB min{ A(m i, n j) B(i, j) 1
(i, j )S
开运算和闭运算
膨胀和腐蚀并不是互为逆运算,所以它们可以级连结合使用。如使用同一个结构元素先对图像进行腐蚀,然后膨胀其结果,这种运算称为开运算;如果先膨胀后腐蚀其结果,则称为闭运算。
开运算的算子用
表示,用B对A做开运算记做A
B,定义为
A B ( AB) B
闭算子的算子用 表示,用B对A做闭运算记做A B,定义为
A B ( A B)B
开运算和闭运算也具有对偶性。开运算能够去除孤立点、毛刺和小桥(连通两块区域的小点),而总的位置和形状不变。闭运算能够填充小孔,弥合裂缝,也不改变图像的总体形状和位置。以上各种运算都具有位移不变性、单调增长性、等幂性等,而这些特性是它们在图像处理中得以应用的基础。另外各个不同元素还具有各种不完全一致的特性,如组合性、互换性等。各种数学形态学算法的应用可分解为形态学运算和结构元素选择两个基本问题,形态学运算的规则己由定义决定,于是形态学算法的性能就取决于结构元素的选择。结构元素实际是一个小窗口内的灰度“形态”,也就是当窗口大小一定时,只需要确定窗口内像素点的数值大小。结构元素的选择包括结构的形状和大小两方面,可以根据处理的图像的特征和要求选择,一般滤除噪声可选择圆形、方形或十字形的结构元素,其尺寸大小根据实际情况而定,取值多在3-9之间。通过数学形态学滤波,差分图像中的噪声被除去了,且原来车辆上的一些空洞也被填平了,形成了一个较完整的车辆轮廓。在这里,我们采取方形结构元素,用开运算,即先腐蚀后膨胀的方法, 去除背景图中有阴影相连接的前景。
在得到理想背景的条件下,将背景差分图像经过二值化、形态学处理、区域填充后,可以得出运动车辆目标。
形态学处理前单个车二值化图 形态学处理后单个车二值化图模型二建立
4.1基于虚拟线圈的交通参数确定
利用虚拟线圈的方法检测车辆和统计交通流量参数,就是模仿实际埋设于路 面下的电磁感应线圈,在图像序列或者视频中,人工或者自动设定一系列的区域, 这些区域可以覆盖整个图像,也可以局限于图像的某个部分,就像在道路上埋检 测线圈一样,当其位置、大小确定以后,就可以由图像处理技术检测车辆。其作 用类似于电磁感应线圈,将二维图像信号转化成类似电磁感应线圈的一维时间信 号,然后监视该时间信号判断是否有车辆经过,并且完成车速测量。该方法的特 点是避开了在二维图像空间中进行复杂的车辆特征提取与跟踪。各个虚拟线圈的 输出信号主要来源于帧间差分,当帧间差分的结果小于判断阈值时,系统会自动 调用减背景图像处理方法来产生虚拟线圈信号。通过对交通流实际样本的自学习, 系统能够找到合适的放大倍数来调整线圈输出信号,从而抑制噪声,使得虚拟线 圈的输出信号更真实的反映车辆的实际通过情况。
每个虚拟线圈都拥有自己的数据缓冲池而不会造成多线圈间的数据访问混乱, 数据缓冲池中的数据是逐帧更新的。通过监视各个数据缓冲池中的信号,系统能 够检测到车辆的出现并开启跟踪进程。当同一个车道上前后两个线圈同时检测到 车辆的运动时,系统从两个线圈的数据缓冲池中找到相应索引位置的数据进行相 关匹配求得车辆的行驶速度。
最后,各车道的流量统计、各车辆的速度测量通过监视、跟踪虚拟线圈的输出信号求得。 目前,在使用虚拟线圈技术中,主要有两种方法,一类是将检测
区域分割成大量估值运动块,相当于设置多个虚拟线圈,这些虚拟线圈由N×N 大小的方块组成,然后结合基于方向的运动矢量检测对区域中的物体运动进行检测。另外较为常用的是把图像按照车道分为不同的检测区域,此区域即为虚拟线圈的检测范围。区域中设置检测线,每次在计算机上只检验区域对应的扫描行, 仅仅对区域中若干个检测线的象素进行分析。本文采用后一种方法,并对检测区域的选取和设置作了适当的改进。
4.1.1检测区域的选取和设置
虚拟检测区域是人为设置的检测区域,并不改变图像中它所在位置的颜色值或灰度值,只是在设定的时候由程序记忆标定的位置,以便图像处理时只对检测区域内进行处理。虚拟线圈可以在视频图像中自由设置,并且位置和大小可以调整。系统只处理虚拟线圈内的图像,由此降低了运算时间。检测区域一般水平放置于图像的中下部,在一定程度上可以避免前车遮挡后车的问题。检测区域不宜过大也不宜过小,区域过大会造成处理区域的象素个数增加,对应的数据运算时间也会增加,最终导致无法实现实时处理的要求。区域过小也不行,区域内的象素太少,会影响通过车辆的检测。因为识别的过程是以像素为基础,象素过少它反映的信息量就不足以去识别判断运动目标,当非目标的物体通过时就有可能造成误判,最后给检测数据带来偏差。所以要选择适当的处理区域大小,不影响系统的实时性。通常,一个检测区域高度为普通车长,宽度小于车道的宽度,因为车辆经常出现骑线驾驶和频繁换道情况。只有这样,才能使前面介绍的车辆目标检测方法比较完整的检测出一辆车来。虚拟线少,检测速度快,但容易产生误判;虚拟线多,会降低检测速度,但增强了检测结果的准确性。虚拟线的高度设置为1 个象素。在虚拟线的设置中有一点值得注意,因为路标通常标在车道的正中央, 有可能出现检测器穿过路标的现象。一般路标都是比较醒目的,与路面的灰度反差较大,在这种情况下有可能出现误判,所以尽量不要使虚拟线和路标有交集。
4.1.2检测区域设置方法
检测区域的设置虽各有不同,但工作原理基本相同,都是实时扫描监测区域内的像素,当出现连续的运动目标像素时,表示有车辆正在经过检测区域;当相应位置的像素恢复为非运动目标像素时,表示车辆已经驶过,车辆数计数加一。下面以设置虚拟线圈为例,参考文献【1】说明车流量的统计原理:记虚拟线圈中运动
目标(即车辆)特征像素点的数目为 M P
,虚拟线圈状态为Z ,取值为0和1:“0”
表示虚拟线圈没有车辆存在;“1”表示虚拟线圈中有车辆存在。可通过式来判断当前帧图像的虚拟线圈状态。
0,
Z
M P 0
1, M 0
P
在第t1 帧时,虚拟线圈状态由连续的“0”变为“1”,表示有车辆进入虚拟线圈; 在第t2帧时,虚拟线圈状态由连续的“1"变为“0",表示车辆已离开虚拟线圈, 此时车辆计数器加一。
4.1.3数据流提取
对相邻帧局部检测区域图像比较后检测区域内留下的车辆信息进行形态学处理后,还要进行量化,生成数据流。若用‘1’表示检测带内相应位置由车辆信息, 用‘0’表示检测带内相应位置无车辆信息,则检测区域内车辆信息就完全可用数据流表示。 在这里我们设置了宽度为164,高度为14 的像素点区域,为了减少数据的运算量以及所需的讯存期的数目,选取了4个像素宽,14个像素高的信息生成数据流的一个信息位。生成的算法如
式(6-2)所示,其中:I n 为数据流信息位, f (i, 4n j)为检测区域点的灰度值;
Bw 为检测区域宽度; GI 为数据流阈值,由统计的数据而定。
14 4
1
f (i, 4n j) G
n 0, ,
I
Bw 1
i1 j1 4
I n
0
f (i, 4n j) G n 0, , B
14 4
w 1
I
5.1.1数据流修正
i1 j1 4
由于相邻帧局部检测区域图像比较可能会造成车辆的一部分信息丢失而产生断 带,因此需校正数据流,得到尽可能连续的“1”。首先进行填1操作,消除断带; 然后进行填0操作,去除不足以表示一辆车的信息位“1”。这一顺序不能颠倒.
- 填1:修补数据流中的断带。对于两个有断带信息位“1”,统计断带中的
“0”。若小于阈值,则进行填“1”操作;否则,保留原值。阈值为两辆并行车 辆的视频图生成数据流后的最小间距,该最小间距由镜头安装高度和角度等决定。
I 0n
1
0
L0 d v
n 1, , L0 1
L0 d v
式中:
I 0n
为当前断带第n 个“0”信息位; L0 为断带长度; d v 为车辆最小
水平间距。
填0:统计连续“1”段,对不足以表示一辆车的信息位。“1”段进行填“0”操作,阈值为车辆最小宽度。
I 1n
1
0
L1 Sv
n 1, , L1 1
L1 Sv
式中:
I 1n 为当前连续“1”的第n 格“1”信息位; L1
为断带长度; S v 为
车辆最小宽度。
6.1.1车辆计数
如果用当前帧的数据流减去上一帧的数据流只可能出现4种情况和3种结果
- 上一帧某一位置没有车,当前帧对应位置也没有车:0减0,结果为0;
- 上一帧某一位置没有车,当前帧对应位置有车:1减0,结果为l;
- 上一帧某一位置有车,当前帧对应位置没有车:0减1,结果为-1;
- 上一帧某一位置有车,当前帧对应位置也有车:1减1,结果为0。
结果为“1”表示有新车到来,结果为“-1”表示车辆已经离开,利用该结果可以方便的进行车辆的计数。我们利用MATLAB7.0编程模拟。
七模型的求解与检验
为了虚拟线圈的视频检测法的求解准确,我们在同一水平线处同时设置了四条虚拟线线圈,如图:
从左至右依次即为1,2,3,4,虚拟线圈
针对路口一段时间内以车流量为例进行了实验。我们将检测器的检测结果与人工数车结果进行比较。
用漏检率、虚警率、准确率作为指标来评价系统的性能,分别定义为: 漏检率=系统漏检车辆的数目/人工数车的总数量
虚警率=系统多数车辆的数目/人工数车的总数量准确率=1-漏检率-虚警率
统计结果如下:
虚拟线圈 | 人工数车 | 程序数车 | 其中 | 漏检率 | 虚警率 | 正确率 | ||
正确 | 漏数 | 多数 | ||||||
1 | 68 | 64 | 62 | 5 | 1 | 7.35% | 1.47% | 91.17% |
2 | 66 | 70 | 56 | 3 | 7 | 4.54% | 10.60% | 84.85% |
3 | 71 | 69 | 65 | 4 | 2 | 5.6% | 2.81% | 91.55% |
4 | 69 | 66 | 64 | 4 | 1 | 5.79% | 1.44% | 92.75% |
漏检率和虚警率越小,得到的准确率就越高,表明系统的性能越好,而系统的漏检和多数的车辆数目则是人为对当前的实际图像是否有车进行判断并和程序是否加一计数相比较得来的。
八实验结果分析
在光照条件较好的天气情况下,虚拟线圈检测具有较高的准确率,且能完全接近
地感线圈检测法的检测效果。但在光照较差的情况下,虚拟线圈检测的准确率较低,特别是虚警率比较高。主要原因有以下几个方面:
①在光照不好的情况下,图像的对比度下降,图像序列灰度化后,车辆目标特别是车玻璃和背景在灰度上很相近,造成车辆目标无法较好的提取出来。
②图像填充部分对去除噪声的要求比较高,因此如果前面去噪的效果不好,会造成噪声被误认为是车辆,造成虚警率提高;同时,部分经验值设定的不够合理也会影响到检测的精度。
③背景更新算法影响阴影检测算法,如果背景更新算法不理想,其阴影检测的结果就会有较大的偏差。
九模型的优缺点:
优点:改进了车辆检测方法,同时采用了分块处理的背景更新策略,提高了系
统的实时可靠性;对于阴影干扰的消除,采用了基于HIS空间的阴影检测算法来实现;最后通过在视频图像中设置多个虚拟线圈来完成交通参数检测。整体来讲, 简单,易于实现,运算量小,实用性高。
缺点:该模型无法对由于相邻车道的车辆遮挡、车流量较大导致前后车距离过近甚至相粘连、红绿灯或者交通阻塞造成的长时间停车等原因造成车辆检测出错等进行修正。
十 模型的改进与推广:
模型的改进
以上的模型是在一定的假设条件下对实际分析过程的一种抽象简化,但与实际情况并不完全相符,下一步可以尝试从以下几个方面来解决:
1)采用更好的图像采集设备,使得采集到的数据更加清晰,更适合处理,通过改善前端数据采集的性能来降低后端算法上的难度。2)可以将算法移植到硬件,这样就可以采用某些以前无法采用的大计算量的算法,比如可以在彩色图像上直接进行处理。3)可以研究更加适合车辆交通图像的二值化方法,以及选择更加合适的去噪滤波器,尽可能降低噪声对后续判定的影响;在某些经验值的设定上要通过更加大量的测试来确定,选择更好的数值以提高准率。4)本系统的阴影检测算法依赖于背景估计算法,可以尝试使用更好的阴影检测。一方面,可以加强多个
线圈之间的协同操作。如通过相邻车道线圈的协同处理,判断当前检测到的车辆是否为邻车道车辆的遮挡造成的误判;另一方面,对于像长时间停车的问题,可以在全天候车辆检测系统中设计一种环境评估算法,判断当前线圈检测值的变化是否是由气象、光照等条件变化引起的。确实是环境变化的话,可以加快背景更新速度,相反若是停车,则可以减缓更新速度甚至暂停背景更新。这种在整体框架下对检测算法进行改进的思路与方法,是解决上述问题的正确途径,也是今后研究的方向。
模型的推广:
本文建立了两个模型,一个是背景和前景提取模型,一个是实用简化的车流量统 计模型。前者借助一定的科学知识,有坚实的理论基础;后者基于前者的模型之 上利用简易的模型对实际问题进行抽象简化,最终形成一个简单实用的求解方法。利用视频检测器来检测交通信息作为智能交通系统中的一项重要技术,已受到越 来越多的重视。计算机视觉技术在智能交通系统中有着巨大的应用潜力,日益受 到重视,出现了越来越多的相关研究、论文、产品,涉及到交通标志检测、道路 识别,车辆检测与识别、车牌识别、行人检测、传感器融合等许多领域的技术。该模型可在今后生活中可以用于交通管理中的电子警察,以及餐饮服务行业的制 造监控自动化。
参考文献
【1】 刘宝民, 动态交通信息采集与数据融合技术的研究[D].硕士学位论文,
2008;
【2】 彭强,李华,基于块直方图分析的视频背景提取方法[J].西南交通大学学报,2006,41(1):48—53;
【3】 李湘平,杨兆选,基于虚拟线的视频交通检测新算法,电子测量与仪器学报第19卷第四期:page1,2005,8;
【4】 李晓飞,梅忠辉,一种基于直方图统计与多帧平均混合的背景提取算法, 南京邮电大学学报第28卷第6期:page1,2008,12;
五、源码
% “高速公路汽车阴影”视频的阴影去除的方法clc;
clear all; close all;
% 打开视频文件对话框
h1=figure('toolbar','none','name','Shadow Removal');
[FileName,PathName]=uigetfile( { '*.avi','avi (*.avi)';'*.*','All Files (*.*)'},'Open video sequence' ); if isequal([FileName,PathName],[0,0])
return; else
pic_path=fullfile(PathName,FileName); mov=aviread(pic_path);
end
n=100; % 读取视频帧数
s=1; % 起始为 1
e=n; % 结束为 n
for i=s:e
mov_gray(i).image=mov(i).cdata; % mov_gray(i).image 为第i 帧图像
end
[ih,iw,id]=size(mov_gray(1).image); % 取得视频帧的大小
% 计算 1 到第 n 帧的各个像素的均值
for i=s:e
u=mov_gray(i).image; h=u(:)';
t(i,:)=h(:);
end
ok=mean; tmp(1:3)=0;
di=20;
th=ones(1,1,3)*di; % 预设阀值
diff=double(ok)-double(mov_gray(fn).image); % 计算第 fn 帧图像与背景的差值
diff1=abs(diff); for ai=1:ih
for bi=1:iw
if abs(diff(ai,bi,1:3))>=th(1,1,:)
ok(ai,bi,1:3)=mov_gray(fn).image(ai,bi,1:3); else
ok(ai,bi,1:3)=0;
diff1(ai,bi,1:3)=0; end
end end
figure,imshow(uint8(ok));title('前景图像');
impixelinfo;
% 阀值分割
for ci=1:ih
for di=1:iw
if (g1(ci,di,3)./g(ci,di,3)>=0.4)... %这个地方的阈值选取是手动的,根据经验得到!
&&(g1(ci,di,3)./g(ci,di,3)<=0.5)...
&&abs(g1(ci,di,2)-g(ci,di,2))<=0.05 && abs(g1(ci,di,1)-g(ci,di,1))<=0.1; h1(ci,di,1:3)=1;
else
h1(ci,di,1:3)=0; end
end end
h=hsv2rgb(h1);
figure,imshow(h);title('阴影去除结果');