0

データのエンコード方式に従って色が変わる円があります。たとえば、その円の色の変化に「こんにちは」というメッセージをエンコードしたいとします。つまり、赤から緑への遷移 (塗りつぶされた円の色が赤から緑に変化) はバイナリ 1 としてデコードでき、緑から青への遷移は 0 としてデコードできることを意味します。したがって、私のメッセージは次のようになります。このような形式でエンコードされます。私の送信機であるこの部分は準備ができています。

このエンコードされたデータを、Android カメラを使用した画像処理アルゴリズムで受信できるようにしたいと考えています。私は画像処理が初めてで、少し調査した結果、自分のアプリケーションに OpenCV または JavaCV を使用できることがわかりました。どちらを使用する必要があると提案し、従うべきアプローチは何ですか? 円をリアルタイムで検出できるアプリケーションを作成できました。しかし、私は次に何をすべきかを考えることができません。opencv の例の color_blob_detection の例に従いましたが、フレーム内の特定の色を検出する方法を知っています。

ここで、私は混乱しています。

  1. すべてのフレームで赤、緑、青の 3 色をチェックし続ける必要がありますか? 2 つの連続するフレームのパーセンテージを比較して、遷移があったと言うことができるように、各フレームで同じパーセンテージを決定する方法はありますか? **

  2. たとえば 500 フレームのフレーム バッファに数フレームをバッファリングしてから、バッファからフレームを 1 つずつ処理し始める必要があります。これは、フレーム レートを上げるために考慮することができます。コードは最小限に抑えられます。**

どうすればいいのか教えてください。送信機は同じメッセージを何度も送信し続けるので、送信するビット/バイト数を修正することは気にしません。そのような方法で送信されている「ID」を特定する必要があるだけです。

4

1 に答える 1

0

私はあなたの最初の質問に本当に混乱しています。特定の色の割合を計算するのは画像処理ではありませんか? 3 色をチェックする方が費用がかかると思われるのはなぜだと思いますか?

2 番目の質問については、必要なフレーム レートはプロトコルによって異なります。トランジションが 10 Hz で発生する場合、それらを解読するには 10 FPS しか必要ありません。

一方、フレーム データを脇にコピーして、別のスレッドのキューで処理することで、onPreviewFrame() サイクル (Android アプリのメイン スレッド) がスタックしないようにすることができます。

于 2013-05-17T20:50:58.210 に答える