OpenCV:检测视频输入中的闪烁灯光

时间:2009-09-01 23:58:43

标签: opencv computer-vision feature-detection

我有一个视频Feed。此视频源包含几个以不同速率闪烁的灯。所有灯都是相同的颜色(它们都是红外LED)。如何检测这些闪烁灯的位置和频率?

免责声明:我 非常 是OpenCV的新手。我有一份学习OpenCV 的副本,但我发现它有点压倒性。如果有人能用OpenCV术语解释解决方案,我们将不胜感激。我不希望为我编写代码。

2 个答案:

答案 0 :(得分:9)

使用使阈值可见的阈值对序列中的每个图像进行阈值处理。如果您可以使用保持LED并删除背景的阈值对其进行阈值处理,那么您或多或少已完成,因为您现在需要做的就是跟踪已经看到LED的每个位置计算它发生的频率。

作为中间步骤,如果在阈值图像中存在“背景噪声”,则将使用侵蚀来消除小错误,然后可能扩散到您实际感兴趣的blob中的“闭孔”。

如果场景是静态的,你也可以通过取几帧的中值并从任何帧和阈值中删除得到的中值图像来制作一个简单的背景模型。已经改变的东西(你的LED)看起来会更强。

如果场景正在移动,我认为除了确保LED足够亮以便能够使用上面给出的阈值方法之外,没有其他(简单)解决方案。

至于OpenCV:如果你知道你想做什么,找到一个能做到这一点的功能并不是很难。困难的部分是提出一种解决问题的方法,而不是实际的编码。

答案 1 :(得分:1)

如果LED是静止的,问题就比它们移动时要简单得多。假设它们是静止的,找到频率的解决方案可能只是为每个像素位置保留一个矢量或数组,在这个位置存储该像素的值,最好是在kigurai描述的预处理之后,在一段时间内。然后,您可以计算这些值向量的1D傅里叶变换,并将地面频率作为DC峰值之后的第一个重要分量。如果DC峰值太低,则意味着没有LED那里。

希望这个问题仍然有些实际,我的解决方案是有道理的。