CIECAM02/jp

From RawPedia
Jump to navigation Jump to search
色の見えモデル02/16&Jzazbz

色の見え&明るさ(CIECAM02/16)と色の見え(CAM16&JzCzHz) - チュートリアル

イントロダクション

 下記の説明は次の2つの機能モジュールに共通したものです:

  •  "高度な機能"のタブに入っている⟨色の見え&明るさ(CIECAM02/16)⟩
  •  "ローカル編集"のタブに入っている⟨色の見え(CAM16&JzCzHz)⟩

   どちらのモジュールもCAM(色の見えモデル)の全て、或いは一部を使っています。解説がどちらのモジュールに関係しているかはその都度明確にしてあります。CIECAM02は多くの長所を持つ色モデルですが、HDR(ハイダイナミックレンジ)画像の処理には弱点があります。色域が狭いためハイライト部分の処理が良くありません。但し、この弱点はCIECAM16でかなり改善されています。

 2つ目のモジュールは正式な色の見えモデル(CAM16)と、正確には色の見えモデルとは呼べないJzCzHz(色の見えモデルと呼べる特性をある程度有していますが)を組み合わせたものです。

 ローカル編集の"HDRからSDRへの処理:初めてのアプローチ(対数符号化‐CAM16‐JzCzHz‐シグモイド)"の解説も参考にして下さい。

色の見えモデル(CAM)の定義

 色の見えモデルは、人間の目の色に対する知覚特性を数学的に表現しようとするモデルです。例えば、色の見え方が、その物体色の物理的な計測値と一致しないような観視環境を考慮しています(色の見えモデルの色空間は、RGBやXYZとは異なります、Labは似ている部分がありますが、やはり同じではありません)。

CIECAM02/16

 この機能モジュールは、異なる光源(例えば、背景の明るさや色)の下でも物体の色を正しく知覚できる人間の視覚システムを真似た色モデル、CIECAM02とCIECAM16、をベースにしています。各色の置かれた環境を考慮し、その見え方を人間の目が知覚するように補正します。また、意図した観視条件(モニター、TV、プロジェクター、プリンター)に合わせて出力を補正することが出来ます。従って、場面や表示環境に応じて色の見え方やコントラストを維持することが出来ます。

色の見えモデルが使う変数、データ及び語彙

データ

定義

3つの処理からなるCIECAM02/16

  1.  ソース、或いは場面条件:CIECAMによる補正の前に、撮影条件と対応するデータを平均的或いは“標準的”な条件にします(例えば、D50のホワイトバランス)。
  2.  ソースデータに対する調整を行う処理
  3.  観視条件の処理:最終画像を見る環境(モニター、TV、プロジェクター、印刷用紙など)とその周囲環境に関する調整をします。上記の処理2からのデータを使い、観視条件と周囲環境を考慮しながら、出力媒体に適用します。

高度な機能タブのCIECAMと、ローカル編集タブのCIECAMの違い

 2つのタブに備わっているCIECAMは仕様が少し違います。

  •  高度な機能タブの⟨色の見え&明るさ(CIECAM02/16)⟩は2012年にRawTherapee特有の機能として開発されたもので、色の見えモデル02/16の概念全てが使われています。機能水準は2つの中から選びます:
    •  標準:基本的な処理に必要な機能とパラメータが備わった水準です。
    •  高度:高度な処理を含む全ての機能が含まれた水準です。
  •  ローカル編集タブの⟨色の見え(CAM16&JzCzHz)⟩では単純化したCAM16と試験的に導入したJzCzHzが使われます。機能水準は3つの中から選びます:
    •  基本:CAM16で使われる基本的な機能とパラメータが使える水準です。
    •  標準:上記の基本機能に、人間の目の色に対する知覚特性を考慮する機能が加わった水準です。マスク機能も使えます。
    •  高度:その他のCAM16機能とパラメータ、及びJzCzHzが使える水準です。

"HDRからSDRへの処理:初めてのアプローチ(対数符号化‐CAM16‐JzCzHz‐シグモイド)"の項も参照して下さい。

色の見えモデル02/16の使用例

 機能の効果と限界を知るために3つの例を用意しました。

例1 場面条件 (使用する機能:高度な機能タブの中の色の見えモデル02/16)

 著しい露出不足の部分があるハイダイナミックレンジの画像を、色の見えモデルを使って補正します。下で解説している“3つのプロセス”のプロセス1にあたる場面条件を使い、画像の光の環境を変えます。

準備

 濃い影と強い逆光、両方が入っている処理の難しい画像です。補正を行う前にRawTherapeeのデフォルト設定を使って開いた画像に⟨ロック式カラーピッカー⟩をスクリーンショットのように配置します。補正後の変化を確認するためです。

Rawファイルへのリンク(Pixls.us - Creative Common Attribution-share Alike 4.0): [1]

色の見えモデルの下準備
画像を明るくする

 高度な機能の中の⟨色の見えモデル02/16(CIECAM02/16)⟩を有効にします。⟨場面条件⟩の中の⟨撮影時の周囲環境⟩のドロップダウンリストから“暗い”を選択します。たったこれだけです!

周囲が暗い画像を明るくする

 その後⟨画像の調整⟩を使って更に調整を加えます。

  •  明るさ(J)やコントラスト(J)を変える。
  •  色度(C)を変える。

 更に、機能水準を高度に変えて試してみます。

  •  コンボボックスで画像の調整のアルゴリズムを“明度 + 彩度(JS)に”変える。
  •  彩度(S)を調節し、先に色度(C)を調節した時との違いを比べる。それぞれ、シャドウ部分、中間トーン部分、ハイライト部分での違いを見る。

例2 (使用する機能:高度な機能タブの中の色の見えモデル02/16)

 はじめにホワイトバランスを⟨方式⟩→⟨自動⟩→⟨色温度の相関関係⟩を使って調整してから、⟨色の見えモデル⟩の⟨設定‐プリセット⟩で、モード Cat02 /16の中の⟨自動シンメトリック⟩を選択して色順応を実行します。

準備

Rawファイルへのリンク(Rawtherapee - Creative Common Attribution-share Alike 4.0): [2]

 まず、数学的にほぼ完璧なホワイトバランスが得られる、⟨自動⟩の中の⟨色温度の相関関係⟩を使ってホワイトバランスを調整します。

ホワイトバランス-色温度の補正

結果は以下の様になります:

  •  色温度 : 7450K
  •  色偏差 : 1.050

 デフォルトの“カメラ”のホワイトバランスでは、色度が7862K、色偏差が1.134でした。

 どちらの場合も、画像が黄色味を帯びています。調整されたホワイトバランスは数学的には正確ですが、その計算に使われた画像データは、9月朝8時のロンドンの光の下で撮影されたものなので、D50とは異なります。そのため、黄色味を帯びてしまうのです。もし、私たちがこの風景を目で見ていれば、視覚と脳で色順応が働き色は正しく見えていたはずです。

 この補正を行うためにCIECAM02/16を使います。

色順応を自動でセットする
  •  高度な機能のタブにある⟨色の見えモデル02/16(CIECAM02/16)⟩を有効にします。
  •  ⟨Cat02/16の自動プリセット シンメトリックモード⟩のオプションを有効にします。それだけです。
ホワイトバランス-色温度の補正

 画像を観察すると、空は青く、行き交う人の肌色が自然に見えます。

  •  効果を調整する場合は、⟨観視条件⟩の中のCAT02/16(色順応変換02/16)スライダーを使います。例えば、60に変えてみます。
  •  色温度に注目して下さい – ホワイトバランスの色温度は変わっていません。

例3 観視条件(使用する機能:高度な機能タブの中の色の見えモデル02/16)

 この例では、主にプロセス3の機能(及びプロセス2の多少の調整)を使い、出力デバイスと画像を見る環境(例えば、家族で休日に撮った画像をTVで見る)の影響を示します。

Rawファイルへのリンク(Creative Common Attribution-share Alike 4.0): [3]

 通常のTV設定を使います(有機ELテレビの取扱い説明書を参考にしました)

  •  光源 = D65
  •  平均輝度 (Yb%) = 18 (テレビ画面の平均輝度が正しく調整されていると仮定して)

 観視環境:

  •  絶対輝度:夕方であれば絶対輝度は10カンデラ/平方メートルと推定します(理想を言うなら、計測するべきですが)
  •  周囲 = 薄暗い:テレビは暗い壁を背にして設置されています。
尖塔の風景‐観視環境の調整

 重要な注意点:この画像を貴方のPCで見た場合は映りが悪いかもしれません。何故なら、観視条件(光源、周囲環境、絶対輝度)が異なるからです。

