FROM:http://www.cnblogs.com/ronny/p/4256150.html
最近对运动目标检测与跟踪这一块的知识进行了一个整体性的回顾,又看了几篇综述性的论文,所以这篇博客算是做一个简单的记录,对几个重要的概念进行了描述与分析。并没有去研究现在这一领域那些最近的研究成果。因为在我看来,算法的主体想法都是一致的,每种方法都有它适应的场景。抓住轴心就够了!
前景检测这一块,我比较推荐参数方法,高斯混合模型与码本方法都是经过验证,在实际工程中表现极好的,但是你必须根据你需要的场景对算法做一些改进。这篇文章只是初稿,后面会进行完善,加入一些论文链接,希望对运动检测这一块进行一个完整的综述。
1. 运动检测的简介
用于安防的监控视频大多数具有单镜头固定场景的特点。
2 运动目标检测的基本方法
2.1 帧间差分法
通常相邻两帧图像在时间上的间隔很短(一般用于视频监控的摄像机每秒可以拍摄8/12/24帧),所以当背景变化不是非常剧烈和迅速的时候可以利用前后两幅图像的差值来判断画画中运动的目标,通过设定阈值的调整可以改变方法检测的灵敏度。
优点:运算量小,实现简单,噪点较少,对光照不敏感。
缺点:不能检测速度过慢的物体,物体内部会造成空洞,物体本身也不完整。速度过快的物体,会形成两个前景区域。
2.2 光流法
对画面中图像首先进行逐像素矢量赋值,当画面中出现运动目标时,运动目标在画面总所占据的像素点和背景像素点之间的矢量必然会有差异,如果没有运动目标出现则画面中的像素点的矢量变化应当为平滑的。正是由于有这样的差异,才能利用差异检测出运动目标在画面中的像素点。
优点:适合于背景不断变换的场景(移动摄像头),不需要预先的视频进行训练。
缺点:抗噪能力差,计算量大,光照影响比较大。
2.3 背景差法
帧间差分法的流程图可以看出两幅流程图的基本框架大致相同,不同的地方在于背景差分法中有一个背景模型,这个背景模型是用来和所有的检测帧进行差分运算的,而不同于帧间差分法的用上一帧图像和下一帧图像进行差分运算。
3 CodeBook背景模型
3.1 CodeBook的原理
设 X={x1,x2,⋯,xN} 为视频序列中某位置像素点在不同时刻的连续的色彩值。其中 xt 为 t 时刻采样到的RGB向量值, N 代表用于生成背景模型的帧数。
设 Cbook={c1,c2,⋯,cL} 为该像素点汇总的各个聚类形成的码书,其中 ci(i=1,⋯,L) 表示码书中的一个码字(codeword),其中每个码字由 vt=(Rt,Gt,Bt) 和 ut=<Imint,Imaxt,ft,λt,pt,qt> 组成。其中 1<t<N , vt 表示码字在RGB色彩空间中三个轴的向量值, ut 表示 vt 的统计信息,其中 Imint,Imaxt 表示该码字的最小的和最大的亮度值, f 表示该码字出现的频率, λ 表示码字出现的最大时间间隙, p 表示码字第一次出现的时间, q 表示码字最后一次出现的时间。
码书的构建中,用于判定一个像素点是否属于码书中的某个码字的条件是:
1) 比较色彩的空间距离 colordist(xt,vi) ,其中 xt=(Rt,Gt,Bt) 是当前图像中某一像素的输入色彩值, vi 为该像素点码书中的一个码字的聚类,colordist的定义如下:
其中 p 为 xt 余弦夹角下的投影值。如果上面计算到的距离小于某一阈值 T1 ,则进行下一步判定。
2)像素点的亮度必须在一定的范围( Ilow,Ihi )内。
如果像素与码书中的某个码字,则要对该码字进行更新,颜色值按加权平均重新计算。如果当前的像素点不满足上面的两种情况,则重新建一个新的码字。
按上面的方法对每个像素点建立码本,这样的情况下,前景像素也会生成为码本中的码字(一个聚类单元)。对于那些出现的最大间隔 λ 小于 N/2 的码字删除。
3.2 码书算法的两个改进
1)不要只单一的考虑单个像素点,同时考虑其周围邻域的变化
2)RGB空间用夹角余弦计算距离并不合适。可以考虑用YUV空间。
3.3 颜色空间
亮度(V):人的视觉最敏感的亮度变化,光的能量大小。
色调(H):也就是我们常说的颜色,用于颜色的命名。
饱和度(S):反映色调的鲜艳程度。
3.4 行列分块的YUV码书模型
有时候摄像机会存在抖动,且背景上有些像素也会随着环境做不稳定的变动。
对图像进行网格划分,每5*5的网格共用一个码本,这样可以消除局部的抖动。
还有一种方法,是将行码书(1*5)与列码书(5*1)分开考虑,一个像素点的行码书或列码书判定为前景时,该点则为前景点。列码书的判定可以对行码书的阈值进行调整。
4. 运动目标跟踪方法
4.1 运动目标的表示
目标跟踪问题中,目标的表示形式是目标跟踪的基础。
最为常见的就是基于目标形态的表示方法。它可以有以下几种方法:
1)点表示的方法。将目标通过一个点来表示,即其中心点来表示。对于比较大的目标可以选择用一组点来表示。这种表示方式适合目标相对于整个图像来说比较小时。
2)几何形状表示法。通过定义椭圆或矩阵框来表示目标区域。只这种表示方法只适合不易发生形变的刚性物体的运动。
3)骨架表示法。将目标的轮廓经中轴变换后,即可提出物体骨架模型。
4)轮廓表示法。物体的轮廓表示物体的边界。
其次比较重要的表示法还有目标的外观特征表示方法。一种有以下几种:
1)目标概率密度表示方法。
2)模板表示方法。
3)主动外观模型表示法。对目标的形状和外观同时建模。
4)多视点模型表示法。
4.2 多特征组合
颜色特征:Lab空间
边缘特征:不受光照变化的影响。
纹理特征:LBP特征,
4.3 跟踪方法
1) 基于点的跟踪
2)基于统计的跟踪
3)基于轮廓的跟踪
4.4 基于光流法的跟踪
一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。其计算方法可以分为三类:
1)基于区域或者基于特征的匹配方法;
2)基于频域的方法;
3)基于梯度的方法;
简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。
光流法的前提假设:
1)相邻帧之间的亮度恒定;
2)相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;
3)保持空间一致性;即,同一子图像的像素点具有相同的运动。
光流法用于目标跟踪的原理:
(1)对一个连续的视频帧序列进行处理;
(2)针对每一个视频序列,利用一定的目标检测方法,检测可能出现的前景目标;
(3)如果某一帧出现了前景目标,找到其具有代表性的关键特征点(可以随机产生,也可以利用角点来做特征点);
(4)对之后的任意两个相邻视频帧而言,寻找上一帧中出现的关键特征点在当前帧中的最佳位置,从而得到前景目标在当前帧中的位置坐标;
(5)如此迭代进行,便可实现目标的跟踪;