笔者最近刚刚开始研究粒子滤波器,因为硕士论文的原因,最近在研究图像处理算法中的目标跟踪算法,我偶然间发现粒子滤波的简单性,于是在网上找相关的素材和博客来阅读,最后从Rob Hess的代码开始看起,大概理解额粒子跟踪算法的基本算法原理,因此,献出第一篇文章,希望能够给新手一点指点,也希望获得大牛的指点。
我不喜欢从枯燥的理论开始研究一个算法,拿到一个新的算法,我总要先找源码或者例程,开始自己跑一下,看一看效果,再从代码一步一步分析,当然,少不了查阅大量的文献和阅读大量的博客(博友的力量我觉得不亚于很多的硕士博士论文)。
废话不多说,这里从Rob Hess的代码开始讲起,我会一步一步的贴出源码,希望新手能够理解。
int main( int argc, char** argv )
{
gsl_rng* rng;//gsl库的使用 可以百度
IplImage* frame, * hsv_frame, * frames[MAX_FRAMES];
IplImage** hsv_ref_imgs;
histogram** ref_histos;
CvCapture* video;//用于视频每一帧图像的获取
particle* particles, * new_particles;//粒子的指针,保存粒子的信息
CvScalar color;//颜色
CvRect* regions;//一个矩形区域
int num_objects = 0;//目标物体的数量,待追踪物体数量