c で opencv-2.4.3 を使用しています。顔追跡の部分に行き詰まっています。追跡に粒子フィルターを使用したいのですが、opencv-2.1 バージョンで取得しましたが、新しい opencv バージョンにはこのフィルターがないようであるか、名前が変わる可能性があります。 opencv-2.4.3で作業した人がいて、opencv-2.4.3で粒子(凝縮)フィルターを使用する方法を教えてください
3 に答える
粒子フィルターは、ベイジアン推論メソッドの非常に具体的な実装です。凝縮は特定の粒子フィルターであり、視覚オブジェクトの追跡に使用されているため、人気が高まっています。ただし、粒子フィルターは、フレームワークとして、または問題ごとにインスタンス化できるアーキテクチャとして見なす必要があります。
私が知る限り、OpenCV には圧縮アルゴリズムが含まれていましたが、尤度関数を提供する必要があります。正直なところ、顔の追跡にコンデンスを使用することはありません。適切に機能しない可能性が高いためです。顔の外観は大きく変化し、シーケンス内の顔の潜在的なバリエーションに従う動的モデルを定義することは困難です。
顔を追跡するためのはるかに高度で信頼性の高い方法があります (1 つだけ言及すると、Online Appearance Models、http://www.cs.toronto.edu/~fleet/research/Papers/cvpr-01A.pdf )。しかし、単純なものが必要な場合は、カスケード ( http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html#cascade-classifier ) およびリンク検出によって提供されるような顔検出器の使用を開始します。とcv::KalmanFilter::KalmanFilter
。また、 を使用した凝縮とほぼ同じ結果が得られますcv::CamShift
。
marcos.nieto が言ったように、Particle Filter は、オブジェクトのモデリング (オブジェクトの説明) と検索手順を高速化する近似ツールです (分類器のように検索ウィンドウのすべてのピクセルで貪欲な検索を行うのではなく)。
また、マルコスも言ったように、モデリングの更新レートは突然の外観の変化をカバーするには不十分であり、それを増やすと、トラッカーは最終的に離れていきます.
VideoSurveillanceとCascade Classifierの組み合わせを試して、フレーム全体の応答のデータ関連付けを備えたオブジェクトベースのトラッカーを構築することをお勧めします。
主に OpenCV を使用していますが、Accord.NET 拡張ライブラリの粒子フィルタリング アルゴリズム (および Kalman も) の C# 実装を見てください。サンプルが含まれています。リンク: https://github.com/dajuric/accord-net-extensions