rawpyでPython現像その10(adjust_maximum_thr)

python

 現像関数、postprocessの引数をひとつづつ動かしながら確認していきます。今回は adjust_maximum_thr をいじってみます。正直この値、調整のしどころが難しかったです。

 postprocessに関しての詳細はこちら

 このパラメータ。実体がつかめなかったです。

adjust_maximum_thr

 リファレンスにはなんと、「librawのドキュメントを見よ」とかなり突き放した感じ。しょうがないので、本家のドキュメントを参照してみました。

 直訳すると、

 このパラメーターは、実際のフレームデータから計算されたchannel_maximum []データに基づいて最大値の自動調整します。 計算された最大値がadjust_maximum_thr * maximumよりも大きい場合、maximumはCalculated_maximumに設定されます。
 デフォルトは0.75。0.99999より大きい値を設定した場合、デフォルト値が使用されますより。0.00001より小さい値を設定すると、調整は行われません。
 最大値を調整しても画像にダメージを与えることはなく(特にデフォルト値を使用する場合)、チャンネルオーバーフローの問題(風景写真のマゼンタ雲、屋内写真の緑青のハイライト)の修正に役立ちます。

 とあります。なんだかよくわかりません。現にこの値をデフォルト値から、ちょっとずついじってみても現像される画像への変化が見て取れませんでした。デフォルト使っとけ。って感じのようです。

 librawからは別途、このmaximumの値を参照することができるようです。がその値もオートで変化するようです。

 rawデータのビット数が12bitや14bit等あったとしても、内部演算でそんな中途半端なビット数は使わないだろうから、値に余裕はありそうです。 単純に考えれば、16bit幅使っているとしてもmax値に張り付くようなことはなさそうな気がします。しかも最後は8bitで現像すればこのmaximumの値の自動調整が最後の出力に何か影響が出るとも考えにくいです。

 ひとまず、最大値を最適制御してくれるオプションだと理解しました。色毎のオーバーフローが抑制されるとあるので、偏った明るい色をわざと発生させてその動きを確認してみようと思います。

実験

 adjust_maximum_thrをいろいろ振ってみましたがイマイチ正体がわかりませんでした。rawファイルもcanon, olympus, panasonic の3社のそれを使ってみましたが、イマイチ。唯一変化があったのが、canonのrawデータ。それも値を振って段階的に変わったわけではなく、ある値を境に画像がガラッと変わり、それ以外では全く変化がありませんでした。他の現像パラメータを振ってもその閾値には変化もありませんでした。

 唯一変化があったcanonのデータでも写真によって閾値が異なっています。確実なのは、その閾値を下回った時には全体が明るく変化します。つまりmaximumは小さい方にクリップされていると思われます。ガンマ1.0で現像すると、明るさはおよそ倍変化しています。ヒントはこれだけです。

 閾値を境に内部の演算ビット精度が1bitずれてるのかな?正直どっちがいいのかよくわからないです。

 暗い方で現像して、明るさを2倍に補正したものと、明るい方で現像して明るさを1倍にしたもので何かが違うのか。試してみました。全体の明るさの雰囲気は同じでしたが、結果は異なりました。若干明るい方で現像した方が階調がなめらかなように見えました。

 adjust_maximum_thr の値を変化させ、明るさが切り替わった閾値を見つけます。上がその閾値より上(全体が暗くなる)で、明るさ補正で2倍して現像たもの、下が閾値より下で、明るさ補正1倍で現像したもの。わかりやすくするために現像後、暗部を4倍に持ち上げて表示しています。気持ち下の方がノイズ感は少くなめらかな気がします。が微妙な差です。

まとめ

 adjust_maximum_thr をいじると、全体の印象が明るくなるないし暗くなるポイントがあり、そこを境に内部で用いている最大値が倍違う。と予想される。が正直使いどころがよくわかりません。明るすぎる写真ではこの閾値をいじって調整すると何かいいことがあるのかもしれません…。

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

コメント

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