rawpyでPython現像その7(bright)

python

 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をいじった方がわかりやすそうですね。

python現像
スポンサーリンク
キャンプ工学

コメント

タイトルとURLをコピーしました