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

上传人:宝路 文档编号:48321360 上传时间:2018-07-13 格式:PPTX 页数:13 大小:78.36KB
返回 下载 相关 举报
opencv中常用的检测和跟踪算法原理介绍_第1页
第1页 / 共13页
opencv中常用的检测和跟踪算法原理介绍_第2页
第2页 / 共13页
opencv中常用的检测和跟踪算法原理介绍_第3页
第3页 / 共13页
opencv中常用的检测和跟踪算法原理介绍_第4页
第4页 / 共13页
opencv中常用的检测和跟踪算法原理介绍_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《opencv中常用的检测和跟踪算法原理介绍》由会员分享,可在线阅读,更多相关《opencv中常用的检测和跟踪算法原理介绍(13页珍藏版)》请在金锄头文库上搜索。

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

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

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

4、跟踪算法与运动检测算法会进行大量的信 息交互。跟踪通常是利用点、线、或区域等特征在后续图像中进行运 动目标的匹配;常用的算法有Kalman算法,mean-shift和camshift算 法,condensation算法等。1、Kalman滤波器卡尔曼滤波是基于高斯分布的状态预测方法,可实时地进行跟踪预测。其 基本思想是,若有一组强而合理的假设,给出系统的历史测量值,则可以建 立最大化这些早期测量值的后验概率的系统状态模型。即重复更新系统状态 模型。 Kalman滤波器需要二个重要的假设(1)被建模的系统是线性的;即k时 刻的系统状态可以用某个矩阵与k-1时刻的系统状态的乘积表示。(2)假设 噪

5、声是高斯分布的白噪声,即噪声与时间不相关。 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)分别表示过程和测 量的噪声。他们被假设成高斯白噪声

6、(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)是上一状态

7、最优的 结果,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个公式当中的前两个,也就是对系统的预测。现在我们 有了现在状态的预测结果,然后我们再收集现在状态

8、的测量值。结合预测值 和测量值,我们可以得到现在状态(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。当

9、系统进入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. 计算被跟踪目标的色彩直方图。在各种色彩空间中,只有HS

10、I空间(或与HSI类似的色彩空 间)中的H分量可以表示颜色信息。所以在具体的计算过程中,首先将其他的色彩空间的值转 化到HSI空间,然后会其中的H分量做1D直方图计算。 2. 根据获得的色彩直方图将原始图像转化成色彩概率分布图像,这个过程就被称作“Back Projection“。 在OpenCV中的直方图函数中,包含Back Projection的函数,函数原型是: void cvCalcBackProject(IplImage* img, CvArr* backproject, const CvHistogram* hist); 传递给这个函数的参数有三个: 1. IplImage* im

11、g:存放原始图像,输入。 2. CvArr* backproject:存放Back Projection结果,输出。 3. CvHistogram* hist:存放直方图,输入2.2)算法分析 用在cvCalcBackProject处理中的模板是目标图像色调(HUE)的直方图,而直方图可以 看作是一种概率分布图。在处理前,目标图像中的每一个象素的值描述的在这一点的 颜色信息,而处理后,图像中每一个象素的值就变成了这个颜色信息出现在此处的可 能性的一种离散化的度量,出现的可能性大,象素的值就大,反之则小。这样就为后 面的匹配和跟踪提供了线索。 2.3)mean-shift算法Mean-shift

12、算法是一种在一组数据的密度分布中寻找局部极值的稳定的方法。mean-shift算法的步骤如下:(1)选择搜索窗口。l窗口的初始化位置;l窗口的类型(均匀、多项式、指数或者高斯类型);l窗口的形状(对称的或歪斜的,可能旋转的,圆形或矩形);l窗口的大小(超出窗口的则被截除)。(2)计算窗口(可能是带权重的)的重心。(3)将窗口的中心设置在计算出的重心处。(4)返回第(2)步,直到窗口的位置不再变化。在OpenCV中,提供Mean Shift算法的函数,函数的原型是: int cvMeanShift(IplImage* imgprob,CvRect windowIn, CvTermCriteria

13、 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

14、_EPS,10,0. 1)。)返回的参数int:迭代的次数。2.4)CamShift算法u1.原理 在了解了MeanShift算法以后,我们将MeanShift算法扩展到连续图像序列( 一般都是指视频图像序列),这样就形成了CamShift算法。CamShift算法的 全称是“Continuously Apaptive Mean-SHIFT”,它的基本思想是视频图像的 所有帧作MeanShift运算,并将上一帧的结果(即Search Window的中心和 大小)作为下一帧MeanShift算法的Search Window的初始值,如此迭代下 去,就可以实现对目标的跟踪。整个算法的具体步骤分5步

15、: (1)将整个图像设为搜寻区域。 ( 2)初始话Search Window的大小和位置。(3)计算Search Window内的彩色概率分布,此区域的大小比Search Window要稍微大一点。(4)运行MeanShift。获得Search Window新的位置和大小。(5)在下一帧视频图像中,(3)获得的值初始化Search Window的位置和 大小。跳转到( 3)继续运行。 u2.实现 在OpenCV中,有实现CamShift算法的函数,此函数的原型是: cvCamShift(IplImage* imgprob, CvRect windowIn, CvTermCriteria cri

16、teria, CvConnectedComp* out, CvBox2D* box=0); 其中: imgprob:色彩概率分布图像。 windowIn:Search Window的初始值。 Criteria:用来判断搜寻是否停止的一个标准。 out:保存运算结果,包括新的Search Window的位置和面积。 box:包含被跟踪物体的最小矩形。3、condensation算法 基于粒子滤波的condensation算法,该算法的主要思想是通过加权的后验 样本“粒子簇”来表示所需的后验密度函数,并通过这些样本以及其相应的 权值对后验密度概率进行估算,从而进行概率密度的传播。但是对于某些图 像质量低,噪声大的普遍特点,从状态变量的非线性,非高斯分布前提出发 ,利用粒子滤波技术具有一定的挑战性。由于经典粒子滤波器的权值计算尤 其是重要密度函数的构造方法严重影响了粒子滤波器的性能。通常去重要密 度函数为系统状态变量的转移概率密度即标准的粒子滤波器,且重要性函数 没有考虑到最新观测到的数据,从重要性函数抽取的样本与真实的后

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号