省型旧形国電の残影を求めて

戦前型旧形国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

トーンカーブを使ってコントラストやトーンを調整する - ARTの基本編集操作

f:id:yasuo_ssi:20210904211415j:plain
 フリーソフトのRaw現像ソフトの中で世界的に最もユーザの多い darktable では、現在力を入れているシーン参照ワークフローにおいて、伝統的なトーンカーブの使用を推奨しなくなりました。トーンカーブで行っていたような調整はフィルミックRGBを使ったり、トーンイコライザーを使うように変更してきています。しかし、ARTでは伝統的なトーンカーブを使ったコントラストやトーン調整を現在でも中心的な調整ツールと位置付けられています。darktableにおけるフィルミックRGBの役割は、ARTの中では対数トーンマッピングトーンカーブ(もしくはトーンイコライザ)を組み合わせることで実現しています。

■硬調な写真と軟調な写真

 以下に、硬調(ハイコントラスト)な例と軟調(ローコントラスト)な例を掲げます。

f:id:yasuo_ssi:20220308132351j:plain

硬調(ハイコントラスト)の写真

f:id:yasuo_ssi:20220308132430j:plain

軟調(ローコントラスト)の写真

 このように写真のトーンを変えるツールがトーンカーブです。他に写真のトーンを調整するツールとしては、トーンイコライザーや対数トーンマッピングがありますが、ここでは触れません。

トーンカーブ調整の基本

 ARTでRawファイルを読み込むと以下のようになります。

f:id:yasuo_ssi:20220308221556p:plain

ARTで読み込んだデフォルト状態

 基本的にARTはRawファイルを最初に読み込んだ時にファイルのExif情報から、なるべくカメラ設定を再現しようとします。RawTherapeeに合わせてニュートラルで読み込みたいときは、プロファイルで(ニュートラル)を選択します。この場合はRawデータをデモザイクしただけの素の状態に近くなります。

f:id:yasuo_ssi:20220308221840p:plain

プロファイルで(ニュートラル)を選択した状態

 ニュートラルの場合は、トーンカーブは一切かかりません。ではデフォルトで読み込んだ時に自動でかかるトーンカーブは何なのかというと、Rawファイルに含まれるプレビュー用のJpeg画像データを基にトーンカーブを再現しています。つまりカメラ現像の結果をなるべくシミュレートするようになっています。

 いったんかかったトーンカーブを解除して直線に戻すには、トーンカーブ右横のリセットアイコンをクリックします。

f:id:yasuo_ssi:20220308223040p:plain

リセットアイコン

 この線上をクリックするとコントロールポイントが追加されます。このコントロールポイントを動かしてカーブの形を変えていきます。

f:id:yasuo_ssi:20220308223443p:plain

コントロールポイントを追加し調整しているところ

 

 一般にこのトーンカーブの傾斜を急にすると硬調に、緩くすると軟調になります。

f:id:yasuo_ssi:20220308223657j:plain

硬調に調整したトーンカーブ

f:id:yasuo_ssi:20220308223818j:plain

軟調に調整したトーンカーブ

f:id:yasuo_ssi:20220308223818j:plain

軟調に調整したトーンカーブ

 しかし上のケースのようにトーンカーブの線の両端を上下につけたり、あるいは、左右につけたりすると、ハイライトまたはシャドウクリップが起こりやすくなったり、あるいは、暗部が白浮きしがちです。そこで一般に写真のコントラストを上げるのに使われるのは、下図のようなシグモイド曲線状の緩やかなS字カーブです。カーブの両端は対角につけたままです。ただし意図的にクリッピングを起こしたい場合は、上図のような調整を行うことがあります。

f:id:yasuo_ssi:20220308224216p:plain

ゆるやかなS字曲線で調整したトーンカーブ

 逆S字カーブにすると反対に軟調になります。

f:id:yasuo_ssi:20220308224358p:plain

逆S字カーブをかけた事例

トーンカーブの種類

 なお、トーンカーブには曲がり方によって次の種類があります。

f:id:yasuo_ssi:20220314205530p:plain

トーンカーブの種類

 オフだと直線になり、それ以外を選択すると調整が可能になります。通常は3次元スプライン曲線を使ったスタンダード(カスタム)を選びます。フレキシブルだとスタンダード(カスタム)より柔軟に動かすことができますが、不自然な結果も招きやすいです。GIMPトーンカーブの使い勝手に近いです。なおdarktableにあるトーンカーブは、ここでのフレキシブル相当(あるいはGIMP)以上に柔軟に曲がりすぎてちょっと使いにくいです。パラメトリックは数値(パラメーター)を指定して調整する方法です。コントロールケージは下図を見ていただけばわかりますが、直接曲線をいじるのではなく、曲線から離れたコントロールポイントを操作して曲線を動かします。

