topazの遊び場

いろいろやってみる

Gamma Correctionを用いて色調補正

前回はレイマーチングを用いて球体を表示することを行った。(前回) Shader Toyのサイトで公開していたところ、見てくれた方がおり、「don't forget gamma correction on Image tab output!」とコメントしてくれた spalmerさんありがとうございます。

内容は「ガンマ補正(Gamma Correction)を忘れずにつけなよ」というもの。アドバイスもらったらやるしかないよね :)

ガンマ補正 (Gamma Correction) とは

画像や動画などの、明るさの調整を行うために使われる非線形操作。つまり画像を明るくしたり暗くしたりすることができる。それも係数を指定してどの程度明るくするかを操作することができる。

何をしたのかを知るのが重要。

Gammは指数関数的な値である。X,Y が 0~1の時はこうなる。

$$ \begin{aligned} Y = X^{\gamma} \end{aligned} $$

と言われているが、ここがとても厄介なところ。

このさいと (ガンマについて - コンポジゴク)が説明してくれているが、ガンマの値を指定しても逆数を取る場合がある。 何故かはわからなかったがサイトによってちがう。。

$$ \begin{aligned} Y &= X^{\gamma}\\ Y &= X^{\frac{1}{\gamma}} \end{aligned} $$

この両方の表記の仕方があるから、注意する必要がある。ちなみに上記で上げた画像は下の 1 / gamma を使用している。

これを行う理由はカメラが人間よりも明るさの取れる幅が少ないからだそうだ。 カメラで写すとどうしても、暗くなってしまうため、明るくする必要があるが、それを簡単にいい感じに再現してくれるのが、Gamma Corection だそうだ。

Gammaの値をいくつにすると良いかも、明らかになっていて、2.2や2.4が良いとされている。彼も2.2が良いと言ってくれた!

2.2にするととても明るくなることがわかる。

比較するとわかるが、一目瞭然。

感想

Gamma Correctionによって明るくなることは分かったが、アートとしての好みは分かれそうだなと思った。 あと、Xgamma なのか X^{1. / gamma} なのか、統一してほしかった。。

謝辞

Thank you @spalmer for letting me know that I should use Gamma Correction! @spalmer : https://www.shadertoy.com/user/spalmer

参考