友達に見せる:天気がすごくよかったから、色が鮮やかだったから。。。

 是非、友達に自分の写真を自慢したいと思うことはあるでしょう。その場合は、コントラストや色度を増やすなど、画像を少し調整して鮮やかに、爽やかに見せることも出来ます。

観視環境‐少し明るくする

ローカル編集に組み入れた色の見え (CIECAM16&試行的JzCzHz)

色の見え - CIECAM16

 2021年11月より、開発バージョンの⟨ローカル編集⟩に新しい機能、"JzCzHz"を追加しました。このモジュールには次のものが含まれています:

  •  メインの⟨色の見えモデル⟩のモジュールで使われている主だったアルゴリズム。但し、色順応機能(CAT16)は単純化し、自動シンメトリックモードは外しました。
  •  "JとQ"の関数(シグモイド):輝度(明度と明るさ)を調整します。コントラスト調整には単一のアルゴリズムを使います。
  •  "試行的な"HDRのPQ関数:XYZ⇔CAM16の変換マトリクスに、"ガンマHDR"関数(PQと逆PQ)を適用する試行的な関数。PQはPereptual Quantizerの略で知覚量子化器と呼ばれる関数のこと。
  •  ⟨色の見えモデル⟩のコンボボックスで、CAM16、JzCzHzの何れかのアルゴリズムを選択できます。
  •  "機能の使い方"のコンボボックスで使い方を変えられます。
    •  モジュールを独立して使用する(デフォルト)
    •  モジュールのアルゴリズムを次の機能と関連付けて使う:トーンマッピング、ウェーブレット、ダイナミックレンジと対数符号化

Jzazbzは新しい試験的な色の見えモデルか?

一般論

 Jzazbz(JzCzHzの円筒座標系)はハイダイナミックレンジ(HDR)と広色域(WCG)の均一的な知覚(PU)のために設計された色空間です。CIE L*a*b*と似ていますが、理論的に改善されたものです:

  •  色の違いの知覚をユークリッド距離(ΔE)により予測出来る。
  •  均一的な知覚:そのマクアダム楕円はより円形に近く、大きさも似ているため、色の許容範囲が狭く、測色が保たれやすい。
  •  色相の線形性:彩度や明るさを調整した時に色相の変化が少ない。

 しかし、Jzazbzは実際には色の見えモデルではありません(下の注1を参照)。例えば、コントラストを同時に処理出来ません、また色順応も使えません。留意:RawTherapeeは標準ダイナミックレンジ(SDR)画像に関して、これらの問題をマンセル補正で部分的に克服しています(均一的な知覚のL*a*b*)。

 様々な比較研究が行われ(研究室での試験など)、次のような結果が出ています:SDR画像に関しては、CAM16の結果がベストだが、′僅差′でJzazbzの結果も良好である。HDR画像に関しては、Jzazbzの結果がベストで、CAM16の結果を′大きく′上回る。

注1:

 元々"Jzazbz"の発案者は、CAM16のJz版を目標にしたZCAMを開発しています。RawTherapeeでも9月から10月にかけてZCAMの導入を試みましたが、結果は思わしくありませんでした。

 しかし、ZCAMとCAM16のコードの開発を行ったことで、"La"(絶対輝度)に加え、"Jzazbz"をCAMの特性で強化する機会を得られました、例えば:

  •  場面の平均輝度である"Yb%‐平均輝度"が使える
  •  場面の周囲条件を決める平均、薄暗い、暗い、という3つの設定が出来る
  •  以下のケースで、"絶対輝度"の代わりに"相対輝度"を使えるようになったので
    •  明るさと、明るさのコントラストの代わりに、明度と、明度のコントラストが使える
    •  色度に加え彩度が使える

問題点

 問題は、Jzazbzがその処理計算に相対輝度ではなく、絶対輝度(La)を使うことです。相対輝度は、入力デバイス(スキャナーやカメラなど)が記録できる最大輝度、或いは出力デバイス(モニターなど)が表示できる最大輝度のことを指します。従って、相対輝度100%と言えば、それはカメラが記録できる、或いはモニターが表示できる最大輝度を指します。一方、Jzazbzは絶対輝度を使うように設計されています。例えば、Jzチャンネルの輝度100%は10,000カンデラ/平方メートルになることがあります。

 Jzazbzの概念に関する参考文献が少ないと言うこともありますが、これらの問題をRawTherapeeで対処するのは難しく、直観的に言えばプログラムの他の開発に大きく影響します。このアルゴリズムの発案者に、避けて通れないと思われる問題に関する質問をしていますが、本解説を書いている時点ではまだ回答はありません。以下の様な理由が考えられます:

  •  設計自体に欠陥があり、未だ対応、解決に至っていない。
  •  それらの問題は解決されたが、まだそれが公式の文書になっていない。
  •  理解不足(特に筆者自身の)

これらの問題とは何か?

  • オリジナルの変換アルゴリズムの基本設定を使って処理を行い、その結果を検証してみました。そこで私たちが発見したのは、結果がその理論的極限値から大きく下に外れることでした。例えば、Jzの極限値が1ではなく0.08以下になりました。同じことが"az"や"bz"に関しても見られ、それぞれが極限値から±0.5離れていました。その結果、Jzチャンネルに対する単純な調整でも、彩度に対して看過できない瑕疵が発生します。恐らくこれは知覚量子化器(PQ)関数(処理工程の最後)とその逆関数(処理工程の最初)が原因と思われます。
  • オリジナルのアルゴリズムでは、Jz(明るさ)を減らすとシャドウ部分で著しく強いアーティファクトが発生しました。
  • 色域のコントロールは出来ません。
  • しかし、もっと大きな問題は(少なくともRawTherapeeに関して)、LCMSのプロファイル接続空間(PCS)によって制限を受けるICCスクリーンプロファイルに関することです。
    • PCSはプロファイルに応じて、使われる色空間が輝度値の伝達が0.1~120カンデラ/平方メートルの範囲に限定される8ビットのL*a*b*、或いはRT4‐xxxまたはRT2‐xxxタイプのプロファイルであれば輝度の制限がないXYZ色空間になります。しかし、HDRへの対応は常に0.0001~10,000カンデラ/平方メートルの輝度値の処理が必要です。
    • これに関連するトーンリプロダクションカーブ(TRC)はsRGBタイプで、線形部分と放物線部分を持ちます。このカーブは、HDRのために当初Dolby©が提唱した、より効率的なPQ(知覚量子化器)で置き換えることが出来ません。sRGBからL*a*b*への変換でガンマ値3.0が設定されるのとは異なり、PQはHDRスクリーンがサポートしているピーク時の最大輝度値に応じてガンマが変化します。理論上、ホワイトポイントに関しては最大輝度値が10,000カンデラ/平方メートルでも処理出来ますが、実際にはもっと低い値、例えば有機LEDスクリーンであれば、ホワイトポイントの最大値は700から1,000カンデラ/平方メートルで、ブラックポイントの最小値は約0.0001カンデラ/平方メートルの処理になります。
  • これらの問題が解決されたと言うことは、PCSとしてJzazbzが使え、TRCとしてPQが使えることを意味します。つまりLCMSがこの点を考慮した上で使えることになり、スクリーンプロファイルの計算精度も上ることを示唆しています!

L*a*b*について

  • 筆者は最大6,000カンデラ/平方メートル以上の輝度が表示出来るHDRモニターや、それに適したICCプロファイル、或いは改造したLCMSも持っていないので、この新しい機能は、筆者のカラーマネジメントとCIECAM02、CIECAM16を導入した際の経験をもとに作っています。殆どのユーザーが使用しているSDRモニターを使ってこのアルゴリズムを作りました。

目標と解決策

筆者の目標:

  • SDR画像の調整で、アーティファクトを発生させず良好な測色を維持したままJzazbzを使うことです。そうすれば、理論的にL*a*b*より優れていると評されるJzazbzを使って、RawTherapeeの一連の機能を使うことが出来ます。
  • 将来的には、HDR画像を処理できるようにしたいと思います。

