Answers:
如果您正在寻找一种简单的方法,可能是应用标准的运动估计算法,该算法在MPEG类压缩编解码器中已经非常成熟。它们很容易理解,我想您将可以使用很多代码。该算法逐块生成运动矢量-然后您可以找到最突出的簇,并取平均运动矢量的方向和大小。
MPEG4-还有另一个关键概念,称为“ 全局运动补偿 ”,该技术试图首先估计和补偿摄像机的运动和平移。这样做的好处是,根据复杂性,这些方法可以更简单或更详尽。下面是一个例子纸张和另一纸张的一样。
通常,摄像机平移和运动估计是相当成熟的研究领域。这是参考:纸和另一种纸。
关于这个问题。您会发现严谨,准确的算法以及简单快速的算法。
这可能是一个很慢的解决方案,但是您可以对后续帧进行基于FFT的互相关,然后找到峰值以识别帧之间的偏移。也许只在图像的一小部分上这样做,以节省处理器周期。
从一帧到下一帧的旋转或剧烈的场景更改将不起作用,并且可能有更好的方法。这是一种“我有锤子,所以一切看上去都像钉子”的解决方案。我想这就像您的幼稚解决方案,除了不需要边缘检测并且FFT使它比每次显式移动一个像素快得多。
这个问题很相似,除了互相关之外,没有人提出其他建议,所以也许还不错:使用MATLAB计算连续图像之间的偏移量
估计速度和方向的一种方法是对例如图像中心的四个窗口进行“局部”流量估计。卢卡斯-卡纳德(Lucas-Kanade)微分方法假定位移近似恒定,因此可以作为方程求解。
因此,我的分步指南将是:
这确定了方向和速度,但是您可以使用加权窗口使其更坚固。查看Lucas-Kanade方法的扩展。
我认为互相关是找到偏移量的一种好方法,但是如果您想真正快速地进行偏移,则可以尝试将其限制为仅一条垂直扫描线和一条水平扫描线(即穿过图像中心)。计算两个帧中扫描线之间的互相关性应该可以使您获得水平和垂直偏移的近似值。