2009-09-01 43 views
10

私はビデオフィードを持っています。このビデオフィードには、異なる速度で点滅するいくつかのライトが含まれています。すべてのライトは同じ色です(すべて赤外線LEDです)。これらの点滅するライトの位置と周波数をどのように検出できますか?OpenCV:ビデオフィードの点滅を検出する

免責事項:私は、極端に OpenCVに新しいです。私はのコピーを持っていますが、OpenCVを学んでいますが、私はそれが圧倒していると感じています。誰かがOpenCVの用語の解を説明できるなら、それは非常に感謝しています。私はコードが私のために書かれるとは期待していない。

答えて

8

LEDを表示させるしきい値を持つシーケンス内の各画像をしきい値します。しきい値をしきい値に設定して、のみがLEDを保持し、バックグラウンドを削除した場合は、LEDを見た各位置を追跡して発生頻度をカウントするだけで済みます。 「バックグラウンドノイズ」は閾値処理画像に存在する場合、小さなミスを削除するには浸食を使用し、その後、多分あなたが実際に興味があるの塊で、「近い穴」に拡張するだろう途中のステップとして

、。

シーンが静的である場合は、数フレームのメジアンを取り、結果として得られるメジアン画像を任意のフレームおよびしきい値から取り除くことによって、単純な背景モデルを作成することもできます。変更されたもの(あなたのLED)がより強く表示されます。

シーンが動いている場合は、上記のスレッシュホールドアプローチを使用できるほどLEDが明るいことを確認する以外の方法はありません。

OpenCVについて:あなたが何をしたいのか分かっていれば、それを行う機能を見つけるのはそれほど難しいことではありません。難しい部分は、実際のコーディングではなく、問題を解決する方法が登場しています。

+0

ヒントありがとうございました!これは確かに役立ちます! –

1

LEDが固定されている場合、移動中の問題ははるかに簡単です。それらが静止していると仮定すると、周波数を見つけるための解決策は、ピクセルの値を格納する各ピクセル位置に対して、好ましくはkiguraiで記述された前処理の後に、ある時間枠にわたってベクトルまたは配列を保持することです。それらの値ベクトルの1次元フーリエ変換を計算し、DCピークの後の最初の重要な成分として地上周波数を見つけることができます。直流ピークが低すぎる場合は、そこに導かれていないことを意味します。

この問題はまだまだ現実的であり、私の解決策は理にかなっています。

+1

あなたの答えは間違っているわけではありませんが、点滅しているLEDの周波数を見つけるためにフーリエ変換は過度のものかもしれません。単にフレームの数を「オフ」にし、フレーム数を「オン」にすれば、信号が「クリーン」であるにもかかわらず、十分に良い結果が得られるはずです。 –

関連する問題