筆者が選んだ解決方法:

  • 元画像のLa(絶対輝度)を計算に入れます。
  • 画像のJzの最大値(0~1.0)を計算します。多くの場合、約0.2です。この値は知覚量子化器(PQ)の設定に応じて変わります。
  • 輝度が100カンデラ/平方メートルでJzが0.25であるという参考値を使います(グラフから測定した値と知覚された輝度を比較し、その結果を独自に解釈しました)。
  • 3つの値(La、Jzの最大値、Jzの参考値)を使ったLaの関数として、多くの場合0.5から1.0であるJzの値(Laが10,000カンデラ/平方メートル以上の場合はJzが最大値)を再評価(再マッピング)します。カーブやスライダーの値の計算は、RGBやL*a*b*を使った時と似た特性になるようにするため、Jzの最大値を1.0として計算します。もちろん、これら全ての値は逆関数(行列XYZからJzCzHzへの変換・逆変換とPQ)を実行する前に反転されます。
  • 計算上、一律10,000カンデラ/平方メートルになっているPQの値を、モニターの最大輝度値に合わせるため変更します、例えばSDRモニターであれば100~120カンデラ/平方メートルに、HDRモニターであれば120~10,000カンデラ/平方メートルと言うように。こうすることで、明るさを減らした際にシャドウ部分でアーティファクトが発生するのを避けます。

 ローカル編集の色の見えモデルモジュール(CIECAM16とJzCzHz)に取り入れたインターフェイスに関しては:

  • 上記の解決策のために3つのスライダーを、“Jzの再マッピング”ウィンドウに入れました。“La”を変更すると(“場面条件”の“自動”オプションを無効にした後)、PU-順応の値が変わり、画像やヒストグラムの効果が変わります。
  • PU‐順応(均一的知覚):自動的に絶対輝度を計算に入れます。この値を変更することは出来ません。
  • Jzの参考値100カンデラ/平方メートル:デフォルトで0.25に設定されています。この値を変更することは出来ません。
  • PQ‐最大輝度:出力モニターの性能に応じた設定をします。SDRモニターを使っているのであれば、100或いは120カンデラ/平方メートルでいいでしょう。HDRモニターであれば、そのモニターに応じて設定します。

 オプションフォルダの中のログ出力(verbose)が真の場合は、“Jzの再マッピング”の計算値をコンソールで見ることが出来ます:元のJzの”最大値“と比較した”実質的最大値“の他、カーブやスライダーが通常の特性を示すように適用するための係数”To One“など

CAM – SDR – HDRの設定に関する理解 ‐ 全般

 この試験的モジュールの作成には困難を伴いました。理由は:

  •  JzCzHzの概念に関する詳細な文献が非常に少ない:基本的に、公開されている情報はXYZ-Jzazbzの変換に関係するものに限られます。
  •  写真の画像は未だにSDR(標準ダイナミックレンジ)の概念と、性能的に限界のあるCRTモニターに使われた1990年代から2000年代の技術を引き継いだ機能を使っているという現実。
  •  写真画像はビデオ映像と異なり、殆どの場合、ウェブサイト(sRGB)、或いは印刷用紙上で見ることが殆どで、色域やダイナミックレンジ、最大輝度の点から言えば、CRTモニターより更に限界があるという現実。これらの点から見れば、HDR画像の処理を開発することにどれだけ意味があるのか、とも言えます。
  •  写真に関するHDR仕様のツールは、あるとしても稀です。例えば:
    •  RawTherapeeで使われるモニターの出力プロファイルは8ビットのL*a*b*でプログラムされていて、そのダイナミックレンジは7ないし8Evで、最大輝度は100から120カンデラ毎平方メートルに制限されます。
    •  また、LCMSで対処するモニタープロファイルの中で、HDR画像を扱えるものは、筆者が知る限りありません。
  •  現在、HDRモニターは非常に高価で、殆どの人にとって費用対効果が悪いでしょう:
    •  最大表示輝度が300カンデラ毎平方メートル程度に限られる機種でも3,000ユーロから5,000ユーロします。
    •  最大表示輝度が3000カンデラ毎平方メートル、ダイナミックレンジが21Ev、表示色域がRec2020に近いHDRモニターになると30,000ユーロから60,000ユーロします。
    •  但し、最近の有機ELTVが、HDRの特性(sRGBより広いDCI-Pに近い色域、高いコントラスト比、最大表示輝度500から800カンデラ毎平方メートル、解像度3840x2160)を備えていることは興味深いことです。ただ、このTVのドライバ及びICCプロファイルが手に入るのかどうかは分かりません。仮にこれらが手に入るのであれば、最近のハイダイナミックレンジを有するカメラ(Evが14或いは15)をHDMIケーブルでTVに2160p標準でつなげれば、部分的にHDRと広色域(DCP-Iに近い)を処理出来るかもしれません。この場合、JPEG(或いはRaw)画像はPCS(プロファイル接続空間)でXYZ-ICCプロファイルを使うので8ビットの制限は受けません。そのため、PCのグラフィックカードがHDR(解像度3840x2160、色域、PQ:知覚量子化器)の要件を処理出来て、適切なICCプロファイルがあれば、TVをモニターとして使うことが可能でしょう。
  •  CAM、絶対/相対輝度、ダイナミックレンジ、TRC(トーンリプロダクションカーブ)に代わるPQ(知覚量子化器)及び逆PQの概念は多くの部分が難解で、文献も少ないため、これらの概念をプログラムに取り入れられるのは、経験豊富で専門知識を持つプログラマーに限られるでしょう。

 上記の様な理由から、HDR用の機能やアプリケーションは、日常で使うと言うよりはアカデミックな利用に限られるものかもしれません。しかし、だからと言って、その様なモジュールは作る必要がない、と筆者は思いません。数々の概念を解明し、その経験をRawTherapeeのユーザーと分かち合いたいと思います。

CAM – SDR – HDRの設定に関する理解 ‐ イントロダクション

 Jzazbzは諸計算に絶対輝度(La)を使います。L*a*b*などで使う相対輝度ではありません。相対輝度は入力デバイス(例、スキャナーやカメラ)が記録できる、或いは出力デバイス(例、モニター)が表示できる最大輝度のことを指します。つまり、相対輝度100%と言えば、カメラが記録できる、或いはモニターが表示できる最大輝度になります。一方、Jzazbzは絶対輝度を使うように設計されています。例えば、Jzチャンネル100%は、元々Dolby©が開発したPQ(知覚量子化器)の変数である輝度(カンデラ毎平方メートル)が最大で10000に相当します。これが以下に説明するように、私たちに多くの問題を突きつけます。同じことは、CIECAM02/16のQとJの違いにも言えますが、必ずしもQは10000カンデラ毎平方メートルを指していません。Jzazbzを理解する上で、絶対輝度と相対輝度の違いを知ることは重要です。

 プログラムで使うXYZからJzazbzへの変換とその逆変換のマトリクスは複雑です:

  •  ブルーの処理がCAM16とは異なります。
  •  Jzazbzの開発者らは、HDRデバイスに必要な知覚量子化器(PQ)という伝達関数及びその逆関数の概念を導入しています。これは、RawTherapeeではsRGBガンマ(トーンリプロダクションカーブ)の形、SDRデバイスではガンマ、逆ガンマ(CAM16の変換マトリクスは除く)として普通に使われる関数とは違います。PQ関数は、そのマトリクス及びインバースマトリクスに直接組み込まれていて、絶対輝度に直接的に関係する最大輝度(La)を計算に入れます。その結果、Jzに関するデータを使う計算で、結果として得られるJzの値が著しく小さくなります(通常、JzはPQの値に応じて0から0.02、平均で0.003、最大幅は0から1.0)。もちろん、線形的な変換ではないので、不可能ではないにせよ、カーブやスライダー、ウェーブレットやシャドウ/ハイライトなどの関数で、Jzを扱うことが非常に難しくなります。仮に、2つのマトリクスをそのまま使うと、全体的なレンダリングで彩度が不足し、従来利用している機能は使い物にならないでしょう。更に、特定のスライダーの調整では強いアーティファクトが発生します。

 更なる情報が以下のリンクから得られる文献(仏語)に書かれています: https://tel.archives-ouvertes.fr/tel-02378332/document

  •  29ページにある図1.3は、入光から画像の表示までの流れを図式で示しています。
  •  38、39ページの公式1.2と1.32にはブルーカラーの扱いに関するものです。
  •  30ページの公式1.5はガンマ関数(本例ではBT709)、38ページの公式1.21は逆PQ関数です。

 ダイナミックレンジと絶対輝度に関する追加情報:

  •  ダイナミックレンジとは、最大輝度から最低輝度までの幅(ホワイトEvからブラックEvまで)をEvで表したものです。最近の一般的デジタルカメラの画像であれば、その幅は13から15Evでしょう。複数のrawファイルを組み合わせたDNGファイルであれば更に幅が広がります。
  •  絶対輝度(La)は、撮影時の場面の輝度に相当し、カンデラ毎平方メートルで表されます。この値は、Exifデータに記録されているシャッター速度、絞り値、ISO値から推定されます(但し、DNGファイルを使っている場合はその精度が落ちるかもしれません)。一般的には、夏の太陽光、或いは晴れている時の雪景色の輝度が、2000から7000カンデラ毎平方メートルと言われます。
  •  この輝度値はSDRモニター(ダイナミックレンジが7から8Ev、最大表示輝度120カンデラ毎平方メートル)が再現できる能力を大幅に上回っています。
  •  つまり、ハイダイナミックレンジ画像をそのままSDRモニターで再現することは不可能で、その再現においては何らかの妥協が必要になるということです。

