为了找到连续的帧运动差异,我使用帧的绝对差异,然后将所有像素相加来量化运动量。我已经在 OpenCV 中做到了。
但我最近开始了解 Horn 和 Schunk 的光流算法以及基于宏 block 的运动补偿。 OpenCV 库已经内置了可以计算它们的函数。但我不知道如何量化它们。它们比第一种方法更好吗?
请帮忙!
最佳答案
光流在opencv中的实现方式是...
- 最初在要跟踪的目标出现的帧(比如 FrameA)中检测一些点作为跟踪(兴趣点)的好特征...有些点可能位于目标上,有些可能位于背景上...
- 检测到的点存储在一个向量数组中,并与 FrameA 和 FrameB 一起传递给光流函数...后面的 (FrameB) 是我们打算在其中找到感兴趣点位置的下一帧...
- 当我们得到兴趣点在 FrameB 中的位置时,我们可以估计 FrameA 和 FrameB 之间兴趣点的位移...
对于您的情况...因为您正在进行帧运动计算...使用背景减法(帧微分...)作为启动帧的技术,您可以从那里开始寻找兴趣点...当变化超过阈值开始获取兴趣点......在接下来的连续帧中跟踪它们,你可以制作一个直方图,说明有多少兴趣点在下一帧中经历了多少位移......这就是我所能做的现在考虑量化帧运动......
关于visual-c++ - 计算视频中帧运动的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13990746/