我有一个视频输入。此视频源包含几个以不同速率闪烁的灯。所有灯都是相同的颜色(它们都是红外LED)。如何检测这些闪烁灯的位置和频率?
免责声明:我是 非常 OpenCV新手。我有一份副本 学习OpenCV,但我发现它有点压倒性的。如果有人能用OpenCV术语解释解决方案,我们将不胜感激。我不希望为我编写代码。
我有一个视频输入。此视频源包含几个以不同速率闪烁的灯。所有灯都是相同的颜色(它们都是红外LED)。如何检测这些闪烁灯的位置和频率?
免责声明:我是 非常 OpenCV新手。我有一份副本 学习OpenCV,但我发现它有点压倒性的。如果有人能用OpenCV术语解释解决方案,我们将不胜感激。我不希望为我编写代码。
使用使阈值可见的阈值对序列中的每个图像进行阈值处理。如果您可以使用阈值来阈值 只要 保持LED并移除背景然后您或多或少完成,因为您现在需要做的就是跟踪已经看到LED的每个位置并计算它发生的频率。
作为中间步骤,如果在阈值图像中存在“背景噪声”,则将使用侵蚀来消除小错误,然后可能扩展到您实际感兴趣的blob中的“闭孔”。
如果场景是静态的,您还可以通过获取几帧的中值并从任何帧和阈值中移除所得到的中值图像来制作简单的背景模型。已经改变的东西(你的LED)看起来会更强。
如果场景正在移动,我认为除了确保LED足够亮以能够使用上面给出的阈值方法之外,没有其他(简单)解决方案。
至于OpenCV:如果你知道你想做什么,找到一个能做到这一点的功能并不是很难。困难的部分是提出一种解决问题的方法,而不是实际的编码。
使用使阈值可见的阈值对序列中的每个图像进行阈值处理。如果您可以使用阈值来阈值 只要 保持LED并移除背景然后您或多或少完成,因为您现在需要做的就是跟踪已经看到LED的每个位置并计算它发生的频率。
作为中间步骤,如果在阈值图像中存在“背景噪声”,则将使用侵蚀来消除小错误,然后可能扩展到您实际感兴趣的blob中的“闭孔”。
如果场景是静态的,您还可以通过获取几帧的中值并从任何帧和阈值中移除所得到的中值图像来制作简单的背景模型。已经改变的东西(你的LED)看起来会更强。
如果场景正在移动,我认为除了确保LED足够亮以能够使用上面给出的阈值方法之外,没有其他(简单)解决方案。
至于OpenCV:如果你知道你想做什么,找到一个能做到这一点的功能并不是很难。困难的部分是提出一种解决问题的方法,而不是实际的编码。
如果LED是静止的,问题比它们移动时要简单得多。假设它们是静止的,找到频率的解决方案可能只是为每个像素位置保留一个矢量或数组,在这个位置存储该像素的值,最好是在kigurai描述的预处理之后,在一段时间内。然后,您可以计算这些值向量的1D傅里叶变换,并将地面频率作为DC峰值之后的第一个重要分量。如果DC峰值太低,则意味着那里没有LED。
希望这个问题仍然有点实际,我的解决方案是有道理的。