资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2019/12/19,#,一、运动物体的检测方法,运动目标检测指从图像序列中将前景变化区域从背景图像中提取出来;现阶段运动目标的检测的难点主要在:动态变化着的背景的提取与更新、光线变化(渐变、突变、反光)问题、阴影干扰、目标遮挡、背景物体变化(如树叶、水波、天气变化等)、及目标运动过程不连续、速度缓慢、往返运动等问题上。现阶段主要的基本的检测算法视频图像的时域和空域信息;主要检测算法如下:,1,、背景减法,背景减法的原理是利用当前图像与背景图像的差分来检测运动区域的一种技术。它一般能够提供最完整的特征数据,而且速度快,能适合实时系统的要求。但是对于动态场景的变化,如光照和外来无关事件的干扰特别敏感。,2,、时间差分,时间差分方法利用图像序列中前后几个相邻帧图像之间的差分来提取图像中的运动区域例如,Lipton,等利用两帧差分方法从实际视频图像中检测出运动目标,进而用于目标的分类与跟踪。一个改进的方法是利用三帧差分代替两帧差分,如,VSM,开发了一种自适应背景减除与三帧差分相结合的混合算法,它可以快速有效地从背景中检测出运动目标。时间差分运动检测方法对于动态环境具有较强的自适应性,但它一般不能完全提取出所有相关的特征像素点,在运动实体内部容易产生空洞现象。,3,、光流,光流方法的运动检测采用了运动目标随时间变化的光流场特性,从而有效地提取和跟踪运动目标。该方法的优点是在摄像机运动存在的前提下也能检测出独立的运动目标,而缺点在于计算方法相当复杂,且抗噪声性能差,如果没有特别的硬件装置则不能被应用于全帧视频流的实时处理。,4,、统计方法,统计方法是利用单个像素或几组像素的变化特征建立背景模型,克服了传统背景减法对动态干扰因素较敏感的问题。如利用背景注册技术构建可靠的背景模型,将当前帧与背景模型相减提前前景区域。该方法能成功克服噪声和光照变化的影响,但是需要捕获大量数据建立背景模型,如果背景变化较大,则前若干帧则无法获得完整的背景模型。,二、运动物体的跟踪方法,运动物体跟踪就是在图像序列间创建基于位置、速度、形状等有关特征的对应匹配问题。运动跟踪算法与运动检测算法会进行大量的信息交互。跟踪通常是利用点、线、或区域等特征在后续图像中进行运动目标的匹配;常用的算法有,Kalman,算法,,mean-shift,和,camshift,算法,,condensation,算法等。,1,、,Kalman,滤波器,卡尔曼滤波是基于高斯分布的状态预测方法,可实时地进行跟踪预测。其基本思想是,若有一组强而合理的假设,给出系统的历史测量值,则可以建立最大化这些早期测量值的后验概率的系统状态模型。即重复更新系统状态模型。,Kalman,滤波器需要二个重要的假设,(,1,)被建模的系统是线性的;即,k,时刻的系统状态可以用某个矩阵与,k-1,时刻的系统状态的乘积表示。(,2,)假设噪声是高斯分布的白噪声,即噪声与时间不相关。,Kalman,算法流程:,首先,我们先要引入一个离散控制过程的系统。该系统可用一个线性随机微分方程(,Linear Stochastic Difference equation,)来描述:,X(k)=A X(k-1)+B U(k)+W(k),再加上系统的测量值:,Z(k)=H X(k)+V(k),上两式子中,,X(k),是,k,时刻的系统状态,,U(k),是,k,时刻对系统的控制量。,A,和,B,是系统参数,对于多模型系统,他们为矩阵。,Z(k),是,k,时刻的测量值,,H,是测量系统的参数,对于多测量系统,,H,为矩阵。,W(k),和,V(k),分别表示过程和测量的噪声。他们被假设成高斯白噪声,(White Gaussian Noise),,他们的,covariance,分别是,Q,,,R,(这里我们假设他们不随系统状态变化而变化)。,对于满足上面的条件,(,线性随机微分系统,过程和测量都是高斯白噪声,),,卡尔曼滤波器是最优的信息处理器。下面我们来用他们结合他们的,covariances,来估算系统的最优化输出。,首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是,k,,根据系统的模型,可以基于系统的上一状态而预测出现在状态:,X(k|k-1)=A X(k-1|k-1)+B U(k).(1),式,(1),中,,X(k|k-1),是利用上一状态预测的结果,,X(k-1|k-1),是上一状态最优的结果,,U(k),为现在状态的控制量,如果没有控制量,它可以为,0,。,到现在为止,我们的系统结果已经更新了,可是,对应于,X(k|k-1),的,covariance,还没更新。我们用,P,表示,covariance,:,P(k|k-1)=A P(k-1|k-1)A+Q (2),式,(2),中,,P(k|k-1),是,X(k|k-1),对应的,covariance,,,P(k-1|k-1),是,X(k-1|k-1),对应的,covariance,,,A,表示,A,的转置矩阵,,Q,是系统过程的,covariance,。式子,1,,,2,就是卡尔曼滤波器,5,个公式当中的前两个,也就是对系统的预测。现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值和测量值,我们可以得到现在状态,(k),的最优化估算值,X(k|k),:,X(k|k)=X(k|k-1)+Kg(k)(Z(k)-H X(k|k-1)(3),其中,Kg,为卡尔曼增益,(Kalman Gain),:,Kg(k)=P(k|k-1)H/(H P(k|k-1)H+R)(4),到现在为止,我们已经得到了,k,状态下最优的估算值,X(k|k),。但是为了要使卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新,k,状态下,X(k|k),的,covariance,:,P(k|k)=,(,I-Kg(k)H,),P(k|k-1)(5),其中,I,为,1,的矩阵,对于单模型单测量,,I=1,。当系统进入,k+1,状态时,,P(k|k),就是式子,(2),的,P(k-1|k-1),。这样,算法就可以自回归的运算下去。,2,、,Camshift,算法,CamShift,算法,即,Continuously Apative Mean-Shift,算法,是一种运动跟踪算法。它主要通过视频图像中运动物体的颜色信息来达到跟踪的目的。我把这个算法分解成三个部分,便于理解:,1),Back Projection,计算,2),Mean Shift,算法,3),CamShift,算法,2.1,),Back Projection,计算,Back Projection,的步骤是这样的:,1.,计算被跟踪目标的色彩直方图。在各种色彩空间中,只有,HSI,空间,(,或与,HSI,类似的色彩空间,),中的,H,分量可以表示颜色信息。所以在具体的计算过程中,首先将其他的色彩空间的值转化到,HSI,空间,然后会其中的,H,分量做,1,D,直方图计算。,2.,根据获得的色彩直方图将原始图像转化成色彩概率分布图像,这个过程就被称作,Back Projection。,在,OpenCV,中的直方图函数中,包含,Back Projection,的函数,函数原型是:,void cvCalcBackProject(IplImage*img,CvArr*backproject,const CvHistogram*hist);,传递给这个函数的参数有三个:,1.,IplImage*img:,存放原始图像,输入。,2.,CvArr*backproject:,存放,Back Projection,结果,输出。,3.,CvHistogram*hist:,存放直方图,输入,2.2,)算法分析用在,cvCalcBackProject,处理中的模板是目标,图像色调,(HUE),的直方图,,而直方图可以看作是一种,概率分布图,。在处理前,目标图像中的每一个象素的值描述的在这一点的颜色信息,而处理后,图像中每一个象素的值就变成了这个颜色信息出现在此处的可能性的一种离散化的度量,出现的可能性大,象素的值就大,反之则小。这样就为后面的匹配和跟踪提供了线索。,2.3,),mean-shift,算法,Mean-shift,算法,是一种在一组数据的密度分布中寻找局部极值的稳定的方法。,mean-shift,算法的步骤如下:,(,1,)选择搜索窗口。,窗口的初始化位置;,窗口的类型(均匀、多项式、指数或者高斯类型);,窗口的形状(对称的或歪斜的,可能旋转的,圆形或矩形);,窗口的大小(超出窗口的则被截除)。,(,2,)计算窗口(可能是带权重的)的重心。,(,3,)将窗口的中心设置在计算出的重心处。,(,4,)返回第(,2,)步,直到窗口的位置不再变化。,在,OpenCV,中,提供,Mean Shift,算法的函数,函数的原型是:,int cvMeanShift(IplImage*imgprob,CvRect windowIn,CvTermCriteria criteria,CvConnectedComp*out);,需要的参数为:,1.,IplImage*imgprob:2D,概率分布图像,传入;,2.,CvRect windowIn:,初始的窗口,传入;,3.,CvTermCriteria criteria:,停止迭代的标准,传入;,4.,CvConnectedComp*out:,查询结果,传出。,(,注:构造,CvTermCriteria,变量需要三个参数,一个是类型,另一个是迭代的最大次数,最后一个表示特定的阈值。例如可以这样构造,criteria:criteria=cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,10,0.1)。),返回的参数,int:,迭代的次数。,2.4,),CamShift,算法,1.,原理在了解了,MeanShift,算法以后,我们将,MeanShift,算法扩展到连续图像序列(一般都是指视频图像序列),这样就形成了,CamShift,算法,。,CamShift,算法的全称是,“,Continuously Apaptive Mean-SHIFT”,,它的基本思想是视频图像的所有帧作,MeanShift,运算,并将上一帧的结果(即,Search Window,的中心和大小)作为下一帧,MeanShift,算法的,Search Window,的初始值,如此迭代下去,就可以实现对目标的跟踪。整个算法的具体步骤分,5,步:(,1,)将整个图像设为搜寻区域。(,2,)初始话,Search Window,的大小和位置。,(,3,)计算,Search Window,内的彩色概率分布,此区域的大小比,Search Window,要稍微大一点。,(,4,)运行,MeanShift。,获得,Search Window,新的位置和大小。,(,5,)在下一帧视频图像中,(,3,)获得的值初始化,Search Window,的位置和大小。跳转到(,3,)继续运行。,2.,实现在,OpenCV,中,有实现,CamShift,算法的函数,此函数的原型是:,cvCamShift(IplImage*imgprob,CvRect windowIn,CvTermCriteria criteria,CvConnectedComp*out,CvBox2D*box=0);,其中:,imgprob:,色彩概率分布图像。,windowIn:Search Window,的初始值。,Criteria:,用来判断搜寻是否停止的一个标准。,out:,保存运算结果,包括新的,Search Window,的位置和面积。,box:,包含被跟踪物体的最小矩形。,3,、,condensation,算法,基于粒子滤波的,condensation,算法,该算法的主要思想是通过加权的后验样本“粒子簇”来表示所需的后验密度函数,并
展开阅读全文