2

画像内の2つのポイントを追跡する必要があるプロジェクトに取り組んでいます。これまでのところ、これらのポイントを特定するための最善の方法は、プログラムの最初の実行時にユーザーにポイントをクリックしてもらうことです。OpenCVに組み込まれているLucas-KanadePyramidメソッドを使用しています(ここに記載されていますが、予想どおり、これはあまりうまく機能しません。OpenCVでポイントを追跡するためのより良い代替アルゴリズム、または他の方法はありますか?私がすでに持っているポイントを確認しますか?
現在、GoodFeaturesToTrackを使用して、各ポイントから追跡するポイントまでの距離を取得し、2つのポイント間の関係を示す何らかのベクトルを取得し、この情報を使用して新しいポイントを決定することを検討しています。必ずしもコードサンプルではなく、これを実行する方法の提案を探しています。ありがとう

編集:それが助けになるなら、私は小さな動きを追跡しています

4

1 に答える 1

5

opencvで実装されているソリューションを探す場合は、ピラミッド型のLucas Kanade(PLK)メソッドが非常に優れています。それ以外の場合は、粒子フィルターベースのトラッカーをお勧めします。PLKを使用して追跡パフォーマンスを向上させるには、パラメータが正しく設定されていることを確認してください。たとえば、大きな動きの場合は、約でレベルが必要です。3または4。ウィンドウは小さくしないでください(私は17x17から27x27を好みます)。また、ポイントを追跡できるようにするには、メソッドにテクスチャ領域が必要であることに注意してください。これは、画像コンテンツのようなコーナーを意味します(絞りの問題)。

追跡するポイント(P)の周りのグリッドにポイント(ps)のセットをシードすることを提案します。そして、前方-後方しきい値を使用して、誤って追跡されたポイントを拒否します。ポイントの動き(P)は、特定の残余ポイントセットの平均動き(ps)によって計算されます。

前方後方信頼度は、フレーム1からフレーム2への動きを推定することによって計算されます(ptList1-> ptList2)。そして、フレーム2からフレーム1まで、ptList2のポイント(ptList2-> ptListRef)を使用します。(|| ptRef --pt1 ||> fb_threshold)の場合、モーションベクトルは拒否されます。

于 2013-02-09T20:20:42.080 に答える