ビデオフィードがあります。このビデオフィードには、さまざまな速度で点滅するいくつかのライトが含まれています。すべてのライトは同じ色です(すべて赤外線LEDです)。これらの点滅するライトの位置と頻度をどのように検出できますか?
免責事項:私はOpenCVに非常に慣れていません。私はLearningOpenCVのコピーを持っていますが、それは少し圧倒されます。誰かがOpenCVの用語で解決策を説明できれば、それは大いにありがたいです。私は私のためにコードが書かれることを期待していません。
ビデオフィードがあります。このビデオフィードには、さまざまな速度で点滅するいくつかのライトが含まれています。すべてのライトは同じ色です(すべて赤外線LEDです)。これらの点滅するライトの位置と頻度をどのように検出できますか?
免責事項:私はOpenCVに非常に慣れていません。私はLearningOpenCVのコピーを持っていますが、それは少し圧倒されます。誰かがOpenCVの用語で解決策を説明できれば、それは大いにありがたいです。私は私のためにコードが書かれることを期待していません。
LEDが見えるようにするしきい値を使用して、シーケンス内の各画像にしきい値を設定します。LEDのみを保持し、背景を除去するしきい値でしきい値を設定できる場合は、LEDを確認した各位置を追跡し、発生頻度をカウントするだけなので、ほぼ完了です。
中間ステップとして、しきい値処理された画像に「バックグラウンドノイズ」がある場合は、侵食を使用して小さな間違いを取り除き、次に拡張して実際に関心のあるブロブの「穴を閉じる」ことです。
シーンが静的な場合は、数フレームの中央値を取得し、結果の中央値画像を任意のフレームとしきい値から削除することで、単純な背景モデルを作成することもできます。変更されたもの(LED)がより強く表示されます。
シーンが動いている場合、上記のしきい値アプローチを使用できるようにLEDが十分に明るいことを確認する以外に、他の(簡単な)解決策はありません。
OpenCVに関して:あなたが何をしたいのかを知っていれば、それを行う関数を見つけるのはそれほど難しいことではありません。難しいのは、実際のコーディングではなく、問題を解決する方法を考え出すことです。
LEDが静止している場合、問題はLEDが動いているときよりもはるかに簡単です。それらが静止していると仮定すると、頻度を見つけるための解決策は、できればkiguraiによって記述された前処理の後、ある時間枠にわたって、そのピクセルの値を格納する各ピクセル位置のベクトルまたは配列を保持することです。次に、これらの値ベクトルの1Dフーリエ変換を計算し、DCピーク後の最初の重要な成分として地上周波数を見つけることができます。DCピークが低すぎる場合は、そこにLEDがないことを意味します。
この問題がまだいくらか現実的であり、私の解決策が理にかなっていることを願っています。