欢迎使用CSDN-markdown编辑器

粒子滤波程序实质

先介绍下程序中的粒子结构:

程序中粒子本质就是选取的区域,仅仅只是该区域加上了权值,程序中构造一个结构体用来描写叙述粒子:主要有下面属性。区域的中心、区域的长宽、区域的权值、区域的原始中心、区域前一帧的中心和长宽,区域的权值、区域的变化尺度、区域的前一帧变化尺度、区域的直方图。

1.对第一帧图片进行颜色空间转换,从BGR空间转换到HSV空间。找到须要跟踪区域,生成跟踪区域直方图。

2.初始化粒子信息,设置每一个粒子信息都是跟踪对象初始状态,使区域的中心等于区域的原始中心而且等于区域前一帧的中心。

区域前一帧的长宽等于区域前一帧的长宽。区域的权值初始化为零。区域的变化尺度等于区域的前一帧变化尺度等于1.

3.读取下一帧。对每一个粒子进行预測。预測的内容实际就是利用随机数(高斯)对该区域中心位置和长宽进行随机变化。这里你能够觉得这个区域终于的位置和大小主要依据上一次的变化再加上随机变化得到


4.求取变化后的区域在hsv空间中的直方图与初始化时候的直方图之间的类似度,类似度是用Battacharyya系数表示。如果初始直方图为{0.1,0.2,0.5,0.2},变化后的直方图为{0.2,0.2,0.4,0.2},则类似度为sqrt(0.1*0.2+0.2*0.2+0.5*0.4+0.2*0.2)=0.55。这里的类似度就是粒子的权值。

5.由过程四求得了全部粒子更新的位置信息以及权值。依据权值大小又一次分配粒子的范围。例如说有一个粒子权值为0.1,一共同拥有100个粒子。那么,我们又一次分配的粒子的时候,在该粒子的位置分配0.1*100=10个粒子。

而且这10个粒子的状态和该粒子全然同样。当中粒子权值最大的可觉得跟踪目标当前的位置。

6.返回步骤3.

原文地址:https://www.cnblogs.com/cynchanpin/p/7380751.html