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

Opencv 当摄像机移动时,检测视频运动的最佳方法是什么?,opencv,opencv3.0,motion-detection,opticalflow,video-tracking,Opencv,Opencv3.0,Motion Detection,Opticalflow,Video Tracking,当“我的相机”移动时,检测视频中物体运动(不包括相机的自我运动)的最佳方法是什么 我有实时50 FPS全高清1920x1080视频流。相机有自我运动 即我必须做: 估计我的相机在第一帧和第二帧之间的运动(平移、缩放和旋转) 补偿我相机的此移动-反向移动第二帧 用于检测对象的运动-两帧之间的差异 什么是最好的方式(最快和最好的质量)来补偿我的相机的运动 -仅获取翻译,速度非常慢 -设计用于消除抖动和视频稳定的类 对于每一帧,计算(或)并获得仿射变换(平移、缩放和旋转),但对于高清实时视频来说速

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

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

即我必须做:

  • 估计我的相机在第一帧和第二帧之间的运动(平移、缩放和旋转)
  • 补偿我相机的此移动-反向移动第二帧
  • 用于检测对象的运动-两帧之间的差异
什么是最好的方式(最快和最好的质量)来补偿我的相机的运动

  • -仅获取翻译,速度非常慢
  • -设计用于消除抖动和视频稳定的类
  • 对于每一帧,计算(或)并获得仿射变换(平移、缩放和旋转),但对于高清实时视频来说速度非常慢
  • 每50帧(每1秒1次)计算(或)和
  • 使用方法4,但使用-use(或or)的自定义实现,而不是:
  • 这5种方法中最好的是什么?如果是4种,那么OpticalFlow函数最好的是什么:


    我一直想尝试将密集光流与吉布森(心理学家)分析的视觉流动模式结合起来,但没有找到时间/项目:D@Micka这是一个重要的观点,我们关注的是(视觉流模式)詹姆斯·吉布森,而不是(模式识别小说)威廉·吉布森:)詹姆斯·吉布森(1966)自下而上的处理,这是对格雷戈里(1970)自上而下的处理:你认为应该尝试它来补偿自我运动吗?可能它相当慢,但我在理论上喜欢它。。。但这实际上只是一个评论,不知道它是否会起作用。祝你好运,我喜欢你提出了许多解决问题的方法。@Mika我将尝试使用
    gpu::PyrLKOpticalFlow::sparse()
    gpu::PyrLKOpticalFlow::dense()
    ,然后
    gpu::meanShiftSegmentation()
    以清晰的边界分隔不同的流,然后为每个段构建两个
    std::vector
    ,其中包含该段中点的源坐标(每5个像素)和目标坐标(从源计算和从步骤1计算),并尝试查找仿射变换
    Mat affine=cv::EstimaterialgidTransform(src_pts,dst_pts)
    ,并将每个仿射变换与每个Gibson的视觉流模式进行比较。还是有可能做得更好呢?最大的一部分流动——必须是相机的自我运动。其他-对象的移动。