ちゃんと自分で調べたわけでないので・・・
PCモニターなどは元々、「入力」と「出力」が一対一の関係にない。
モニター上で真っ白を半分の輝度にするために、信号を半分にしても輝度は半分にはならないらしい。
じゃあ、たとえば写真をとったとしてそれをこのPCモニターに写すことにする。仮にカメラで保存されたjpg等のファイルがカメラで撮った情報そのもののRGB値だとすると・・・
となり、モニターガンマの影響をうけ、実際に見えてほしい明るさとはことなってしまう。
これを避けるため、通常、画像ファイルは「カラースペース」などと呼ばれる補正カーブを持っている。
という感じで、カメラで撮った画が、ちゃんとPCモニターなどに出力される。
補足
ちなみにNukeでsRGBの画像を読み込みガンマLinear出だすと、ファイルガンマの状態が確認できる。
原理的にはこんな感じ
という前置きがあり、しかしこの補正カーブというのが各ファイル形式によって違いがあったりする。
たとえば、デジカメで保存されたりwebで見かけるイラスト等のjpgファイルは8bitファイルであり、「sRGB」と呼ばれるカラースペースをもっている。10bit cineon形式(.dpxなど)は「log」と呼ばれるカラースペースをもっており、近年でてきたOpenExrなどは「linear」で保存できたりする。
※ファイル形式によりカラースペースが決まるのではなく、埋め込みlutを何にするかで決まる。
一般的には上記のようでないかと思う。
参考↓
http://area.autodesk.jp/column/trend_tech/color_magazine/cineon_openexr_colorspace/
で、じゃあそんな風にバラバラのカラースペースを持つファイルをどうやって合成すればいいのか・・・
各々の「カラースペース」を打ち消して、一旦「1:1」入出力の「リニア」にしてやり、それを最終的に、PCモニターに出すのならsRGBのカラースペースを与えてやる。すると、その画をPCモニターなどで確認すると、さっき説明したように、sRGBの補正カーブでモニターガンマが相殺され、正しい結果をPCモニター越しに得ることができる。
また、この補正カーブをLUT(Look Up Table)と呼んだりもする。
sRGBのLUTの曲線はガンマ2.2の曲線(y = x ^2.2 / 出力が入力の2.2乗倍 )と非常によくにており、gammaノードなどをもちいて簡易的に補正することも出来るが、LUTの中には複雑なカーブであるものもあり、単純にgammaノードで値を操作してってことで簡単に補正できないケースもある。
Nukeの優秀な点は、そのファイル特有のカラースペースを指定してやることで、それを打ち消して、一旦すべてをリニアな状態で合成が出来るという点である。
補足:Nuke内でリニアで合成を行うため、Readノードでファイルガンマの逆ガンマをあて、viewer(ノード)ではモニターガンマの逆ガンマをあてている。
どのようなファイルフォーマットがきても、一旦リニアで扱い、最終送出ソースに合わせてviewerLUTを変更することで、正しい出力をすることが出来る、
このような感じで、いろんな種類のフォーマットを正しく扱うことが出来る。らしい・・・