欢迎使用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.

你可能感兴趣的:(粒子滤波)