RGB → XYZ 変換行列の求め方


ガンマ補正なしの RGB 成分を (R, G, B), この点の XYZ 空間での座標を (X, Y, Z) として,RGB から XYZ への変換行列 M

(
X )

( R
)
Y = M G
Z
B

を求めよう。

行列を決める条件として,白色点と3つの原色点のXYZ 空間における座標

白色点   (Xn, Yn, Zn)
R点   (xr, yr, zr)
G点   (xg, yg, zg)
B点   (xb, yb, zb)

が与えられているものとする (sRGB,Adobe RGB でのこれらの値は,規格で定義されている)。
ただし, (xr, yr, zr) はR点すなわち (R, G, B) = (1, 0, 0) の点の XYZ 空間での座標 (Xr, Yr, Zr) を割合で表したものである。すなわち

xr = Xr / (Xr+Yr+Zr),   yr = Yr / (Xr+Yr+Zr),   zr = Zr / (Xr+Yr+Zr) = 1-xryr (1)

G点,B点についても同様とする。

さて,R点 (R, G, B) = (1, 0, 0)M で変換すると (Xr, Yr, Zr) になることから,つぎの関係が成り立つ。

(
Xr )

( 1
)
Yr = M 0
Zr
0

G点,B点についても同様であることから,変換行列 M はつぎのように表せることがわかる。


( Xr   Xg   Xb )
M =
Yr Yg Yb

Zr Zg Zb


ところで,(1) 式より (Xr, Yr, Zr)(xr, yr, zr)Xr+Yr+Zr をかけたものである。そこで, Xr+Yr+Zr = Tr とおくと

(Xr, Yr, Zr) = (Trxr, Tryr, Trzr)

と表せる。同様にして Xg+Yg+Zg = TgXb+Yb+Zb = Tb とおくと

(Xg, Yg, Zg) = (Tgxg, Tgyg, Tgzg)

(Xb, Yb, Zb) = (Tbxb, Tbyb, Tbzb)

と表せるので,けっきょく変換行列 M はつぎのように書けることがわかる。


( Trxr  Tgxg  Tbxb )
M =
Tryr Tgyg Tbyb (2)

Trxr Tgxg Tbxb

あるいは,2つの行列に分けて書くと


( xr  xg  xb ) ( Tr 0 0
)
M =
yr yg yb 0  Tg 0

zr zg zb 0 0  Tb

あとは Tr, Tg, Tb であるが,これは 白色点 (R, G, B) = (1, 1, 1)(Xn, Yn, Zn) に変換されることから求めることができる。すなわち,

(
Xn )

( 1
)
( xr  xg  xb ) ( Tr 0 0 ) ( 1
)
( xr  xg  xb ) ( Tr )
Yn = M 1  = 
yr yg yb 0  Tg 0 1  =  yr  yg  yb Tg
Zn
1
zr zg zb 0 0
 Tb 1

zr zg zb Tb

これを Tr, Tg, Tb について解くと

(
Tr )

( xr  xg  xb ) -1
( Xn )
Tg  =  yr  yg yb
Yn
Tb
zr zg zb
Zn

こうして Tr, Tg, Tb が得られたら,変換行列 M は (2) 式よりただちに計算できる。


戻る
T. Fujiwara,  2011/12