問題タブ [video-tracking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1187 参照

matlab - Matlab を使用してビデオから 1 台の車両を追跡するのは難しいですか?

私は、位相のみの再構成の重要性に基づいた画像処理のプロジェクトに取り組んでいます。詳細については、https://dsp.stackexchange.com/questions/16462/how-moving-part-pixel-intensity-values-of-video-frames-becomes-dominant-comparedでgeometrikalの回答を読むことができます

プロジェクトには 2 つの部分があります。

  1. 道路上のトラフィックのビデオから移動オブジェクトを検出します( (ステップ 1)再生ボタンをクリックし、 (ステップ 2) ビデオを右クリックし、(ステップ 3) オプションとして保存をクリックして、1.47 MB​​ のビデオをダウンロードしてください)

  2. ビデオから単一の移動オブジェクトの追跡を実行します。

今、私はプロジェクトの最初の部分でかなり成功しています。そのためのアルゴリズムは

アルゴリズムその1 提案手法

要件: ビデオから抽出された入力画像シーケンス I(x, y, n) (x と y は画像の次元、n はビデオのフレーム番号を表す)。

結果: 各フレームの移動オブジェクトのセグメンテーション マスク

  1. 入力ビデオの各フレームに対して、ステップ 2 を実行し、ステップ 2 を追加して、結果の配列 'I(x, y, n)' を取得します。</p>

  2. 2D ガウス フィルターを使用して現在のフレームを滑らかにする

  3. (Eq.4.1)を使用して、シーケンス全体 I(x, y, n) に対して 3D FFT を実行します。

  4. 3D DFT の実数部と虚数部を使用して位相スペクトルを計算します

  5. (Eq.4.2) を使用して、再構築されたシーケンス Î(x, y, n) を計算します。

  6. 入力ビデオの各フレームに対して、ステップ 7 からステップ 10 を実行して各フレームのセグメンテーション マスクを取得し、ステップ 10 を追加して結果のセグメンテーション マスク配列 BW(x,y,n)' を取得します。</p>

  7. 平均化フィルターを使用して Î(x, y, n) の再構成されたフレームを滑らかにします。

  8. 現在のフレームの平均値を計算します

  9. 平均値をしきい値として使用して、現在のフレームをバイナリ イメージに変換します。

  10. モルフォロジー処理、つまり、塗りつぶしとクロージングを実行して、現在のフレームの移動オブジェクトのセグメント化されたマスクを取得します

  11. アルゴリズムを終了します。

上記のアルゴリズムを使用すると、ビデオからすべての動くオブジェクトを見つけることができました。ここで、第 2 部に移りたいと思います。つまり、ビデオから任意の単一の移動オブジェクトの追跡を実行します。

ここに画像の説明を入力

図でわかるように、1 列目に示されている結果を達成しました。1 列目の結果までしか到達していません。しかし、私の目標は、図の 2 列目に示すように、1 台の車両を追跡することです。(Photoshop を使用して、2 番目の列に示す結果を作成しました)

誰でも私を助けることができますか?

0 投票する
1 に答える
1962 参照

opencv - 別の移動オブジェクトからの移動オブジェクトの速度追跡

私はコンピューター ビジョンを初めて使用するので、どこから始めればよいかアドバイスが必要です。

このプロジェクトは、移動物体 (A) を追跡している移動物体 (B) に対する移動物体 (A) の速度を推定することです。

私が仮定した場合、私は何をする必要がありますか-

  1. 背景が静的に見える場合 (背景を単色にする)
  2. 背景が動いている場合 (よりハード)

opencv と c++ を使用してこれを行いたい

どこから始めるべきか、一般的な手順についてのアドバイスをいただければ幸いです。前もって感謝します!

0 投票する
1 に答える
197 参照

video - インタラクティブな自由視点ビデオ

インタラクティブな自由な視点のビデオを作成する必要があります。これを行うために使用できるプログラミング言語は何ですか。また、良いチュートリアルはありますか?ライブラリパッケージは既に利用可能ですか?

0 投票する
2 に答える
640 参照

c++ - ハミング距離と座標間の距離の両方を使用して特徴を一致させるにはどうすればよいでしょうか?

知られているように、OpenCV でオブジェクトを追跡するには、以下を使用できます。

  • 特徴を見つけるためのFeatureDetector
  • DescriptorMatcherは、目的のオブジェクトの特徴とビデオの現在のフレームの特徴の間の類似性を照合します
  • 次に、findHomographyを使用してオブジェクトの新しい位置を見つけます。

DescriptorMatcherは特徴の照合にハミング距離 (座標間の距離ではなく、同じサイズの 2 つのシーケンス間の差の値) を使用します。

つまり、現在のフレームで最も類似したオブジェクトを見つけますが、前の位置に最も近いオブジェクトは見つけません (わかっている場合)。

たとえば、ハミング距離だけでなく、両方の重みが与えられた場合、ハミング距離と座標間の距離の両方を一致させるにはどうすればよいでしょうか?

次の問題を解決できます。

  • 前のフレームの位置 (x,y) からオブジェクトの追跡を開始し、現在のフレームに 2 つの類似したオブジェクトが含まれている場合、最も類似したオブジェクトは見つかりますが、最も近いオブジェクトは見つかりません。しかし、慣性により、座標は通常、類似性 (光の急激な変化またはオブジェクトの回転) よりもゆっくりと変化します。そして、最も近い座標を持つ類似のオブジェクトを見つける必要があります。

  • したがって、非常に類似しているが、座標が非常に離れており、他のオブジェクトに属している可能性が最も高い機能を除外するため、最も類似しているだけでなく、最も正確なホモグラフィを提供する機能を見つけます。

0 投票する
0 に答える
508 参照

c++ - オブジェクトを追跡するときに複数のホモグラフィを見つけるにはどうすればよいですか?

知られているように、OpenCV でオブジェクトを追跡するには、以下を使用できます。

  • 特徴を見つけるためのFeatureDetector
  • DescriptorMatcherは、目的のオブジェクトの特徴とビデオの現在のフレームの特徴の間の類似性を照合します
  • 次に、findHomographyを使用してオブジェクトの新しい位置を見つけます。

キーポイントの大部分が同じ透視変換 (ホモグラフィ) を持つ場合にのみ、ホモグラフィを見つけることができます。しかし、ポイントの半分が最初の変換を持ち、残りの半分が 2 番目の異なる変換を持つ場合、これら 2 つのホモグラフィの両方を見つけるにはどうすればよいでしょうか? ポイントの配列を異なるホモグラフィを持つ複数の配列に分割する方法は?

例えば:

  • 任意の形状のオブジェクトを追跡するために、オブジェクトと背景を含む長方形の参照画像をオブジェクトと共に使用しています。オブジェクトを移動しますが、背景はそのままで、ホモグラフィが見つかりません。
  • オブジェクトが分離されています (移動中のオートバイを追跡しています - オートバイが停止し、バイカーが立ち去りました - 今はホモグラフィを見つけることができません)
  • オブジェクトの形状をわずかに変更しました(車両を追跡していますが、トランクを開けた後は追跡されていません - 今はホモグラフィを見つけることができません)

オブジェクトの参照画像とシーンのフレームの間で、1 つではなく 2 つまたは 3 つの主要なホモグラフィを見つける方法は?

0 投票する
1 に答える
1953 参照

computer-vision - ビデオでの複数オブジェクト追跡用のカルマン フィルター

私が理解していることから、追跡アルゴリズムは、特定のオブジェクトが次のフレームのどこにあるかを予測します (オブジェクト検出が既に実行された後)。オブジェクトは次のフレームで再び認識されます。明確でないのは、特にフレームに複数のオブジェクトがある場合に、トラッカーが 2 番目のフレームのオブジェクトを 1 番目のフレームと同じものとして関連付けることを認識する方法です。

いくつかの場所で、予測とすべての検出の間のユークリッド距離を使用してコスト マトリックスが作成され、問題が割り当て問題 (ハンガリー アルゴリズム) として組み立てられているのを見てきました。

トラッキングに関する私の理解は正しいですか? あるフレームのオブジェクトが次のフレームのオブジェクトと同じであることを確認する他の方法はありますか?

0 投票する
1 に答える
665 参照

matlab - MATLAB で複数のオブジェクトが接触するタイミングを追跡するにはどうすればよいですか?

画像 (3744x5616) から追跡された複数のオブジェクトの x、y ピクセル座標があります。座標は、オブジェクトと呼ばれる構造体に格納されます。

オブジェクトはそれぞれ数値コードによって一意に識別されます。

2 つのオブジェクトが互いに半径 300 ピクセル以内に入るたびに記録できるようにしたいと考えています。オブジェクトが接触しているかどうかを確認し、オブジェクト 33 がオブジェクト 34 と相互作用するように、相互作用に関与する両方のオブジェクトの ID を記録する最良の方法は何でしょうか。

ありがとう!

0 投票する
1 に答える
482 参照

c++ - オブジェクトを追跡するための Meanshift アルゴリズムの問​​題は、検索ウィンドウの重心更新を計算します。

オブジェクトを追跡するために meanshift アルゴリズムを実装しようとしており、関連する概念を調べてきました。

今のところ、単一チャネルの色相ロイヒストグラムと単一チャネルの色相ビデオストリームを使用して、カメラから逆投影ストリームを正常に生成できました。opencv ライブラリ内に meanshift 関数があることはわかっていますが、実装しようとしています。私自身、opencv で提供されているデータ構造を使用して、モーメントを計算し、検索ウィンドウの平均重心を計算しました。

しかし、なんらかの理由で、コード内で問題を特定できません。これは、入力 ROI (関心領域) を追跡するためにビデオ ストリームの左上隅に収束し続けるためです。以下は、検索ウィンドウの重心を計算するための関数のコード スニペットです。ここで問題があると感じていますが、それが何であるかはわかりません。誰かが私を正しい方向に向けることができれば、本当に感謝しています。

これは、stackoverflow に関する 2 回目のクエリです。従うのを忘れていたガイドラインについてはお許しください。

編集

m00 、 m01 、 m10 を関数レベル変数の代わりに WHILE-LOOP 内のレベル変数をブロックするように変更しました。Daniel Strul が指摘してくれたおかげですが、問題はまだ残っています。検索ウィンドウは、ROI に焦点を当てるのではなく、フレームの境界を飛び回るようになりました。

0 投票する
0 に答える
1119 参照

opencv - カメラが動いたときにビデオの動きを検出する最良の方法は何ですか?

カメラが動いたときにビデオ上のオブジェクトの動きを検出する最良の方法は何ですか (カメラの自我の動きを除外します)?

リアルタイム 50 FPS fullHD 1920x1080 ビデオ ストリームがあります。カメラには自我の動きがあります。

つまり、私はしなければなりません:

  • 1 番目と 2 番目のフレーム間のカメラの動きを推定する (移動、スケール、回転)
  • カメラのこの動きを補正する - 逆移動 2 番目のフレーム
  • オブジェクトの動きを検出するために使用gpu::MOG2_GPU- 2 つのフレームの違い

カメラの動きを補正する最良の方法 (最速で最高の品質) は何ですか?

  1. phaseCorrelate()- 翻訳のみを取得し、非常に遅い
  2. cv::videostab- ジッターとビデオ安定化を排除するように設計されたクラス
  3. フレームごとに計算 (gpu::SURF_GPUまたはgoodFeaturesToTrack()) してestimateRigidTransform()- アフィン変換 (移動、スケール、回転) を取得しますが、HD リアルタイム ビデオでは非常に低速です
  4. 50 フレームごとに (1 秒に 1 回) (gpu::SURF_GPUまたはgoodFeaturesToTrack()) を計算し、estimateRigidTransform()
  5. アプローチ 4 を使用しますが、カスタム実装ではestimateRigidTransform()-の代わりに(calcOpticalFlowSF()またはcalcOpticalFlowFarneback()または) を使用しますDenseOpticalFlow::calccalcOpticalFlowPyrLK()

これらの 5 つのアプローチの中で最も優れているものは何ですか。また、これが 4 の場合、OpticalFlow 機能の中で最も優れているものは何ですか:

0 投票する
3 に答える
9222 参照

python - OpenCV オプティカル フロー アサーション

Python 2.7 および openCV 2.4.11 を使用して、dsift を介して取得した顔の特徴の輪郭に沿ってランドマークを追跡しようとしています。フレーム間でこれらの機能を追跡したい。

ただし、次のエラーが表示されます。入力画像が 1 チャンネルの等次元 (および符号なし 8 ビット型) であることを確認しました。同様に、前のポイント:

問題を引き起こしている行:

これのデバッグを開始できる場所を誰か知っていますか?