2012/01/18

1画素ドットカメラの実装

カラーセンサで実現したかったのは、1画素カメラ。 カラーピッカーとかスポイトのリアル世界版。
エリアでもなく、ラインでもない、ドットカメラ。

これで地球を観測したら、なにか有意義なデータとなるんだろうか。 理学系の人とかに聞いてみたいな。 個人的には青空の青さと、夕焼けの色を取得したいというモチベーションで載せている。

レンズ部:S9706、奥:NaPiCa

ハードウェア


ストラップ衛星に搭載したものを動かし、データを評価してみた。
秋月電子の取り扱うS9706はカラーフィルタ付きなので、赤外線の補正などはそれほど気にしなくて良いらしい。 ネットで見る応用例はロボットのボール認識、メディアアートなどの検討例が多い。 

こちらは大雑把な空間の色を取得したいので、センサ面にはジャンクUSBカメラから取り外したフィルタ無しのレンズをシリコン充填剤で貼りつけている。

センサの消費電流は最大10mA程度とのことなので、AVRのピンから直接供給している。
これで測光時以外は電源を落とせる。

露光時間とAE

S9706はゲート操作の時間で露光時間が調節できるので、環境光に応じたAEができるといいかもしれない。出力される12ビット値から、レンジの最大値に張り付いたり、最小値に近づいたりしたら露光時間を変えるという手が簡単そう。 

AE制御をすると、色検出の精度は良くなるけど、定点で明るさを含めた時間変化を記録したい場合は、パラメーターを固定したほうがいいこともある。 快晴の青空が検出できる値に固定して、日没までの2時間、露出時間100ms固定で取得したデータはこんな感じになった。

日没2時間のセンサデータ変化(約1fps 100ms露光、高感度モード)

グラフ色はRGBと対応させてある。各12ビットなので、普通のカメラに比べると表現が豊かということになる・・・
赤と緑の成分はほぼ同じカーブで、青の波長だけが飛び出しているのがわかる。この時の空は快晴だったが、靄のせいで若干白っぽくなっていた。 モニタ上でRGBを合成してみると、白っぽい青になるので大体あってそう。 空の青さを測ることで、大気の透明度がわかるかもしれないな・・・ 
動作テストを兼ねて数日分のデータを取ってみたい。

夕焼けの影響が出るかとおもいきや、太陽光を直接視野に入れていなかったので、それほど影響は現れなかった。  

照度センサ

明るさを測るセンサは専用のものを用意してみた。
フォトダイオードNaPiCaAMS302でルクス計測を行う。 
AVRはリファレンス電圧1.1Vなので、ダイナミックレンジをどうするか思案中。



キャパシタ電源とXBeeを追加したら2倍の大きさに。

モノ

カラーセンサ: S9706 http://akizukidenshi.com/catalog/g/gI-02493/

回路とサンプルソース 建築工作発明ゼミ2008
http://kousaku-kousaku.blogspot.com/2008/11/arduinos9706.html


フォトダイオード S9648 http://akizukidenshi.com/catalog/g/gI-02426/

2012/01/01

地球の3DモデルをShadeで作る

あけましておめでとうございます。

宇宙機お絵かきと題して宇宙機をモデリングしてきたけれど、さすがにGoogleSketchUpだとフォトリアリスティックにも限界があるので、Shade12にモデルデータを取り込んでレンダリングすることが多くなってきた。 

Shadeだと色々と可能性が広がるので、試してみたかったことの一つが地球の3Dモデルを作ること。いままでまともな画像を使って来なかった。がこれからはそれなりの背景を作ることで、宇宙機のモデリングも向上せざるを得なくなる作戦?だ。

色々と文献を漁ると案外簡単そうなので、適当に作ってみた。

だいぶ青っぽくなった。地球のモデリングは作者の地球観が出ますね

基本的には、任意の大きさの球体にテクスチャ(地表、海面/湖水面、バンプ、雲)を重ねて、いくつか反射に関する設定を行なっていく。 上の画像はまだパラメーター調整に改善の余地があるような気がしている。

オブジェクトは3つの球(地球表面、雲、高層大気)で構成されている。大きさは実際の高度差を意識して少しずつ違う。
3つそれぞれにテクスチャ、反射、透過設定をする。

地球表面は、テカテカ反射しない大地と、太陽光を反射する水面とで光沢と反射率を別に設定する(そのために白黒の海面マップを使う)。
山岳地帯などの凹凸はバンプマップを適用することで、大陸の凹凸が表現される。

雲レイヤは、2つ目の球体(地球表面の球体より少しだけ大きく作る)に貼り付ける。黒背景は透過する設定にする。 ちなみに配布されていたテクスチャは、地表と海面を見せるためか雲量は控えめだ。実際に近づけたい場合は、もっと増やされたマップを用意するといいかもしれない。

最後に一番外側の球体を作る。テクスチャはなく、半透明にして拡散反射光を青色にすることで、直下の雲と地表面が大気圏を通しているかのように見せる。

テクスチャを提供するサイトはいくつか見つけた。NASAの観測データを加工したもののようだ。
今回は下記のサイトのデータ(8Kサイズ)を利用している。 
http://www.shadedrelief.com/natural3/index.html

ISSで撮影された画像などを参考に、もっと実際の見た目に近づけてみたい。 まずは海の色からかなあ・・・ もっと黒っぽくても良い気がする。

日本と太平洋付近

地球が3Dモデルだと、分離時の地球表面を日周運動含めて再現できて便利(誰得かはともかく)

背景がリアルだと、だんだんと衛星モデルの手抜き感がにじみ出てきますね・・・
 ところで、衛星高度からみた地球を再現するとき、低軌道では地球全体が見えるほどの高みとは言えない。ISSのカメラも結構広角だし。 

 GoogleEarthでは視点の高度が出るので、それぞれの高度から見てみるとおもしろい。

よって、低軌道を意識した想像図はけっこう難しい。 今回のモデルでは8K(8192x4096)のテクスチャを使っているとはいえ、球体全体でのことなので、一部を拡大するとボロが出てしまう。(これ以上の解像度はクラッシュするので試せていない)
 宇宙との境目をモデリングするのはもっと試行錯誤してみないといけないだろう。