Processing でパーティクルフィルタ

Processing でパーティクルフィルタというアルゴリズムを実装したので紹介します.

アルゴリズム

粒子フィルタ (パーティクルフィルタ) は,粒子 (パーティクル) と呼ばれる離散的なサンプルを状態空間にばら撒き,Monte Carlo 法により Bayesian フィルタを近似計算する手法. 専門用語が多すぎて何がなんだかさっぱりだが,要するに,物体の検出と追跡を同時に行う逐次追跡アルゴリズムだ.

全画素を走査しないのでリアルタイム性に優れるが,前状態から次状態を推測するため,高速な物体の移動には対応しきれない.

  1. リサンプリング
    • 重みに粒子を従って消滅・増殖させる
  2. 予測
    • 粒子の次状態での位置を決定する
  3. 重み付け
    • それぞれの粒子に重みをつける

の繰り返しによって物体の検出と追跡を行う.

ソースコード

黄色い物体を検出し,追従する例です. Processing で実装してあります.

GitHub - y-sira/processing-particle-filter: An implementation of the particle filter for Processing

参考

Tutorial/Practice0 – MIST Project