Jzazbzの導入

  •  Jzazbz(JzCzHzの円筒座標系)をローカル編集の色の見えモデル(CIECAM16とJzCzHz)モジュールに組み入れました。
  •  複雑なアルゴリズムなので、使えるのは機能水準が⟨高度⟩な場合だけです。
  •  十分な計算の精度を得るため、"浮動小数点演算"の代わりに"倍精度"を使います。そのため、処理時間が増加しました。

L*a*b*の代わりにJzazbzを使う妥当性を判断するための機能

  •  従来の機能:Jz(Jz), Cz(Cz), Cz(Jz), Hz(hz), Cz(hz), Jz(hz)のカーブに加え、明るさ(或いは明度)、コントラスト、色度、彩度、色相環
    •  注意:上記カーブの内、Hz(hz), Cz(hz), Jz(hz)カーブは、XYZ⇔Jzazbz変換マトリクスの本来の設計に基づいているため、特に画像の彩度が低い場合、調整に対する応答が鈍くなります(無い、或いは誤る場合もあります)。
  •  シャドウ/ハイライト(L*a*b*の機能と類似)
  •  ウェーブレット
    •  ローカルコントラスト
    •  明瞭&シャープマスク
  •  輝度マスクをベースにした輝度の回復
  •  マスクと修正領域
  •  L*a*b*に関する他の機能についても、必要とされれば将来追加します。

2つのトーンマッピングツール:対数符号化とシグモイドのJz版

対数符号化 Jz

 この機能は元画像のレンダリングを大きく変えずに、Jzのバランスを変えることが出来ます。コントラストを減らすため、シャドウを持ち上げハイライトを下げます。効果は⟨ローカル編集⟩の⟨対数符号化⟩のRGBを使う同等な機能と似ています。但し、計算には、輝度チャンネルを他の2チャンネル、例えば色度Czと色相Hz、から完全に独立させるためRGBの輝度の代わりにJz(明るさ)を使います。Jzチャンネルには、対数加重平均が適用されるため、結果はRGBモデルとは若干異なりますが、測色の維持は向上します。

  •  調整は主に4つあります:
    •  ⟨場面条件⟩の"平均輝度(Y%)":スライダー値を下げると画像の全体的輝度が増えます。対数変換が実行される前に作用が働きます。
    •  ⟨ブラックEvとホワイトEv⟩:ダイナミックレンジの計算値の再調整と、シャドウ部分とハイライト部分で行った調整に差を付けることが出来ます。
    •  ⟨観視条件⟩の"平均輝度(Y%)":⟨ブラックEvとホワイトEv⟩と連動して、最終的な対数変換の計算に作用します。スライダーの値を増やすと画像が明るくなります。
シグモイド Jz

 この機能では、コントラストと輝度の2つを1つの概念で全体的に捉えることが出来ます。"Jz"のダイナミックレンジ圧縮が確保されているので、考え方は⟨対数符号化 Jz⟩、或いは他の⟨トーンマッピング⟩と非常に近いものです。

  •  シグモイド関数の概説は次のリンクから:[4]
  •  RawTherapeeで使うシグモイド関数は少し複雑で、2つのパラメータが追加されています。数式で表すと、"シグモイドRT"=1/(1+exp(λ - (λ/しきい値) * Jz)) になります。  
    •  λはカーブのスロープに作用します。そのためコントラストが変わります。
    •  ⟨しきい値⟩はカーブをシャドウ或いはハイライト方向に動かす機能です。画像に応じてカーブの作用を微妙に調整できます。"グレーポイント"の調整とも言えるでしょう。
    •  シグモイド関数のシミュレーションは2つのパラメータを使います。一つはコントラストに相当する"l"、もう一つはしきい値に相当する"t"です。以下のリンクに解説があります(仏語) https://www.desmos.com/calculator/g382ci99gu?lang=fr 注意:プログラムでの実際の計算はこれとは少し違います。あくまで学習目的の参考です。

 注意:プログラムで行われる計算は少し違います。このシミュレーションはあくまで学習目的で示しました。

  •  関数の形はトーンカーブに似ていますが、つま先や肩、或いは線形部分がありません。この連続の指数関数的な動きは、幾つか興味深い、特にHDR画像に関わる特性を持っています:
    •  シグモイドの値が0と1に近い部分では、カーブの進みが非常に緩慢で、線形に近くなります。この特性を、Jzの値が絶対輝度で言う0.001カンデラ/平方メートルの様な暗いシャドウ部分、或いは、数百カンデラ/平方メートルのハイライト部分で活かすことが出来ます。
    •  シグモイドの値が中間部分ではカーブの動きが指数関数的になるので、トーンマッピング機能の様なダイナミックレンジの圧縮に使えます。
    •  ⟨対数符号化 Jz⟩でも使われている⟨ブラックEvとホワイトEv⟩を考慮できるオプションがあります。この場合、前述のシグモイドRT方程式で、JzはEvで表現できる値に置き換えられます。例、Jzと等価なEv=(log2(Jz)-ブラックEv)/ダイナミックレンジ。後者の場合、機能は⟨対数符号化 Jz⟩と似た特性を示しますが、方程式の解の求め方が異なります:
      •  ⟨対数符号化 Jz⟩は、対数変換にブラックEvとホワイトEv、"観視条件の平均輝度"を使います。
      •  ⟨シグモイド Jz⟩は、対数変換に指数的シグモイド曲線(シグモイド曲線の変曲ポイントのスロープに作用するコントラストスライダーを使う)で調整したブラックEvとホワイトEv、"しきい値(グレーポイント)"を使います。これにより、4つの調整‐ブラックEvとホワイトEv(自動計算を含みます)、しきい値(グレーポイント)、コントラスト、で最良の妥協点を見出すことが出来ます。また、シグモイド関数の場合に表示される追加的なコントラストスライダーは、輝度の配分も調整出来ます。
    •  ⟨ブレンド⟩のスライダーで、最終的な画像の調整(⟨対数符号化⟩の"観視条件の平均輝度"に少し似ています)が出来ます。
彩度の調整

 どちらの機能もJzの基礎となる色相を保持しますが、コントラストに著しい影響を及ぼす場合があるので、Jzの輝度値が増減します。この場合は、色相を保持するために以下の機能を使って彩度を調整します:

  •  ⟨色度⟩と⟨彩度⟩のスライダー 
  •  Cz(Cz) と Cz(Jz) のカーブ

参考文献

https://tel.archives-ouvertes.fr/tel-02378332/document

https://www.color.org/groups/hdr/HDRWG-Summer2020.pdf

https://www.osapublishing.org/oe/fulltext.cfm?uri=oe-29-4-6036&id=447640

色の見えモデル02(CIECAM02)について

