当相机移动时,检测视频运动的最佳方法是什么?

时间:2015-12-05 13:03:45

标签: opencv opencv3.0 motion-detection opticalflow video-tracking

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

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

即。我必须这样做:

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

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

  1. phaseCorrelate() - 只获得翻译而且非常慢
  2. cv::videostab - 旨在消除抖动和视频稳定的课程
  3. 每个帧的
  4. 计算(gpu::SURF_GPUgoodFeaturesToTrack())和estimateRigidTransform() - 获得仿射变换(平移,缩放和旋转),但HD实时视频速度非常慢
  5. 每50帧(每1秒1次)计算(gpu::SURF_GPUgoodFeaturesToTrack())和estimateRigidTransform()
  6. 使用方法4,但使用estimateRigidTransform()的自定义实施 - 使用(calcOpticalFlowSF()calcOpticalFlowFarneback()DenseOpticalFlow::calc)代替calcOpticalFlowPyrLK():{{3} }
  7. 这5种方法中最好的是什么,如果这是4,那么最好的OpticalFlow功能是什么:

0 个答案:

没有答案