HDR画像を作るには~フィルミックRGB(その1)(darktable3.0第42回)

dt3.0のフィルミックRGB(filmic RGB)はdt2.6のフィルミックモジュールの改良版です。

フィルミックモジュールのパラメータが整理されています。

フィルミックRGBモジュールは、数あるdarktabelのモジュール中でも、白眉といえるモジュールと思います。

dt2.6のマニュアル(dt3.0のマニュアルはまだ出ていません)を見ても、かなりのページ数を割いて説明してしています。

マニュアル以外に、darktable2.6用のフィルミックモジュールの解説が以下にあります。

https://eng.aurelienpierre.com/2018/11/30/filmic-darktable-and-the-quest-of-the-hdr-tone-mapping/

ここでは、RAWに最適化された露出をとることが推奨されています。

最適なRAW画像について考えます。

デジカメのセンサーは光に対する応答の線形性がフィルムより高いといわれています。人間の目の光に対する反応は対数的になっていますので、値の大きなところほど、人間の目に対する情報量が多くなります。一方では、あまり露出を大きく撮ると、白飛びを起こしてしまい、データそのものがなくなります。ですから、最適露出のRAWファイルとは、白飛びしない範囲で、露出が最大のファイルになります。この状態で、デジカメで写真を撮ると、撮ってだしのJpegはかなり暗く見えることが多いです。キャノンのカメラでは、露出設定に白飛びを抑えることを優先するモードがあるので、これを使うとRAWの露出の最適化ができます。ただし、これは、完全に白飛びを抑えるわけではなく、このモードでも白飛びが発生します。

もうひとつの方法は、露光ブランケットを使って複数の露出異なるショットをとっておき、これらを合成してHDRのRAWファイルを作る方法です。HDRを本格的に行うには、この方法を採用する必要があります。この方法では、1枚の画像に白飛びがあっても、合成時に他の画像のデータで埋めることができます。ただし、この方法では、三脚が必要になるので、手軽にとはいきません。いわゆる手振れ補正によるHDRに対応しているカメラであれば、手持ちで撮れる可能性はありますが、手持ちHDRで元のRAWファイルが残る機種は限られるでしょう。

ここでは、1ファイルで、ダイナミックレンジの広いRAW画像ファイルが準備できたとして話を進めます。

RAWのダイナミックレンジは、最新のカメラでは16から14EVあります。もちろん、これは、最大値で、シーンによってはこれより小さなダイナミックレンジになります。

JpegのダイナミックレンジはRGB各8EVですから、RAWが8EVより大きなダイナミックレンジを持っている場合にが、そのデータを変換して、8EV内に圧縮する必要があります。

HDRでダイナミックレンジの圧縮に利用できるモジュールは、フィルミックRGB,トーンマッピング、グローバル・トーンマッピングの3つだけです。このなかで、色と明暗が独立して扱えるのは、フィルミックRGBだけです。

ダイナミックレンジの圧縮は、RAWの最大値と最小値(RmaxとRmin)の間の値を、Jpegの最大値と最小値(JmaxとJmin)の間の値に変換する写像を作ることになります。

フィルミックRGBでは、RAWファイルのダイナミックレンジ毎に、7EV,9EV,11EV,13EV,15EV,17EVのプリセット関数が準備されているので今回は、これを用います。

 

まず、サンプル画像をtone equalizerで調べると、明るいとことで-8.3EV、暗いところで、-15.5EVあります。

-8.3EV -(-15.5EV)=7.2EVですから、7EVは超えていて、9EVであれば収まります。ここでは、9EVを選びました。

f:id:computer_philosopher:20191128154429p:plain

フィルミックRGBモジュールのプリセット

左が元の画像、右がフィルミックRGBをかけた画像です。フィルミックRGBは、ダイナムックレンジを、できるだけスムーズに(中間のグラデーションを保持して)Jpegに変えるだけで、明暗のコントラストの強い画像を作るわけではありません。

 

f:id:computer_philosopher:20191128154508p:plain

フィルミックRGBの処理結果

そこで、次に、シャドウとハイライトモジュールをつかって、明暗の対比を強調してみました。

左が、フィルックRGBで処理した画像、右は、それに、さらに、シャドウとハイライトで処理した画像です。こうすれは、HDR風の画像をつくることができます。

 

f:id:computer_philosopher:20191128154613p:plain

フィルミックRGBの処理結果 シャドウとハイライトの追加

次は、左が、最初のフィルミックRGBを処理する前の画像、左が、シャドウとハイライトまでかけた画像です。

最初の画像とは、かなり、印象が変わっています。

 

f:id:computer_philosopher:20191128154748p:plain

元の画像 vs フィルミックRGB+シャドウとハイライト

なお、ハイライトとシャドウでなく、トーンイコライザーが代わりに使えないか試してみましたが、ここまで、極端なコントラストにすることは出来ませんでした。画像の一部に青色が残っているので、カラーゾーンを使って、青色の除去を試みました。次が。カラーゾーンのパラメータです。

f:id:computer_philosopher:20191128154858p:plain

カラーゾーンモジュール

 

左が処理前、右がカラーゾーンの処理後です。砂浜の部分の青い色が薄くなっています。

f:id:computer_philosopher:20191128154949p:plain

カラーゾーンの処理結果

最終画像の全景です。まだ、完全とは言えませんが、元に比べれば、かなりHDR風になりました。

 

f:id:computer_philosopher:20191128155032p:plain

最終画像の全景

2012年の古い資料ですが、露光とグローバルトーンマップとローカルコントラストでHDRができるという記事があります。試してみました。試行錯誤した結果を示します。filmic RGBを使った方がよいと思います。特に、色が乗りにくく、この点は改善できませんでした。

http://www.darktable.org/2012/10/process-hdr-images-using-darktable/

 

f:id:computer_philosopher:20191128155116p:plain

HDR画像をつくる別の方法

 

ドイツ語のページにも、darktableを使ったHDRがのっています。

https://www.multimedia4linux.de/index.php/bildbearbeitung/darktable/darktable-workflow-hdr-foto-entwickeln

履歴で、ベースカーブの後で、使われるモジュールは以下です、

色収差

レンズ補正

グローバルトーンマッピング

シャドウとハイライト

カラー再構成

コントラスト、明るさ、彩度

ホワイトバランス

色のルックアップテーブル

ヘイズ除去

イコライザー

これを見ると、特にHDRには特化していないようです。ですから、ここでは、紹介のみにどどめ、サンプル処理は行なわないことにします。