リニアワークフローとガンマ補正について

2.79 で追加された「Color Management」の「Filmic」を把握しようとしたところ、そもそものカラーマネージメントや、そこに絡んでくるガンマ補正やらもきちんと理解していかなければならず、再度理解を深めるためいろいろな情報を読んだり、Blender で実験してみたりしましたので、それをまとめておきます。

リニアワークフローとは

カラーマネジメントのための方法の1つ。ガンマ値を表すグラフを直線(リニア)に統一することで、作業中の全ての映像素材が現実世界と同じ見え方になるよう管理すること。(「CGWORLD Entry.jp:リニアワークフロー」より)
だそうです。

リニアワークフローを知ろうとすると、さっそく「カラーマネージメント」やら「ガンマ値」やらがでてきます。。。
カラーマネージメントは範囲が広いので、ここでは、ガンマ値に話を絞ります。

ガンマ値

ガンマ値(ガンマち)とは、画像の階調の応答特性を示す数値。また、入出力機器のガンマ値に応じた最適のカーブに画像の階調を補正することをガンマ補正(ガンマほせい)という。(「Wikipedia:ガンマ値」より)
だそうです。
Wikipedia:ガンマ値」の中で、「ガンマ補正」も説明されているのですが、ちょっと理解し難いんですよね。。。

で、もろもろの情報から理解した結果をまとめると…

現実はリニア

まず、現実世界においては、光量「1.0」に光量「1.0」を足すと光量「2.0」になる、というリニアな環境だということで、ガンマ値としては「1.0」となる。
gammaCurve-Real.png

ディスプレイモニターはノンリニア

しかし、映像データを表示するディスプレイモニターは、入力値を一定量増やすと出力値も一定量増える…というリニアでは無く、入力値に対してちょっと暗い出力値となってしまうんだそうです。
で、どのくらい暗くなるかというと、最小の明るさを「0」とし最大の明るさを「1」とした場合、入力値に対して「ある値(ガンマ値:γ)」を指数とする「べき乗」した値の近似値になるとのこと。
これを計算式にすると…
 Vout=Vinγ(0 を最小の明るさ、1 を最大の明るさとした場合)
…だそうです。
で、今の通常のディスプレイモニターは、基本的に「ガンマ 2.2」になるように調整されているそうで、これをグラフにすると…
gammaCurve-Monitor.png
…となります。
これは、もともとブラウン管(CRT)テレビの機械的な制約らしく、入力値に対して出力値をリニアにするためには、装置の追加が必要で、それではテレビが高くなってしまう……だったら暗くなる分、元の映像を明るくしてしまえ、という(やや乱暴な?)対応を規格化(NTSC)したようです。

ガンマ補正

そんなわけで、NTSC 方式のカラーテレビ放送では、テレビのガンマ値を 2.2 だという前提で、最終的なテレビからの表示が γ=1 の階調になるように、予め放送側で γ=1/2.2(約 0.45)のガンマ補正をかけておく…となったそうです。
gammaCurve-Image.png
現在主流の液晶ディスプレイ等は、CRT のようなガンマカーブは描かないそうですが、ガンマ補正された映像を正しく表示するために、あえて CRT と同じガンマカーブを描くように調整されているとのことです。

というわけで、ここまでをまとめると、

映像作成時のガンマ補正

現実世界の撮影情報に対して、γ=1/2.2 で補正した映像データを作成。
gammaCurve-Real.pngx.pnggammaCurve-Gmma.pngarrow-R.pnggammaCurve-Image.png

映像表示時のガンマ補正

γ=1/2.2 で補正した映像データを、γ=2.2 で表示するモニターで表示することで、γ=1.0 となる。
gammaCurve-Image.pngx.pnggammaCurve-Monitor.pngarrow-R.pnggammaCurve-Display.png

リニアライズ

これで、ガンマ値やらガンマ補正やらが何者か分かりました。
で、リニアワークフローは「ガンマ値を表すグラフを直線(リニア)に統一する」ということでしたが、この「リニアに統一」というのは、モニターに映すために予め補正されているガンマを取り除く作業(リニアライズ、リニア変換、デガンマ、逆ガンマ補正…等と言われるらしいです)を行い、リニアなデータにする必要があるというのです。
gammaCurve-Image.pngx.pnggammaCurve-Linearize.pngarrow-R.pnggammaCurve-Linear.png
ま、よくよく考えれば、補正済みの画像や、未補正の画像が混ざった環境で合成処理しても、正しい結果が得られないのは想像できますよね。
ちなみに、Blender 内部はすべてリニア空間にて作業されており、画面に表示する時点でガンマ補正しているので、Blender 内だけで作業する場合は気にしないでいいようになっています。

視覚もガンマ補正

なんと、われわれの視覚でもガンマ補正が行われていると。
たしかに同じライトでも、真っ暗な中での点灯と、晴天下での点灯とでは、明るさの感じ方は違いますね。。。
どうやら、われわれの視覚は、周りが暗い程光の増加に対する感度は強いらしく、周りが明るいほど鈍いらしいのです。
ということで、われわれの視覚にもガンマ補正が行われており、リニアな反応をしているわけではないのだそうです。

で、そのガンマ値はどの程度なのか…ですが、1/2.4 やら 1/2.6 やら 1/3 などと、いろいろな説があり、個人差やら環境やらでも変わるらしいので、決定的な値は解りませんでした。
ただ、個人的には、撮影時に利用する 18%グレーを考えると、18%が中間グレーとなるには、
γ = 1/log0.180.5 ≒ 1/2.47
となるので、だいたいγ = 1/2.5 あたりがしっくり来るかな。。。なんて。

というわけで、γ=1/2.5 で作成したグラフがこちら。
gammaCurve-Eye.png

リニアな現実世界を見ても、ガンマ補正された感覚で認識していたんですね。。。
もう、なにがなにやら。

でも、こうなるんだったら、ディスプレイガンマと相殺されるから、映像にガンマ補正する必要ないんじゃないんですかね…?
あー、ちがうか。リニアな階調に対してガンマ補正されて見えてるから、モニターからもリニアな階調で表示されるようにしないと同じ感じにならないってことですかね。。。

あぁ・・・まだまだ把握しきれてない感じです。
とりあえず、ざっくりとですが、リニアワークフローに関わるガンマ補正について雰囲気は把握できたので、以上でまとめを終わります。


参考サイト

今回の把握に当たり、以下のサイトを参考にさせて頂きました。
この場を借りてお礼申し上げます。ありがとうございます。
なお、リニアワークフローについても詳しく書かれておりますので、ご参考に。




コメントを投稿するには画像の文字を半角数字で入力してください。


画像認証

  • 最終更新:2018-10-25 09:13:55

このWIKIを編集するにはパスワード入力が必要です

認証パスワード