投稿者「HEXADRIVE001」のアーカイブ

32とか16とかその2

こんにちは。

 

シュンスケです

 

前回からかなり間が空いてしまいましたが、引き続き減色の話です。

 

前回は、変換元のファイルを読み込んで、何か加工を行って出力するという
ところまで作成しました。そこで、いよいよ加工部分に何か書いてみます

 

そもそもの発端は、16bitカラーへの減色ですので、単純に切り捨てで減色してみましょう。

 

前回の

 

// テスト的に半透明にしてみる
a = 128;

 

を消して、以下の処理を追加します。

 

r = (r >> 4) << 4;

g = (g >> 4) << 4;

b = (b >> 4) << 4;

a = (a >> 4) << 4;

 

その結果作成されたのが、↓です。

20150622_test_logo_new
それっぽい結果にはなっていますね。

 

実際に、例えばUnity等の減色機能のあるもので結果を比較してみましょう。

20150622_compar
左が今回生成した画像で、右がフルカラーの元画像をUnityの設定で減色したものです。
うーん、微妙にズレてますね。

 

今回の処理で実際に色値がどうなるか考えてみましょう。
全チャンネル同じ処理なので、1チャンネルぶんで考えます。

 

0~255の256段階を16段階にする際、切り捨てを行いましたので、
0~15 → 0
16~31 → 16
32~47 → 32
48~63 → 48


240~255 → 240

こんな感じになります。
おっと、これでは真っ白が表現出来ません。道理で少しずつズレるわけですね

 

ちゃんと、0~255の範囲を維持したまま、色を選ぶ必要がありそうです。

 

というわけで、今回はここまでです。
では