イントロダクション 歴史

 何年もの間、私たちは人間が知覚する色のモデル化を研究してきました。中世以降、多くの努力が払われてきましたが、進展を始めたのは19世紀からで、20世紀に入ると大きな進展がありました。

 筆者は、視覚システム専門の生理学者でも、複雑な測色学の研究者でもありません。それでも、この概念の理解を深めるための基本的な情報を集めました。更に詳しい情報については、文中の所々にウェブサイトのリンクを張ってあります。

 一般に、写真画像の世界では、私たちは50年以上前の色モデルを使っています。RGBとその派生モデル(HSV、HSL、CMYK。。。)、XYZ、そしてL*a*b*とその派生モデル(Luv,Lch)です。この先、皆さんが知っているRGBモデルについての説明は省きます。従属的なこと以外、CAM(色の見えモデル)と関係することがないからです。XYZは、1931年にCIE(国際照明委員会)が、人間の視覚に忠実な色の描写と定義した最初の色モデルです。要約すると、色は“刺激値”、“標準観測者”そして“スペクトルパワー分布”から得られる、X、Y、Zという3つの値で特徴付けられる、と定義されます。この色モデルはRawTherapeeでも、特にホワイトバランスに関連した部分で、使われています。このモデルは色の見えモデルは考慮していないのですが、色を認識と言う形で最初にモデル化したもので大躍進と言えるでしょう。

 L*a*b*モデルはXYZモデルとは距離を置く形で1976年にCIEが設計した色モデルです。輝度と2つの補色次元に該当する強さの変数が使われることで特徴付けられます。人間の目が知覚する色の違いと同じように色の距離を計算する研究から生まれたモデルです。RawTherapeeにもこのモデルは組み込まれていて、殆どの機能の基本部分で使われています:シャープニング、ノイズ除去、トーンマッピング、L*a*b*調整などです。色の見えモデルの特性も幾らか組み込まれていますが、まだそれほど多くはありません。

 CIECAM97(CIE色の見えモデル97)から派生したのが、G.Huntの研究を応用したCIECAM02(CIE色の見えモデル02)です。可逆性を有し、比較的“単純”で、写真画像で一般的に使える最初の色モデルとなりました。また、この色モデルは、純粋に視覚による認識という観点だけでなく、同じ分野における多くの研究者によって発見された知覚特性を考慮しています:

  1.  同時対比:見る物体の色が、その背景の明るさ次第で変わる特性です。背景が暗いほど見る物体の彩度が下がります。
  2.  ハントの効果:輝度の強さで感じる色の鮮やかさが変わる特性です。暗い場所より明るい場所の方が物体の色が鮮やかに見えて、コントラストもはっきりします。
  3.  スティーブンスの効果:影の中より日の光の中の方が、色は明るくコントラストが強く見える特性です。輝度が増すと、暗い色はより暗く、明るい色はより明るく見えます。
  4.  ヘルムコルツ‐コールラッシュの効果:色が鮮やかな方が、鮮やかさが少ない色より明るく見えるという特性です。最も鮮やかな色が一番明るく見えます。
  5.  色順応:人間の視覚システムの色刺激に対する調整力のことです。この能力が時空環境に応じて人間の色の解釈を調整してくれます。色の見えモデルが取り入れている非常に重要な要素です。

 色順応は人間の視覚システムが持つ特性で、光の条件に適応できる能力です。言い換えると、見る物体の色を正しく維持するために、光源に順応して色を知覚することが出来ます。例えば、白熱球の下では白い紙が初めは黄色く見えます。しかし、私たちの目は黄色い光の下で物体を見る色モデルを自動的に作る能力を持っているので、直ぐに白い紙として見ることが出来るようになります。もしも、こうした能力がなく、光源の違いで常に物体の色が変わって見えたらさぞかし不便でしょう。人間は誕生の時から、朝昼晩の異なる光に関わらず、果実が熟した色になっているかどうかを知る必要があったからです。但し、こうした能力が様々な光学的錯覚を生む原因にもなります。

 注意:ここでは"マンセル補正"についての論議はしませんが、原則CIECAM02はマンセル表に沿って設計されているので、この補正が考慮されます。つまり、仮にマンセル補正に短所があるとすれば、このモデルにもそれが反映されることになります。

 筆者がCIECAM02に出会ったのは2007年で、ICC“入力プロファイル”にとって最良なスプレッドシートを開発していた時です。2012年、“色(肌や空の色)を参照するためのパレットのようなものがあれば、比較や反復処理に便利だ”というユーザーからのリクエストがありました。また、筆者はその頃、基本光源に対して異なる光源で色のレンダリングが変わるという、演色評価数(CRI:Color Rendering Index)という概念について研究していました。CRIの値が低いと同じ色温度の色でもレンダリングが悪化するという考えです(カラーマネジメント‐捕捉の項に詳細があります)。

 CIECAM02に基づいて、先の2つの基本的要素を含むパッチは作りましたが、重要なエレメントである“ピペット”がまだ欠けています。開発は容易ではありません。長い間、筆者はCIECAM02を斬新なアイデアとしてではなく、実装するのが難しいモデルと考えていました。また、L*a*b*比べ、その応用によって得るものが少ないと思っていました。しかし、同僚のMichael Ezraのリクエストで画像を再度開いて驚きました。それはCIECAM02の実例を示す画像でした。今では、弱点があるものの(画像によっては、使い物になりません)、カラーマネジメントの点から見て最も効果的な色モデルであると確信します。今のこのモジュールは、"最初"の試みです。CIECAM02のデータをもっと集めてくれば、既にRawTherapeeに備わっている機能と似たような特徴(様々なトーンカーブを備えたLab調整やトーンマッピングなど)を持たせることも可能でしょう。その暁には、画像の編集の質が飛躍的に良くなると思います。

 複雑さに加え、この色モデルに関する有効な書物が少ないので苦労します。解釈の一部は個人的見解なので、専門家の人が読んでおかしいと感じたら指摘してもらいたいと思います。

進化
CIECAM

 新しい色の見えモデルCIECAM16は2016年から提唱されたモデルですが、更新されたこのモデルを2020年に、"高度な機能"タブの中に組み入れました(CIECAM02との両立を図るため)。そのためこの機能の名称も⟨色の見え&明るさ(CIECAM02/16)⟩と呼んでいます。

 CIECAM16はCIECAM02に比べて幾つか優位点を持ちます:コードがシンプルになった、アーティファクトが回避できるようになった、そして、色域が大幅に拡大したことです。

 また、CIECAM16(CAM16)は、"ローカル編集"タブにある⟨色の見え(CAM16&JzCzHz)⟩にも組み入れました。

Jzazbz – JzCzHz

J zCzHzは、L*a*b*のLchの様に、Jzazbzから導かれた色空間です。

 JzCzHzモジュールは今でも研究が続けられているモデルをベースにした試験的なものですが、正確にはCAMではありません。しかし、幾つかの問題点を解決できれば、HDRとSDRの画像、両方に対応できる非常に有益なモデルです。⟨色の見え(CAM16&JzCzHz)⟩の機能水準を高度にするとこのモデルが使えます。

定義

  1. 明るさ [或いは輝き] (CIECAM02/16&JzCzHzで使われる用語) :
    色刺激から知覚される明るさの量=その色刺激がどの程度明るく見えるかという指標
  2. 明度 [或いは輝度] (L*a*b*, CIECAM02/16で使われる用語) :
    同じような観視条件の下で、白に見える色刺激の明るさと比較したその色刺激の明るさ。
  3. 色相と色相角 (L*a*b*の一部、CIECAM02/16で使われる用語) :
    レッド、オレンジ、イエロー、グリーン、ブルー、パープルといった色にその色刺激がどの程度似ているかを示す指標で、円の角度で表す場合もある。
  4. 鮮やかさ (L*a*b*の一部、CIECAM02/16で使われる用語) :
    グレーと比較して知覚される色の量=色刺激がどの程度色付いて見えるかという指標
  5. 色度 (L*a*b*, CIECAM02/16&JzCzHzで使われる用語) :
    同一の観視条件の下で、白に見える色刺激の明るさと比較した、その色刺激の"彩色"の程度。
  6. 彩度 (CIECAM02/16&JzCzHzで使われる用語) :
    色刺激自体の明るさと比較したその色刺激の彩色の程度を示す指標
  7. PQ (CAM16 & JzCzHzで使われる用語) :知覚量子化器
    色の変換マトリクスに適用される一種の可変ガンマのこと。元(或いはソース)画像の特性と出力のタイプ(HDRかSDR)を考慮して調整を行います。設定値の幅は100カンデラ毎平方メートルから10000カンデラ毎平方メートルまで。

要約すると: 色度= (鮮やかさ) / (白の明るさ)

彩度= (鮮やかさ) / (明るさ)

明度= (明るさ) / (白の明るさ)

となり、上記の式を移項すれば

彩度= (色度) / (明度)、とも表せます。

 CIECAM02/16はこれらの概念を使うために、幾つかの相関変数を開発して使っています:

J:Labの明度に近い、明度、或いは鮮明さのこと

C:Labの色度に近い色度のこと

h:Labの色相に近い色相角のこと

H:色相。4つの色(レッド、イエロー、グリーン、ブルー)の間の2つの基本色の組み合わせで表される色。例えば、30B70G、或いは40R60Y。

Q:明るさ

M:鮮やかさ

ac, bc:Labの補色次元a、bに近い変数

 ところで、色度、鮮やかさという変数が既にあるのに、更に似たような彩度が追加されているのは何故でしょう。Robert Hunt(2001年)は次の様に述べています:

「色の知覚の3つの基本は、色相、明るさ、そして鮮やかさであるが、明るさは明度、鮮やかさは色度という、相対する変数を持つ。しかし、色相にはそれがない。色度の相関関係は色の違いを示す計算式で幅広く使われているが、彩度は色の科学や技術の分野であまり使われていない。恐らくこれは、多くの産業では色の違いを評価する場合、一律のサンプルを均一な照明で観察するからであろう。この様に、狭い視角でサンプルを観察する場合は、色度は適切な変数である。しかし、広い視角でサンプルを観察する場合は、彩度の相関関係を使う方が適切かもしれない。現実の世界では、一定の角度の照明で個体を見ることの方が一般的である。この場合、彩度は影の中でも一定なので色度より役立つ知覚の指標である。画像の世界では、アーティストやコンピューターグラフィックス関係者が一定である彩度の方を多用している。光学的画像でも、広くて暗い環境の中では彩度が重要な知覚の指標となり得る。最近の実験研究では彩度の相関関係の利用が大幅に改良されている」

