1

LEDがあるとしましょう。0.5秒間隔で点滅します。したがって、0 秒目 => 0.5 でオンになり、0.5 秒目 => 1 秒目からオフになり、1 秒目 =>1.5 目から再びオンになります。

その入力を外部カメラ (iPhone カメラなど) から読み取りたいと想像してみましょう。私がしていることは次のとおりです。1.入力ストリームを取得し、そこから画像を作成し、画像をスキャンして特定の数の白いピクセルが存在するかどうかを確認します。そこにある場合、LEDがオンになり、ファイルに「1」を書き込みます。なければ「0」と書きます。入力ストリームを 1 秒間に 2 回読み取ります。したがって、一般的に言えば、すべてがうまくいき、処理が遅れていなければ、良い結果が得られます。しかし、次の場合を想像してください。

0 => 0.5 LED がオン 0.49 => 私のカメラは情報を「1」として読み取ります

0.5 => 1.0 LED がオフ 0.99 => 私のカメラは情報を「0」として読み取ります

1.0 => 1.5 LED がオン 1.51 => カメラが遅れて「0」と読み取られる

したがって、ここでデータが破損しています。問題は、エラーのマージンを大きくするために、読み取りを同期してこのウィンドウの中央に移動する方法です。また、それを 1 秒間に 10 回やろうとしていると想像してみてください。ウィンドウはさらに少なくなります。

このトピックについて何を読むことができますか? 信頼性を高めるにはどうすればよいですか?

考えられる解決策の 1 つは、入力を 1 秒間に 4 回読み取り、2 つの入力のグループに基づいてデータを使用することです。

4

1 に答える 1

1

タイムコードをエンコードする方法について読みたいと思うかもしれません。 http://en.wikipedia.org/wiki/Timecode

これらはそれぞれ、選択したフレーム レート (たとえば 30fps) で 80 ビットのデータを送信します。あなたの場合、どのようにそれを行うかわかりません。

明らかに、ウィンドウが小さいほど正確です。LTC を使用すると、オーディオは 44kHz 付近でサンプリングされることが多いため、ほぼ正確に正確に取得することができます。

iPhone のカメラが 1 秒間に 2 枚の写真しか撮影できない場合、別の間隔 (たとえば 0.7 秒でも) で写真を撮ってみて、どうにかして計算を行って、オンにするかオフにするかを計算してみてください ( LED はまだ 0.5 秒で交互に表示されます)。数秒間、0.1秒ごとにサンプリングするのと同じでしょうか? (空から数字を引き出しているだけですが、そのようなことを解決できると思います)

別の考え: 一連の写真の代わりに、カメラからのビデオを使用できますか? これで30fps出せるかも?(よくわかりません – 調べていません) iOS 6.0 でも、これに関する改善が行われる可能性があります (開発者であれば、チェックする価値のあるものです)。

于 2012-07-26T09:54:04.903 に答える