カメラが動いたときにビデオ上のオブジェクトの動きを検出する最良の方法は何ですか (カメラの自我の動きを除外します)?
リアルタイム 50 FPS fullHD 1920x1080 ビデオ ストリームがあります。カメラには自我の動きがあります。
つまり、私はしなければなりません:
- 1 番目と 2 番目のフレーム間のカメラの動きを推定する (移動、スケール、回転)
- カメラのこの動きを補正する - 逆移動 2 番目のフレーム
- オブジェクトの動きを検出するために使用
gpu::MOG2_GPU
- 2 つのフレームの違い
カメラの動きを補正する最良の方法 (最速で最高の品質) は何ですか?
phaseCorrelate()
- 翻訳のみを取得し、非常に遅いcv::videostab
- ジッターとビデオ安定化を排除するように設計されたクラス- フレームごとに計算 (
gpu::SURF_GPU
またはgoodFeaturesToTrack()
) してestimateRigidTransform()
- アフィン変換 (移動、スケール、回転) を取得しますが、HD リアルタイム ビデオでは非常に低速です - 50 フレームごとに (1 秒に 1 回) (
gpu::SURF_GPU
またはgoodFeaturesToTrack()
) を計算し、estimateRigidTransform()
- アプローチ 4 を使用しますが、カスタム実装では
estimateRigidTransform()
-の代わりに(calcOpticalFlowSF()
またはcalcOpticalFlowFarneback()
または) を使用します。DenseOpticalFlow::calc
calcOpticalFlowPyrLK()
これらの 5 つのアプローチの中で最も優れているものは何ですか。また、これが 4 の場合、OpticalFlow 機能の中で最も優れているものは何ですか: