收藏 分销(赏)

opencv中常用的检测和跟踪算法原理介绍.pptx

上传人:天**** 文档编号:4177793 上传时间:2024-08-12 格式:PPTX 页数:12 大小:96.31KB
下载 相关 举报
opencv中常用的检测和跟踪算法原理介绍.pptx_第1页
第1页 / 共12页
opencv中常用的检测和跟踪算法原理介绍.pptx_第2页
第2页 / 共12页
opencv中常用的检测和跟踪算法原理介绍.pptx_第3页
第3页 / 共12页
opencv中常用的检测和跟踪算法原理介绍.pptx_第4页
第4页 / 共12页
opencv中常用的检测和跟踪算法原理介绍.pptx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、一、运动物体的检测方法 运动目标检测指从图像序列中将前景变化区域从背景图像中提取出来;现阶段运动目标的检测的难点主要在:动态变化着的背景的提取与更新、光线变化(渐变、突变、反光)问题、阴影干扰、目标遮挡、背景物体变化(如树叶、水波、天气变化等)、及目标运动过程不连续、速度缓慢、往返运动等问题上。现阶段主要的基本的检测算法视频图像的时域和空域信息;主要检测算法如下:1、背景减法 背景减法的原理是利用当前图像与背景图像的差分来检测运动区域的一种技术。它一般能够提供最完整的特征数据,而且速度快,能适合实时系统的要求。但是对于动态场景的变化,如光照和外来无关事件的干扰特别敏感。2、时间差分时间差分方法

2、利用图像序列中前后几个相邻帧图像之间的差分来提取图像中的运动区域例如Lipton等利用两帧差分方法从实际视频图像中检测出运动目标,进而用于目标的分类与跟踪。一个改进的方法是利用三帧差分代替两帧差分,如VSM开发了一种自适应背景减除与三帧差分相结合的混合算法,它可以快速有效地从背景中检测出运动目标。时间差分运动检测方法对于动态环境具有较强的自适应性,但它一般不能完全提取出所有相关的特征像素点,在运动实体内部容易产生空洞现象。3、光流光流方法的运动检测采用了运动目标随时间变化的光流场特性,从而有效地提取和跟踪运动目标。该方法的优点是在摄像机运动存在的前提下也能检测出独立的运动目标,而缺点在于计算方

3、法相当复杂,且抗噪声性能差,如果没有特别的硬件装置则不能被应用于全帧视频流的实时处理。4、统计方法统计方法是利用单个像素或几组像素的变化特征建立背景模型,克服了传统背景减法对动态干扰因素较敏感的问题。如利用背景注册技术构建可靠的背景模型,将当前帧与背景模型相减提前前景区域。该方法能成功克服噪声和光照变化的影响,但是需要捕获大量数据建立背景模型,如果背景变化较大,则前若干帧则无法获得完整的背景模型。二、运动物体的跟踪方法运动物体跟踪就是在图像序列间创建基于位置、速度、形状等有关特征的对应匹配问题。运动跟踪算法与运动检测算法会进行大量的信息交互。跟踪通常是利用点、线、或区域等特征在后续图像中进行运

4、动目标的匹配;常用的算法有Kalman算法,mean-shift和camshift算法,condensation算法等。1、Kalman滤波器卡尔曼滤波是基于高斯分布的状态预测方法,可实时地进行跟踪预测。其基本思想是,若有一组强而合理的假设,给出系统的历史测量值,则可以建立最大化这些早期测量值的后验概率的系统状态模型。即重复更新系统状态模型。Kalman滤波器需要二个重要的假设(1)被建模的系统是线性的;即k时刻的系统状态可以用某个矩阵与k-1时刻的系统状态的乘积表示。(2)假设噪声是高斯分布的白噪声,即噪声与时间不相关。Kalman算法流程:首先,我们先要引入一个离散控制过程的系统。该系统可

5、用一个线性随机微分方程(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(这里我们假设他们不随系统状态变化而变化)。对

6、于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。下面我们来用他们结合他们的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)的covaria

