トーンカーブの歴史
トーンカーブについては、以前にマニュアルに準拠して簡単に触れています。
簡単にふれていますというのは、トーンカーブは、深入りすると底なし沼になるのではないかという危惧があるためです。
darktabel3.0から利用可能になって3D LUT以外のモジュールは画像データを3枚の2次元表示し、おのおのの2次元の中で変換を行います。RGB空間であれば、トーンカーブは、RGBのうちの1枚のデータの中の値を変化させます。(10,10)ピクセルにあるRの値を10%減らしたので、代わりに(20,20)ピクセルにあるGの値を10%増加させるような、2次元データ間のクロスの操作はしません。RGBは合わせて3枚ありますが、各々の2次元の空間で、操作は完結しています。トーンカーブ以外のモジュールも、RGBまたはLab空間の3枚の2次元のデータの中で、完結しています。したがって、3D LUT以外どのモノジュールの操作も、トーンカーブで等価な操作が可能になります。
一方、トーンカーブをどのように変更したら、どのような変化が画像に出るかは、基本的に、やってみないとわかりません。これでは、不便極まりないというので、トーンカーブを用いるより、画像に対して、何がしたいのかを切り口にしたモジュールの方が、使いやすいということで、色々なモジュールが作られてきました。
ですから、トーンカーブは、古典的なツールとマニュアルには記載されています。また、使わないで済むのであれば、使う必要はないツールを思われます。
最も古典的な、トーンカーブは、RGB空間で、RGB毎に、トーンカーブを指定する方法です。
この方法の問題点は、自由度が高すぎて、最適と思われる組み合わせを探索することが困難な点にあります。
この辺の事情も勘案したのではないかと思いますが、darktable3.0からは、RGBカーブモジュールが追加され、RGBを個別に、トーンカーブを指定する方法が分離されました。一方、RGB連結チャンネルについてトーンカーブを指定することは、トーンカーブモジュールとRGBカーブモジュールのどちらでもできるように重複しています。
トーンカーブの指定例
トーンカーブを指定する方法には次の3つが考えられます。
-
ガンマ値のようにトーンカーブを単純な関数に置き換えて、パラメータで関数を表現する。これは、コントラスト、明るさ、彩度モジュールの明るさと対応があると思われます。
-
大まかな形(上に凸、下に凸、S字、逆S字)などの形と画像の変化を理解する。
-
トーンを左から、一番暗いところ、暗いところ、平均、明るいとこと、極端に明るいところと横軸のゾーンに分けて理解し、どのゾーンをあげるか、下げるかでカーブの形を決める。
3番目は理屈の上ではもっともらしいのですが、カーブが、急に変化すると、不自然な色があらわれるので、カーブは少しずつ、変化させる必要があるのです。
なお、カーブの変曲点は,カーブのパネルの上でCNTL+クリックすれば、追加できます。
サンプル1は、プリセットのgamma2.0を選択した場合です。1番目の方法になります。
サンプル1の結果です。左が元の画像、右が、トーンカーブをかけた画像です。もとの画像が、コントラストが弱い画像でしたので、gammaを強めにかけると、インパクトのある画像ができます。
サンプル2では、2番目の方法を使いました。ここでは、トーンカーブを逆S字に設定しました。ここでは、Lab空間の連結チャンネルを使っています。暗い部分を持ち上げ、明るい部分を下げていますので、シャドウとハイライトと同じような働きをしていると思われます。ただし、明暗だけを調整するのであれば、Lチャンネルのみを補正すべきです。そこで、これは、次のサンプル3で試してみます。
サンプル2の処理結果です。左が元の画像、右が、トーンカーブをかけた画像です。シャドウとハイライトと同じように、暗部が明るくなり、明部の明るさが抑えられた結果になっています。
サンプル3では、逆S字カーブをLチャンネルにのみ適用しています。
サンプル3の処理結果です。左が元の画像、右が、トーンカーブをかけた画像です。
サンプル2に比べて、建物のオレンジ色の部分や植物の緑色の彩度が高いように思われます。
サンプル4では、Lチャンネルのトーンカーブとシャドウとハイライトを比較してみました。
サンプル4の処理結果です。左がシャドウとハイライト処理の画像、右が、Lチャンネルにトーンカーブをかけた画像です。シャドウとハイライトのほうがコントラストが高く思われます。
逆にいえば、シャドウとハイライトではコントラストが強くなりすぎる場合には、Lチャンネルのトーンカーブを使う方法もあると思われます。
サンプル5では、3番目の方法を試みました。水面の上にある樹木がターゲットで、ここを明るくするように、トーンカーブを設定しました。
サンプル5の結果です。左が元の画像、右が、トーンカーブをかけた画像です。ターゲットのエリアは画像を見ながら試行錯誤できめました。
岸の樹木がよく見えるようになりました。
なお、WEBでトーンカーブの暗い部分をあげると、イルミネーションがきれいになるという、あやまった記載をみかけたので、サンプル6で確認しました。
サンプル6の結果です。左が元の画像、右が、トーンカーブをかけた画像です。
トーンカーブはピクセル単位のRGBまたはLabの値に対して処理がなされます。しがって、暗い部分をトーンカーブであげても、暗い部分のピクセルが明るくなるだけで、イルミネーションには変化はないのです。
イルミネーションのRGBの値は255に近いので、より明るくすることは容易ではないのです。
トーンカーブのパネルのヒストグラムのレンジが狭い場合があります。
サンプル7はそのような場合です。この場合には、トンカーブの端点の位置をヒストグラムの範囲まで狭くすることで、トーンカーブを補正することもできます。次が、サンプル7のパラメータです。
サンプル7の結果です。左が元の画像、右が、トーンカーブをかけた画像です。
たしかに、画像は明るくねり、適切に処理されたといえます。
しかしながら、ヒストグラムのレンジが狭いのであれば、その補正は、レベルモジュールを使うべきです。
サンプル8はレベルモジュールで画像を補正した場合です。次図はサンプル8ののパラメータです。ここでは、自動調整をつかっています。
サンプル8の結果です。左が元の画像、右が、レベルモジュールをかけた画像です。サンプル7のトーンカーブとほぼ同じ効果がえられています。
RGBカーブの指定例
darktable3.0ではRGBカーブモジュールで、RGB別々にトーンカーブが設定できます。
RGB別々に指定できるということは、モジュールのパネル上のRGBのヒストグラムが大きく異なっている場合には、このモジュールを使う効果が高いことになります。逆に、RGBのヒストグラムが似かよっている場合には、トーンカーブモジュールで十分であって、あえて、RGBカーブを使うメリットはありません。
こう説明するのは簡単なのですが、実際に、RGBのヒストグラムが大きく異なっている条件にあった画像を探すことは容易ではありません。これが、今回のRGBカーブの事例が少ない理由です。
RGBが異なるということは、RGBの各色が際立つ画像であることになります。この条件で調べた結果、花の画像が、この条件に当てはまることが多いことがわかりました。
サンプル9はサンプル8と同じ、花の画像を対象にしました。ここでは、トーンカーブではなく、RGBカーブを使いました。サンプル9のパラメータの例をしめします。カーブは少し上に凸になっているので、強弱が平滑化された画像になります。
サンプル9の結果です。左が元の画像、右が、RGBカーブモジュールをかけた画像です。
サンプル8の右側と比べると、緑色が明るくなっています。この画像では、RGBカーブモジュールがトーンカーブモジュールより有効と思われます。