【HDRと色彩管理1】光、色、色度図

前回のプロジェクトでHDR表示を作成した時、カラーマネジメントの内容をたくさん理解する必要があると気づきました。見れば見るほど複雑になるので、勉強しながらこの記事をまとめました。
この記事は5つのセクションに分かれています。このセクションでは、光と色、CIE 1931 RGB/XYZ色空間と色度図に焦点を当てて説明しようと思います。私はできるだけ自分なりに分かりやすく説明しようと思います。これらの概念が何なのか、この章を読んでいただければ、はっきりと答えられると思います。
たくさんの定義と名詞の警告!恐れないで。始めましょう!

1.1 我々はどうやって光や色を見るのか
---

色につき、考慮すべき3つの側面があります。
(1)オブジェクト
(2)目
(3)脳
人間の目は非常に複雑な構造を持っており、機械を使って100％復元することは基本的に不可能です。人間の目にはいくつかの重要な構造があります。
(1)瞳孔（Pupil）：虹彩（Iris）の真ん中にある円形の穴を指します。目の絞りに相当します。虹彩の働きにより自律的に大きさが変化して光量を調整しています。
(2)水晶体（Lens）：光線が虹彩を貫いた後、水晶体を通過します。目のレンズに相当します。その幅を拡大または縮小することで、光の焦点範囲を制御できます。
(3)硝子体（Vitreous）：水晶体によって屈折および集束された光は、硝子体を通過します。硝子体は、人間の目の大部分を満たし、網膜を支える厚い半透明のゲル状物質です。
(4)網膜（Retina）：人間の目のフィルムに相当します。人間の目に渡された画像を受け取り、それらを電気インパルスに変換し、視神経によって脳に送信する役割を果たします。
(5)光受容体（Photoreceptors）：網膜は光受容細胞で構成されており、桿体細胞（Rods）と錐体細胞（Cones）の2種類に分けることができます。
>桿体：光に敏感であるため、夜間および周辺視野にとって重要ですが、光受容色素の不足で色覚を発達させにくいです（色を区別できない）
>錐体：主に色の認識に関与し、明るい光でより良く役割を果たします。錐体光受容細胞には主に3つのタイプがあり、赤（約600 nmの波長）、緑（約550 nmの波長）、および青（約450 nmの波長）の光に最も敏感です。この視覚系は三色視覚と呼ばれます。これらの3種類の錐体はそれぞれ、長波（L）、中波（M）、および短波（S）に敏感であるため、L（ong）、M（edium）、およびS（hort）錐体と呼ばれます。

![学堂1-1.1593597906733.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/a8339421-e47a-7fc1-68a9-4a54dec50348.png)