3つのプロセス

 CIECAMによる調整は3つの作業が必要ですが、使われている用語がそのプログラムの設計者によって異なるので、便宜上一つに統合することにしました(断っておきますが、本文はCIECAMの論文でもなければ、講習でもありません、あくまでこのモデルを理解し、使うための補助です)。

プロセス1

 “出発点(origin)”、“フォワード(forward)”、“入力(input)”、“元(source)”などが一般的に使われていますが、私は“元”を使うことにしました。この言葉は観視環境と対応しますし、その観視環境やそのデータを“標準”の領域に移すという意味とも符合するからです。ここで言う、“標準”とは、中間或いは標準的環境やデータのことで、CIECAMの補正を考慮していない状態、“周囲が平均的”という表現は、D50のホワイトバランスを指すことにしました。

プロセス2

 2番目のプロセスは、様々な調整目的のために相関関係にある変数(J、C、h、H、M、s、a、b)の扱いをどうするかということです。これらの変数を使った、画像編集ソフトを作ることも可能でしょう。

 RawTherapeeで応用するために、独自に4つのアルゴリズムを作りました:

  1. コントラスト調整を備えた、明度(J)と色度(C)で調整するアルゴリズムJC
  2. コントラスト調整を備えた、明度(J)と彩度(S)で調整するアルゴリズムJs
  3. 明るさ(Q)と鮮やかさ(M)で調整するアルゴリズムQM
  4. Hを含む全ての変数で調整するアルゴリズム

 各アルゴリズムのモジュールは単純で、測色の問題を解決しようと言うよりは、学術的な試みです。それでも、結果は個人的には上手く出来たと思っています。

 私はプロセス2を次の2つの機能で行うようにしました:

  1. 明度、あるいは明るさに対して2つのトーンカーブ。原理的には露光タブの2つのトーンカーブに類似しています。
  2. 色度、彩度、カラーレベル(鮮やかさ)を調整するカーブ。

 ここで更に、フーリエ変換を使った別なアルゴリズムを追加することや、RawTherapeeの既存の機能で置き換えることも出来ます。

プロセス3

 用語として“正反対(inverse)”“反対方向(reverse)”“出力(output)”“観視環境(viewing condition)”などが使われていますが、私は“観視環境”を選びました。最終画像を見る環境同様、それを反映する媒体(モニター、TV、プロジェクター。。。)のことも包含していると思ったからです。プロセス3は、プロセス2から得られたデータを、観視環境を考慮した領域で最適に表示するプロセスです。

 注意:印刷された写真と、モニター上で見る写真のカラーレンダリングは異なります。たとえ、そのプリンターが最上位機種で、且つ、キャリブレーションが完璧であっても、観視環境は異なります。通常、印刷された写真はアルバムの中で見ることが多く、背景色は黒で、あまり明るくない環境、タングステンライトの下で見ることが多いのではないでしょうか。一方、モニター上で見る画像の背景は明るく、D50の明るさです。もちろん、“印刷”のための出力に合わせることも出来ますが、ここでは観視環境とはモニターやTVの事にします。

 どちらの観視環境を優先するかの論議はさておいて、CIECAMはどちらかと言えばソフトプルーフィング(画面上での校正)が目的のモデルです。平均的輝度(%グレー)だけでなく、“観視環境”で設定されるホワイトポイント(モニター、プロジェクターなどの出力デバイスのホワイトポイント)の色温度も考慮されます。

 これらをRawTherapeeに使うため以下の様に単純化しました:

  1. RawTherapeeユーザーの95%が編集画像を観る時の観視環境は:
    • モニターのホワイトポイントが6000Kに設定されている
    • キャリブレーションが行われたモニターのYb(背景領域の相対輝度)は18%
    • 但し:
      • “環境設定”で、他の環境が選ばれている場合は、それに従う
      • モニターの設置場所(平均的明るさ、或いは暗い)に合わせて、観視環境を変える
      • 部屋の明かりは時間によって変わるので、それに合わせて “順応領域の絶対輝度(La)”を変える必要があるでしょう。例えば、夜間に照明なしで見れば、Laは0或いは1に近く、逆に明るい環境であればLaは1000に近くになります。
  2. あまり一般的ではありませんが、あり得る話です。何しろ自分がそうしたのですから。RawTherapeeの画像をTVで見るケースです。この場合の観視環境は通常とは異なり、環境に合わせた設定が必要です。TVのホワイトポイント、TVのYb(勘に頼るしかないでしょう)、周囲の環境も異なるでしょう。普通、テレビ鑑賞の背景色は鈍い色と思われますし、照明も弱いと思います。
  3. また、自分の写真展を準備するとしたら、よりプロフェッショナルな対応をする必要があるでしょう。会場の観視条件や、写真を投影するプロジェクターのホワイトポイント、キャリブレーションの有無、会場の明るさ、など。RawTherapeeでは、ユーザーが観視環境を設定することになるので、そのデータをJPEG或いはTIFEに合わせて設定することになります。
  4. その他

データ

 どのデータを取り入れ、どの様に単純化するかは、筆者の裁量で決めましたが、どの様に調整したか説明します:

  • Ybは背景の相対輝度のことですが、RawTherapeeもこれを取り入れ、灰色の%として表示するようにしました。灰色18%は、CIEのLでいう50%のことです。
  • プロセス3のYbに関して言えば、ユーザーのモニターがキャリブレーションされたものでしたら、Ybは18ないし20に近いと思われます。TVやプロジェクターを使っていても(キャリブレーションは難しそうですが)、多少、暗いか、明るいか、経験的に調整できると思います。要は画像を視覚化するデバイス次第であり、写真を映し出す、それを観る環境は一定と考えます。Ybの値を変える場合は、環境設定のカラーマネジメントタブで行います。
  • しかし、プロセス1のYbは厄介です。
    • 何故なら、撮影された画像が一定の露出であることは滅多にないし、輝度の違いも小さいはずがないからです。
    • 私はあえてCIECAMのモジュールをLab調整の後に置き、最終的なRGBへの変換、出力デバイスへの移動の直前にしました。理由は、ユーザーが既にRawTherapeeの様々な機能を使って編集の調整を終えているので、画像のヒストグラムが“平均的な”ものになっていると想定したからです。
こうして、個人的に知りようもないはずのYbを、処理を施した画像の平均的輝度から計算するようにしました。もちろん、将来的にRawTherapeeがCIECAMに順応したピペットを作れれば、画像の異なる部分(暗い、通常の明るさ、明るい)で、それぞれのYbを設定出来ます。例えば、ある画像が3つの輝度領域を持っていたとしましょう:
  • 標準部分は、画像の平均的Yb20%に設定する
  • 露出不足部分(ピペットによって境界線を引く)の輝度が計算できれば、Ybを5%に設定する
  • 露出過多部分はYbを70%に設定する、というように。
  • Laは順応領域の絶対輝度のことで、これもRawTherapeeに取り入れました。
  • プロセス1に関しては、Laは撮影時の輝度に一致しています。例えば、影の中で撮影した場合、Laは2000cd/㎡に近くになり、また、室内灯の下で撮影すると、Laはその光源の種類により、20~300cd/㎡となるでしょう。画像の再生ともなれば、これらの値は更に低くなると思います。
  • プロセス1の“撮影輝度”と“自動”チェックボックス
    • チェックボックスが有効になっていると、LaはExifデータ(シャッタースピード、ISO、絞り、露出補正)とRawホワイトポイント、露光補正量から算出されます。
  • プロセス3に関しては、Laは画像の観視を行う場所の輝度と一致させます。ユーザーがモニターをキャリブレーションしている場合は、この値の入力が必要です。もしくは、測定器により値を求めなければなりません。値の大きさは、殆どの場合、15~100でいいと思いますが、映画館の暗がりの様な所では、1~10になることもあるでしょう。
  • これら2つのLa値はCIE色の見えモデル機能の中で調整するようにしました。
  • 周囲環境
ここも、単純化しました。
  • プロセス1に関しては、背景が暗い博物館での撮影とか、黒い背景で撮影したポートレート写真など、撮影条件の幾つかを考慮します。通常、RawTherapeeのユーザーは、違和感を感じる画像の色に対しては、プログラムの様々な機能を使って、調整していると思いますが、私は敢えて“周囲環境(暗い)”というチェックボックスを設け、ユーザーが選べるようにしてみました。これを選択すると、画像が明るくなります(前述の“標準”に戻す)。
  • このデータは、観視する際の画像の周囲環境を考慮したものです。周囲環境が暗いほど、画像のコントラストを増やす必要があります。“周囲環境”の変数は、D-Lightingやトーンカーブとして変化するものだけではなく、レッド/グリーンとブルー/イエローの軸上の色でも変化します。周囲環境のYbが20%以上ならば、環境として“平均”を選び、それ以外はユーザーの設定に従うようにしました。環境設定で一般タブのテーマの選択は最終的なレンダリングに影響します。設定は、“周囲環境”によって簡単に行えます。周囲環境を暗くすると、画像の同時コントラストは高くなります。
  • ホワイトポイントモデル

 単純にするため3つの方式を採用しました。

  • “WB RT + output” : プロセス1に関してはRawTherapeeのホワイトバランスが正しいと想定しています;CIECAMはD50を参考にします:RawTherapeeのホワイトバランスはD50と同等のものに戻されます;一方、プロセス3に関しては、出力デバイスのホワイトポイントの調整が必要となるでしょう。環境設定パネルに行き、カラーマネジメントの設定で変更を行います。
  • WB RT+CAT02/16 + output” : プロセス3に関しては、上記と同じですが、プロセス1に関してはRawTherapeeのホワイトバランスと、CAT02/16(色順応変換)の効果をミックスするモデルで、CAT02/16の順応度をスライダーで加減できるようにしています。ミックスすることの有利性を活かし、効果を高めるためにはRawTherapeeのホワイトバランスも調節する必要があるでしょう。
  • 任意の色温度+色偏差+CAT02/16+output“” :これは本質的にシンメトリカルプロセス(以下を参照)を使うことと同じで、ユーザーによる最初のホワイトポイント調整が可能となります。
  • CAT02/16は、色順応変換の一つで、画像のXYZ値のそれぞれのホワイトポイント値Xw0、Yw0、Zw0を、XW1、YW1、ZW1に変換します。アルゴリズムはVon Kriesの一つに似ており、色チャンネル乗数を考慮しているRawTheraeeのホワイトバランス調整とは異なります。
  • “CAT02/16”と“自動”チェックボックス
  • CAT02/16に関しては、上記の“WBRT+CAT02/16+output”を参照して下さい。
  • しかし、 “ホワイトポイントモデル”をゼロに設定していても、色順応のスライダーは役に立つと思います。通常、色順応のチェックボックスは“自動”を選んでおき、色順応以外の目的で使われる内部の“D”係数をCIECAMに自動計算させます。値が65以上の場合はチェックボックスを外し、手動でスライダーを調整するのがいいでしょう。予想もしない効果となるかもしれません。

モードの選択 ‐ クラシック或いはシンメトリック

CIECAMの使い方には2つの方法があります。

標準方式

  • 標準方式は“画像”の変数と“観視環境”の変数を切り離して処理します。この場合、“La”、“Yb”、“観視環境”、CAT02/16(色順応変換)がプロセス1、3に関して最適となるので、適した処理と言えます。プロセス2に関してはユーザーがスライダー或いはカーブを使って調整する必要がありますが、扱い易いモードでしょう。

シンメトリック

  • これは“バランス”方式のことで、以下の様に構成されています:
    • プロセス1、2に関して、"La"、 "Yb"、 "周囲", "CAT02/16"、に同じ値を使います。特殊なケースを除いて、“La”を400、“Yb”を18にすることを奨めます。
    • “ホワイトポイントモデル”は“任意の色温度+色偏差+CAT02/16+[出力]に設定します。
    • “画像環境”では、色温度を5000k、色偏差を1.0、つまり輝度D50 に合わせてあります。
    • “観視環境”では、色温度スライダーをホワイトバランスの色温度に合わせます。色偏差は経験に基づいて調節します(実際にはXYZのYのことで、RGBのGのことではありません)。
    • 色順応としてはかなり有力な効果を得られたと思います:
      • Von Kriesやブラッドフォードモデルに比べ、遥かに効果的です
      • CIECAMに関する変数(同時対比やHuntの原則など)を考慮しているので、“CAT02/16”と“CAT02/16の逆数”を別々に適用する方法より優れています
  • 元画像の色温度が低く(2500K以下)、Laが非常に低い場合は、この色順応モデルは機能しないことがあります。これがCIECAMの限界とも言え、その場合はCAT02/16の値を下げて対処します。

自動色順応-CAT02/16プリセット

 効果的に色順応変換を利用するために、“CAT02/16プリセット”というチェックボックスがあります。

 このチェックボックスは色調の自動調和のために必要なプリセットを提供し、CIECAMの一連の設定をやり易くします。

CAT02/16の機能とは

 ホワイトバランスとは(自動、手動に関わらず)画像の数学的解析で、多少の差はありますが(ホワイトバランス次第で)、光源と物体色(花、空、肌、など)そして標準観測者2°によってきまる測色に相当します。

 例えば、Itcwbによる自動ホワイトバランス補正は、画像の色の大部分とスペクトルデータの参考色パネルを比較します。

 但し、それが貴方の好みと一致するかどうかは別の話です。アルゴリズムが上手く機能しないこともありますが(稀です)、殆どの場合、私たちの目と脳は物の色を昼光D50で見ているように順応する能力を持っています。これは人間の持つ心理学的プロセスです。

 CAT02/16は、この人間の目と脳の働きを真似するアルゴリズムです。ある意味入力プロファイルまたは幾つかの作業・出力プロファイルに存在する色順応に相当します(例えば、sRGBは光源D65においてブラッドフォード順応に対応しています)。

 つまり、CAT02/16は、数学的解析の後に、画像の印象に“暖か味”や“冷感”を加えます。

CAT02/16の調整

 殆どの場合、このプリセット対応できます。では、これを選択すると何が行われるのか?

  • ホワイトバランスの設定(色温度、色偏差1.0)を考慮した上で、それらを“観視環境”に送ります。
  • それらをCIE色の見えモデル02/16のシンメトリックモードに入れます。
  • “画像環境”と“観視環境”を平均値で調整します。
    • 絶対輝度: 400
    • 平均輝度%: 18
    • 周囲環境:普通
  • 画像環境のCAT02/16を90に設定
  • 観視条件のCAT02/16を90に設定
  • ホワイトポイントモデルをD50 に相当する色温度5000K、色偏差1.0にして“フリー”に設定。貴方の画像環境がこれと異なり、その条件を認識しているのであれば、例えば光源の設定をD65 変えることも出来ます。

何を調整するか?

 殆どの場合、設定を変更するのであればCAT02/16の観視環境だけで十分でしょう。

 補正が強すぎると感じる場合は、“観視環境の色温度”を調整します。例えば、ホワイトバランスの補正結果が7600Kであれば、光源の種類に応じて、この観視環境の色温度を同じよう値に調整します。また、デフォルトで1.0に設定されている“色偏差”の値を調整してもいいでしょう。

 残念ながら、CIE色の見えモデル02/16と人間の視覚と脳の反応の対応は完全ではありません。画像環境次第で変わります。実用的な対処が必要なので、“CAT02/16の観視環境”と“観視環境の色温度”スライダーを備えています。

 更に進んだアプローチもあります。“画像環境”と“周辺環境”を実際の条件に応じて調整します。例えば、(観視環境の)“周辺環境”を調整します。

 光源D50で設定されている画像環境の色温度と色偏差の調整には注意が必要です。ホワイトポイントを異なる光源のそれに変える場合は、画像環境も調整する必要があります。例えば、光源をD65に帰る場合、色温度を6504Kに調整します。色偏差(デフォルトは1.0)は変えません。

アルゴリズム

 アルゴリズムは、JとC、JとS、QとMを組み合わせた3つのアルゴリズムと(もちろん、他の組み合わせも可能です)、全ての変数を調整する“全て”というアルゴリズムを作りました。筆者の裁量で先の3つのアルゴリズムからはac、bc、hの調整機能を除きました。最も扱い易いのはJCアルゴリズムでしょう。スライダーやカーブを使って目標とするカラーレンダリングを調整します。しかし、あくまでアルゴリズムの選択は出力デバイス、周囲環境、設定、部屋の明るさ次第です。

  • “JC”アルゴリズム
    • JはLabのLに近い明度で、CはLchのcに近い色度です。しかし、LabやLchと異なる最も重要な点は、JもCも数々の視覚効果を(同時対比、ハント効果、スチーブン効果など)、考慮している点です。これらの効果はLabではあまり考慮されていませんし、RGBにおいては尚更関係しません。
    • Jの値の範囲は0~100で、LabのLや明度などと同じ、明るさの相対値です。Cの範囲は理論上0~180(但し、これより高い場合もあり得る)になります。
    • JとCで使われる2つのスライダー値の範囲は‐100~+100で、Lab調整の“明度”と“色度”のスライダーと類似しています。
    • このアルゴリズムでは、レッドと肌色トーンの保護が可能で、Lab調整のそれと似ています。
    • コントラストスライダーは、Jに対するS字カーブ効果を加減するもので、明度Jのヒストグラムの平均を考慮しています。
  • “JS”アルゴリズム
    • JCのアルゴリズムと似ていますが、色度の代わりに彩度を使っています。その理由は定義の説明で紹介した、R.Huntの意見を参照して下さい。
    • 肌色トーンの保護はJCより精度が劣りますが、赤のコントロール域は広くなります。
  • “QM”アルゴリズム
    • 相対値ではなく絶対値であるQとMを使ったアルゴリズムです。このアルゴリズムは白の明るさを考慮しています。簡単に言うと、同じJ=100の白でも、太陽光の下で見る方が、暗い部屋で見る時より、明るいということを考慮しています。
    • 白の明るさに関しては、順応輝度LaとCAT02、そして“Yb”(ピペットがないので今のところ加減は出来ません)をパラメータとして使っています。
    • 通常使用では、JCより使い難いアルゴリズムだと思いますが、コントラストの強い画像や、野外のHDRプロセスに使えるでしょう。
    • 肌色トーンの保護はJCより精度が劣りますが、赤のコントロール域は広くなります。
    • Jとは異なる明るさQを使うので、コントラストの調整結果もJCとは異なります。
  • “全てを考慮する”アルゴリズム 
    • CIECAMの変数である、J、Q、C、S、M、Jコントラスト、Qコントラスト、h、肌色トーンの保護(Cだけに影響する)、全てを使って調整するアルゴリズムです。

