2010/06/24

パーティクルフィルタ その2

前回の続きです。

前回はRGB形式の画像をHSV形式に変換し、Hを元に尤度を計算してましたが、なかなかうまくいかなかったのでRGB形式のまま、検索対象の色とのチャネルごとの差を求めて尤度を計算する方式に変えました。

検索対象の色は、マウスをクリックした座標近くにある色の平均としています。
Hのみを元に計算していたときよりは精度がよいようです。



サンプルコードを元にこれを作ってみましたが、
実際のパーティクルフィルタの理論はよくわかってません。

OpenCVの本にカルマンフィルターの説明があったので、
まずそれから理解しようかな~と思います。

ではまた。

今回のソースコードはこちら

3 件のコメント:

  1. 初めまして、最近OpenCVやパーティクルフィルタについて学んでいる理系学生です。
    唐突な質問かとは思いますが、お答え頂けると大変幸いに思います。
    こちらで紹介しているパーティクルフィルタの物体追跡なんですが、色の違う複数の物体に対して追跡することは可能なのでしょうか?
    OpenCVを習いたての身で申し訳ないのですが、
    もし可能でしたら、どのような手順を踏めば(方法を使えば)複数追跡が可能なのか教えて頂けると助かります。
    パーティクルフィルタについて深く学びたいと思っておりますので、よろしくお願い致します。

    返信削除
  2. >匿名さん
    色の違う複数の物体を追跡する方法についてですが、可能だと思います。
    このソースコード内では、マウスをクリックした地点の画素値(R,G,B)を検索対象の値として保存しておき、1フレームごとにパーティクルフィルタをかけています。

    R,G,Bの値が異なる組を複数もち(例えばR[10],G[10],B[10]など配列に保存)、パーティクルフィルタをかける部分をR,G,Bの組の分だけループさせれば、複数の色に対する追跡ができるようになると思います。

    返信削除
  3. こんにちは、先日質問させて頂いた理系学生です。
    数日前に返信したのですが、どうやら投稿がうまくいかなかったようで、返事が遅れてしまいすみません;;
    唐突な質問でしたが、お返事頂いて本当にありがとうございました。
    頂いたコメント、並びにパーティクルフィルタのサンプルプログラムは非常に為になりました。lhaplus8888 様の助言をもとに、作ってみようと思います。
    重ね重ね申し上げますが、分かりやすいプログラム・コメントを頂き、誠に感謝しております!

    返信削除