画像のガンマ補正を行うには、対数・指数関数を使います。
このページでは、ガンマ補正値を直接操作するのではなく、グラフの X, Y 値から、ガンマカーブの値を求める式に変形してみます。
下記の式では、「A の B乗」を「A ^ B」と表す事にします。 また、Ln(X) は、自然対数の底「 e 」を用いた「log e (X)」の事、Exp(X) は、「e ^ (X)」の事です。 「e って何」と言われる方は、常用対数の底10の代わりに定数 e を使うと、π(パイ)で円の計算が簡単になるように、 難しい計算が楽になるので、パソコン上では用いると思っておいて下さい。 (僕も e をよく分かってないので)(^_^;) 「A ^ B = Exp(B * Ln(A))」となる説明 (Delphi なら Math ユニットの Power 関数を使えば必要ないですが) Exp(B * Ln(A)) = e ^ (B * log e (A)) = e ^ (log e (A) * B) … ここで、例えば 2 ^ 6 = 2 ^ (2 * 3) = (2 ^ 2) ^ 3 なので、 = ( e ^ (log e (A))) ^ B … ここで、log e (A) は、e を A にするためのべき乗の数なので、 = (A) ^ B = A ^ B 「Y = X ^ Gamma を、X と Y から Gamma を求める式に変形」 (Gimp や Photoshop では、下記の式を使ってると思います。) Y = Exp(Gamma * Ln(X)) = e ^ (Gamma * log e (X)) … ここで、B = e ^ A なら A = log e (B) なので、 Gamma * log e (X) = log e (Y) Gamma = log e (Y) / log e (X) Gamma = Ln(Y) / Ln(X) おまけ「Gamma と Y から X を求める式に変形」 Gamma = Ln(Y) / Ln(X) Ln(X) = Ln(Y) / Gamma … ここで、A = log e (B) なら B = e ^ A なので、 X = Exp(Ln(Y) / Gamma) |