从前 10 帧中找到运动矢量
Posted
技术标签:
【中文标题】从前 10 帧中找到运动矢量【英文标题】:to find motion vector from 10 previous frames 【发布时间】:2015-07-10 12:22:09 【问题描述】:我想通过将帧划分为 8x8 子块来,并将当前帧的每个块与前 10 帧的相邻块进行比较。
我可以用单帧进行操作,但我觉得处理 N 帧很难。
如果有人知道我需要 opencv/c++ 中这个模块的代码,我需要其他人的帮助。
提前致谢
【问题讨论】:
你可以试试github.com/Itseez/opencv/blob/2.4.10.x-prep/samples/c/motempl.c -1 您需要发布一个特定的问题、您尝试的代码、您遇到的错误。但是,您为什么不简单地使用光流来查找运动矢量呢? 如果你想使用块匹配,是什么阻止你比较 2 个任意图像(距离 1、2、3 等无关紧要) 【参考方案1】:我相信你问的是光流。
目前有two quick and easy methods for optical flow in Python。它不是 C++,但你可以从那里开始,看看它是否能达到你想要的效果。
-
Lucas-Kanade,它使用从您选择的算法(SIFT、SURF、ORB、BRISK、BRIEF 等)中找到的特征描述符。我链接的示例使用 Shi-Tomasi。所有这些点都会逐帧跟踪。
Dense Optical Flow,由 Farneback 提供,可提供图像中每个像素的运动。该算法为您提供更多信息,但计算时间更长。
如果这些算法中的任何一个似乎有效,您可以找到一些示例代码(可能只是通过谷歌搜索“opencv c++ 光流示例”)并从那里开始工作。
【讨论】:
为了将来参考,块上下文中的运动向量可能指的是光流以外的东西,它考虑了单个像素的移动。参见本文中的示例第 2 节:computer-vision.org/4security/pdf/saskatchewan.pdf以上是关于从前 10 帧中找到运动矢量的主要内容,如果未能解决你的问题,请参考以下文章