忍者ブログ
Zonuの雑記帳。1週間に1回更新が目標です。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

解析系の研究をやっているので,解析結果の表示機能(ポストプロセッサ)を自分で作ることもあります.
汎用のポストもあるのですが,それだとデータフォーマットを合わせたりなんだり,と解析の内部がまだゴタゴタしている段階では面倒くさい使いにかったりします.

そうすると,解析結果の値を色で表現するようになるのですが,いわゆるポストプロセッサの場合,解析結果をHSV系で表示しているように僕には見えます.
下のスクリーンショットは出来上がったものですが,イメージとしてはこんな感じにしたかったわけです.

thermo.png


しかし,OpenGLではピクセルのカラーはRGBで指定しなければならないので,データの値に基づいてHSVカラーを作成して,それをRGBに変換する作業が必要になります.

ここで,RGBとHSVの色表現の違いですが,RGBは色を( RED, GREEN, BLUE)の光の三原色の成分の強さを,原則として0.0-1.0で表現します.
これに対して,HSVは色を以下の3つの組で表します.

Hsv_sample.png
figure. HSV color space
  • Hue : 色相角 (0.0 - 360.0)
  • Saturation : 彩度 (0 - 1.0)
  • Value( Brightness) : 明度 ( 0 - 1.0)

なぜ,これが解析結果の表示に向いているかというと,SaturationとValueを固定して,Hueを変化させるだけで,視覚的に大きな変化を作ることができるからです.

HSVでは,
  • ( H, S, V ) = ( 0,  1,  0 )で原色の赤
  • ( H, S, V ) = ( 120,  1,  0 )で原色の緑
  • ( H, S, V ) = ( 240,  1,  0 )で原色の青
を作り出せます.

これを利用して,解析結果の最大値を0.0,最小値を240.0とした数値をHueとして用いれば,最小値を青で,最大値を赤で表示することができ,中間値には緑や黄色も現れるので,RGBのどれかだけを変化させるよりも,視覚的な変化が大きくなります.

Wikipediaなどを参照すると,変換アルゴリズムを見つけることができます.

S≠0の場合,
Hi = floor( H / 60) mod 6
f = H / 60 - Hi
p = V ( 1 - S)
q = V ( 1 - f S)
t = V ( 1 - ( 1- f) S)

Hi = 0のとき,R=V, G=t, B=p
Hi = 1のとき,R=q, G=V, B=p
Hi = 2のとき,R=p, G=V, B=t
Hi = 3のとき,R=p, G=q, B=V
Hi = 4のとき,R=t, G=p, B=V
Hi = 5のとき,R=V, G=p, B=q


となります.

さらに中間値などでの色の変化を大きくしたい場合は,
解析値 -> 写像 -> HSVカラー -> RGBカラー

というように変換すれば,中間値での変化をより詳しく視覚的に捉えることができます.
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
05 2025/06 07
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Internal Search
About
name: Zonu
mail: pico@any.xii.jp

某地方国立大学院生。 歯車とか電子回路とかを見るとワクワクする、いわゆるメカフェチ。( not ロボオタ )

情報系学科だったはずなのに、気づけば環境系学科に。 お蔭様で、就職活動の際は説明が大変でした。 (でもその話題をツカミにできたので結果オーライかも)

解析メインの研究なので、 FortranとかC++とかをメインにPythonとかOpenGLとかも使ってます。

Copyright © [ Zonulog ] All rights reserved.
Special Template : シンプルなブログテンプレートなら - Design up blog
Special Thanks : 忍者ブログ
Commercial message : [PR]