表色系の相互変換について

sRGB, XYZ, xyY, CIELab, マンセル, HSL, CMYKあたりの相互変換の方法についての個人的な覚書です。

マンセルからxyY

マンセルからxyYに変換する式は残念ながらまだ決まっていない。変換表から線形補間を用いて計算する。変換表は以下のページから入手できる。(all.datというやつ)

Y値は以下の式を使うと、V値が10のとき、100になる。

無彩色のとき、x = 0.313, y = 0.329 (D65)。

xyYからXYZ

xyYからXYZに変換する式は次のとおり。

XYZからsRGB

XYZからsRGB(D65)に変換するには以下の手順を踏む。

  1. XYZからリニアsRGBに変換する。
  2. リニアsRGBをガンマ補正する。
  3. 8bit化。それぞれの値に255をかける。

XYZからリニアsRGBに変換

これらの計算結果が0より小さいときは、0とする。また、1より大きいときは、1とする。

ガンマ補正

ただし、リニアsRGBの各値が0.0031308以下のときには、以下の式を使う。