CGcompo

3D、コンポジット、マッチムーブ、カメラ、撮影について色々書きます。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

リニア と ガンマ と グラデーション

前回Blenderをもとにカラーマネージメント ・ シーンリニアワークフロー の記事を書きました。

ここではさらにタイトル通り、リニア と ガンマ と グラデーションの関連性をまとめてみました。

gray_Liner05.png

ここはリニアワークフローを考えるにあたってどうしてもつまずきやすいポイントです。

※きっと嘘を色々言ってそうなので間違いは遠慮無くツッコんで下さい。


リニアワークフローでのグラデーションとして正しいのはA・Bどっち?

gray_Liner01.jpg

答えはどちらも。しいて言うならB
Aは階調変化がリニア、Bはリニア環境において数値の変化がリニアな画像
本来リニアワークフローとは数値をリニアに扱おうというものなのでどちらかと言うとBということになります。Aに関してもリニア環境で読み込んでいる画像であればリニアな画像となります。


ここで先に結論
画像の持っている補正ガンマとモニタガンマが画像1/2.2 モニタ2.2 とした場合相殺しているので
見ている画像はリニアな画像であるって事になります。

さてここで疑問。リニア環境って現実環境と一緒になるはずなのに何でグラデーションがリニアでないのか?
わかりやすく上の画像を一直線に切り抜いたヒストグラムで見てみましょう。
gray_Liner02.jpg


当然Aの方がまっすぐです。グラデーションはリニアなのにリニアじゃないってど言うこと?

はじめに言ったとおりにリニアワークフローで言うリニアとは数値計算がリニアなものをいうのです。
数値がリニアであればグラデーションもリニアのはず!?
いえいえ、そうはいかないのです。ここにガンマが絡んでくるのです。

まずガンマにはガンマとガンマ補正があります。ガンマ補正とはガンマエンコーディング(モニタガンマ)を想定して正しくみえるようになっている画像になります。

よりわかりやすく数字で見てみましょう。赤がリニア値、青がsRGBのガンマ補正のかかった値
gray_Liner06.png


さて上のBの画像のヒストグラム何かに似てますね。そう、逆ガンマカーブ似てます。
そこでBのグラデーションにガンマ2.2をかけると?
gray_Liner03.jpg

ほぼ階調がリニアになります。(2.2に近い理由はsRGBのガンマ補正がかかっているので)


さてCRTディスプレイに合わせてモニタガンマが2.2になっているっていう話はよく聞きます。
wikipediaより参照 ガンマ値
"一般的なCRTディスプレイのガンマ値は2.2に近い値である。液晶ディスプレイは、表示の原理がCRTディスプレイとは異なるが、ガンマ値がCRTディスプレイに近似した値になるよう調整されている。CRTディスプレイが持つ冪関数的な濃度階調は、CRTに使われる三極管の性質によるものでもあったが、人間の視覚にとっては階調を均等に感じさせる効果があった(ヴェーバー‐フェヒナーの法則)。"
液晶モニタもCRTに合わせて約2.2のガンマがかかっています。

CGをやっているとガンマとは厄介なものです。よくガンマ1.0のモニタがあればリニアワークフローもラクなのに
って話もありますよね。
ただ既存の画像をガンマ1.0のモニタで見ると明るく見えてしまいます。(モニタに合わせて補正されているため)
じゃあ画像も元からガンマ1.0のリニアにしておけば?であれば当然リニアに見えるはずです。しかしそうもいかない。
同じくwikipediaより画像参照 ガンマ値
Gamma06_600.png
まずは実は人間の目にもガンマ約1/2.0~1/3.0(状況に応じて変化)がかかっているらしいということです。
なのでモニタのリニアな数値での輝度変化は始めからリニアな階調に見えないのです。
ここで初めのBの画像に戻ります。リニアな数値変化で見ると人間の目の補正によってBの画像に近い状態に見えてしまうということです。
ただし、現実空間でもリニアな値に対して目のガンマにより補正されて見えるわけなので、それを写したリニアなガンマ1.0の画像をガンマ1.0のモニタで映せばそのまま見えるはずです。
正しいリニアワークフローでレンダリングしたガンマ1.0の画像も同じくです。

