基本的に、私はオブジェクトを検出し、それをビデオで(フレームごとに)追跡したいと思っています。
たとえば、ORBやSIFTを使用して、最初のフレームで検出できます。ただし、次のフレーム(または次のXXフレーム)については、すべてのキーポイント(ORBまたはSIFT)を再度計算して、再度検出することは避けたいと思います。
ビデオでリアルタイムに追跡したいのですが、どうすればよいですか?
基本的に、私はオブジェクトを検出し、それをビデオで(フレームごとに)追跡したいと思っています。
たとえば、ORBやSIFTを使用して、最初のフレームで検出できます。ただし、次のフレーム(または次のXXフレーム)については、すべてのキーポイント(ORBまたはSIFT)を再度計算して、再度検出することは避けたいと思います。
ビデオでリアルタイムに追跡したいのですが、どうすればよいですか?
一般的なオプションは、パッチトラッカーを使用することです。つまり、たとえば、前のフレームのキーポイントの周囲8ピクセルの領域でキーポイントを検索するだけです。cv::matchTemplate()
SIFTを使用する代わりに、キーポイントの周囲の領域を実行できます。
ピラミッド型検索を実行すると、フレームレートが向上します。最初に低いスケールで検索します。キーポイントが見つからない場合は、スケールを2倍にします。
パッチトラッカーが失敗した場合、画像の移動が速すぎるため、SIFTを再度適用してシステムを再初期化する必要があります。SIFTの代わりにFASTを使用します。マーカーにSIFTを使用し、次にFASTを使用してキーポイントをリアルタイムで検出し、SIFT記述子を生成できます。
ビデオ内のオブジェクトの検出と追跡は非常に大きなトピックであり、進む方法はアプリケーションによって大きく異なります。特効薬はありません!検出部分を達成した場合、追跡する必要のあるオブジェクトが色付きの場合は、色(おそらくHSV色空間)の平均シフトによる追跡を試すことができます。または、テンプレートマッチングを試すか、または..より具体的にする必要があります。ニーズ。
オプティカルフローを使用して簡単な追跡を行うことができます。これを行う手順は次のとおりです...
ハリスコーナー検出器またはSIFT特徴検出器を使用して、移動するオブジェクトのコーナーを見つけます。
それらの角と前の画像(追跡するオブジェクトの角を見つけた)と次の画像をオプティカルフロー関数に与えると、次の画像の同じオブジェクトの角が計算されます。
リンクは次のとおりです。
注:オクルージョン処理、複数の人による追跡などの問題に対処している場合、OpticalFlowだけでは問題を解決できません。そのためには、カルマンフィルターまたは粒子フィルターを使用する必要があります...
TLDまたはCLMを使用して、ほぼ完璧でリアルタイムの追跡を実現できます。対象のオブジェクトを検出したら、その境界ボックスを使用して捕食者の追跡を開始します。CMTについては、 https: //www.gnebehay.com/cmt/を参照して ください。
およびTLDはこちら https://www.gnebehay.com/tld/