rawpyでPython現像その15(output bps)

python

 postprocess関数の引数のoutput_bpsに関して確認します。

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

 説明通りの動きをしてくれました。記事にする必要もありませんが、一応。

output bps

 出力の画素値ビット数。8か16を指定

 読んだ通りですね。動きとしてもこの通り動きました。8と16以外を指定すると落ちるようです。一応実験した結果を以下に載せます。

実験

 以前auto_scaleの説明で使ったデータ生を現像してみました。グラフ(散布図)は横軸にno_auto_scale = Falseにしたもの、縦軸にno_auto_scale = Trueにしたものをプロットしています。使ったカメラの、rawデータのビット数が12bitなので、以前試した8bit出力時は、

 8bitへの丸めにより、このようなかなり飛び飛びの階調になってしまっていました。(縦軸を64までにしています。)16bit出力にすることで、以下のように、

 きれいに4095(12bitのMAX)までの階調がありそうです。(縦軸を64/255に相当する16484にしています。)ちゃんと16bitで出てそうです。

 一応データタイプも確認してみました。

img1 = raw.postprocess(half_size=True,
                       demosaic_algorithm=rawpy.DemosaicAlgorithm.LINEAR,
                       output_bps=16,
                       )

print(img1.dtype)

 このコードでちゃんと、

uint16

 と出力されました。unsignedの16bitデータで現像できてそうです。

 この16bitのフォーマットですが、JPEGには存在しないので、TIFFで保存することで画像としても確認できます。

まとめ

 画像の出力ビット数の指定、8と16以外はNG

 ドキュメントのままですね…。現像後の工程で、細かいトーン調整を行う必要があるのであれば、16bitで現像した方がよいです。

 この postprocess 関数へのパラメータに、細かいトーン調整を行ってくれるものはなさそうです。基本的には線形なゲイン調整ばかり。例えばハイライトだけを落としたり、ダーク部だけを持ち上げたりだとか、そういった類の調整を行うのであれば、このオプションは16を指定する必要がありそうです。

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

コメント

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