2009-09-01 85 views
10

我有一個視頻源。此視頻供稿包含多個以不同速率閃爍的指示燈。所有的燈都是相同的顏色(它們都是紅外LED)。我如何檢測這些閃爍燈的位置和頻率?OpenCV:檢測視頻中閃爍的燈光

聲明:我是極其新的OpenCV。我有一個的副本學習OpenCV,但我覺得它有點壓倒性。如果有人能夠用OpenCV術語解釋解決方案,那將不勝感激。我不希望代碼爲我寫。

回答

8

閾值序列中的每個圖像的閾值使LED可見。如果您可以將閾值設爲閾值,那麼只有可以保留LED並消除背景,因此您現在需要完成的操作是跟蹤每個已經看到LED的位置並統計其發生頻率。

作爲一箇中間步驟,如果有「背景噪音」的閾值的圖像中是使用的侵蝕,以除去小錯誤,然後可能擴張到「關洞」中的斑點你是真正感興趣。

如果場景是靜態的,也可以通過取幾幀的中間值並從任何幀和閾值中去除得到的中值圖像來製作一個簡單的背景模型。已經改變的東西(你的LED)會變得更強。

如果場景正在移動,我看不出其他(簡單)解決方案,而不是確保LED足夠亮以便能夠使用上面給出的閾值方法。

至於OpenCV:如果你知道你想要做什麼,找到一個實現它的函數並不是很難。困難的部分是想出一個解決問題的方法,而不是實際的編碼。

+0

非常感謝你的提示!這一定會有所幫助! – 2009-09-02 12:23:50

1

如果LED是靜止的,問題比移動時要簡單得多。假設它們是靜止的,找到頻率的解決方案可能僅僅是爲每個像素位置保存一個向量或陣列,在該位置中存儲該像素的值,最好在經過kigurai描述的預處理之後,在一段時間內完成。然後,您可以計算這些值向量的一維傅里葉變換,並找到接地頻率作爲DC峯值之後的第一個重要分量。如果DC峯值太低,則意味着沒有領先。

希望這個問題仍然有些實際,而且我的解決方案很有意義。

+1

不是說你的回答是錯誤的,而是爲了找到眨眼的頻率,我認爲傅里葉變換可能是矯枉過正的。簡單地計算幀數「關」和幀數「開」應該給我足夠好的結果,儘管這取決於信號的「乾淨」程度。 – 2010-01-19 15:52:17