Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Particle filter 置换粒子滤波器中的重采样_Particle Filter - Fatal编程技术网

Particle filter 置换粒子滤波器中的重采样

Particle filter 置换粒子滤波器中的重采样,particle-filter,Particle Filter,请帮忙。跟踪帧中对象的压缩算法步骤如下: 初始化一个点并在其周围选择N个随机点,然后将权重设置为1/N 根据动力学模型(等速模型)传播点 现在,使用观察模型计算每个粒子的权重。到目前为止,共有N个粒子 现在,在重采样步骤中,从上述粒子集中拾取N个粒子 什么?我们如何从N个粒子中挑选N个粒子?我不知道需要多少细节…如果大部分都知道,请原谅。粒子滤波器试图根据观测值y_1,…,y_t估计后验分布p(x_t | y_1,…,y_t)。“纠正步骤”依赖于简化: p(x_t|y_1,...,y_t) =

请帮忙。跟踪帧中对象的压缩算法步骤如下:

  • 初始化一个点并在其周围选择N个随机点,然后将权重设置为1/N

  • 根据动力学模型(等速模型)传播点

  • 现在,使用观察模型计算每个粒子的权重。到目前为止,共有N个粒子

  • 现在,在重采样步骤中,从上述粒子集中拾取N个粒子


  • 什么?我们如何从N个粒子中挑选N个粒子?

    我不知道需要多少细节…如果大部分都知道,请原谅。粒子滤波器试图根据观测值y_1,…,y_t估计后验分布p(x_t | y_1,…,y_t)。“纠正步骤”依赖于简化:

    p(x_t|y_1,...,y_t) = p(y_t|x_t)p(x_t|y_1,...,y_t-1)/p(y_t|y_1,...,y_t-1) 
    
    从该后验分布中采样N个点,然后根据右侧进化以近似下一个后验分布。我们不是在处理法线,所以我们需要的近似值不只是2个矩。然后,下一步的N个点从新的后验点重新采样,而不仅仅是使用旧点,无论它们在哪里。原因是众所周知的简并效应——除1之外的所有点都趋向于0


    因此,我们不是从N个粒子中选取N个粒子,而是丢弃旧粒子,并从后验粒子的新估计值中重新采样N。

    我们如何从N个粒子中选取N个粒子

    通过替换拾取N个粒子,即可以根据指定给它的权重多次选择一个粒子

    如果有3个粒子,权重为[0.1 0.2 0.7],则选择第3个粒子两次,第2个粒子一次,因此选择了从3个粒子本身获取3个粒子

    有很多技术可以完成这一步,即对N个粒子进行重采样。甚至我也只想为这一部分编写代码

    您可以从以下网站了解重采样:-

    • Udacity-机器人人工智能-

    • IEEE论文-在线粒子滤波器教程。。。。阿鲁兰帕兰,戈登·马斯克尔,这是一篇被高度引用的论文,几乎每个地方的人们都只从这里引用了粒子过滤器的参考资料

    • 这篇论文是课堂教程,他们很好地解释了重采样,只需遵循算法,我认为您的代码将完成重采样


    有许多粒子重采样技术:多项式、确定性和残差。Nando de Freitas实现了一种用于切换线性动态系统的粒子滤波器,包括上述重采样算法: