图3-3-3 减背景法的基本流程
在减背景中背景的更新是十分重要的环节。初始背景完成后,当原来属于背景中的物体开始运动时,使用传统的背景更新方法(如选择性更新方法错误!未找到引用源。)将得到一个错误的检测目标,称为虚假目标。由于选择性背景更新方法对虚假目标不予更新,虚假目标将一直保留在背景中并将一直被误检为真实目标。这就是背景更新的“死锁”问题错误!未找到引用源。。为解决此问题, Elgammal错误!未找到引用源。等人建立了非参数背景模
型,结合了两个模型(长、短期模型,它们获得不同类型的目标)以获得更好的更新策略,避免了“死锁”问题。Cucchiara错误!未找到引用源。 等不是选择性地更新单一运动点,而是选择性地更新已检测和识别到的目标[11]。
在检测运动目标时,还需要考虑阴影的影响,阴影可能会扭曲目标的形状,甚至可能被误检为目标。为了解决阴影问题,Jiang等错误!未找到引用源。提出了一种在静态图像中剪除阴影的方法,Kilger错误!未找到引用源。在交通场景中通过寻找水平和垂直的边缘来分割阴影,Stauder等错误!未找到引用源。计算当前帧和以前帧中对应像素点亮度上的比值,如该值小于预设阈值,则认为该点为阴影点,Cucchiara等错误!未找到引用源。提出一种在HSV 颜色空间内剪除阴影的方法。
3.4 背景减除和帧差结合检测目标
在摄像头静止的监控中,采用减背景方法检测运动目标能获得目标完整的运动信息,特别是在目标运动缓慢的情况下检测的准确度较高,但是对背景动态变化的适应性较低。假如采用基于帧间差分的方法检测目标,则能提高对环境动态变化的适应性,但是对目标变化缓慢的部分却不容易准确地检测出来。本文是在摄像机静止的固定背景下进行多目标检测的,在对背景减除法和帧差法充分分析研究基础上对背景图像的获取和更新采用了背景减除和帧间差分相结合的方法,该方法能有效地检测运动目标并能适应监控场景的实时变化。该方法分为二个阶段,背景建立和前景分离[12],流程图图3-4-1如下所示:
输入视频帧第一帧图像Y第一帧图像作为初始背景相邻帧图像帧差更新背景N
图3-4-1 背景建立
背景图像目标跟踪输入视频高斯滤波二值图像检测目标背景更新形态学处理当前图像 图3-4-1 前景分离
输入视频去噪后的第一帧图像设为初始背景(假设第一帧图像里包含的运动目标在接下来的连续数帧中都作为运动目标明显运动,该假设符合实际情况,如输入的是彩色图像先转化为灰度图像)。利用Surendra背景更新算法获取自适应的背景图像。对从摄像机输入的t时刻图像It(x,y)进行核大小为3×3的高斯卷积平滑滤波预处理,使图像去噪和平滑,将其与t时刻背景图像Bt(x,y)相减并将结果二值化,经形态学滤波处理后检测是否存在运动目标,通过背景更新函数得到Bt?1(x,y)作为更新后的t+1时刻背景图像,从而实现背景实时更新。
自适应背景获取算法是通过当前帧帧差图像找到物体的运动区域,对运动区域内的背景保持不变,而非运动区域的背景用当前帧进行替换更新,经过一段时间后就可以提取出背景图像。其算法如下:
① 将第1帧图像I0作为背景B0。
② 选取阈值T,迭代次数m=1,最大迭代次数MAX-STEPS。 ③ 求当前帧的帧差分图像:
??T1?1 iI?i?I Di?? (2-6)
?T?1?0 iI?i?I④ 由二值图像Di更新背景图像Bi,即:
Bi?x,y????Bi?1(x,y) Di(x,y)=1 (2-7)
??Ii?(1??)Bi?1(x,y) Di(x,y)=0式中Bi?x,y?,Di为背景图像和差分二值图像在(x,y)的灰度值,Ii为输入的第i 帧图像,?为迭代速度系数(?<<1)。
⑤ 迭代次数m=m+1,返回③,当迭代次数m=MAX-STEPS时结束迭代。此时Bi?x,y?可视为背景图像。
减背景算法是把当前帧图像与当前背景相减,并二值化结果,公式如下:
?1 |It(x,y)-Bt(x,y)|?T (2-8) Diff=??0 |It(x,y)-Bt(x,y)|< T
背景更新函数如下:
??Bt?1(x,y)?(1??)It?1(x,y), ??1 Dt(x,y)=1 (2-9) Bt?x,y?????Bt?1(x,y)?(1??)It?1(x,y), ??1 Dt(x,y)=0式中更新系数?、?实现不同情况下的背景更新,Bt?x,y?对应于It?1(x,y)中包含运动目标的区域更新系数?约为1,?越接近1,背景更新速度越是缓慢,也就是说Bt?x,y?中该区域背景图像和Bt?1?x,y?对应区域图像基本一致,这是因为在当前帧的该区域只反映目标运动,背景在该区域几乎不变;Bt?x,y?对应于It?1(x,y)中不包含运动目标区域,可以认为该区域背景处于动态变化中,更新系数?设为远远小于1,?越接近0,背景更新越快,也就是说Bt?x,y?中该区域图像基本和It?1(x,y)对应区域图像一致。采用该背景更新函数能实时更新背景,能较好的适应场景中光线变化,提高目标检测的精确度。
实验中假设第一帧图像检测时场景中有个别运动物体非静止状态存在,这样的假设在实验条件下是能够存在的故先取前100帧图像作为初始背景的检测即利用式(2-7)设MAX-STEPS=100,?=0.03,此时背景的更新速度较快。100帧以后根据建立的背景,采用减背景算法式(2-8)检测运动目标并根据式(2-9)实时更新背景, 此时?=1,?=0.997,?取越小背景更新速度越快,运动物体停留也能被检测的时间就越短,兼顾实时更新背景和检测停留目标,这里根据需要设置了?使得目标停留仍能很好的检测得到[13]。
由背景图像与当前图像相减并阈值化为二值图像,由于视场的细微变化使得目标分割受初始数据中的噪声影响很大,为了消除小而假的前景运动目标,以便得到真正的前景目标,采用形态学先开后闭运算方法进行处理。先用3×3的腐蚀模板过滤,去掉零散的噪音点线,再用3×3的膨胀模板过滤,恢复原来正确的前景区域,通过八领域连通区域分割,提取出运动目标,并将面接小于阈值Ta(实验中设为20)的目标舍去,得到当前帧中检测得到的运动目标,再用目标外接矩形框标注。
第四章
4.1 Opencv简介:
运动检测的设计与开发
OpenCV名字包含Open和Computer Vision 两个词的意思。Open实际上指的是Open Source(开源:开发源代码)。Computer Vision则指计算机视觉。计算机视觉(Computer Vision)是在图像处理的基础上发展起来的新兴学科,它从信息处理的层次研究视觉信息的认知过程,研究视觉信息处理的计算理论、表达与计算方法,包括图像特征提取,摄像机定标,立体视觉,运动视觉(或称序列图像分析),由图像灰度恢复三维物体形状的方法,物体建模与识别方法以及距离图像分析方法等方面。
OpenCV是由Intel公司位于俄罗斯的研究实验室开发出来的。为了考虑计算的速度,大多数图像处理的软件包是用C/C++编写的。OpenCv也不例外。它是由300多个C函数和C++类所组成的库,在IPL(ageprocessinghbrary)基础上发展而来的。主要由4个模块组成:①cv:主要的Opencv函数;②cvaux:辅助性的Openvb函数;③cxcore:数据结构与线性代数支持;④highgui:图像界面函数[14]
4.1.1 Opencv的特点:
⑴具有良好的独立性。包含了300多个C函数和C++类,不依赖于外部库,即可以独立运行,也可以在运行时使用其它外部库。
(2)具有良好的跨平台性。OPencv是由跨平台的中、高层API构成,为程序员提供了能在很多平台上都适用的移植性好的算法基础操作,很好地支持Windows、Linux、Unix及MacOSX等操作系统,可以在大多数的C/C++编译器下工作,如:MSVC++6.0、MSVC++.NET2003、MSVC++.NET2005和BorlandC++Builder等,可以作为二次开发的理想工具。
(3)具有丰富的图像处理函数。OPenCv包含了列表、列、集合、图等基本的数据结构;求特征值、奇异值等的矩和向量及线性代数的操作;图像滤波、边缘检测、角点检测、数学形态学操作等的基本数字图像处理:还包括对图像的高级处理,如特征检测与跟踪、运动分析
相关推荐: