補足(1)ワークフローの違い
darktableを使う上で、恐らく、一番分かりにくい点がワークフローの問題と思われますので、この点を最初に補足します。
darktableには、次の2種類のワークフローがあります。
-
シーン参照ワークフロー(RGBワークフロー)
理論上可能なダイナミックレンジの上限:センサーの上限(14EV)
色空間:RGB色空間
使用モジュール:フィルミックRGB,露光、トーンイコライザー
禁止モジュール:バースカーブ、トーンカーブ、シャドウとハイライトなどLab色空間のモジュール
使用例:デジカメでは使用例はない。RAW現像ソフトではdarktableのみ。画像処理ソフトではBlender.
-
表示参照ワークフロー(ベースカーブワークフロー)
理論上可能なダイナミックレンジの上限:7EV
色空間:Lab色空間
使用モジュール:ベースカーブ、露光、トーカーブ、シャドウとハイライト
禁止モジュール:フィルミックRGBなど、RGB色空間のモジュール
使用例:全てのデジカメ、RAW現像ソフト
以上です。
2010年頃まで、デジカメのセンサーの性能は7から8EVでした。その場合には、表示参照ワークフローで問題はありませんでした。デジカメのRAW現像システムは、この前に基本形の表示参照ワークフローが完成します。カメラメーカーは、表示参照ワークフローのレガシーを現在でもつかっています。しかし、現在の最もダイナミックレンジの広いセンサーは14EVあるので、表示参照ワークフローでは、広いダイナミックレンジを生かしきれません。また、ダイナミックレンジの狭いセンサーでもHDR合成画像をつくった場合には、同じ問題が発生します。
次に、実際の現像例を使って説明します。
表示参照ワークフロー(ベースカーブワークフロー)
RAW現像は、RGBのセンサーのRAWの信号の値を、JpegのRGBに変換する作業です。3D-LUTを使わない限りは、変換はRGBで独立して行われます。例えば、赤(R)であれば、次の関数を定める作業が現像になります。
R(RAW)->R(Jpeg)
写真1がベースカーブの例です。ここでは、RAW(横軸)の値を、Jpeg(縦軸)に変換します。カーブはこの変換を表しています。カーブが直線から大きくずれているのは、人間の目は光の明るさに対して、対数的に反応することがわかっているからです。
写真2は画面全体を対象に、自動露光を設定した場合です。カメラの自動露出も基本はこれと同じで、フレーム全体を評価します。この時に、目が光の明るいところに反応するので、明るいところを中心に絵作りをします。この場合には、暗いところは黒くつぶれてよくわかりません。
写真3は、暗いところに合わせて露出を設定した場合です。露出評価をした四角いエリアは適正な明るさになりましたが、周辺が白飛びしています。人間の目の働きは、基本的には、写真3と同じです。みたいところ(写真3では、露光のサンプルエリアの四角)に注意を集中させると、その部分が良く見えるように調整します。写真3では、サンプルエリアの外は白飛びしているのですが、写真3のサンプルエリアの外に、新たに見たい部分(新しい露光のサンプルエリア)を設定すると今度はその部分の露出が適正になります。目はこうした作業を繰り返して、モザイク状の絵を一度つくってから、全体をつなぎ合わせて1枚のシーンを作ります。こうした目の操作はフュージョン(融合)と呼ばれます。1つのサンプルエリアについては、目の光に対する反応は、ベースカーブを描くのですが、フュージョンがおこると、全体としては、ベースカーブにはなりません。ですから、ベースカーブを使うことには問題があります。
とはいえ、ダイナミックレンジが狭くて、露光のサンプルエリアをどこにとっても、同じ露光の値が適正露光になる場合には、露光のサンプルエリアごとにできたベースカーブを重ね合わせてもずれがないので、目のフュージョン考える必要はありません。ダイナミックレンジの狭い場合にはベースカーブを使っても問題はありません。
表示参照ワークフローでは、ベースカーブのあとで、RAWからJpeg変換の微調整を、トーンカーブで行います。トーンカーブを直接修正するのは難しいのでトーンカーブを微調整する代替機能をもったモジュールが多くあります。カメラ内現像でトーンカーブを設定できるカメラを出しているメーカーもあります。
写真4では、トーンカーブを使って、暗いところを持ちあげています。一見すると、トーンカーブで、自由自在に現像できるようにも思われますが、変換の大筋はベースカーブで決まっています。
写真5はトーンカーブの代替モジュールのひとつの「シャドウとハイライト」モジュールを使っています。こうしたモジュールを使うと、トーンカーブを直接変更するよりも操作がしやすい長所があります。ただし、トーンカーブとトーンカーブの代替モジュールを使うと、編集効果は合成効果になります。また、複数の代替モジュールを使うとモジュール間の独立性の問題が生じます。たとえば、Aジュールで調整したあと、Bモジュールを使うと、Aモジュールの編集結果が変化してしまう問題です。Lab色空間をつかうと7EVまでは、Labを独立して処理できますが、これを超えるとLabは独立でなくなります。すなわち、明暗を変更すると連動して色が変わってしまいます。
シーン参照ワークフロー(フィルミックRGB)
次のシーン参照ワークフローを説明します。
写真6では読み込んだ画像の露光を調整しています。
写真7では、フィルミックRGBモジュールを適用しています。フィルミックRGBモジュールは、「ベースカーブ+トーンカーブ」の機能に対応します。カーブは次の特徴を持っています。
-
広いダイナミックレンジのデータを掬い上げて、目のフュージョン機能に対応するように、変換曲線はS字型(写真7参照)を使います。
-
変換カーブでできることは全て、フィルミックRGBモジュールに集中して複数のモジュールを行き来することがないようにする。
アンセル・アダムスのゾーンシステムの考え方にしたがって、ゾーン毎に露光を調整できる写真8のトーンイコライザ・モジュールを準備しています。
表示参照ワークフローでは、暗いところを持ちあげて、明るいところを抑える操作は、トーンカーブの修正(写真4)か、シャドウとハイライト・モジュール(写真5)で行いましたが、シーン参照ワークフローでは、トーンイコライザ・モジュール(写真8)で行います。
トーンイコライザ・モジュールはゾーンごと露光変換なので、画像劣化は最小です。しかし、トーンカーブと同じような機能が実現できますから、非常に強力なツールです。
付録:ハイライト復元の謎
Guillaume Martyさんの解説では、RAW画像を読み込んだときの、自動実行モジュールのサンプルに、「ハイライト復元」は入っておらず、筆者のサンプルには「ハイライト復元」が入っていました。これは、RAWで飛んでいるピクセルがあるためかと思いチェックしてみましたは、やはりありませんでした。画像の周辺にゴミのように飛んでいるピクセルがついているくらいしか、他には原因が思い当たりません。