2

当我的相机移动时,检测视频中物体运动(不包括相机的自我运动)的最佳方法是什么?

我有实时 50 FPS 全高清 1920x1080 视频流。相机有自我运动。

即我必须这样做:

  • 估计我的相机在第一帧和第二帧之间的运动(平移、缩放和旋转)
  • 补偿我的相机的这种移动 - 反向移动第二帧
  • 用于gpu::MOG2_GPU检测物体的运动 - 两帧之间的差异

补偿相机移动的最佳方式(最快和最好的质量)是什么?

  1. phaseCorrelate()- 只得到翻译而且很慢
  2. cv::videostab- 旨在消除抖动和视频稳定的类
  3. 为每一帧计算(gpu::SURF_GPUgoodFeaturesToTrack())并estimateRigidTransform()获得仿射变换(平移、缩放和旋转),但对于高清实时视频来说非常慢
  4. 每 50 帧(每 1 秒 1 次)计算 (gpu::SURF_GPUgoodFeaturesToTrack()) 和estimateRigidTransform()
  5. 使用方法 4,但自定义实现estimateRigidTransform()- 使用(calcOpticalFlowSF()calcOpticalFlowFarneback()DenseOpticalFlow::calc)而不是calcOpticalFlowPyrLK()https ://github.com/Itseez/opencv/blob/3942b1f36261b196a264eb35c996222848fe3c93/modules/video/src/lkpyramid.cpp#L1439

这 5 种方法中最好的是什么,如果是 4 种,那么最好的 OpticalFlow 函数是什么:

4

0 回答 0