ただしJPGなどの汎用フォーマットのの画像、一般的なPCモニタは色を24-bitカラーで扱います。
そこにリニアの値で画像データを収めると暗部の情報量が非常に少なくなってしまい、マッハバンドや階調飛びが起きてしまいます。(リニアエンコード)そこでガンマ補正を用いることでリニアな値の暗部のデータ量が補間されてデータ量が増え、正しい階調表示が出来きます。(ガンマエンコード)

なので結局のところモニタの表示bit数がより高くないとガンマ無しではリニアなデータをきれいな階調で見れないということです。

まとめると
現実の中間グレーを見たいとした時、リニア階調の中間値の0.5の数値を入れてもモニタの輝度表示で見ると明るいグレーに見えてしまいます。これはそもそも先に言ったように人間の目にガンマ補正がかかっているためで、人間が中間グレーと感じるはリニア値は約0.218(0.2176…)となるからですガンマうんぬんではなく物理測定値がこの値です。なのでガンマ1.0のモニタに0.218の値を入れると階調的に中間値のグレーに見えます。ただし256色の中に暗部のデータをたくさん収められないのでガンマ補正により画像のデータ上は0.5(RGB128)ものを中間グレーとしてそれをモニタガンマを通してみる事でモニタに表示される輝度値は0.218のリニアな値となり階調として中間のグレーがちゃんと表示されたことになります。


・表示側のガンマは一定値ではない
一般的なPCモニタであればガンマ2.2と言いますがあくまで基準値であり、モニタのガンマ値というのは一律ではありません。暗い環境、明るい環境では人間の目は階調の捉え方が変わります(目のガンマ補正値が変化するため)。またモニタの性質によっても変わります。これらはキャリブレーションによって適正値に出来ます。(そもそもRGBそれぞれでガンマ値がずれている場合もあるので)
またアウトプットデバイスがモニタ以外のプロジェクターやTVなどによっても当然性質が変わります。
また、フィルムももともと映写機を通してよく見えるようにガンマがかかっています。フィルムによる違いやフルムによる映画っぽさっていうのはこういう所にもあるのかもしれません。


・ガンマ補正の値
ガンマ補正の値は画像に埋め込まれているカラープロファイルによって変わります。(よく画像にかかったガンマを取ってといったりする人がいますが、ガンマがかかることを想定して収められたデータになるのでガンマがかかった画像ではない)。
なので表示デバイスに合わせて適切なカラープロファイルを設定しないと本来見たい色で表示されない。
多くの場合sRGBのガンマ2.2を想定して補正したものとなる。


・ガンマで変わるのは
結局のところガンマによって変化するのは中間値だけで0の黒の値 1.0(255)の白の値は変化しません。
また色も変化はしません。あくまで中間の明度(輝度)が変化するだけです。


・結局のところ…
人間の目が悪い!とも言えないのでw前回のBlenderの記事のようにガンマに関してはアーティストが何も考えなくても裏で勝手に処理してくれてるのがリニアワークフローの理想ってことですよねってことです。

ただ今回省いてますがカラースペース(色空間)の考えがガンマと一緒にくっついてきます。こっちはまとめるのがより面倒なので多分書きません・・・w


おまけの小ネタ
検証してて気づいたのですがPhotoshopのグラデーションツールで書いた階調のリニアなグラデーションにはS字カーブがかかっていました。画作り優先のソフトなのでより自然に見えるようにしているためだと思います。
gray_Liner04.jpg
実際カメラなどにもより綺麗に見えるようS字カーブのような補正がかかっています。実写を含めたリニアワークフローの場合これらを考慮して作業する必要がありこの辺りがシーンリニアワークフローで大事な部分となります。


さて次回これや過去記事を踏まえた上でグレーボールの記事の訂正版です。
関連記事

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://cgcompo.blog134.fc2.com/tb.php/47-f52105f8
この記事にトラックバックする(FC2ブログユーザー)
; //

FC2Ad

//

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。