rawpyの現像関数、postprocessの引数であるbrightに関して、値の意味を確認していきます。
postprocessに関しての詳細はこちら。
bright
単純にゲインをかけてるだけっぽいです。gamma補正がかかる前の信号に対してゲインをかけてそう。
$$R_{out}=bright\times R_{in}\\ G_{out}= bright\times G_{in}\\ B_{out}= bright\times B_{in} $$
ここで指定したパラメータで直接をかけてるようです。全体が明るくなります。auto_brightがあるのであまり登場の機会はなさそうな感じがします。一律に全体を明るくしたいときにはわかりやすく動いてくれます。
実験
コードを書いて検証してみます。ガンマを以下の
gam = [1.00, 0.00]
スルー相当の係数に設定してを指定して、brightを1.00と2.00で変化を見てみます。横軸を1.00, 縦軸を2.00で散布図を見てみます。Greenチャネルだけにします。
import rawpy from matplotlib import pyplot as plt raw = rawpy.imread(filename) gam = [1.00,0.00] img = raw.postprocess(half_size=True, bright=1.00, gamma=gam) img2 = raw.postprocess(half_size=True, bright=2.00, gamma=gam) plt.scatter(img[:,:,1], img2[:,:,1]) plt.show()
この結果表示されるグラフはこんな感じ。ちなみに全画素プロットなので、処理には時間がかかります。
単純なy=2xのグラフですね。明るさが倍になってます。ちなみにRGBすべて同じ感じです。てっぺんを拡大すると、
こんな感じで、128以降の入力が、255に張り付いています。ちなみに、ガンマを指定せずデフォルト(2.222,4.5)のままグラフを書くと、
こんな感じなので、2倍にした後に、上に持ち上がっています。ダーク部が顕著に持ち上がっているので、ここからガンマ前にゲインをかけていそうなことが予想されます。
まとめ
このbrightのパラメータは、ガンマ補正をかける前にこの係数で指定した値だけRGBの画素値に対してゲインをかけている(掛け算をしている)。
と思われます。シンプルですね。ただ、auto_bright_thrをいじった方がわかりやすそうですね。
コメント