高校1年生でも分かる、画像のガンマ補正曲線の計算について

 画像のガンマ補正を行うには、対数・指数関数を使います。 このページでは、ガンマ補正値を直接操作するのではなく、グラフの 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)









firebird39 のホームに戻る






inserted by FC2 system