自分の知っている範囲のACESやカラースペース周りのまとめ。
勉強中のため間違ってたら優しく指摘してください...
画像全部自前にしたかったがデータが見つからなくて断念。計算式は難易度が高かったけど今度試したい。
光
色(光)は現実には電磁波であり、ガンマ線とか紫外線と同じ。
電磁波が物体にあたり、吸収されず反射された波長に、目の3種類の視細胞のL錐体(赤錐体)、M錐体(緑錐体)、S錐体(青錐体)が反応する反応度合いによって色を区別している。 (もう一つ暗所で機能する桿体があるが省略)
そのL,M,S錐体が反応する波長の範囲が380nm-760nmで、可視光線と呼ばれる。
色域(ガマット)
等色実験
実際に波長を混ぜ、どのくらい混じると何色になるかを決めるための実験
下の図の上下の色が同じになるように見ながら各ライトの出力を調整する。
3種の原刺激(RGB)だけで様々な色を再現できるというのが目標だったようですが、再現できないものが存在したため、マイナス値を許容し、その部分は目標の色に光を足すことにした。
CIE 1931 RGB等色関数とrg色度図
ここの部分の数値が決め打ちのはずだがCSV等でダウンロードできるサイトがほぼアクセス切れてて見つからなかった。
試せていないが今後出てくる各種データはColourというPythonパッケージに入っていそう。
余力が出たら試したい。
上記、等色実験から得られた分布が以下のようになり、計算してz-upでの、赤:X、緑:Y、青:Zにマッピングし、Z軸を潰す。
等色関数は等色実験の試験光と等色になる原色のバランスを表す値。
輝度を考慮した計算式は以下のような感じらしいが、λに当たる手頃な等色関数の値が見つからなかった。
Lr = 1 # r luminance scale Lg = 4.5907 # g luminance scale Lb = 0.0601 # b luminance scale λ = 610nm R = r(λ)/Lr = 0.34756 G = g(λ)/Lg = 0.04776 B = b(λ)/Lb = -0.00038
そうするとよく見る色域に少し形が近づく。
CIE 1931 XYZ等色関数とxy色度図
上記を「X+Y+Z=1」となるように正規化したものが以下。
この正規化された等色関数のデータはRochester Institute of Technologyや、XYZ CIE.dat等でダウンロードできる。
各カラースペース
そのCIE xy色度図上に各カラースペースの色域を三角形で載せたのが以下の画像。
Rec709≒sRGBなので、いかに色域が低いかがわかる。
各カラースペースの色域は、描かれた三角形で囲まれた内側のことを指し、
各頂点がそれぞれRGBのどれかが1でほか2つが0となるPrimaryと呼ばれる基準点となる。
各カラースペースで、この色域(三角形の範囲)を超えた分は、すべてクランプされたような状態になってしまう。(値を保持できても表現できない)
そのためsRGB等の色域が少ないカラースペースの場合には、緑や青などの値がクランプされて潰れて階調がでなくなる。
XYZからRGBへの変換や、各カラースペース間は、Color Matrixと呼ばれる3x3の数値を計算させることで変換する。
色度図の見方と名称
ガンマ
これは色域とは別で考える。
sRGBのガンマは2.2と言われるが厳密には暗部あたりが結構違う。
たまに見かけるLinear sRGBとはガンマが1.0でsRGBの色域という意味。
カラースペースの話の際に、ガンマを含むのか色域のみなのかを区別しないと大変なことになる。
いろいろな計算式と種類があるが、映像系で見かけるのはガンマ2.2(sRGB)、2.4(Rec.709)、1.0(リニア)の3つが多い。
トーンマップともまた別なので注意が必要。
引用元
www.slideshare.net