1

フレーム i のブロブをフレーム i+1 のブロブに関連付けるというトリッキーな作業があります。これに対処する十分な記事/例、またはよく理解できる記事が見つかりませんでした。私がやりたいことは、フレーム i のブロブをフレーム i+1 のブロブに関連付けることだけです。目標は、次のフレームで同じブロブを再度検出しないことです (または古いブロブを無視します)。

記事/例は大歓迎です。どうも

4

2 に答える 2

2

ブロブのサイズがフレームごとに変化する場合、2 つのブロブを比較するには、ブロブのスケール不変記述子を使用する必要があります。cv::HuMomments はそのような記述子です。関数 cv::matchShapes を使用して、後続の画像で検出した輪郭を直接比較することもできます。

フレームからフレームへのブロブの動きが非常に小さい場合、最初のフレームでブロブの中心位置を保存し、それらの中心に最も近いブロブを取得することで、2 番目のフレームで対応するブロブを特定できます。(mr.pppoeが以前に述べたように)

もう 1 つの可能性は、各ブロブの輪郭の内側 (テクスチャがある場合) と境界上のポイントをサンプリングし、Lucas Kanade Tracking (cv::calcOpticalFlowPyrLK) を使用することです。オプティカル フローの中央値から、ブロブがどこに移動したかがわかります。

また、ブロブごとに個別に Lucas Kanade Tracking を実行することもできます。prevPtsをブロブの中心に設定すると、 はブロブwinSizeのサイズと正確に一致するはずです。

OpenCV の Lucas Kanade Tracking アルゴリズムは、小さな並進変位のみを追跡できます。ローテーションも大きい場合は、ローテーションを最適化するテンプレート トラッキング アルゴリズムが必要になります。ここにこれに関する素晴らしいチュートリアルがあり、これに関するより高度な研究がここにあります。

より多くのアイデアを提供するために、ブロブがどのように見えるか、どのように動くか、どれくらいの大きさかなどについて、より多くの情報が必要です。いくつかの写真を投稿してください!

于 2012-11-18T20:24:59.420 に答える
1

これは「複数オブジェクト追跡」の問題だと思います。ブロブが互いに同一である場合、これは難しい可能性があります。そうでない場合は、最初に 2 つのブロブ間の距離を定義し (ブロブを数学的に表現する方法によって異なります)、フレーム i のブロブ X を指定して、フレーム内で見つけることができますi+1 は、フレーム i+1 で X に最も類似したブロブを探すのと同じです。

理想的には、ブロブは 2 つのフレーム間であまり移動しません。したがって、あなたの命を救うために、フレーム i の同じ位置に X をフレーム i+1 に配置し、フレーム i+1 でその周りの最も類似したものを探すことができます。

これらが役立つことを願っています。

于 2012-11-11T14:38:56.397 に答える