私は最近、オブジェクト追跡の問題の解決に取り組んでいます。私がする必要があるのは、2D 平面上を移動する可能性のある 3D オブジェクトを特定して追跡することです。つまり、x と y の平行移動と z を中心とした回転です。追跡対象のオブジェクトは事前にわかっており、そこから任意の情報を抽出できます。また、照明条件が大幅に変化することはなく、背景は比較的静止したままであると想定されています。通常、追跡対象のオブジェクトは単色ではないため、色による追跡はオプションではありません。
バックグラウンド減算と動的テンプレート マッチングを使用して、複数の 2D オブジェクトを追跡するためのプロトタイプの実装に成功しました。私は今、3Dオブジェクトの追跡に拡張したいと思っていますが、これまでのところ、私が見つけた/達成したことに失望しています. 誰かが何らかの光を当てることを期待して、私が行った試みのいくつかをリストします.
1.) 動的テンプレート マッチング: ユーザーにビデオ フレーム内のオブジェクトを選択させると、オブジェクトの周囲に検索領域が定義されます。オブジェクトは、このエリア内で検索されます。 このクリップはもともと私にアイデアを与えました。残念ながら、オブジェクトが回転すると失われるため (カメラに背を向ける)、これは実際には機能しませんでした。また、オブジェクトが見つかったときにテンプレートを継続的に更新しようとしましたが、これにより、意図したオブジェクトがoccludedになるたびに、テンプレートが別の (外部) オブジェクトになります。
2.) Lucas- Kanade オプティカル フロー: OpenCV の goodFeaturesToTrack を使用して追跡するのに適したポイントを見つけ、calcOpticalFlowPyrLK を使用して複数のフレームでこれらのポイントを追跡しようとしました。ただし、このアルゴリズムのパフォーマンスは少し残念でした。それをOxford Corridorデータ セットに適用しましたが、最初に検出したポイントはすぐに失われます。
3.) SURF : SURF を使用して特徴を検出しようとしましたが、ここでの問題は、これを 3D オブジェクトに適用するのが非常に難しいことでした。これは、異なるビュー角度からかなり異なる可能性があります。cv2 の SURF に関するドキュメントを見つけたいと思っていました。これは、SURF Feature extractor にキーポイント (おそらく goodFeaturesToTrack から) を提供する機能を提供するように思われたからです。残念ながら、これを行う方法をまだ見つけることができませんでした。SO に関する私の質問: OpenCV: ユーザー定義のキーポイントから SURF 機能を抽出する
背景: 私は 1 台の固定 Web カメラを持っており、すべての処理をデスクトップ コンピューターで行っています。Windows 7 で OpenCV の Python ラッパーと Eclipse の PyDev プラグインを使用しています。
試してみる追加のテクニック、または既に述べたテクニックのパフォーマンスを改善するためのいくつかの指針を誰かが提案できれば、私はそれを大いに感謝します.