python 粒子滤波目标追踪_【计算机视觉】7. 目标跟踪:背景减除、粒子滤波、meanshift...

0a6bf8f9f95e68ab4364e2a26ad8896a.png

目标跟踪:背景减除、粒子滤波、meanshift

我们已经介绍了目标跟踪中最基本的光流算法

Encoder:【计算机视觉】3. 目标跟踪:光流法​zhuanlan.zhihu.com
b94142c4cf33800d5e13d584edbe783d.png

以及卡尔曼滤波

Encoder:【计算机视觉】4. 卡尔曼滤波​zhuanlan.zhihu.com
b64f9ea2d43a605422262554238a03ff.png

这篇文章接着介绍一些目标跟踪中常用的算法。

基于中值滤波的背景减除

背景减除(background subscription)目的在于区分场景背景和场景运动,从而进行运动检测。

中值滤波器是顺序统计滤波器的一种,即用该像素的相邻像素的灰度中值来代替该像素的值,传统中值滤波(Standard Median Filter)通过快速排序寻找像素点集合的中值,该方法对滤波窗口形状和像素灰度级没有限制,具有更加广泛的运用范围。

传统中值滤波算法的执行效率由快速排序算法的时间复杂度决定,其基本思想是通过每次排序将像素点集合划分为相互独立的两个子集合, 其中一个子集合中所有像素值都比另一个子集合中所有像素值小, 然后分别对这两个子集合继续进行排序,直到滤波窗口中所有像素点有序。

中值滤波是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值,是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。

在中值滤波窗口内各点有相同的输出作用,若强调中间点或离该点较近的作用点,可改变窗口中变量个数,使多个变量值等于一个点值,再对扩展后的灰度值数字序列求中值。缺点是对边缘像素进行窗口扩展后,将超出图像边界,引起边界效应。

基于混合高斯模型(GMM)的背景建模

高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一类分布但参数不一样,或者是不同类型的分布,比如正态分布和伯努利分布)。

基于混合高斯模型的背景建模将图像中的每个像素看成是从混合高斯分布样本中采样得到的随机变量,在这些高斯分布中,一些高斯分布表示背景,另一些表示前景(运动物体),根据算法估计出每个像素点属于哪一个高斯模型,进而判断该像素是前景或背景 ;K的选择由计算效率等因素决定,通常情况下,K的取值范围为3~7;设特定像素在时刻t的亮度值为gt,用K个高斯分布表示像素gt的特征,观测概率

下面具体介绍算法步骤。

第一步:模型初始化:确定高斯模型个数K,初始化模型各个参数
- [均值] 第一个高斯模型的均值取输入视频第一帧对应的像素值,其他设为0
- [方差] 初始方差相等,取值与该视频的动态特性有关
- [权重ω] 在初始化时,一般第一个高斯模型的权重取较大值,其他取较小值

第二步:背景描述:确定描述背景模型的高斯函数;假设所有帧中,背景像素的比例超过阈值T,所有K个高斯函数按照表达式

排序,比值越大,该高斯函数代表背景的可能性越大,排序后,前B个高斯模型k=1,2,…,B作为背景

第三步:前景判断:对于任意像素,比较是否满足各个高斯模型


计算该像素满足高斯模型的最小编号,判断该像素是背景或前景。

第四步:模型更新:如果没有找到匹配的高斯模型,将第K个(最后一个)高斯模型用一个新的高斯函数替换,新的高斯函数具有像素点的均值、一个较大的方差和较小的权重


重新归一化各高斯模型的权重,或者采用梯度下降策略,获取第t帧图像,亮度向量为$x_t$,决定哪些高斯函数与之匹配,从中选择最好的,记为l

总结如下:

算法:基于混合高斯模型的背景减除
初始化:选择高斯函数数目和学习率ηrepeat
获取第t帧图像,亮度向量为xt,决定哪些高斯函数与之匹配,从中选择最好的,记为l,如果找到一个匹配高斯函数l,按式(2)更新所有高斯函数的权重和高斯函数l的参数
如果没有高斯函数匹配像素,丢弃权重最低的高斯函数,用一个按照式(1)构造的新的高斯函数代替
根据高斯函数的权重,确定描述背景模型的高斯函数,判断当前像素是背景还是前景
处理所有像素点,对前景图像使用模糊以及形态学上的膨胀腐蚀组合操作去除小区域,填充大目标中的空洞,获得场景中的运动目标until 所有帧都被处理

贝叶斯滤波和粒子滤波

在卡尔曼滤波中,我们建立的模型


具有这样两条性质
- [状态量的马尔可夫性] k时刻状态量只与k-1时刻的状态量有关
- [观测量的条件独立性] k时刻观测值只与k时刻状态值有关
如果我们把位置和观测建模为概率分布,即

根据贝叶斯定理