※なお、トーンカーブの種類の内Standardについては、既に RawTherapee の時代にもともと Custom という名称だったものが Standard に変わっていました。しかしRawTherapeeの日本語訳はカスタムのままだったので、ARTの拙訳でもそのまま受け継いでしまっていました。最近これに気づき、日本語翻訳ファイルを修正し以下のページからダウンロードできるようにしておきました。

yasuo-ssi.hatenablog.com

f:id:yasuo_ssi:20220309134420p:plain

コントロールケージ

トーンカーブ、DCPトーンカーブ、トーン再現カーブ(TRC)の関係

 ところで、写真編集についてちょっと調べてみると、トーンカーブに似たような概念がいろいろ出てきてよく分からなくなります。ARTでは混乱を避けるために省略されていますが、本家RawTHerapeeでは、作業プロファイルでトーン再現カーブをいじることもできて、見出しに挙げたこの3つのカーブの関係は何なんだと訳が分からなくなります。

 まず、トーン再現カーブ(Tone Reproduction Curve: TRC) は、簡単に言うとコンピュータのモニタの特性はリニアではなく、本来の画像データをそのままモニタを通して見せると、中間トーンが薄暗くなってしまうという特性があります。従って、画像データの本来の数値そのままでは正しくモニタに写らないので、ガンマ補正を掛けて、画像データの中間トーンを持ち上げて、モニタに正しく映るよう補正するカーブがトーン再現カーブです。詳しくは以下の拙稿をご覧ください。

yasuo-ssi.hatenablog.com このカーブは単純にモニタに正しく写すという目的だけでなく、人間の視覚が敏感な部分の諧調を多めに取るという目的でも使われています。世間に流通している画像ファイルの大半は知覚的トーン再現カーブが掛かった画像です。

 なお、正しくカラーマネジメントされている画像表示&処理ソフトウェアなら、トーン再現カーブが掛かっているファイルであろうが、かかっていないリニアな画像ファイルであろうが、同じようにモニタに表示できます。しかしカラーマネジメントに対応できないソフトで読み込むとリニアな画像は薄暗く表示されてしまいます。Windowsではカラーマネジメントに対応していない画像ソフトが結構ありますので(Windows10標準のフォトがそうです)、要注意です。

 なお、ARTやRawTherapeeおよびdarktableでは、編集作業過程の大半でTRCのかかっていない、リニアな色空間(通常はリニアProPhoto)で処理され、出力前の最終調整に当たるちょっと前でTRCが掛かった色空間で処理されたのち、通常はTRCが掛かった画像ファイルとして出力されます。但し、RawTherapeeでは、ユーザの指定で作業中の色空間にもTRCを掛けることができます(実験的用途以外にメリットがあるとは思えませんが)。また、最終出力に関してはリニアな出力プロファイルを選べばリニアな画像を出力することもできます。

 一方トーンカーブはこのTRCとは別に、画像の見え方(画像の明暗のトーン、画像のコントラスト)を制御する補正カーブです。厳密に言えばTRCが掛かっている画像ではデータ的にはTRC x トーンカーブが掛かることになり、リニアな画像では、ただトーンカーブが掛かることになります。先ほど述べたようにシグモイド曲線状の補正カーブを使っていることが多いですが、実際にどのような補正カーブが掛かっているかはファイルによって、編集によって異なります。とりあえずTRCとは別の次元の話とご理解ください。TRCは画像が持つカラープロファイルによってどのような曲線を使うか一律に決まっていますが、トーンカーブは画像ごとの編集や調整によって変わります。

 ではDCPトーンカーブとは何でしょうか。これはdarktableでベースカーブと呼ばれているものと同じだと思いますが、要は各カメラごとにそのカメラの持ち味を表現するためにオリジナルデータを補正するカーブです。いわばカメラ固有のトーンカーブだと考えてよいと思います。またカメラが複数の撮影プロファイルを持っているなら撮影プロファイルごとに別々にカーブが存在します。

 このカーブデータ自体はカメラに内蔵されているか、あるいはカメラメーカー純正の現像ソフトに内蔵されており、通常は直接カメラメーカーと契約をしない限り、その情報を直接入手することはできないと思います*1。カメラは内蔵されているこのカーブを使ってカメラ内現像したJpegファイルを出力するか、カメラから出力されたRawファイルをメーカー純正Raw現像ソフトを使って現像し、カメラ内現像と同様な結果を得ます。この補正カーブがベースカーブです。

 ARTやRawTherapeeの場合、Rawファイルに含まれるJpegプレビューイメージを基にカメラ内現像と同様な結果をエミュレートしています。トーンカーブの自動調整とはまさにそのエミュレート機能のことです。

 ただ、Adobe社はカメラの撮影結果からカメラ内でどのような補正が行われているかエミュレートして、自社ソフトあるいは他社ソフトで利用できるようなデータ形式を定めました。それがDCPプロファイルです。ARTやRawTherapeeは、このDCPプロファイルが利用できます。このDCPプロファイルに含まれている、各カメラ固有の補正トーンカーブがDCPトーンカーブであり、darktableのベースカーブもDCPトーンカーブからデータを得ていると思います。このDCPプロファイルは一般ユーザもいくつかのツールを入手さえすれば、自分で作成することができます。

 DCPプロファイルはあくまでもカメラの撮影結果からのエミュレートなので、カメラ内現像の結果と100%一致するわけではありませんが、Adobe社の用意したDCPプロファイルはかなり近いところまでエミュレートできます。

 ARTやRawTherapeeの場合、カメラによってDCPプロファイルがあらかじめ用意されているものと、されてないものがあります。あらかじめ用意されているDCPプロファイルはボランティアベースで作成されたDCPプロファイルです。これらは、ARTのインストールディレクトリの下のdcpprofilesというディレクトリの下に存在します。ここにDCPプロファイルがある場合は、該当するカメラのRawファイルが読み込まれると、自動的に、「カラー・マネジメント」の下の「カメラの固有プロファイル」がオンになります。DCPプロファイルが存在しないカメラのRawファイルの場合は、「カメラの標準的プロファイル」が適用されます。この場合はDCPトーンカーブの適用はできません。

 なお、DCPプロファイルがあらかじめ用意されていないカメラで、DCPプロファイルを使いたい場合は、Adobeが無償で配布しているDNGコンバータをインストールすると、Adobeが用意したDCPプロファイルもインストールされます。そこにあるカメラDCPプロファイルをARTのdcpprofilesディレクトリにコピーし、カメラモデル名.dcp と名前を変えると、「カメラの固有プロファイル」がオンになり、DCPトーンカーブも適用可能になります。あるいは「カラー・マネジメント」の下の「カスタム」で、DCPプロファイルがインストールされているディレクトリを直接指定し、そこから適用したいDCPプロファイルを直接入力してもかまいません。

 因みにDCPトーンカーブが補正する部分と、トーンカーブが補正する部分は被ってきます。従ってARTでデフォルトで読み込むと、トーンカーブが以下のように自動でかかりますが、

