visual-c++ - 计算视频中帧运动的更好方法是什么?

标签 visual-c++ opencv opticalflow

为了找到连续的帧运动差异,我使用帧的绝对差异,然后将所有像素相加来量化运动量。我已经在 OpenCV 中做到了。

但我最近开始了解 Horn 和 Schunk 的光流算法以及基于宏 block 的运动补偿。 OpenCV 库已经内置了可以计算它们的函数。但我不知道如何量化它们。它们比第一种方法更好吗?

请帮忙!

最佳答案

光流在opencv中的实现方式是...

  1. 最初在要跟踪的目标出现的帧(比如 FrameA)中检测一些点作为跟踪(兴趣点)的好特征...有些点可能位于目标上,有些可能位于背景上...
  2. 检测到的点存储在一个向量数组中,并与 FrameA 和 FrameB 一起传递给光流函数...后面的 (FrameB) 是我们打算在其中找到感兴趣点位置的下一帧...
  3. 当我们得到兴趣点在 FrameB 中的位置时,我们可以估计 FrameA 和 FrameB 之间兴趣点的位移...

对于您的情况...因为您正在进行帧运动计算...使用背景减法(帧微分...)作为启动帧的技术,您可以从那里开始寻找兴趣点...当变化超过阈值开始获取兴趣点......在接下来的连续帧中跟踪它们,你可以制作一个直方图,说明有多少兴趣点在下一帧中经历了多少位移......这就是我所能做的现在考虑量化帧运动......

关于visual-c++ - 计算视频中帧运动的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13990746/

相关文章:

opencv - 绘制 calcOpticalFlow 的输出特征向量时跟踪不准确

opencv - 当我们运行密集光流 (farnnback) 时,输出到底是什么?

c++ - 我如何在 VC++7 及更早版本中模拟 _set_abort_behavior?

c++ - CMake Tools for Visual Studio 2017 卡住解析

python - 使用 python 编写 mpeg-1 视频

android ndk 中的 OpenCv

c++ - 如何解决 C++ 服务器程序中的堆碎片问题?

winapi - 为什么 LoadResource/LockResource 有时会返回串联的资源数据?

python - 保存图像时,保存的 jpg 文件的颜色不正确(cv2.COLOR_BGR2RGB 无法修复)

python - 如何在 Keras 中创建这个自定义损失函数并确保它是可微的?