估计灰度视频中的流动区域

计算科学 matlab 图像处理 信号处理
2021-12-14 10:49:01

我正在寻找一种算法/方法,通过它我可以检测视频中的流动区域。该视频是灰度热图的视频,其中大部分图像没有运动。运动中的区域通常显示为闪烁/移动的白点,而在图像的其余部分中,这些点不移动。最简单的形象化方法是想象一个有噪音的电视屏幕,但噪音只在某些区域发生变化;我想检测这些区域。

当前实现的方法是简单地计算每个像素随时间的标准偏差,并将其用作运动的粗略估计。虽然这确实产生了所需的图像,而且速度相当快,但我不是该方法的忠实拥护者,因为它不关心事情的变化速度有多快(std(sin(x) == std(sin(2x) )))。

根据德克萨斯大学的这篇论文,我尝试通过 Black 和 Anandan 算法估计流动区域。具体来说,我使用了布朗大学制作的这段 Matlab 代码。不幸的是,它不仅需要很长时间才能运行,而且它似乎真的没有工作(显示了最肯定没有的高流量区域)。我在图像/信号处理方面没有太多背景,所以我完全有可能搞砸了实现,但我认为情况并非如此。

我的问题是:谁能想到我可以用来帮助估计流动区域的任何替代方案?另外,我认为当前的方法(采用标准偏差时间)是有缺陷的,我错了吗?

提前感谢您的帮助。

1个回答

这不再是我的领域,但当我还是学生的时候,我记得有人提倡使用马尔可夫链来做这类事情。也许是要寻找的东西,尽管我希望从那以后事情会继续发展。确实,您提到的论文似乎是它的演变。

我真的不明白为什么“德克萨斯方法”不起作用,没有阅读整篇论文也没有看到你的数据。如果您的流的形态与他们的算法不兼容,他们算法的分割部分可能会适得其反?

另外,您谈到“闪烁/移动的点”。这些不是一回事。只有当不同点的相位相关时,闪烁才会显示为运动(这就是你使用“sin(x)”的原因吗?)。在移动点的情况下,如果它们的幅度一致,它们就会显示出运动;那么粒子跟踪软件确实可能是一个解决方案,正如 EngrStudent 所指出的,这取决于你的点有多大,这又回到了分割问题(​​检查其中一个是否有效: http: //www.mashanov.uk/ , 你可能需要 ImageJ http://imagej.nih.gov/ij/download.html )

无论如何,一件事仍然是正确的:您是说“点”仅在感兴趣的区域中发生变化。在我看来,您可以通过在跟踪您的流程之前进行背景减法来提高检测速度/易于检测。

希望能有所帮助,谢谢你让我重新思考我的学生时代......