f:id:yasuo_ssi:20220308221556p:plain

ARTで読み込んだデフォルト状態

f:id:yasuo_ssi:20220309172441p:plain

NikonD3200ファイルをデフォルトで読み込んだ状態

 DCPトーンカーブの使用をオフからオンにすると(デフォルトではオフ)...

f:id:yasuo_ssi:20220309172608p:plain

DCPトーンカーブ使用にチェック

 先ほどの自動調整のトーンカーブからDCPトーンカーブで調整した分が引かれてカーブがリニアに近くなります。

f:id:yasuo_ssi:20220309172743p:plain

DCPトーンカーブ使用をオンにした後の自動調整トーンカーブ

 ところでdarktableの開発チームの主要なメンバーである Aurélien Pierre氏は ベースカーブは良くないと指摘していましたが、その理由は現像処理パイプラインの早い段階、つまり入力プロファイル適用前段階で掛けられてたからでした*2。従ってTRCが掛かった色空間で現像処理を行うのと同様な問題を発生させていたわけです。しかし、ARTでのDCPプロファイルの適用は、トーンカーブ調整と同時で、遅い段階(リニアRGB処理のほぼ最後)で掛けられています。その意味では比較的問題が少ないのではないかと思います。なお、どうやらRawTherapeeとARTではDCPプロファイルをかける位置が異なるようで、DCPプロファイルの解釈結果が異なります。RawTherapeeでは、darktableでのベースカーブの適用と同様、比較的早い段階でDCPプロファイルが適用されているものと推定されます。

■モードの違い

 

f:id:yasuo_ssi:20220310150404p:plain

