【Python/OpenCV】パーティクルフィルタで物体追跡

Python版OpenCVでパーティクルフィルタを実装し、物体追跡する方法をソースコード付きで解説します。

スポンサーリンク

パーティクルフィルタで物体追跡

パーティクルフィルタ(Particle filter)とは、確率分布による時系列データの予測手法です。
粒子フィルターや逐次モンテカルロ法とも呼ばれ、画像処理分野では物体追跡に利用されています。
今回はPython + OpenCV + NumPyでパーティクルフィルタを実装し、赤色の物体を追跡してみました。

【画像処理】パーティクルフィルタによる物体追跡の原理
この記事では、画像処理におけるパーティクルフィルタによる動体追跡の原理について解説します。

動画

ソースコード

サンプルプログラム(Python3 + OpenCV)のソースコードです。


実行結果

サンプルプログラムの実行結果です。
赤色の物体を追跡しています。

【Python版OpenCV入門】画像処理の基礎〜応用例までサンプルコード付きで徹底解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
Python画像処理
スポンサーリンク

コメント

  1. ほげ より:

    追跡対象を赤から白に変更するにはどうすればよいでしょうか?

    • 管理人 より:

      ※ほげ様

      コメントありがとうございます。
      追跡対象の色を変更する場合はis_target関数内のroiの値域を変更します。
      赤色のHue値は、だいたい30~150なので今サンプルプログラムでは(roi <= 30) | (roi >= 150)としています。
      ただし、白色、灰色、黒色は無彩色なのでこの方法では検出できません。

  2. 匿名 より:

    ソースコード通りにやらせてもらいましたが、赤色の四角が上の実行結果通りにならず、まったく追ってくれません。。。なぜでしょうか

    • 管理人 より:

      コメントありがとうございます。
      対象の動き方によって、パラメータを調整する必要があります。
      今回ですと、分散に従ってパーティクルを少し動かしていますが、分散の値を調整したり動かした方そのものを変えたりします。

      ブログの例では、ゆっくり動かす分には追従できるのですが、速く動くと追従しなくなります。

  3. とむ より:

    webカメラでリアルタイムに追跡するにはどうしたらよいですか