这种方法也就是所谓的批处理贝叶斯方法。但是这种方法每次都要拿所有的测量值来重新计算概率分布,对于计算机是个沉重的负担。因此,有了改进的基于递归的贝叶斯滤波方法

其中
代表了状态由k-1时刻到k时刻的转移概率。利用观测值进行更新

这个后验分布,将作为估计k+1时刻位置的先验分布,从而开始下一轮的递归解算。

粒子滤波的结构实际上就是加入蒙特卡罗方法(Monte Carlo method,即以某时间出现的频率来指代该事件的概率)的卡尔曼滤波,该方法的基本思想是用一组样本(或称粒子)来近似表示系统的后验概率分布,然后使用这一近似的表示来估计非线性系统的状态。采用此思想,在滤波过程中粒子滤波可以处理任意形式的概率,而不像卡尔曼滤波只能处理线性高斯分布的概率问题。粒子滤波的一大优势也在于此。

粒子滤波的三个重要步骤为
- [粒子采样] 从建议分布中抽取一组粒子
- [粒子加权] 根据观测概率分布,重要性分布以及贝叶斯公式计算每个粒子的权值
- [估计输出] 估计输出系统状态的均值协方差等
此外 ,为了应对粒子退化现象,还采用了重采样等策略。

ae66910bd74c0de540d14901a6c38c74.png

meanshift

本小节主要参考了

https://blog.csdn.net/dcrmg/article/details/52694557

Mean Shift(均值漂移)算法是无参密度估计理论的一种,无参密度估计不需要事先知道对象的任何先验知识,完全依靠训练数据进行估计,并且可以用于任意形状的密度估计,在某一连续点处的密度函数值可由该点邻域中的若干样本点估计得出。这与无监督学习方法是有类似之处的。

Mean shift将特征空间视为先验概率密度函数,那么输入就被视为是一组满足某种概率分布的样本点,这样一来,特征空间中数据最密集的地方,对应于概率密度最大的地方,且概率密度的质心就可以被视为是概率密度函数的局部最优值,也就是要求的聚类中心。对于每一个样本点,计算以它为中心的某个范围内所有样本点的均值,作为新的中心(这就是shift,即圆心的漂移),移动直至收敛。这样每一轮迭代,中心都会向数据更密集的地方移动,直到最后稳定收敛到样本的“质心”。

可以直观理解为:在样本空间中,任选一个点,然后以这个点为圆心,划定一个圆形的区域。在此区域内的所有点以圆心为起点,产生N个向量,然后把这些向量都相加,再以向量的终点为圆心,划定同样半径的圆形区域,执行同样操作,如此迭代,直到收敛,如下图所示。

dcecd5f1559e833246d44570802cf72a.png

给定d维空间Rd的n个样本点 ,i=1,…,n,在空间中任选一点x,那么Mean Shift(均值漂移)向量的基本形式定义为:


Sk是一个半径为h的高维球区域,即满足以下关系的y点的集合

其中k表示在这n个样本点xi里,有k个点落入Sk区域中;考虑软间隔优化问题:

引入非负参数ξ后(称为松弛变量),就允许某些样本点的函数间隔小于1,即在最大间隔区间里面,或者函数间隔是负数,即样本点在对方的区域中。而放松限制条件后,我们需要重新调整目标函数,以对离群点进行处罚,这就是正则化方法。离群点越多,目标函数值越大,而我们要求的是尽可能小的目标函数值。这里的C是离群点的权重,C越大表明离群点对目标函数影响越大,也就是越不希望看到离群点。我们看到,目标函数控制了离群点的数目和程度,使大部分样本点仍然遵守限制条件。拉格朗日算子:

这里的α和γ都是拉格朗日乘子,结果如下:
对于含有不等式约束的优化问题,需要考虑KKT条件:
把基本的meanshift向量加入核函数k(x),则

其中h为半径,
为单位密度,要使得上式f得到最大,对上式进行求导,梯度


下面介绍meanshift算法怎样运用到图像上的聚类核跟踪。一般一个图像就是个矩阵,像素点均匀的分布在图像上,就没有点的稠密性。所以怎样来定义点的概率密度,这才是最关键的。如果我们计算点x的概率密度,采用的方法如下:以x为圆心,以h为半径。落在球内的点位xi ,认为
- x像素点的颜色与xi像素点颜色越相近,我们定义概率密度越高。
- 离x的位置越近的像素点xi,定义概率密度越高。
所以定义总的概率密度,是两个规则概率密度乘积的结果,可以表示为

将meanshift算法扩展到连续图像序列,就是camshift算法。它将视频的所有帧做meanshift运算,并将上一帧的结果,即搜索窗的大小和中心,作为下一帧meanshift算法搜索窗的初始值;如此迭代下去,就可以实现对目标的跟踪。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值