7、nce还没更新。我们用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)其中K

8、g为卡尔曼增益(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-Shi

9、ft算法,是一种运动跟踪算法。它主要通过视频图像中运动物体的颜色信息来达到跟踪的目的。我把这个算法分解成三个部分,便于理解:1)Back Projection计算2)Mean Shift算法3)CamShift算法2.1)Back Projection计算Back Projection的步骤是这样的:1.计算被跟踪目标的色彩直方图。在各种色彩空间中,只有HSI空间(或与HSI类似的色彩空间)中的H分量可以表示颜色信息。所以在具体的计算过程中,首先将其他的色彩空间的值转化到HSI空间,然后会其中的H分量做1D直方图计算。2.根据获得的色彩直方图将原始图像转化成色彩概率分布图像,这个过程就被称作B

10、ack 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)的直方图,而直方图可

11、以看作是一种概率分布图。在处理前,目标图像中的每一个象素的值描述的在这一点的颜色信息,而处理后,图像中每一个象素的值就变成了这个颜色信息出现在此处的可能性的一种离散化的度量,出现的可能性大,象素的值就大,反之则小。这样就为后面的匹配和跟踪提供了线索。2.3)mean-shift算法Mean-shift算法是一种在一组数据的密度分布中寻找局部极值的稳定的方法。mean-shift算法的步骤如下:(1)选择搜索窗口。l窗口的初始化位置;l窗口的类型(均匀、多项式、指数或者高斯类型);l窗口的形状(对称的或歪斜的,可能旋转的,圆形或矩形);l窗口的大小(超出窗口的则被截除)。(2)计算窗口(可能是带

12、权重的)的重心。(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*o

13、ut:查询结果,传出。(注:构造CvTermCriteria变量需要三个参数,一个是类型,另一个是迭代的最大次数,最后一个表示特定的阈值。例如可以这样构造criteria:criteria=cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,10,0.1)。)返回的参数int:迭代的次数。2.4)CamShift算法u1.原理在了解了MeanShift算法以后,我们将MeanShift算法扩展到连续图像序列(一般都是指视频图像序列),这样就形成了CamShift算法。CamShift算法的全称是“Continuously Apaptive Mean-

14、SHIFT”,它的基本思想是视频图像的所有帧作MeanShift运算,并将上一帧的结果(即Search Window的中心和大小)作为下一帧MeanShift算法的Search Window的初始值,如此迭代下去,就可以实现对目标的跟踪。整个算法的具体步骤分5步:(1)将整个图像设为搜寻区域。(2)初始话Search Window的大小和位置。(3)计算Search Window内的彩色概率分布,此区域的大小比Search Window要稍微大一点。(4)运行MeanShift。获得Search Window新的位置和大小。(5)在下一帧视频图像中,(3)获得的值初始化Search Windo

15、w的位置和大小。跳转到(3)继续运行。u2.实现在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算

16、法基于粒子滤波的condensation算法,该算法的主要思想是通过加权的后验样本“粒子簇”来表示所需的后验密度函数,并通过这些样本以及其相应的权值对后验密度概率进行估算,从而进行概率密度的传播。但是对于某些图像质量低,噪声大的普遍特点,从状态变量的非线性,非高斯分布前提出发,利用粒子滤波技术具有一定的挑战性。由于经典粒子滤波器的权值计算尤其是重要密度函数的构造方法严重影响了粒子滤波器的性能。通常去重要密度函数为系统状态变量的转移概率密度即标准的粒子滤波器,且重要性函数没有考虑到最新观测到的数据,从重要性函数抽取的样本与真实的后验分布产生的样本存在较大的偏差。因此condensation估计精度不高。CvConDensation*cvCreateConDensation(int dynam_params,int measure_params,int sample_count);Void cvReleaseConDensation(CvConDensation*condens);Void cvConDensInitSampleSet(Cv ConDensation*condens,cvMat*lower_bound,CvMat*upper_bound);Void cvConDensUpdateByTime(CvConDensation*condens);

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服