各モードの選択

 基本的な各モードの説明は以下のRawPediaの説明をご覧ください。

 RawPedia露光補正 - カーブのモード 

 RawPediaの説明を見ると、選択肢の上から下に掛けてトーンカーブを使って調整したときに色ずれや彩度の変化が少なくなるように意図されているようですが、実際には必ずしもそうとは言えないようです。また一見パッとない画像の場合、意図的にトーンカーブの調整による彩度の上昇や色ずれを狙う場合もあります。

 なお、トーンカーブを単純に引き上げると、例えば、RGBそれぞれに同じ値(例えば30)引き上げたとしても、元のRGBの値に応じて、引き上げる前と引き上げた後で、RGBの値の比が変わってしまいます。もちろん無彩色であればRGBは同一の値ですのでトーンカーブを変化させたとしても比は変わりませんが、そうでない場合はすべて比が変わります。これはすなわちトーンカーブを変化させることによって色相や彩度も変わる=色ずれを起こすことになります。これをどう調整するか(あるいはしないか)によって、モードが異なります。なお作業色空間が非リニア(知覚的TRCが掛かっている場合)だとより色ずれが激しくなります。

 以下実例を示します。いずれもオリジナルに対し、弱いS字カーブを適用していますが、モードを違えて比較します。

f:id:yasuo_ssi:20220313210350j:plain

オリジナル

 上は何もトーンカーブをいじっていない状態です。以下同一のS字カーブを掛け、モードを変化させます。

f:id:yasuo_ssi:20220313210410j:plain

標準

 これは一切色ずれを調整せず単純にカーブに従って値を引き上げているモードです。彩度が上昇しているのはもちろん、青い部分がやや緑がかる方向に色ずれを起こしているようです。

f:id:yasuo_ssi:20220313210435j:plain

加重平均

 こちらは主にRの値を調整し、G, Bの変化量を抑えるモードです。上に比べてかなり色ずれが抑えられているようです。彩度はやや上がっているようです。

f:id:yasuo_ssi:20220313210457j:plain

フィルム調

 これはRawPediaの説明だとAdobe Camera RawやLightroomと同じ方式だそうですが、標準同様結構色ずれを起こしています。RawPediaの説明だと、標準より抑えられているはずだということですが、あまり変わらないようです。

f:id:yasuo_ssi:20220313210523j:plain

彩度と明度のブレンド

 こちらは彩度はあまり上がりません。色相はやや地味な方向にややずれているようですが誇張感がありません。

f:id:yasuo_ssi:20220313210545j:plain

輝度

 このモードも彩度や色相のずれが抑えられいます。上の結果に似ています。

f:id:yasuo_ssi:20220313213001j:plain

知覚的

 これも彩度や色相のずれは抑えられているようですが、輝度よりもわずかに彩度が上がっているように感じますが、目の錯覚かもしれません。

f:id:yasuo_ssi:20220313213402j:plain

ニュートラ

 ARTで新たに設けられたモードですが、フィルム調よりさらに彩度がやや上がった感じです。

f:id:yasuo_ssi:20220313213030j:plain

L*a*b*調整 L*

 これだけはカラータブのL*a*b*調整における L* のトーンカーブ調整です。かなり色相のずれや彩度上昇が抑えられている印象です。なお露出タブのトーンカーブ調整とL*a*b*調整では、現像処理パイプライン上で処理される位置が異なっています。通常のトーンカーブ調整はリニアRGB色空間での処理の一番最後の近くで、L*a*b*調整のL*トーンカーブ調整は、その後のLAB色空間で処理されますので、効果のかかり方も異なってくるはずです。

 はっきり断言はできませんが、色ずれや彩度上昇をなるべく避けたい場合はL*a*b*調整もしくは輝度が最も効果的なように思われます。逆に敢えて色ずれや彩度上昇を狙うならフィルム調や標準が良いのではないでしょうか。

 不均等黄変補正を行うと、出来た画像が結構彩度が落ちた地味な絵になりがちなので(GとBの値を接近させるので当然と言えば当然です)、そういう場合はトーンカーブを調整して彩度上昇や色相のずれをあえて狙うことが多々あります。

--------------------------

 なお、トーンカーブを使う代わりにパラメータを指定して同様なことが可能な、トーンイコライザを使って調整する方法については、以下をご参照ください。

yasuo-ssi.hatenablog.com こちらで調整すると、色ずれ等が起こりにくく、また不自然な補正になりにくいという特徴があります。一方トーンカーブによる補正に慣れた方には、補正量が少なく物足りないと感じられることもあるかと思います。

*1:一部純正現像ソフトの作成をOEMに任せているメーカーでは、このデータをOEMメーカーに渡していないため、純正現像ソフトとカメラ内現像の結果が異なる場合があります。

*2:以下のディスカッションを参照。

discuss.pixls.us

なお、Aurelien Pierre氏は、ベースカーブを早い段階で掛けているのはdarktableやRawTherapeeの原形となったRaw現像ソフト、DCRawの仕様を引き継いだためと言っています。また darktable 3.0以降、シーン参照ワークフローでは、ベースカーブ(のデータ)をフィルミックRGBという別のインターフェースで掛けているのだと述べています。