CIECAM02/jp: Difference between revisions

From RawPedia
Jump to navigation Jump to search
m (/* CIECAM02の限界 *Change the written style/)
(update CIECAM cont'd)
Line 3: Line 3:
'''By J.Desmis'''
'''By J.Desmis'''


== CIECAM02(CIE色の見えモデル2002)について==
==CIE色の見えモデル02と対数符号化==
===イントロダクション===
 以下の説明は次の2つのモジュールに関係します(どちらのモジュールに関する説明なのか、その都度明確にしてあります:
* ローカル編集タブに備わっている“対数符号化”
* 高度な機能のタブに備わっている“CIE色の見えモデル02”
 色の見えモデルのアルゴリズムは、前者のモジュールでは一部の機能に、後者のモジュールでは全ての機能に使われています。CIE色の見えモデル02は多くの有益性を備えていますが、ダイナミックレンジの広い画像には適しません。色域が狭いので、特に強いハイライトの処理に弱点があります。しかし、この人間の目の色の知覚を真似た色の見えモデルに、対数符号化を使ったトーンマッピングを組み合わせることで欠点を補い、写真撮影でしばしば直面するダイナミックレンジの問題を解決しています。画像の数学的解析及び撮影時の画像の認識(センサー、カメラ内部での処理、ソフトウェアによる処理など)と、ユーザーの目と脳による生物学的な知覚の違いの調和を図ります。


===イントロダクション-歴史===
===対数符号化===
 人の目によって知覚される色の体系作りは長い間試みられてきました。19世紀ごろに始まり、多くの努力が払われてきましたが、大きな進展が見られたのは20世紀に入ってからです。
 Rawtherapeeで使われているこの部分のコードは以下のコードに似ています:
* Alberto Griggio が設計した、ARTの“対数トーンマッピング”のコード。
* Aurélien Pierreが設計したDarktableの“フィルミック”のコード。
 どちらも、ACES(アカデミー色符号仕様)によって開発された対数符号から着想したものです。


 筆者は視覚システムに関する生理学の専門家でも、複雑な測色学の研究者でもありませんが、モデルを理解するために必要最小限と思われる情報を集めました。それから更に興味を持った読者がウェブを使って情報を集めたり、筆者が追加したりしました。
====3つのプロセスに基づいたアルゴリズム====
 このアルゴリズムは最初に、画像(HDRを含む)データの中の最も暗いブラックと、最も明るいホワイトを取り出し、理論的平均グレー(18%グレー)とそれらの差を計算します。場面の明るさに関係する明度の指標Evで表されます。ブラックとホワイトのEv値は、画像の平均輝度或いは中間輝度(Yb%)と共に、RGB値のバランスを変えるために使われます。そうすることで画像のレンダリングを殆ど変えることなく、シャドウ部分を明るく、ハイライト部分を暗くして、実質的にコントラストを落とします。


 周知のように、写真の世界では、今でも50年前のモデルが使われています;RGBと、その派生モデル(HSV、HSL、CMYK。。。)、それにXYZとLab及びその派生モデル(Luv、Lch)です。ここでは誰でも知っているRGBモデルについて説明することは省きます。従属的なこと以外、CAM(色の見えモデル)が関係するRGBの要素は何もないからです。XYZ(1931年)というモデルは、人間の目が知覚する色を忠実に表現するためにCIE(国際照明委員会)が行った最初のステップでした。要約すると、色は、三刺激値、CIE標準観測者、スペクトル電力分布から得られる、X、Y、Z、という3つの値で特徴付けられる、というものです。この色モデルは、RawTherapeeの中にも取り入れられており、特にホワイトバランスはこのモデルが考慮されています。XYZは当初からCAMのことを考えて作られた訳ではないと思いますが、今日の知覚条件で色をモデル化出来るようになったその前身とも言え、大躍進と呼べるモデルでしょう。
 この後に続く2つのプロセスは、ユーザーが手動で行う補正です:画像のローカルコントラストを上げたり(“対数”変換時に下がったローカルコントラスト)、表示デバイスに関する観視環境を調整したりします。


 LabはXYZモデルとは距離を置く形で、1976年、CIEにより設計された色モデルです。特徴は、輝度の強さを示すパラメータと、色を表現する2つの補色次元のパラメータからなる、色モデルです。人間の視覚が色の違いを認識するのに近い形で計算する、という明確な目的で研究されてきました。Labモデルは、RawTherapeeの中でも大いに使われており、殆どの調整機能(シャープ化、ノイズ低減、トーンマッピング、Lab調整など)のベースとなっています。CAMの特性も幾つか取り入れていますが、その有益性はまだ多くありません。R.Huntの功績により、CIMCAM97から更に発展したのがCIECAM02で、写真で利用できる一般的な最初のモデルとなりました。可逆性を有し、比較的シンプル、純粋に色の認識だけを配慮したモデルではなく、色々なパラメータを求めてきた研究者の多くの成果が使われています。幾つか例を挙げると:
===色の見えモデルの定義===
#同時対比:色の見え方が、その周辺の色の環境で変わってくる現象のこと。例えば、背景の色が白か黒で、同じ物体の色が異なって見えてしまう。背景色が暗いほど、色がより鮮やかに見える。
 色の見えモデルは、人間の目の色に対する知覚特性を数学的に表現しようとするモデルです。例えば、色の見え方が、その物体色の物理的な計測値と一致しないような観視環境を考慮しています(色の見えモデルの色空間は、RGBやXYZとは異なります、Labは似ている部分がありますが、やはり同じではありません)。
#ハント効果:輝度で色合い(鮮やかさ)が増すこと。色の映りは、暗い中でより、明るい中での方が、活き活きとしていて、コントラストも強い。
#スチーブン効果:輝度によって知覚するコントラストが増加すること。輝度が増すと、暗い色がより暗くなったように見えてしまい、明るい色はより明るく見えてしまう現象のこと。
#ヘルムホルツ‐コールラウシュの効果:輝度と色度によって明るさが変わる現象。同じ輝度の中では、無色より色のある物体の方が明るく見える。純色に近いほど明るく見える。
#色順応:幾つかの色刺激に対して、人間の視覚システムが持つ調整機能のこと。時空環境によって、人間の視覚は色の知覚感度を変えられる。「色の見えモデル」はこれを基本にしている。


 色順応とは、人間の視覚システムが持つ、光源の変化に対応する能力です。言い換えると、人間の目は光源に順応して色を認識するようにできており、物の色を正確に知覚することが出来るのです。例えば、白熱球の下では、白い紙が初め黄色に見えます。しかし、人間の目は自動的に黄色い光源による色モデルを作るので、暫くすると白い紙として見ることができます。もし私たちの目が、異なる光源により変化する色しか認識できなければ、さぞかし不便でしょう。人類誕生の時から、人間は、朝であろうが、昼であろうが、夕方でも、その果実が熟しているかどうか見極めなければならないからです。色順応という能力がそれを可能にしているのですが、それが様々な光学的錯覚を生み出す元であることもまた然りです。RawTherapeeのユーザーなら名前くらいは聞いたことがあると思いますが、従来の色順応モデルは「ブラッドフォード変換」と呼ばれるものです。
===CIE色の見えモデル02===
 このモジュールは、異なる光源における、人間の目の色に対する知覚特性を真似るように設計された“CIE色の見えモデル02”をベースにしています、例えば画像を見る時の様々な環境を考慮しています。それぞれの色を計算に入れ、人間の目がその色を知覚する見え方に近くなるように変えます。また、出力を意図した環視条件(モニター、TV、プロジェクター、プリントなど)に適応させて、色の見え方やコントラストが維持されるようにします。


 備考:ここまでの説明が、マンセル表色系の補正であることを疑う人はいないでしょう。CIE色の見えモデルには幾つか弱点があるものの、原則的にはマンセル表に沿って作られています。
===色の見えモデルが考慮している人間の目の知覚特性===
* 同じ色でも、それを見る周囲の明るさ・暗さで見え方が変わります。周囲が暗いほど、物体の彩度が下がって見えます。
* 物体の見え方は影の中より明るい光の中の方が、より明るく、コントラストが強く見えます。
* 輝度が増加すると、暗い色はより暗く、明るい色はより明るく見えます。
* 同じ明るさの下では、色彩のある物体の方が、色彩のない物体より明るく見えます。最も鮮やかな色が一番明るく見えます。
* 色順応は光の環境に応じて変化する人間の視覚能力のことです。言い換えると、人間の目は光源が変わっても物体色を変えずに見ることが出来ます。例えば、白熱球の光の下では、白い紙が黄色に見えますが、人間の目は黄色い光の下で物体色を見る色モデルを自動的に作る能力があるので、白い紙として見ることが出来ます。もしも、こうした能力がなく、光源が少し変化しただけでも常に物体の色が変わって見えるとしたら、さぞかし不便だろうと思います。人類誕生の時から、人間は朝昼晩の異なる光の環境の中でも、果実が熟しているかどうか知る必要がありました。それを可能にしているのが色順応の能力です。


 CIECAM02について初めて興味を持ったのは2007年で、これでスプレッドシートを作れば、最適な入力ICCプロファイルを作れると考えました。2012年の初頭、色見本‐カラーパレット(肌や、空の色など)はないものか、というユーザーからの要望に対応しようとしました。それによって、比較や反復プロセスで、より優れたホワイトバランス調整ができると思ったのです。また、私はその頃光源の違いでカラーレンダリングも変わるという、CRI(カラーレンダリング指数)の概念について勉強していました。CRIの値が低いと、同じ色温度の場合、レンダリングが悪化するという概念です([[Color Management addon/jp|カラーマネジメント-補足]]の項を参照)。
===色の見えモデルが使うデータと語彙===
[[CIECAM02/jp#Data|データ]]


 CIECAM02に基づいたこのモジュールは、上の2点について作業するための基本的要素は持っていますが、極めて重要な要素である、ピペットがまだ欠けています(組み入れるのは容易ではありません)。
[[CIECAM02/jp#Some definitions|幾つかの定義]]


 長い間、私はCIECAM02を、斬新な色モデルというより、実際のプログラムに作り上げるには難しい代物と考えていました。それに、Labなどに比べ、努力の割に報われる成果が小さいと思っていました。ところが、同僚のリクエストでファイルをもう一度開けた時に、Photoshopがプラグインされていて、そこでCIECAM02の効果を初めて知って驚きました。今では、パーフェクトではありませんが(画像によっては全く使い物になりません)、この色モデルは、カラーマネジメントの点で、今日最も効果の高いものであると確信しています。私が提案したこのモデルのモジュールは、“入門編”です。もっとCIECAM02のデータを集めれば、RawTherapeeに既に備わっている機能(様々なカーブを持つLab調整やトーンマッピングなど)に近いものを作ることが可能でしょう。おそらく質が大きく向上すると思います。
===3つの処理からなる色の見えモデル02===
# “元”或いは“画像条件”:撮影条件やそれに該当するデータのことで、最初の処理は、色の見えモデルで補正する前に、これの条件・データを通常化(例:D50のホワイトバランスで)することです。
# 2番目の処理:1のデータを調整することです。
# 3番目の処理:最終画像を見る条件(モニター、TV、プロジェクター、プリントなど)、同様にその周囲環境を考慮します。2番目の処理から得たデータを観視条件と周囲環境を考慮して、出力媒体に適用します。


 有効な関係書物がないので、この複雑なモデルの理解には苦労します。以下の説明の中には個人的な解釈に基づくものもあります。誤りがあるかもしれないので、専門家の方が読んで、おかしいと思われたら指摘してもらいたいと思います。
===2つのタブ(高度な機能とローカル編集)で使われる色の見えモデルの違い===
* 高度な機能タブの“色の見えモデル02”:2012年にRawTherapee特有の機能として開発されたもので、全ての機能に色の見えモデル02の概念が使われています。機能の水準も変えられます:
** '''標準:'''基本的な処理に必要な機能と変数が備わったモードです。
** '''高度:'''高度な処理に必要な機能が含まれたモードです。


===幾つかの定義===
* ローカル編集タブに入っている“対数符号化”は、単純化した色の見えモデルの機能を備えています。対数符号化の効果が更に強くなります。機能水準を変えることも出来ます:
#明るさ(CIECAM02でBrillianceと呼ぶ用語):
** '''基本:'''対数符号化に特化した機能と変数で構成されています。
#:ある色刺激から知覚する光の量=明るい、つやつやしていると言った感じの色刺激の指針
** '''標準:'''人間の目が持つ視覚特性を考慮するために必要な色の見えモデルの機能が補間的に備わっています。
#明度(LabやCIECAM02でLuminanceと呼ぶ用語):
** '''高度:'''色の見えモデルの機能(“すべて”)と変数に加え、マスクも備わっています。
#:類似した観視環境で白に見える色刺激に対して言う、その色刺激の透明度のこと
#色相と色相角度(Labの一部とCIECAM02で使われる用語):
#:赤、緑、青、黄色‐で近い色を表現することができるその色刺激の色相角度
#鮮やかさ(CIECAM02で使われる用語):
#:灰色と比べて、知覚される色の量。鮮やかさと感じる色刺激の指針
#色度(LabやCIECAM02で使われる用語):
#:同一の観視環境で白に見える色刺激の明るさに対して言う、その色刺激の“色合い”のこと
#彩度(CIECAM02で使われる用語):
#:色刺激の明るさに比較した、その色刺激の色合いのこと


 これら概念を計算式でまとめると:
===色の見えモデル02と対数符号化の使用例===
#色度=鮮やかさ/白の明るさ
 機能の効果と限界を知るために5つの例を用意しました。
#彩度=鮮やかさ/明るさ
#明度=明るさ/白の明るさ
#上記3つの関係から、彩度=色度/明度とも置き換えられます。


 CIECAM02はこれら概念を使うにあたって、幾つか相関関係にある変数も作っています:
====例1 (高度な機能タブの色の見えモデル)====
 著しく露出不足の部分があるハイダイナミックレンジの画像を、プロセス1(元或いは画像条件)を使って処理してみます。色の見えモデルを使って、元の光の環境を変えます。


 J : 明度あるいは透明度のことで、LabのLに近い
=====準備=====
 濃い影と強い逆光、両方が入っている処理の難しい画像です。まず、画像をRawTherapeeのデフォルト設定を使って開き、“カラーピッカー”をスクリーンショットのように置きます。これらを使って、この後の調整による変化を確認します。


 C : 色度のことで、Labの色度に近い
Rawファイルへのリンク:
[https://drive.google.com/file/d/1ctjOWX2lVmgcAzJtBwt69FGpxZOq-LyP/view]


 h : 色相角、Labの色相に近い
[[File:Ciecam light prepa.jpg |600px|thumb|left|色の見えモデルの下準備]]


 H : 色相、色は4色(赤、黄色、緑、青)間の基本色2色の組み合わせで表現されます。例えば、30B70Gあるいは40R60Y。


 Q : 明るさ


 M : 鮮やかさ


 ac, bc : Labのaとbに近い


 ところで、色度、鮮やかさという近い関係の変数が既にあるのに、更に似たような‘彩度’を別な変数として取り入れているのは何故でしょうか?Huntは次のように述べています:


:: ''「色の知覚に関する3つの基本要素は、色相、明るさ、鮮やかさである。明るさには明度という、相対する概念があり、鮮やかさには色度と彩度があるが、色相は何も持たない。色度の相関関係は、色の違いを表す数式の中で幅広く使われているが、最近は色の科学や技術の中で‘彩度’が使われることは少なくなってしまった。おそらくこれは、多くの産業界で色の違いを評価する場合は、同一の光源の中で均一な色サンプルを使うことが多いからであろう。この様に、視角角度の狭いサンプルに対しては、‘色度’が適した変数である。ところが、視角角度の広いサンプルの場合は、‘彩度’の相関関係の方が適していると思われる。実践では、物体を一定方向の光で見ることが多く、その様な環境では、影の中でも一定である‘彩度’の方が、色度より便利な認識方法なのである。画像イメージでは、芸術家やコンピューターグラフィックス関係者が、一定彩度の色を頻繁に使っている。光学イメージでは、彩度は暗い部分の大きい画像で重要な知覚変数である。最近、試験的な研究が成果を上げており、彩度の相関関係の理解は大きく進んでいる。」.''
 
 
 
 
 
 
 
 
 
 
 
 
=====画像を明るくする=====
 高度な機能のタブを開き、“色の見えモデル02(CIECAM02)”を有効にします。“画像条件”の中の“撮影時の周囲環境”のドロップダウンリストから“暗い”を選択します。何とこれだけです!
 
[[File:Ciecam ligh.jpg |600px|thumb|left|周囲が暗い画像を明るくする]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 更に、“画像の調整”機能を使って調整を加えてみます。
* 明るさ(J)やコントラスト(J)を変える。
* 色度(C)を変える。
 
 更に、高度な機能水準も試してみます。
* コンボボックスで画像の調整のアルゴリズムを“明度 + 彩度(JS)に”変える。
* 彩度(S)を調節し、先に色度(C)を調節した時との違いを比べる。それぞれ、シャドウ部分、中間トーン部分、ハイライト部分での違いを見る。


==3つのプロセス==
==3つのプロセス==

Revision as of 01:16, 5 December 2020

CIE色の見えモデル2002とCAT02ホワイトバランス

By J.Desmis

CIE色の見えモデル02と対数符号化

イントロダクション

 以下の説明は次の2つのモジュールに関係します(どちらのモジュールに関する説明なのか、その都度明確にしてあります:

  •  ローカル編集タブに備わっている“対数符号化”
  •  高度な機能のタブに備わっている“CIE色の見えモデル02”

 色の見えモデルのアルゴリズムは、前者のモジュールでは一部の機能に、後者のモジュールでは全ての機能に使われています。CIE色の見えモデル02は多くの有益性を備えていますが、ダイナミックレンジの広い画像には適しません。色域が狭いので、特に強いハイライトの処理に弱点があります。しかし、この人間の目の色の知覚を真似た色の見えモデルに、対数符号化を使ったトーンマッピングを組み合わせることで欠点を補い、写真撮影でしばしば直面するダイナミックレンジの問題を解決しています。画像の数学的解析及び撮影時の画像の認識(センサー、カメラ内部での処理、ソフトウェアによる処理など)と、ユーザーの目と脳による生物学的な知覚の違いの調和を図ります。

対数符号化

 Rawtherapeeで使われているこの部分のコードは以下のコードに似ています:

  •  Alberto Griggio が設計した、ARTの“対数トーンマッピング”のコード。
  •  Aurélien Pierreが設計したDarktableの“フィルミック”のコード。

 どちらも、ACES(アカデミー色符号仕様)によって開発された対数符号から着想したものです。

3つのプロセスに基づいたアルゴリズム

 このアルゴリズムは最初に、画像(HDRを含む)データの中の最も暗いブラックと、最も明るいホワイトを取り出し、理論的平均グレー(18%グレー)とそれらの差を計算します。場面の明るさに関係する明度の指標Evで表されます。ブラックとホワイトのEv値は、画像の平均輝度或いは中間輝度(Yb%)と共に、RGB値のバランスを変えるために使われます。そうすることで画像のレンダリングを殆ど変えることなく、シャドウ部分を明るく、ハイライト部分を暗くして、実質的にコントラストを落とします。

 この後に続く2つのプロセスは、ユーザーが手動で行う補正です:画像のローカルコントラストを上げたり(“対数”変換時に下がったローカルコントラスト)、表示デバイスに関する観視環境を調整したりします。

色の見えモデルの定義

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

CIE色の見えモデル02

 このモジュールは、異なる光源における、人間の目の色に対する知覚特性を真似るように設計された“CIE色の見えモデル02”をベースにしています、例えば画像を見る時の様々な環境を考慮しています。それぞれの色を計算に入れ、人間の目がその色を知覚する見え方に近くなるように変えます。また、出力を意図した環視条件(モニター、TV、プロジェクター、プリントなど)に適応させて、色の見え方やコントラストが維持されるようにします。

色の見えモデルが考慮している人間の目の知覚特性

  •  同じ色でも、それを見る周囲の明るさ・暗さで見え方が変わります。周囲が暗いほど、物体の彩度が下がって見えます。
  •  物体の見え方は影の中より明るい光の中の方が、より明るく、コントラストが強く見えます。
  •  輝度が増加すると、暗い色はより暗く、明るい色はより明るく見えます。
  •  同じ明るさの下では、色彩のある物体の方が、色彩のない物体より明るく見えます。最も鮮やかな色が一番明るく見えます。
  •  色順応は光の環境に応じて変化する人間の視覚能力のことです。言い換えると、人間の目は光源が変わっても物体色を変えずに見ることが出来ます。例えば、白熱球の光の下では、白い紙が黄色に見えますが、人間の目は黄色い光の下で物体色を見る色モデルを自動的に作る能力があるので、白い紙として見ることが出来ます。もしも、こうした能力がなく、光源が少し変化しただけでも常に物体の色が変わって見えるとしたら、さぞかし不便だろうと思います。人類誕生の時から、人間は朝昼晩の異なる光の環境の中でも、果実が熟しているかどうか知る必要がありました。それを可能にしているのが色順応の能力です。

色の見えモデルが使うデータと語彙

データ

幾つかの定義

3つの処理からなる色の見えモデル02

# “元”或いは“画像条件”:撮影条件やそれに該当するデータのことで、最初の処理は、色の見えモデルで補正する前に、これの条件・データを通常化(例:D50のホワイトバランスで)することです。 # 2番目の処理:1のデータを調整することです。 # 3番目の処理:最終画像を見る条件(モニター、TV、プロジェクター、プリントなど)、同様にその周囲環境を考慮します。2番目の処理から得たデータを観視条件と周囲環境を考慮して、出力媒体に適用します。

2つのタブ(高度な機能とローカル編集)で使われる色の見えモデルの違い

  •  高度な機能タブの“色の見えモデル02”:2012年にRawTherapee特有の機能として開発されたもので、全ての機能に色の見えモデル02の概念が使われています。機能の水準も変えられます:
    •  標準:基本的な処理に必要な機能と変数が備わったモードです。
    •  高度:高度な処理に必要な機能が含まれたモードです。
  •  ローカル編集タブに入っている“対数符号化”は、単純化した色の見えモデルの機能を備えています。対数符号化の効果が更に強くなります。機能水準を変えることも出来ます:
    •  基本:対数符号化に特化した機能と変数で構成されています。
    •  標準:人間の目が持つ視覚特性を考慮するために必要な色の見えモデルの機能が補間的に備わっています。
    •  高度:色の見えモデルの機能(“すべて”)と変数に加え、マスクも備わっています。

色の見えモデル02と対数符号化の使用例

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

例1 (高度な機能タブの色の見えモデル)

 著しく露出不足の部分があるハイダイナミックレンジの画像を、プロセス1(元或いは画像条件)を使って処理してみます。色の見えモデルを使って、元の光の環境を変えます。

準備

 濃い影と強い逆光、両方が入っている処理の難しい画像です。まず、画像をRawTherapeeのデフォルト設定を使って開き、“カラーピッカー”をスクリーンショットのように置きます。これらを使って、この後の調整による変化を確認します。

Rawファイルへのリンク: [1]

色の見えモデルの下準備










画像を明るくする

 高度な機能のタブを開き、“色の見えモデル02(CIECAM02)”を有効にします。“画像条件”の中の“撮影時の周囲環境”のドロップダウンリストから“暗い”を選択します。何とこれだけです!

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










 更に、“画像の調整”機能を使って調整を加えてみます。

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

 更に、高度な機能水準も試してみます。

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

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

標準(及びシンメトリック)方式とCAT02ホワイトバランス方式

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

標準方式

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

シンメトリック

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

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

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

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

CAT02の機能とは

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

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

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

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

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

CAT02の調整

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

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

何を調整するか?

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

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

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

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

 光源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適用前・後の値を 表示出来きます。適用後を見るためには、 ”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の限界

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

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

 将来のCIECAMでは、今の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 [2]

Color Appearance Model - Fairchild [3]

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