https://chrisbrejon.com/cg-cinematography/chapter-1-color-management/から
結局、脳はすべてのデータ信号を処理する責任を担います。たとえば、網膜にうつる像は上下左右が逆で、脳はそれを逆転します。したがって、実際、私たちが「見る」のは、実際に人間の目に当たる光ではなく、人間の目によって提供される信号に基づいて脳が再構築する効果です。
>What we really see is our mind’s reconstruction of objects based on input provided by the eyes — not the actual light received by our eyes.
—— From [this article](https://www.cambridgeincolour.com/tutorials/cameras-vs-human-eye.htm)

人間の目の構造（3種類の錐体細胞）は、私たちが知覚できる色域の範囲を決定します。他の生き物と比較して、人間の目の色覚能力は非常に無味です。たとえば、シャコには16の異なる色覚細胞があります。しかし、以下で説明するように、幸いなことに3つしかありません。そうでなければ、カラーマネジメントシステムはますます複雑になっていたでしょう。


1.2光と色とは
---

世界では、最初に光があり、次に色がありました。
**「光」とは？**

>光は通常、人間の目で見ることができる電磁波（可視光）を指し、視覚は可視光への知覚です。可視光は、電磁スペクトルの特定の部分にすぎず、一般に400〜700ナノメートル（nm）の波長の電磁波、つまり、紫外線より長く、赤外線より短い波長の電磁波として定義されます。資料により、可視光の波長範囲を定義する方法は異なっています。狭いものでは420〜680 nm、広いものでは380〜800nmの範囲です。 …光は高周波電磁波であると同時に、光子と呼ばれる素粒子で構成される粒子の流れでもあります。したがって、光は粒子と波動の両方の特性を同時に持つか、光は「波動粒子の二重性」を持ちます。
-ウィキから
 
一般に、光は電磁波の形で伝わるエネルギーの一種です。多色光を分散系（プリズムなど）で分割した後、光の波長（または周波数）に応じて順番に並べてパターンを形成することができます。このパターンをスペクトル（Spectrum）と呼びます。人間の目に見えるのは可視スペクトルの一部のみです。これらの可視スペクトルは波長が約400nmから750nmで、可視光と呼ばれます。
![学堂1-2.1593597929295.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/ebca2f57-487a-b3b9-acb7-3df9ce2ac955.png)


**「色」とは？**

>色は、目、脳、および私たちの生活体験により、視覚的に感知された光の色の特徴であり、赤、オレンジ、黄色、緑、青、紫などの名前で光の色のカテゴリを表します。色への知覚は、可視スペクトルの電磁放射による人間の目の錐体細胞の刺激に由来します。色の種類と色の物理的仕様は、反射光の波長によってオブジェクトに関連付けられます。この反射は、光の吸収、発光スペクトルなど、オブジェクトの物理的特性によって決まります。しかし、色への知覚は、光の物理的性質だけでなく、心理学などの多くの要因も含みます。たとえば、色への知覚は、周囲の色の影響を受けることがよくあります。

普段いわゆる「色」とは、実際には、可視スペクトルの電磁放射による人間の目の錐体細胞の刺激です。しかし、脳の色の知覚は、光の物理的性質だけで決まるわけではありません。たとえば、色への知覚は、周囲の色の影響を受けることがよくあります。有名な青いドレスや白いドレスの事件を参照してください。
![学堂1-3.1593597929357.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/61956927-d781-600a-9c1b-77edfd24a596.png)


スペクトルの定義：
>スペクトルとは、複雑な波長の光が分散システム（グレーティング、プリズムなど）で分割された後、光の波長（または周波数）に応じて順番に形成されるパターンです。スペクトルの一部可視スペクトルは、人間の目に見える電磁スペクトルの唯一の部分であり、この波長範囲の電磁放射は可視光と呼ばれます。スペクトルには、人間の脳が視覚的に区別できるすべての色が含まれているわけではありません。それは茶色やピンクなどの色は単一の色ではなくさまざまな色で構成されているからです。
-ウィキから

生活では、スペクトルにある単色光があまりに見られません。さまざまな強度と波長の光が混合して豊富な色世界を形成しています。光を表現する方法の一つとして、横軸に波長、縦軸にスペクトル放射発散度（明るさ、強度、フラックス）をとるスペクトルパワー分布（PSD）を使用することができます。
![学堂1－4.1593597929421.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/50c7f974-db52-0615-9b06-91fc5876a560.png)


Source: https://agraphicsguy.wordpress.com/2018/11/29/basic-color-science-for-graphics-engineers/
 
簡単にまとめると、「光」は、スペクトルを使用して説明できる物理的な概念です。そして、「色」は、可視スペクトルの電磁放射による錐体細胞の刺激に基づいて人間の脳によって得られる視覚的な感知であり、感性的な色濃いが帯びられています。光と色は、理性と感性の絡み合いのように、離れることができません。

---

1.3色の量子化：カラーマッチング関数
---

スペクトルエネルギー分布マップは、実際に光を定量化する方法を提供します。可視光があれば、スペクトル上のすべての単一波長の光を横軸に、各単一波長のエネルギーを縦軸にし、2Dグラフを取得できます。レンダリングなどの多くの分野で、私たちが本当に気にかけているのは、各光の物理的特性ではなく、人間の目にどのような色が見えるかです。スペクトルエネルギー分布マップは、これらのフィールドについて記録する必要があるデータが多すぎます。結局のところ、可視単色光の波長範囲は400nmから750nmまでです。スペクトルエネルギー分布マップが光を定量化する一般的な方法であるというと、色を定量化するためのより簡潔な方法が必要です。
 
光の受信から色の表示まで人間の目はどのように働くかからヒントを得ました。脳の働きを考えると、脳に見えた色は、目の3種類の錐体細胞によって伝達された電気信号です。つまり、光のスペクトルエネルギー分布がどれほど複雑であっても、最終的に人間の脳に到達する信号源は常に3つだけです。さらに、スペクトル分布が完全に異なる2つの多色光があっても、錐体細胞を同じように刺激する限り、私たちの目からみれば、同じ「色」であるかもしれません。つまり、色と光の関係は1対多であり、[メタメリズム（metamerism）](https://en.wikipedia.org/wiki/Metamerism_(color))としても知られている現象です。
 
このようにして、カラーマッチング実験が始まりました。3つの単一波長光を選択し、それらを三元光primariesと呼んでいます。可視スペクトルの単一波長光ごとに、各primaryの強度に対応する3つのパラメーターを見つけて、人間の目が同じように色を認識できるようにします。この方法で可視スペクトルのすべての単一波長光を測定すると、次のテーブルのように、関数r（λ）、g（λ）、b（λ）のセットを取得できます。
![学堂1-5.1593597929484.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/f4ea226d-faaa-2d5c-5f16-408324343b3d.png)


https://medium.com/hipster-color-science/a-beginners-guide-to-colorimetry-401f1830b65aから
この一連の関数は、カラーマッチング関数です。歴史的にも、このような等色マッチング実験が多く行われました。最も有名で広く使用されている（1つ）のは、1931年のCIE1931RGBカラーマッチング関数です。 CIE（International Commission on Illumination国際照明委員会、略語がCOIではなくCIEである理由は、フランス語に由来するからである）は、1913年に設立された組織であり、光と色に関連する国際規格の開発に取り組んでいます。 CIE 1931 RGBで使用される三元光の波長は、700 nm（R）、546.1 nm（G）、および435.8 nm（B）です。
 
上記のカラーマッチング関数は負の値であることに注意してください。たとえば、上の図の610nmの波長の場合、その3つの関数値は次のようになります。
λ=610nm
r（λ）= 0.34756
g（λ）= 0.04776
b（λ）= -0.00038
 
つまり、3つの正の値の三元光を使用することで、可視スペクトルのすべての単一波長光を表すことはできません。負の値を導入する必要があります。では、実験で「負の数の光」を取得するにはどうすればよいでしょうか。 520nmの波長での実験の概略図を以下に示します。
![学堂1-6.1593597929546.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/8fb17df5-5af8-0c73-5dd8-29d0e67ba785.png)


https://medium.com/hipster-color-science/a-beginners-guide-to-colorimetry-401f1830b65aから
 
520nmのような明るい緑色を再現するには、「負の赤色光」を使用する必要があることがわかります。これは、Reference Lightの側面とPrimary Red Lightの反対側に特定の強度値を持つ赤色光を使用することで相殺できます。これは赤色光の値が負です。
 
次のアニメーションは、可視スペクトルの等色マッチング実験の完全なプロセスを示しています。
 ![image013.1593862850513.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/3b2548cd-fbbf-0e2d-be7b-b0413e4656c8.gif)

https://medium.com/hipster-color-science/a-beginners-guide-to-colorimetry-401f1830b65aから
 
カラーマッチング関数は、単一波長の可視光源の測定を表しますが、光の重ね合わせにより、任意のスペクトルの光源に対してこのようなマッチング関数を実行できます。RGBを3次元空間の3つの座標軸とし、CIE 1931カラーマッチング関数の3つの関数を3次元空間に順番に描画すると、3次元空間にカラーラインを取得できます。この曲線はスペクトル軌跡（spectral locus）と呼ばれます。

![学堂1-8.1593597929674.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/5097b480-1601-9f72-1b6c-d1133a027491.png)

https://agraphicsguy.wordpress.com/2018/11/29/basic-color-science-for-graphics-engineers/から
 
この曲線を原点に向かって、または原点から離れてスケーリングすることにより、この空間内のさまざまな強度の単色光の表現を表すことができます。また、この曲線上の各点に原点を接続し、放射線が得られました。各光線を無限大の方向に延長して一つの曲面に形成しました。この曲面はさまざまな波長のさまざまな明るさの単色光を表します。この曲面で囲まれたボリューム空間は、さまざまな波長とさまざまな明るさの光源を混合することで観察できるすべての色を表します。下記のビデオは、このプロセスを非常に鮮明に示しています（出典：Call of DutyのHDR、このPPTはすごい）：

 
上記の3次元空間は、CIE 1931RGB色空間（次のCIE 1931 XYZ色空間と混同しないように注意してください）であり、CIE1931RGB色マッチング関数の各データセットによって定義されます。任意の可視光について、その色空間の三刺激値（tristimulus values）を使用してそれを表すことができます（前述の条件付き等色現象を思い出してください。これは、同じ三刺激値を使用してスペクトル的に異なるさまざまな光源を表すこともできることを意味します） ：
>Tristimulus values measure light intensity based on the three primary color values (RGB), typically represented by X, Y, and Z coordinates. The tristimulus values system is the foundation of color language, also referred to as the CIE color system, and is used to communicate precise color values around the world.
—— [From this article](https://blog.hunterlab.com/blog/color-measurement/understanding-tristimulus-values-taking-guesswork-color-measurement-instrumentation/)
人間の目に対応すると、スペクトルに対する3つの錐体の感度は、LMS色空間（Lは長い、Mは中間、Sは短い）を形成していると簡単に考えることができます。これは、色空間を簡単に定量化するために使用できます。

1.4最適化の維持：負の値を排除する
---
前述のように、CIE RGB色空間には負の値があり、これらの負の値はすべてRコンポーネントに表示されます。これらの負の値を排除するために、CIEは、RGB色空間から別の色空間XYZ色空間を拡張するという良いアイデアを思いつきました。3×3空間変換マトリックスを使用して、2つの色空間間で変換できます。 XYZ色空間の3つの基本ベクトルは、RGB色空間のような実際の物理的意味を持って実際の物理的な光ではなく、XYZの3つの軸は完全に想像されているため、XYZは想像色とも呼ばれます。これは、現実の世界でXYZ 3つの物理光を実際に構築し、上記のようにそれらに基づいてカラーマッチング実験を行うことができないことを意味します。しかし、XYZ色空間には多くの利点があります。最も明白なのは、XYZ色マッチング関数がすべて正であるということです。もう1つの重要な機能は、Y軸が意図的に選択されており、その方向が明るさ関数と一致していることです。つまり、Y値が大きいほど、明るさが大きくなります。さて、ここに新しい名詞の光度関数（luminosity function）があります。とりあえずスキップしましょう。
 
これはCIE1931XYZ色空間であり、カラーマッチング関数x（λ）、y（λ）、z（λ）によって定義されます。
![学堂1-9.1593597929738.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/9f0146ad-5ee8-9dd5-6608-e46879db7935.png)


https://agraphicsguy.wordpress.com/2018/11/29/basic-color-science-for-graphics-engineers/から
 
このビデオは、RGB色空間からXYZ色空間への変換プロセスを非常に鮮明に表現していることに注意してください（出典：Call of DutyのHDR。）。
 
前述の新しい用語である光度関数について説明します。その定義は以下のように示します。
>A luminosity function or luminous efficiency function describes the average spectral sensitivity of human visual perception of brightness.
—— From wiki
 
簡単に言えば、人間の目は、同じエネルギーの条件下では、赤色光と青色光は緑色光よりも暗いと考えており、光度関数は、同じエネルギーで異なる波長の単色光に対する人間の目の光度知覚の変化を表します。 この関数は、色覚異常などの要因の影響を受ける可能性があります。下の図の緑（タンパク眼）、赤（緑の失明）、および黄色（CIE 1931標準）は、さまざまな条件下での光度関数曲線を表しています。
 
https://medium.com/hipster-color-science/a-beginners-guide-to-colorimetry-401f1830b65a
 
CIE 1931 XYZ色空間のY軸方向は、基本的に上記の光度関数曲線と一致しています（上の図から、CIE 1931 XYZ色空間の光度関数曲線とy（λ）関数曲線が基本的に一致していることがわかります）。つまり、XYZ空間で色のY値を観察することにより、色の明るさ情報を取得できます。
 
また、CIE1931XYZとCIE1931RGBは、同じ色データの異なる表現であることに注意してください。XYZ色空間にはさまざまな利点があるため、通常、このXYZ空間で色を定義して説明しますが、カラーデータをRGB空間に変換するには、3×3空間変換行列が必要です。

1.5次元削減を継続する：明るさを排除する
---

XYZ色空間は素晴らしいですが、そのような3次元空間で色を議論するのは少し難しいです。多くの場合、実際には色の彩度と飽和度のみを考慮し、明るさは考慮しません。つまり、色の表現を3次元から2次元の表現に減らすことができます。一般に、XYZ色空間から平面X + Y + Z=1に色を投影できます。この2次元色度色空間（chromaticity color space）は、CIE 1931 xyz色空間と呼ばれます（本当に小文字の名前に変更しただけです）。x+y + z = 1という制約がある場合、色度を指定するために実際に必要な値は2つだけです。通常、xyを残してzをドロップすることを選択します。つまり、上記のx + y + z = 1平面をXY平面に再投影して、色度を指定するためにxy値のみを使用できるようにします。
 
これは有名なCIE1931xy chromaticity diagram（つまり色度図）であり、明るさを考慮せずに見ることができるすべての可視色を表しています。 この馬蹄形の境界は、単色光の各波長に対応する色、つまりスペクトル軌跡（spectral locus）に対応します。
![学堂1-11.1593597929863.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/24b0fa8d-3111-47fe-f8aa-79dfc46480ea.png)


スペクトル軌跡線で囲まれた領域は、さまざまな波長の単色光を混合することで知覚できる色を表しています。
![学堂1-12.1593597929926.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/5b8c0f9e-5908-3b9d-a1c3-11fd15434591.png)

色度図は、色について話し合うための基準を提供します。あらゆる分野の人々が、ハードウェアの表示などの要因による曖昧さなしに、色度図の特定の色について話し合うことができます。

---
UWA Technologyは、モバイル/VRなど様々なゲーム開発者向け、**パフォーマンス分析**と**最適化ソリューション**及び**コンサルティングサービス**を提供している会社でございます。

今なら、UWA GOTローカルツールが**15日間に無償試用**できます！！
よければ、ぜひ！

UWA公式サイト：https://jp.uwa4d.com
UWA GOT OnlineレポートDemo：https://jp.uwa4d.com/u/got/demo.html
UWA公式ブログ：https://blog.jp.uwa4d.com