トーンカーブとカラー

カーブ

  • 露光補正タブと同様、J(明度)とQ(明るさ)に対して働く2つのトーンカーブがあります。どちらか1つを使うことも、2つを使って“明るさ”と“明度”の両方の調整も出来ます。但し、“明るさ”のカーブを動かし過ぎると簡単に調整範囲を超えてしまうので注意が必要です。これは“明るさ”が絶対値だからです。一方“明度”は相対値です。同じJ値でも、影にあるJより昼光に照らされるJの方が明るく映ります。よって、ハイライトやシャドウに対するレンダリングは、“明度”と“明るさ”では異なります。
  • 色に関するカーブは3つあります:色度(最も一般的)と、彩度、そして鮮やかさです。これら3つのカーブは、選んだ変数そのものを加減するのに使います。例えば、彩度のスライダーは、既に飽和に達している色が色域から出てしまわないように加減するために使います。これら3つのカーブは、“レッドと肌色トーンの保護”でも使え、特に肌色トーンは色度で調整するのが適当でしょう。個人的には、色によって飽和レベルは異なるので、カーブの種類は“パラメトリック”を使うのが適当だと思います。

トーンカーブに表示されるヒストグラム

 機能効果が比較できるよう、CIECAM02/16適用前・後の値を 表示出来きます。適用後を見るためには、 ”CIECAM02の出力ヒストグラムを表示する”、というオプションを有効にします。

カラーカーブに表示されるヒストグラム

 色度(彩度/鮮やかさ)の分布を、色度(彩度/鮮やかさ)、或いはLabモードの色度の強さに応じて表示します。ヒストグラムが右に移るほど、その色の鮮やかさが色空間の限界に近いことを示しています。逆に左に移るほど色は褪せてきます。

 横軸は色度(彩度/鮮やかさ)、或いはLabモードの色度の値を表しています。横座標の尺度はオープン系です。

 縦座標は関係するピクセル量を表しています。

色域の制御(LabとCIECAM)

  • このチェックボックスは、作業色空間のデータ量を抑制するために使います。この作用をCIECAMモード(プロセス3)に入れることも出来ましたが、システムの動作が鈍くなるので別にしています。
  • 使われているアルゴリズムは、Lab調整とほぼ同じで、相対的な測色をベースに調整されていますが、CIECAMモードで調整した場合との違いは僅かです。
  • 色域制御を有効にすると、CIECAMのコードが幾つか変換されます。

コンピューターコード、計算精度、動作速度

 プロセス1と3に関するコードは、厳格にCIECAM02モデルの一つ(M.Fairchild,BilyBiggs等による)に従いながら、RawTherapeeへの適用の最適化を図りました。色域の補正にはChangjun Li, Esther Perales, M Ronnier Luo and Francisco Martínez-Verdúの成果を採用しています。

 プロセス1と3はシンメトリックであり、多くの浮動小数点計算を行うので、倍精度を使うことが必須です。そのためメガピクセル当たりの計算に約1秒を要します。しかし、テストを何回も繰り返した結果、倍精度を使わなくとも、画質はあまり変わりません。計算精度の設定は“環境設定/カラーマネジメント”で行います。

 精度に関しては、幾つかチェックポイントを設けて比較したところ(CIECAMの動作前後で)、違いは非常に小さく、例えばXYZの入力値が6432.456の時、出力値は6432.388でした。

CIECAM02/16の限界

 このモデルは完全ではなく、以下にその限界を指摘しておきます。このモデルは一定の画像に対してだけ正しく働きます:

  • Ybの設定に関しては、これまでの説明文の中でその限界を既に示しましたので省きます。
  • CIECAMという色空間はsRGBやProPhotoではありません、Labとも違います。よって、色空間をコントロールするのが難しいのです。CIECAMの色空間は狭い、という問題は以前から指摘されていたもので、スライダー(J、C,sなど)を極端に動かすと思わぬ結果をもたらしてしまうことがあります;ハイライト部分で、黒や白のスポットが現れたりすることがあります。その場合は、RawTherapeeの他の機能(ハイライト復元、インパルスノイズ低減など)を使って補正します。
  • 作業色空間が大きいと(WidegamutやProPhoto)、時折、それより狭いsRGBのような色空間では見られなかった黒い影が画像に発生することがあります(CIECAMは最も色空間が狭い)。
  • ノイズの多い画像はCIECAMに影響します。色ノイズを正しい色と認識してしまうこともあるので、CIECAMのモジュールをノイズ低減モジュールの後に持って来ました。
  • CIECAMモデルは画像の中央ほど効果が高く、周辺部分はあまり考慮されていません。
  • 以上のことから、CIECAMに難しい画像(露出オーバー、色の飽和など)の補正は期待出来ません。一方、通常の画像(多くの画像がそうだと思いますが)に対しては非常に進んだモデルと言えるでしょう。

 CIECAM16が登場したのは2016年で、RawTherapeeでは2020年に導入しました。CIECAM02の殆どの欠点が改良されています。

R.HuntによるCAMの12原則

  1. 色の見えモデルは様々なアプリケーションソフトで使用できるよう、限りなく包括的であるべきだ。但し、このモデルの動的作用が非常に複雑なので、現段階において、適応するアプリケーションは多くない
  2. モデルは非常に暗い対象から、非常に明るく輝く対象まで、広範囲な色刺激の強さを扱うべきだ。これは色刺激に対して単純な対数や増幅機能で応ずるのではなく、モデルの動的応答を最大にする、という意味である。
  3. モデルの色刺激に対する順応性は、星の光の様な非常に低い暗所視から太陽光の様な非常に高い明所視まで、極力広い範囲に及ぶべきだ。そのため、桿体視覚を含むべきであるが、多くのアプリケーションソフトがその様な桿体視覚を無視しているので、それを含まないア プリケーショ ンでも使えるモデルであることが望ましい。
  4. モデルの観視環境は、異なる輝度要素を持つ背景や、ほの暗い、暗い、平均的な周囲観視環境まで広く取るべきだ。画像の映写やディスプレイ表示は多岐に渡るので、モデルは異なる周囲環境をカバーする必要がある。
  5. モデルが使いやすいように、錐体の分光感度にはCIEのx,y,zやx10,y10,z10の線形変換を使うべきだ。また、分光感度の計算には等色関数を使うべきだろう。暗所視データ-は未知の場合が多いが、その場合、近似値を提供する方法を前もって示すべきである。
  6. モデルは様々な認識要因に関し、その適応性の度合いを示すべきだ。ヘルソンジャッド効果については随意である。
  7. モデルは色相(色相角と直角位相)、明るさ、明度、彩度、色度、鮮やかさの予想がつけられるものであるべきだ。
  8. モデルは可逆性を有するべきだ。
  9. 上記の条件を満たす上で、必要以上に複雑なモデルであってはならない。
  10. モデルが特定のアプリケーションソフトのための簡易版であっても、特定条件に対する完全なモデルと同じ予想がつけられるべきである。
  11. 色の見え方の予想が、他のアプリケーションソフトで最適に使われているモデルの予想よりも明白に劣ってはならない。
  12. 関係のない色(他の色から孤立した暗い周囲の中にある色)に関しても、モデルは適用されるべきだ。

更なる情報に関する幾つかのリンク

CIECAM02 Wikipedia [5]

Color Appearance Model - Fairchild [6]

Mémoire Laborie ENS Louis Lumière [7]