13

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

免责声明:我对 OpenCV非常陌生。我确实有一份Learning OpenCV的副本,但我发现它有点压倒性。如果有人可以用 OpenCV 术语解释解决方案,将不胜感激。我不希望为我编写代码。

4

2 回答 2

11

使用使 LED 可见的阈值对序列中的每个图像设置阈值。如果您可以使用仅保留 LED 并移除背景的阈值来设置阈值,那么您或多或少地完成了,因为您现在需要做的就是跟踪每个看到 LED 的位置并计算它发生的频率。

作为中间步骤,如果阈值图像中存在“背景噪声”,则将使用侵蚀来消除小错误,然后可能会扩大以“关闭”您真正感兴趣的斑点中的孔。

如果场景是静态的,您还可以通过获取几帧的中值并从任何帧和阈值中删除生成的中值图像来制作简单的背景模型。发生变化的东西(你的 LED)会显得更强。

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

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

于 2009-09-02T10:42:21.377 回答
1

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

希望这个问题仍然有些实际,并且我的解决方案是有意义的。

于 2009-10-14T09:46:27.117 回答