可視光通信とかカメラの性能とか
AndroidやiOSデバイスでHSV変換をしてきましたが、これまでの続きです。
AndroidでHSV変換 - Lynx-EyEDの電音鍵盤 新館
LEDの色相をAndroidやiOSデバイスのカメラで読み取るのはさほど難しい事では有りません。
光っている=明度が50%以上はある、と単純に考えて周りの画像を間引いてしまえばそこそこの精度で読み取る事が可能な…
…ハズなんですが
搭載されているカメラによって大分個体差が有るようです。
たとえばこれ。
紫〜ピンク色に色を調整したフルカラーLEDを撮影したのですが、ほとんど青色に見えてます。(logcatウィンドウに色相を出力させるとほぼ240度くらいになるのでほんとうに青と見えているようです)
ドーム型LEDなので各発光色での屈折率の違いも疑いましたが、そこまで影響がでるパラメータでは有りません。
ちなみにフラッシュありで撮影するとこんな感じ
まだ青色が強く出ているものの、そこそこ近い色に見えます。
ここから、明度100%(白く見えている部分)を差し引くと紫〜ピンク色が抽出されます。
自前アプリから見るとこんな感じ。*1
やはり青色に見えている
フラッシュを使いながら表示
明度が100%の画素データを消しています
Android端末のカメラフラッシュはすべて機器に搭載されている訳ではなく、フラッシュの方式もそれぞれ違うのでこの方式をとるのは賢くないように思います。高出力白色LEDで均一に環境光を調整する方法をとろうと思います。
#MFT2012までに間に合えばいいんですけど
*1:LEDの中心が黒く見えているのは明度が100%のデータを消しているからです