[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003195] Re: Using RGB image?



乙部です。

この部分については、今のままでは実は結構難しいです。
というのは、透明処理が入るからです。
今のままですと、雲量一定値以下を欠損値として処理するとかになります。
ところが、その場合はグレーのところは全く透けないです。

だから、薄雲のトコは抜けて欲しいなら
透明度を足す必要があるのですが、
HSVA というようなカラーモデルになります。

その上で、単純に足し算する。 チャンネルごとに用意して合成する。
上書きしてつぶしてしまうのような演算が必要そうです。
この部分は簡単です。

こうなると、最終的には 3チャンネル の フルカラーに落とすとしても、
4チャンネル色空間での作業をすることを考えて、FFTライブラリのように
色空間に変換して、そこでいくつか演算して、3チャンネルに落とした後、
描画するような感じでしょうか。

U,V,W あるとすると
UN = Normalize(U)
のようにして、
Paint2d(UN,VN,WN) のようにRGBと見なすパターン。(このメールの直前に
送った分です。)

U:地上気温 V:雲量のイメージだと、
UC=ApplyCololrmap(U) のようにして、
カラーマップを適応した配列を用意した後、、
VA=AlphaChannel(V,irgb(256,256,256)) かなんかで、グレースケールに変換すると同時に
黒さに応じて(もしくは真っ黒だけや閾値以下も設定できるといいかも)透明で抜けるよ
う設定して、
DM=DrawOverwirte(UC,VA)のようなオーバーライトもできる(下の堀之内さんの例)

VA=ValueChannel(1.0-V) みたいに、色の明るさ(この例だと暗さのつもり)
DM=Merge2Channel(UC,VA)のようにすると、雲が多いところは暗く、雲の少ないところは明るく
のように、色空間で量が計算された後、
DrawPackedMap(DM)
とかやればU座標で描画されるというようなことを考えています。

最後のはUIPACK にあるものをちょっといじればできますし、
上の方はデバイスに依存しませんし、単純な線形計算の組み合わせに過ぎませので
作れるだろうと思います。

問題は以前のものと設計思想が違うことです。
ただ、設計をいじらないとカラーマップを替えて上書きはどうせ無理だと思います。
カラーを制限しているのはカラーが出ない機械のことを考えているからで、
それを気にすればカラーマップを取り替えるとすでに描画したものの
色が変わってしまいます。
今時、それを考える必要があるような気はしないので、フルカラーを前提に作り、
制限カラーの場合はV座標で、近似色にマップするような作りでも
いいのではないかと思ったりもします。Warningを出せばいいし、PSも
フルカラーで出せますので、そんなに問題はないように個人的には思います。

みなさま、ご意見いただけたら幸いです。
#とりあえず、堀之内さんの希望が叶うものは用意はするつもりです。

> これ,以前からなんとかならないかなーと思ってます.これができる
> ようになると,例えば,虹色toneで気温を書いて,その上に白黒toneで雲や
> 降水を書いて重ねる(単純に上書きでも雲量が少なければ隙間だらけ
> なので気温分布も問題なくわかる)といったことができるようになります.
> あるいは,3次元の異なる断面に異なる物理量を違うカラーマップで
> だすとか.
-- 
==================================================
福岡大学 理学部 地球圏科学教室
Otobe,Naohito (E-Mail:otobe@xxxxxxxxxxxxxx)
==================================================