Processing でパーティクルフィルタ
Processing でパーティクルフィルタというアルゴリズムを実装したので紹介します.
アルゴリズム
粒子フィルタ (パーティクルフィルタ) は,粒子 (パーティクル) と呼ばれる離散的なサンプルを状態空間にばら撒き,Monte Carlo 法により Bayesian フィルタを近似計算する手法. 専門用語が多すぎて何がなんだかさっぱりだが,要するに,物体の検出と追跡を同時に行う逐次追跡アルゴリズムだ.
全画素を走査しないのでリアルタイム性に優れるが,前状態から次状態を推測するため,高速な物体の移動には対応しきれない.
- リサンプリング
- 重みに粒子を従って消滅・増殖させる
- 予測
- 粒子の次状態での位置を決定する
- 重み付け
- それぞれの粒子に重みをつける
の繰り返しによって物体の検出と追跡を行う.
ソースコード
黄色い物体を検出し,追従する例です. Processing で実装してあります.
GitHub - y-sira/processing-particle-filter: An implementation of the particle filter for Processing